![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Прошу помощи у знающих людей, не могу организовать отбор записей в таблице из заданного диапазона дат(DateTimePicker). Вылезает непонятная ошибка при попытке сортировки. Поле Data в таблице типа Date/Time. Фрагмент запроса:
Код:
procedure TForm3.Button4Click(Sender: TObject);
Var
Data1, Data2:string;
begin
Data1:=DateToStr(DateTimePicker1.DateTime);
Data2:=DateToStr(DateTimePicker2.DateTime);
with Form3.Query1 do
begin
Close;
SQL.Clear;
Form3.Query1.Close;
SQL.Text:='SELECT * FROM OsSklad WHERE Data >= '+Data1+' and Data <='+Data2+'';
Open;
end;
end;Ошибка на рисунке Последний раз редактировалось Admin, 23.04.2012 в 13:42. |
|
#2
|
||||
|
||||
|
Код:
with Form3.Query1 do
begin
Close;
SQL.Text:= 'select * from OsSklad where [Data] >= '+QuotedStr(Data1)+' and [Data] <= '+QuotedStr(Data2);
Open;
end;Код:
SQL.SaveToFile('C:\123.txt');Последний раз редактировалось Ildar-tsr, 23.04.2012 в 14:00. |
|
#3
|
|||
|
|||
|
Не сработало((( ошибка такая же, вот файлик.
|
|
#4
|
||||
|
||||
|
А если без квадратных скобок?
Код:
SQL.Text:= 'select * from OsSklad where Data >= '+QuotedStr(Data1)+' and Data <= '+QuotedStr(Data2); Последний раз редактировалось Ildar-tsr, 23.04.2012 в 15:42. |
|
#5
|
|||
|
|||
|
Тоже самое и без скобок, из строки в дату вроде так StrToDateTime
Последний раз редактировалось AlexGTX, 23.04.2012 в 16:32. |
|
#6
|
|||
|
|||
|
Цитата:
Перепиши на использование параметров - подозреваю, что проблемы именно с предстввлением даты: Код:
...
SQL.Text:= 'select * from OsSklad where Data >= :param1 and Data <= :param2';
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime;
ParamByName('param2').AsDateTime := DateTimePicker2.DateTime;
Open;
... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
AlexGTX (23.04.2012)
| ||
|
#7
|
|||
|
|||
|
Классно! Помогло, только почему-то первую дату не включает. Например, есть записи подряд с 15.04.2012 по 20.04.2012. В DateTimePicker1 выбираю 15.04.2012, а DateTimePicker2 - 20.04.2012, и записи в таблице появляются начиная с 16.04.2012. Что за хрень???
|
|
#8
|
||||
|
||||
|
Цитата:
Код:
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime;
ParamByName('param2').AsDateTime := DateTimePicker2.DateTime;Последний раз редактировалось Ildar-tsr, 23.04.2012 в 18:21. |
|
#9
|
|||
|
|||
|
Такая же хрень, не включает первую дату
, но отбор работает, таблица заполняется со следующей даты из диапазона.Последний раз редактировалось AlexGTX, 23.04.2012 в 18:39. |
|
#10
|
|||
|
|||
|
Цитата:
А это уже проблемы того, что подствляется и время. Тогда попробуй так: Код:
...
SQL.Text:= 'select * from OsSklad where Data >= :param1 and Data < :param2';
ParamByName('param1').AsDateTime := DateOf(DateTimePicker1.DateTime);
ParamByName('param2').AsDateTime := DateOf(DateTimePicker2.DateTime)+1;
Open;
... |
|
#11
|
||||
|
||||
|
Цитата:
Код:
ParamByName('param1').AsDate := DateTimePicker1.Date;
ParamByName('param2').AsDate := DateTimePicker2.Date+1;не будем усложнять себе жизнь ![]() |
|
#12
|
|||
|
|||
|
Цитата:
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime-1; ParamByName('param2').AsDateTime := DateTimePicker2.DateTime; |