Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2015, 15:30   #1
Marla14
Пользователь
 
Регистрация: 29.01.2015
Сообщений: 38
По умолчанию Запрос SQL на выборку даты

Помогите написать запрос SQL в ADOQuery, что бы происходила выборка дат по полю Дата возврата, если она меньше текущей, т.е. системной при таком коде выдает ошибку
Код:
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('SELECT * ');
DataModule2.ADOQuery1.SQL.Add('FROM [Книги на руках]');
DataModule2.ADOQuery1.SQL.Add('WHERE [Дата возврата]< '+FormatDateTime('dd.mm.yyyy',Now));
ошибка: Число содержит синтаксическую ошибку в выражении запроса '[Дата возврата]<10.05.2015"
Marla14 вне форума Ответить с цитированием
Старый 10.05.2015, 15:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как минимум константу закавычить. По хорошему - параметризировать для не зависимости от символьного формата даты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.05.2015, 15:45   #3
Marla14
Пользователь
 
Регистрация: 29.01.2015
Сообщений: 38
По умолчанию

А можно подробнее, как закавычить и что
Marla14 вне форума Ответить с цитированием
Старый 11.05.2015, 09:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да не, не надо ничего "закавычивать". Даже если это и заработает У ВАС НА КОМПЬЮТЕРЕ, то это прямая дорога к будущим глюкам - на другом компьютере это может не работать.

Для использованы даты крайне рекомендуется использовать параметрические запросы (запрос с параметром). На форуме множество примеров, которые легко находятся поиском. Но подскажу направление, куда двигаться:

Код:
var dt : TDateTime;
begin
...
  DataModule2.ADOQuery1.SQL.Clear;
  DataModule2.ADOQuery1.SQL.Add('SELECT * ');
  DataModule2.ADOQuery1.SQL.Add('FROM [Книги на руках]');
  DataModule2.ADOQuery1.SQL.Add('WHERE [Дата возврата]< :paramdate ');
  dt := Trunc(now); {отсечём время (часы/минуты/секунды) у сегодняшней даты}
  DataModule2.ADOQuery1.Parameters.ParamByName('paramdate').Value := dt;
...

К слову. если речь идёт о текущей дате, то, в данном случае, дату можно (и даже желательно) ВООБЩЕ в запрос не передавать!
В SQL есть возможность получить текущую дату в нужном виде.
например, в MS ACCESS этот запрос будет выглядеть так:
Код:
   DataModule2.ADOQuery1.SQL.Add('SELECT * ');
  DataModule2.ADOQuery1.SQL.Add('FROM [Книги на руках]');
  DataModule2.ADOQuery1.SQL.Add('WHERE [Дата возврата]< NOW()');
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос на выборку pr1me222 Microsoft Office Access 5 22.05.2013 18:31
SQL запрос на выборку kolosok2590 Microsoft Office Access 7 16.01.2013 16:57
Запрос на выборку (SQL) stck Помощь студентам 1 13.04.2012 13:59
SQL запрос на выборку Vervolf SQL, базы данных 5 31.07.2011 15:35
Сложный запрос на выборку SQL simka16 Помощь студентам 0 21.02.2011 18:43