Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.09.2009, 21:46
Eugene86 Eugene86 вне форума
Прохожий
 
Регистрация: 29.08.2009
Сообщения: 31
Репутация: 10
По умолчанию sql запрос с датой

Делаю выборку из БД (MS Access) по дате.
Никак не получается составить правильный запрос к БД.
Пробовал так:
Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
s:='select * from material ';
s:=s+'where [Дата поступления] > #'+DateToStr(FromDate1.Date-1)+
 '# and [Дата поступления]< #'+DateToStr(ToDate1.Date)+'#';
ADOQuery1.SQL.Add(s);
ADOQuery1.Open;
Выдаёт ошибку:"Дата содержит синтаксическую ошибку в выражении запроса..."
Вместо # использовал " - результат такой же.
И так пробовал:
Код:
 ADOQuery1.SQL.Text:=
'select * from material WHERE (data>= :date1) and (data<= :date2)';
ADOQuery1.Parameters.ParamByName('date1').Value:= FromDate1.DateTime;
ADOQuery1.Parameters.ParamByName('date2').Value:= ToDate1.DateTime;   
Пишет: "Отсутствует значение лдя одного или нескольких требуемых параметров"
Ответить с цитированием
  #2  
Старый 21.09.2009, 00:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,037
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Дата кодируется с помощью одиночных кавычек.
2. Лучше для параметров типа дата использовать параметризованный запрос.
3. Тип параметров задай принулительно (входной типа TDateTime)
Ответить с цитированием
  #3  
Старый 26.09.2009, 15:45
Eugene86 Eugene86 вне форума
Прохожий
 
Регистрация: 29.08.2009
Сообщения: 31
Репутация: 10
По умолчанию

Спасибо, с параметрами всё работает отлично.
Кстати с одиночными кавычками тоже выдавало ошибку "Дата содержит синтаксическую ошибку в выражении запроса..."

Последний раз редактировалось Eugene86, 26.09.2009 в 16:31.
Ответить с цитированием
  #4  
Старый 26.09.2009, 15:49
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

попробуй так:
Код:
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select * from materialcopy WHERE (data>= :date1) and (data<= :date2)';
ADOQuery1.ParamByName('date1').AsDateTime:= FromDate1.DateTime;
ADOQuery1.ParamByName('date2').AsDateTime:= ToDate1.DateTime;
ADOQuery1.Open;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter