![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметра типа TDaateTime в TADOQuery [D7, Access]
jafar © (2004-02-27 23:02:00)Добрый день.
Подобный вопрос задавался в форуме, но ответов на него поисковик не выдал. Посему, просьба отнестить к проблеме с пониманием :).
Проблема в следующем:Есть запрос на обновление записи в таблице Access'а, которая содержит поле DateTime. В дизайнере я настроил параметр запроса с типом ffDateTime и передаю ему в качестве значения TDateTime. Если передавать дату, у которой день > 12, то после вызова ExecSQL, дата нормально в БД сохраняется. Если день < 12, то при сохранении в БД месяц и день меняются местами, что недопустимо :)
Вопрос:существует ли способ настроить TADOQuery или TParameter так, чтобы данный глюк не наблюдался?
PS. В принципе, можно попробовать передавать дату как строковый литерал ( и так скорее всего будет работать ), но интересует возможность более красивого решения проблемы...
menart (2004-02-28 19:30:00) [1]
> EditSubwork.Parameters.ParamByName('@performed').Value :=
> datePicker.Date;
попробуй так:
EditSubwork.Parameters.ParamByName('@performed').asDateTime := datePicker.Date;
Sam Stone (2004-02-28 18:55:00) [2]Поищи что-то типа ShortDateTimeFormat, LongDateTimeFormat
jafar (2004-02-28 13:34:00) [3]Вот кусок кода, который некорректно работает...
if ( SelectSubworks.FieldValues['ID'] <> Null ) then begin
// редактируем существующую запись
EditSubwork.Parameters.ParamByName('@ID').Value := SelectSubworks.FieldValues['ID'];
EditSubwork.Parameters.ParamByName('@performed').Value := datePicker.Date;
EditSubwork.ExecSQL;
end;
А вот примеры того, что получается при разных датах:
Исходная дата: 25.02.2004 -> Ложится в базу корректно,
Дата 8.02.2004 сохраняется в Access как 2.08.2004
Как можно добиться нормального сохранения любой даты?
Johnmen (2004-02-28 02:25:00) [4]Это лукавство сплошное...
Приведи код.