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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый Вчера, 17:39
Filen Filen вне форума
Прохожий
 
Регистрация: 23.05.2024
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию SQL запрос с диапазоном дат

Добрый вечер. Пытаюсь сделать запрос на выборку из таблицы , т.е. в заданном диапазоне дат нужно выбрать все записи с одинаковым id .
С диапазоном дат разобрался ..

Код:
procedure TForm19.Button1Click(Sender: TObject);
var
d1,d2:TDateTime;
idAA:integer;

begin
d1:=(DateEdit1.Date);
d2:=(DateEdit2.Date) ;
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('SELECT DataProdagi,idPrepar,NamPreparat FROM [AptekaProdaga] WHERE [DataProdagi] BETWEEN DateEdit1.Date and DateEdit2.Date ORDER BY NamPreparat ASC');
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit1.Date').Value := DateEdit1.Date;  /// Ïàðàìåòð D1 ïî óìîë÷àíèþ
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit2.Date').Value := DateEdit2.Date;   /// Ïàðàìåòð D2 ïî óìîë÷àíèþ
DataModule2.ADOQueryApteka.Active:=true;
но чтобы отобрать записи еще и с указанным id не соображу как ..

Код:
idAA:=92123134;
d1:=(DateEdit1.Date);
d2:=(DateEdit2.Date) ;
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('SELECT DataProdagi,idPrepar,NamPreparat FROM [AptekaProdaga] WHERE [DataProdagi] BETWEEN DateEdit1.Date and DateEdit2.Date, idAA ORDER BY NamPreparat ASC');
DataModule2.ADOQueryApteka.Parameters.ParamByName('idAA').Value :=idAA;
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit1.Date').Value :=DateEdit1.Date;  /// Параметр D1 по умолчанию
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit2.Date').Value := DateEdit2.Date;   /// Параметр D2 по умолчанию
DataModule2.ADOQueryApteka.Active:=true;
DataModule2.ADOQueryApteka.First;

понимаю что не так , как правильно help my
Ответить с цитированием
  #2  
Старый Вчера, 23:55
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 179
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Код:
DataModule2.ADOQueryApteka.SQL.Add('SELECT DataProdagi, idPrepar, NamPreparat FROM [AptekaProdaga]');
DataModule2.ADOQueryApteka.SQL.Add('WHERE [DataProdagi] ((BETWEEN ' + d1 + ' AND ' + d2 + ') AND (idAA = ' + id)));
DataModule2.ADOQueryApteka.SQL.Add('ORDER BY NamPreparat ASC');
где (отдельно прописать в обработчике)
Код:
var
d1, d2, id: String;
....
d1 := DateEdit1.Date;
d2 := DateEdit2.Date;
id := Edit1.Text; // к примеру
Поскольку текст SQL-запроса формируется динамически, то в данном примере параметры не используются, всё прописывается текстом.
Простыми словами, Вам в запросе должна быть строка "где дата продажи лежит в диапазоне..., и id равен такому-то".

Последний раз редактировалось Guaho, Сегодня в 00:08.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter