Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Дата1 > Дата2. Delphi. MS Assecc


Автор: Samhein 23.6.2010, 21:50
Здравствуйте.
Делаю в конструкторе такой запрос.
user posted image
В Access текст запроса получается такой.
Код

SELECT OrderList.nameFirm, OrderList.finishWork
FROM OrderList
WHERE (((OrderList.finishWork)<#6/22/2010#));

Пишу в дельфи
Код

AdoQuery1.Active := false;
DateTimeToString(s2,  'dd/mm/yyyy', now);
AdoQuery1.SQL.Clear;
s2 := copy(s2,4,2) + '/'  + copy(s2,1,2) + '/' + copy(s2,7,4);
// Меняю месяц и день местами, как делает аццесс
s2 := 'SELECT * FROM OrderList WHERE (finishWork <= #' + s2 + '#);';
AdoQuery1.Open;
AdoQuery1.Active := true;

И получается "Project ... raised exception EDatabaseError with message 'ADOQuery1: Missind SQL property'."

Автор: chip_and_dayl 23.6.2010, 22:07
Во-первых дату можно передавать через параметр, и тогда меня вообще ничего не нужно.
Во-вторых, если так уж хочется то можно написать #'+ FormatDateTime('mm-dd-yyyy', DateTimePicker1.Date) + '#'

Добавлено через 33 секунды
Код

AdoQuery1.Active := true;

Это не нужно, его Опен сам вызывает

Добавлено через 3 минуты и 23 секунды
Явно в запросе, что-то накрутили. Чтобы увидеть запрос в чистом виде, после
Код

AdoQuery1.Open;

напишите
Код

ShowMessage(AdoQuery1.SQL.TEXT);


Добавлено через 4 минуты и 51 секунду
Стоп. А где вы присваиваете запрос АдоКвери!?!

Добавлено через 5 минут и 22 секунды
Перед Open нужно
Код

AdoQuery1.SQL.TEXT:=s2;

Автор: Samhein 23.6.2010, 22:21
Опс, старый код кинул, ща, разберусь

Добавлено через 1 минуту и 13 секунд
Во я лох невнимательный, извиняюсь за тупость и благодарю за советы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)