|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отбор записей из диапазона дат DateTimePicker, Paradox
Прошу помощи у знающих людей, не могу организовать отбор записей в таблице из заданного диапазона дат(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'); Google в помощь Последний раз редактировалось Ildar-tsr, 23.04.2012 в 14:00. |
#3
|
|||
|
|||
Не сработало((( ошибка такая же, вот файлик.
|
#4
|
||||
|
||||
А если без квадратных скобок?
Код:
SQL.Text:= 'select * from OsSklad where Data >= '+QuotedStr(Data1)+' and Data <= '+QuotedStr(Data2); Google в помощь Последний раз редактировалось 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; Google в помощь Последний раз редактировалось 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; не будем усложнять себе жизнь Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#12
|
|||
|
|||
Цитата:
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime-1; ParamByName('param2').AsDateTime := DateTimePicker2.DateTime; |