|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
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; Код:
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
|
||||
|
||||
Код:
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; // к примеру Простыми словами, Вам в запросе должна быть строка "где дата продажи лежит в диапазоне..., и id равен такому-то". Последний раз редактировалось Guaho, 08.11.2024 в 00:08. |
#3
|
|||
|
|||
Цитата:
т.е. я правильно понимаю в моем случае Код:
var d1,d2,id: String; idAA:Integer; ...... idAA:=9212337; ///искомый id d1 := DAteToStr(DateEdit1.Date); d2 := DAteToStr(DateEdit2.Date); id :=IntToStr(idAA); в таком случае в строке Код:
DataModule2.ADOQueryApteka.SQL.Add('WHERE [DataProdagi] ((BETWEEN ' + d1 + ' AND ' + d2 + ') AND (idAA = ' + id ))); Последний раз редактировалось Filen, 08.11.2024 в 10:59. |
#4
|
|||
|
|||
Да там что-то не то с кавычками и скобками.
Если не ошибаюсь, то должно быть так: Код:
DataModule2.ADOQueryApteka.SQL.Add('WHERE ([DataProdagi] BETWEEN ' + d1 + ' AND ' + d2 + ') AND (idAA = ' + id +')'); а вообще, что бы было менще путаницы, я использую функцию Format: Код:
DataModule2.ADOQueryApteka.SQL.Add(Format('WHERE ([DataProdagi] BETWEEN %s AND %s) AND (idAA = %s)',[d1,d2,id])); Код:
DataModule2.ADOQueryApteka.SQL.Add(Format('WHERE ([DataProdagi] BETWEEN ''%s'' AND ''%s'') AND (idAA = %s)',[d1,d2,id])); |
#5
|
|||
|
|||
Код:
1 DataModule2.ADOQueryApteka.SQL.Add('WHERE ([DataProdagi] BETWEEN ' + d1 + ' AND ' + d2 + ') AND (idAA = ' + id +')'); Код:
1 DataModule2.ADOQueryApteka.SQL.Add(Format('WHERE ([DataProdagi] BETWEEN %s AND %s) AND (idAA = %s)',[d1,d2,id])); Error.JPG истина где то рядом .. Последний раз редактировалось Filen, 08.11.2024 в 22:10. |
#6
|
|||
|
|||
А тут проблема скорее всего со значением даты.
Надо смотреть в каком формате наде ее передавать. Возможно, д.б. YYYY-MM-DD и в кавычках. Посмтотри документацию на твою БД (скорее всего это либо Access, либо MS SQL Server, судя по синтаксису в имени поля). Тогда при получении значения в переменные d1 и d2 дату надо соотв. отформатировать. Код не даю - смотри сначала в каком формате ее надо передавать. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Filen (11.11.2024)
|