powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FAQ. Передача DateTime в Access
4 сообщений из 4, страница 1 из 1
FAQ. Передача DateTime в Access
    #32297417
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил я, наконец, окончательно разобраться с передачей даты в запрос к Access из Delphi Что скажете по поводу ниже написанного?


FAQ. Передача значения поля DateTime в запрос к базе Access.

Win 98 rus. Delphi 6.0. Jet 4.0 MDAC 2.7 rus. Access XP rus. База «Борей».

1. Использование строковой константы.
Независимо от того, используется ли Jet или ODBC, дата должна быть представлена в формате MM/DD/YYYY.
В качестве разделителя могут быть использованы точка, слэш и тире.


ADODataSet1.CommandText:=
'select * from Заказы where ДатаРазмещения<= #03.04.1998# order by ДатаРазмещения DESC';

Тут есть ловушка. Правильно будут обрабатываться и даты вида #31/03/1998#, т.е. те, в которых можно однозначно опознать, где дни, а где месяцы.

2. Использование функций преобразования в запросе
Работа через Jet
Дата должна быть представлена в формате краткой региональной настройки даты компьютера. В качестве разделителя могут быть использованы точка, слэш и тире.


d:='03.04.1998';
ADODataSet1.CommandText:=
'select * from Заказы where ДатаРазмещения<= datevalue("'+d+'") order by ДатаРазмещения DESC';


Ловушка та же самая.

Работа через ODBC

d:='1998-05-06';
ADODataSet1.CommandText:=
'select * from Заказы where ДатаРазмещения<= {d '+quotedstr(d)+'} order by ДатаРазмещения DESC';

Формат даты только YYYY-MM-DD

3. Использование запроса с параметром

Работа через Jet.
Необходимо преобразовать дату в строку и воспользоваться функцией DateValue
Не зависит от региональных настроек даты.


dt:=date;
ADODataSet1.CommandText:=
'select * from Заказы where ДатаРазмещения<= datevalue(:D) order by ДатаРазмещения DESC';
ADODataSet1.Parameters[0].Value:=DateToStr(dt);


Работа через ODBC

dt:=StrToDate('06.05.1998');
Не зависит от региональных настроек даты.
ADODataSet1.CommandText:=
'select * from Заказы where ДатаРазмещения<= :D order by ДатаРазмещения DESC';
ADODataSet1.Parameters.ParamByName('D').Value:=dt;
...
Рейтинг: 0 / 0
FAQ. Передача DateTime в Access
    #32298072
Papka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько пробовал, а самый надежный способ - параметром дату передавать именно как дату. В Д5 вроде так не прокатывает, но у меня Д6 :).
...
Рейтинг: 0 / 0
FAQ. Передача DateTime в Access
    #32298144
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу правильности ничего не скажу (не работал), но написано весьма понятливо и доходчиво
...
Рейтинг: 0 / 0
FAQ. Передача DateTime в Access
    #32299113
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Papka. FAQ-то по Access. В него датой из Delphi передать в принципе невозможно. Вот для MS SQL – можно. Но по MS SQL есть свои факи.

Ну ладно, если замечаний нет, посылаю в раздел
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FAQ. Передача DateTime в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]