Страница 1 из 1

Проблема с TOraTimeStampField

Добавлено: Ср 25 ноя 2015 14:49
paulmstr
Сервер Оракл 10g 10.2.0.5.0, клиент Оракл 11g 11.2.0
ODAC версии 9.2.7
WIndows 7, Delphi XE Architect
Настройка NLS_LANG клиента RUSSIAN_RUSSIA.CL8MSWIN1251

Объект TOraQuery созданный и настроенный в дизайн-тайме в курсоре имеет поле типа TOraTimeStampField.

При работе с этим полем возникают следующие проблемы:

1. При получении значения поля в виде строки (метод TOraTimeStamp.AsString) в результирующей строке разделители полей даты не соответствуют локалу, например 17/04/2015 09:15:34,055000, хотя ожидается 17.04.2015 09:15:34,055000

2. При получении значения поля в виде даты (метод TOraTimeStamp.AsDateTime) в результирующем значении типа TDateTime миллисекунды обрезаются, хотя тип TDateTime поддерживает миллисекунды. Например, получается 17.04.2015 09:15:34,000, хотя ожидается 17.04.2015 09:15:34,055.

Пожалуйста подскажите, каким образом можно побороть указанные проблемы?

Re: Проблема с TOraTimeStampField

Добавлено: Чт 26 ноя 2015 10:35
Alexp
Добрый день,

Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.

Код: Выделить всё

  FormatSettings.DateSeparator := '.';
  ShowMessage(SQLTimeStampToStr('dd/mm/yyyy HH:mm:ss:ZZZ', TOraTimeStampField(OraQuery1.Fields[0]).AsSQLTimeStamp));

Re: Проблема с TOraTimeStampField

Добавлено: Чт 26 ноя 2015 10:35
Alexp
Добрый день,

Формат отображения данных в Delphi зависит от региональных настроек самой системы. Чтобы поменять формат Вам достаточно изменить record TFormatSettings. Для отображения миллисекунд
необходимо использовать свойство AsSQLTimeStamp вместо AsDateTime.

Код: Выделить всё

  FormatSettings.DateSeparator := '.';
  ShowMessage(SQLTimeStampToStr('dd/mm/yyyy HH:mm:ss:ZZZ', TOraTimeStampField(OraQuery1.Fields[0]).AsSQLTimeStamp));