Формат даты для DBF таблиц
Формат даты для DBF таблиц
С Новым годом!
В запросе через TUniQuery к DBF-таблице с фильтрацией по дате типа:
Select * from table where DateOp='30.12.2015'
возникает исключение "[Microsoft][Драйвер ODBC dBase]Несоответствие типов данных в выражении условия отбора". С полями других типов работает.
Насколько я понял, ругается на кавычки. Почему?
В запросе через TUniQuery к DBF-таблице с фильтрацией по дате типа:
Select * from table where DateOp='30.12.2015'
возникает исключение "[Microsoft][Драйвер ODBC dBase]Несоответствие типов данных в выражении условия отбора". С полями других типов работает.
Насколько я понял, ругается на кавычки. Почему?
Re: Формат даты для DBF таблиц
Попробуйте использовать при работе с датами следующий синтаксис :
Код: Выделить всё
select * from table where DateOp = #31-12-2015#
Re: Формат даты для DBF таблиц
Спасибо, такой синтаксис работает, правда в формате MM-DD-YYYY или MM-DD-YY .
Возможно ли его изменить, например на DD.MM.YY или DD-MM-YY?
Возможно ли его изменить, например на DD.MM.YY или DD-MM-YY?
Re: Формат даты для DBF таблиц
Для приведения даты к формату DD.MM.YY можно воспользоваться функцией Format :
либо использовать запрос с параметром :
Код: Выделить всё
select * from table where DateOp = Format('31.12.15', 'dd.mm.yy')
Код: Выделить всё
...
UniQuery.SQL.Clear;
UniQuery.SQL.Text := 'select * from table where DateOp = :F_DATE';
UniQuery.ParamByName('F_DATE').DataType := ftDateTime;
UniQuery.ParamByName('F_DATE').ParamType := ptInput;
UniQuery.ParamByName('F_DATE').AsDAteTime := StrToDate('31.12.15');
UniQuery.Open;
...
Re: Формат даты для DBF таблиц
Большое спасибо за подробный ответ.
По мере освоения столкнулся еще с одной проблемой: символьные поля отображаются абра-кадаброй. Изменение UseUnicode не помогает. Можно ли как-то настроить кодовую страницу?
По мере освоения столкнулся еще с одной проблемой: символьные поля отображаются абра-кадаброй. Изменение UseUnicode не помогает. Можно ли как-то настроить кодовую страницу?
Re: Формат даты для DBF таблиц
Для исследования некорректного отображения символьных полей пожалуйста пришлите нам по адресу maximg*devart*com DBF-файл, при использовании которого возникает данная проблема
Re: Формат даты для DBF таблиц
Мы получили присланный Вами DBF-файл. Пожалуйста уточните название и версию ODBC-драйвера, используемого Вами для работы с ним.
Re: Формат даты для DBF таблиц
В администраторе BDE и администраторе ODBC указано несколько драйверов dbf:
Microsoft dBase Driver (*.dbf) 6.01.7600.16385
Driver do Microsoft dBase (*.dbf) 6.01.7600.16385
Microsoft dBase-Treiber (*.dbf) 6.01.7600.16385
и др.
Какой конкретно из них используется при работе с dbf я не знаю.
Microsoft dBase Driver (*.dbf) 6.01.7600.16385
Driver do Microsoft dBase (*.dbf) 6.01.7600.16385
Microsoft dBase-Treiber (*.dbf) 6.01.7600.16385
и др.
Какой конкретно из них используется при работе с dbf я не знаю.
Re: Формат даты для DBF таблиц
Проблема при отображении русских букв заключается в том, что в используемом Вами DBF-файле строковые значения представлены в DOS-кодировке. Для корректного отображения попробуйте присвоить ключу реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\ DataCodePage
(для Win64 - HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\ DataCodePage)
значение «ANSI»
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\ DataCodePage
(для Win64 - HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\ DataCodePage)
значение «ANSI»
Re: Формат даты для DBF таблиц
К сожалению, на Windows7 и Server 2003 отображение после редактирования реестра не изменилось, хотя на XP все символы в той же таблице и в то й же программе отображаются правильно.
Re: Формат даты для DBF таблиц
Пожалуйста, убедитесь в том, что региональные настройки в Windows7 и Server 2003 совпадают с соответствующими настройками в Windows XP