Вопрос по форматированию даты

VVDVVD
отредактировано 12:57 Раздел: FastReport 4.0
Здравствуйте.

Я пока чайник в FR, поэтому и вопрос соответственный.

Нужно тривиально отформатировать дату в поле.
Согласно инструкции пишу в нем:


[frxDBNaklSklad."DATA" #ddd.mm.yy]
.

В результате форматирование происходит, но вместо реальной даты выводит всюду какое-то неведомое значение - 29.06.05. Пытался форматировать и с помощью редактора формата - все то же.

Что делать?

Спасибо.

Комментарии

  • gpigpi
    отредактировано 12:57
    Memo расположен на бэнде?
    Бэнд подключён к датасету?
  • VVDVVD
    отредактировано 12:57
    gpi написал: »
    Memo расположен на бэнде?
    Бэнд подключён к датасету?

    memo расположен на GroupHeader и подключен к датасету, ибо если убрать форматирование дата отображается корректно, вот только присутствует время, что мне, собственно, и не нужно.
  • отредактировано 12:57
    Попробуйте [DateToStr(<frxDBNaklSklad."DATA">)]
  • VVDVVD
    отредактировано 12:57
    написал: »
    Попробуйте [DateToStr(<frxDBNaklSklad."DATA">)]

    Попробовал. Показывает то же 29.06.1905. :) Но как только DateToStr убрать - дату и время показывает верно. Попробовал также ставить поле и на другие бенды, в том числе и на мастер - глюк не исчезает.
    Стоял у меня сначала недолго FR3 - так там тоже самое с форматированием времени было. Снес я его и поставил FR4. Вначале, я, как истинный славянин, поле покороче сделал и время терялось за углом - главное результат. Но вот дошло до експорта в ексель - поля должны соответствовать ширине колонок таблицы - приперло как-то решать этот вопрос.
    Мож чего и криво заинсталлировал - так ведь все остальное хорошо работает.
  • отредактировано 12:57
    Думаю , что-то у вас с форматом поля.
    Попробуйте в делфи ShowMessage(DateToStr(Table.FieldValues)); (где table это ваш датасет) , думаю результат будет аналогичный.
  • VVDVVD
    отредактировано 12:57
    написал: »
    Думаю , что-то у вас с форматом поля.
    Попробуйте в делфи ShowMessage(DateToStr(Table.FieldValues)); (где table это ваш датасет) , думаю результат будет аналогичный.

    М-дя....
    Действительно.
    ShowMessage(DateToStr(Table.FieldValues));
    и ShowMessage(Table.FieldValues.asstring);
    дают разлмчные результаты.
    В делфи то я, как раз, не новичок, но виже такое в первый раз.

    FR тут нипричем.

    Спасибо. Это я уж вырою.

  • отредактировано September 2007
    Какой тип у поля ?
    Можно попробовать просто отбросить дробную часть числа (т.е. время).
    var
      D:extended;
    begin
     D :=Table.FieldValues['DATA'];
     D := Int(D);
     ShowMessage(DateToStr(D));
    
    Если и после этого выводится не правильная дата то, обратите внимание на переменную ShortDateFormat содержит формат даты для функции DateToStr(обычно берется из системных региональных настроек).
    Но если вы пробовали задавать строку форматирования вручную то, скорее всего, что-то со значением в поле.
  • VVDVVD
    отредактировано 12:57
    написал: »
    Какой тип у поля ?
    Можно попробовать просто отбросить дробную часть числа (т.е. время).
    var
      D:extended;
    begin
     D :=Table.FieldValues['DATA'];
     D := Int(D);
     ShowMessage(DateToStr(D));
    
    Если и после этого выводится не правильная дата то, обратите внимание на переменную ShortDateFormat содержит формат даты для функции DateToStr(обычно берется из системных региональных настроек).
    Но если вы пробовали задавать строку форматирования вручную то, скорее всего, что-то со значением в поле.

    Да... Похоже тут не все так просто. Смахивает на кучерявый глюк в FR c вариантным типом.

    Уважаемый =Den=. Зайдите, пожалуйста, на форум по делфям в SQL.RU. Я там дискуссию по этому поводу поднял и уже много написано. Не перекатывать же все сюда. Прошу Вас.


  • VVDVVD
    отредактировано 12:57
    Ну что ж... Более-менее прояснилось.

    DataSet клиента может иметь поле с датой типа TSQLTimeStamp, который не одно и тоже с типом TDateTime. Преобразование по умолчанию вариантного значения такого поля в строку Delphi выполняется правильно, но функция DateToStr с этим типом не дружит. Посему вариантный выбор полей в виде dataset1.fields[0] разработчиками FR есть плохим ходом и надо бы использовать более контролируемые asDateTime, etc.
  • отредактировано September 2007
    VVD написал: »
    Посему вариантный выбор полей в виде dataset1.fields[0] разработчиками FR есть плохим ходом и надо бы использовать более контролируемые asDateTime, etc.
    А кто вам сказал, что ФР работает именно так ? :)
    В ФР для определенных типов есть исключение , они читаются не через вариант.
    Нужно было сразу сказать какой тип у поля, добавим его в исключения :)
    VVD написал: »
    Да... Похоже тут не все так просто. Смахивает на кучерявый глюк в FR c вариантным типом.
    А об этом, если можно подробней.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.