![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
sql запрос дата [D7, XP]
vasja666 © (2011-06-14 05:45:00)С частым постоянством всплывают темы про запросы с датой, почитал не понял как мне правильно сделать.
База Access, поле типа Date
Ошибка несоответствие типов данных в выражениях условия отбора
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('select * from aglomerat');
DataModule2.ADOQuery1.SQL.Add('where data>='''+DateToStr(Form1.DateTimePicker1.Date)+''' and data<='''+DateToStr(Form1.DateTimePicker2.Date)+''' ');
DataModule2.ADOQuery1.Open;
Медвежонок Пятачок (2011-06-14 20:48:00) [1]причем еще и зрение используется наполовину.
Palladin (2011-06-14 20:47:00) [2]супер метод разработки, пальцем в небо брейнлесс эдишн...
sniknik (2011-06-14 20:44:00) [3]> ADOQuery нет свойства AsData, AsDateTime
а читать нужно по тому что есть... сказал же, внимательно.
Inovet (2011-06-14 19:31:00) [4]> [17] vasja666 (14.06.11 18:54)
> ParamByName('pDate2').Value:=DateToStr(Form1.Da teTimePicker2.Date);
Мда. Смысл тогда всего этого обсуждения.
Медвежонок Пятачок (2011-06-14 18:58:00) [5]сделай как было в начале ветки и сразу узнаешь насколько последний вариант правильный.
vasja666 (2011-06-14 18:54:00) [6]
DataModule2.ADOQuery1.SQL.Add('select * from aglomerat');
DataModule2.ADOQuery1.SQL.Add('where data>= :pDate1 and data<= :pDate2');
DataModule2.ADOQuery1.Parameters.ParamByName('pDate1').Value:=DateToStr(Form1.Da teTimePicker1.Date);
DataModule2.ADOQuery1.Parameters.ParamByName('pDate2').Value:=DateToStr(Form1.Da teTimePicker2.Date);
сделал так, работает, но на сколько это правильно не знаю
Медвежонок Пятачок (2011-06-14 18:37:00) [7]У тебя и параметров Date1 и Date2 тоже нету.
А ты зачем-то присваиваешь им значения.
vasja666 (2011-06-14 18:28:00) [8]> внимательно!
Inovet © (14.06.11 09:27) [4]
sniknik © (14.06.11 09:53) [7]
ADOQuery нет свойства AsData, AsDateTime
sniknik (2011-06-14 11:38:00) [9]> так?или я опять что то путаю\
не читаешь...
внимательно!
Inovet © (14.06.11 09:27) [4]
sniknik © (14.06.11 09:53) [7]
... не хотел, но... ADOQuery на помойку! ADODataSet форевер! ;)
vasja666 (2011-06-14 11:18:00) [10]
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('select * from aglomerat');
DataModule2.ADOQuery1.SQL.Add('where data>= :pDate1 and data<= :pDate2');
DataModule2.ADOQuery1.Parameters.ParamByName('Date1').Value:=Form1.DateTimePicke r1.Date;
DataModule2.ADOQuery1.Parameters.ParamByName('Date2').Value:=Form1.DateTimePicke r2.Date;
DataModule2.ADOQuery1.Open;
так?или я опять что то путаю\
Anatoly Podgoretsky (2011-06-14 11:08:00) [11]
> vasja666 (14.06.11 11:05) [10]
Меняй порядок (уже писал).
TParameter такого свойства не имеет, используй Value
Inovet (2011-06-14 11:08:00) [12]> [8] vasja666 (14.06.11 10:29)
А значения праметров почему вдруг решил задать перед их определением?
vasja666 (2011-06-14 11:05:00) [13]пустая таблица как будьто условие не подходит\
а AsDateTime пишет нет такого идентификатора
Anatoly Podgoretsky (2011-06-14 10:56:00) [14]> vasja666 (14.06.2011 10:29:08) [8]
Все неправильно, надо менять последовательность команд. И что значит не
получилось?
vasja666 (2011-06-14 10:29:00) [15]пробовал через параметры не получилось\
DataModule2.ADOQuery1.Parameters.ParamByName('Date1').Value:=Form1.DateTimePicke r1.Date;
DataModule2.ADOQuery1.Parameters.ParamByName('Date2').Value:=Form1.DateTimePicke r2.Date;
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('select * from aglomerat');
DataModule2.ADOQuery1.SQL.Add('where data>= :Date1 and data<= :Date2');
DataModule2.ADOQuery1.Open;
сейчас пробую как вы сказали, ругается на AsDateTime
DataModule2.ADOQuery1.Parameters.ParamByName('dtfr').AsDateTime:=Trunc(DateTimeP icker1.DateTime)
sniknik (2011-06-14 09:53:00) [16]> Ага, Со своей data тут панимаешь - AsDate.
AsDateTime, иначе могут быть проблемы... все с тем же непониманием, что дата это тот же тип, и значения времени автоматически в нем не обрезаются.
да и это
Form1.DateTimePicker1.Date;
написал бы так Trunc(DateTimePicker1.DateTime), просто чтоб не парится, не следить за тем чтобы в дизайн там нули были...
Anatoly Podgoretsky (2011-06-14 09:35:00) [17]
> Inovet © (14.06.11 09:27) [4]
И с подсчетом апострофов. Сложная для многих задача.
Inovet (2011-06-14 09:29:00) [18]> [4] Inovet © (14.06.11 09:27)
> ParamByName('dtfr').AsData
Ага, Со своей data тут панимаешь - AsDate.
Inovet (2011-06-14 09:27:00) [19]> [3] oldman © (14.06.11 08:21)
> > поле типа Date
> ...
> > DateToStr
> не в параметрах дело-то... :(
А в их неиспользовании и впихивании строкового представления в текст запроса, забывая/не зная о разном форме записи даты в разных странах и серверах.
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('select * from aglomerat');
DataModule2.ADOQuery1.SQL.Add('where data>=:pdtfr and data<=:pdtto');
DataModule2.ADOQuery1.SQL.ParamByName('dtfr').AsData = Form1.DateTimePicker1.Date;
DataModule2.ADOQuery1.SQL.ParamByName('dtto').AsData = Form1.DateTimePicker2.Date;
DataModule2.ADOQuery1.Open;
И вместо
ADOQuery1.SQL.Add
ADOQuery1.SQL.Add
почему бы не
ADOQuery1.SQL.Text
oldman (2011-06-14 08:21:00) [20]
> поле типа Date
...
> DateToStr
не в параметрах дело-то... :(