Формат даты для DBF таблиц

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Формат даты для DBF таблиц

Сообщение 3Hub » Пт 01 янв 2016 21:43

С Новым годом!

В запросе через TUniQuery к DBF-таблице с фильтрацией по дате типа:
Select * from table where DateOp='30.12.2015'
возникает исключение "[Microsoft][Драйвер ODBC dBase]Несоответствие типов данных в выражении условия отбора". С полями других типов работает.
Насколько я понял, ругается на кавычки. Почему?

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Вт 05 янв 2016 10:47

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

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

select * from table where DateOp = #31-12-2015#

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Формат даты для DBF таблиц

Сообщение 3Hub » Пн 11 янв 2016 20:48

Спасибо, такой синтаксис работает, правда в формате MM-DD-YYYY или MM-DD-YY .
Возможно ли его изменить, например на DD.MM.YY или DD-MM-YY?

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Ср 13 янв 2016 09:19

Для приведения даты к формату 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;
   ...
  

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Формат даты для DBF таблиц

Сообщение 3Hub » Ср 13 янв 2016 20:22

Большое спасибо за подробный ответ.
По мере освоения столкнулся еще с одной проблемой: символьные поля отображаются абра-кадаброй. Изменение UseUnicode не помогает. Можно ли как-то настроить кодовую страницу?

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Чт 14 янв 2016 10:13

Для исследования некорректного отображения символьных полей пожалуйста пришлите нам по адресу maximg*devart*com DBF-файл, при использовании которого возникает данная проблема

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Вт 19 янв 2016 14:06

Мы получили присланный Вами DBF-файл. Пожалуйста уточните название и версию ODBC-драйвера, используемого Вами для работы с ним.

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Формат даты для DBF таблиц

Сообщение 3Hub » Ср 20 янв 2016 19:44

В администраторе 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 я не знаю.

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Пт 22 янв 2016 14:17

Проблема при отображении русских букв заключается в том, что в используемом Вами 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»

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Формат даты для DBF таблиц

Сообщение 3Hub » Пт 29 янв 2016 20:44

К сожалению, на Windows7 и Server 2003 отображение после редактирования реестра не изменилось, хотя на XP все символы в той же таблице и в то й же программе отображаются правильно.

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Формат даты для DBF таблиц

Сообщение MaximG » Вт 02 фев 2016 13:15

Пожалуйста, убедитесь в том, что региональные настройки в Windows7 и Server 2003 совпадают с соответствующими настройками в Windows XP

Закрыто