Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];
Внизsql запрос дата Найти похожие ветки
← →
vasja666 (2011-06-14 05:45) [0]С частым постоянством всплывают темы про запросы с датой, почитал не понял как мне правильно сделать.
База 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;
← →
Anatoly Podgoretsky © (2011-06-14 07:41) [1]Используй параметры
← →
sniknik © (2011-06-14 07:53) [2]> С частым постоянством всплывают темы про запросы с датой, почитал
а постоянные ответы про параметры в этих темах игнорировал?...
← →
oldman © (2011-06-14 08:21) [3]
> поле типа Date
...
> DateToStr
не в параметрах дело-то... :(
← →
Inovet © (2011-06-14 09:27) [4]> [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
← →
Inovet © (2011-06-14 09:29) [5]> [4] Inovet © (14.06.11 09:27)
> ParamByName("dtfr").AsData
Ага, Со своей data тут панимаешь - AsDate.
← →
Anatoly Podgoretsky © (2011-06-14 09:35) [6]
> Inovet © (14.06.11 09:27) [4]
И с подсчетом апострофов. Сложная для многих задача.
← →
sniknik © (2011-06-14 09:53) [7]> Ага, Со своей data тут панимаешь - AsDate.
AsDateTime, иначе могут быть проблемы... все с тем же непониманием, что дата это тот же тип, и значения времени автоматически в нем не обрезаются.
да и это
Form1.DateTimePicker1.Date;
написал бы так Trunc(DateTimePicker1.DateTime), просто чтоб не парится, не следить за тем чтобы в дизайн там нули были...
← →
vasja666 (2011-06-14 10:29) [8]пробовал через параметры не получилось\
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)
← →
Anatoly Podgoretsky © (2011-06-14 10:56) [9]> vasja666 (14.06.2011 10:29:08) [8]
Все неправильно, надо менять последовательность команд. И что значит не
получилось?
← →
vasja666 (2011-06-14 11:05) [10]пустая таблица как будьто условие не подходит\
а AsDateTime пишет нет такого идентификатора
← →
Inovet © (2011-06-14 11:08) [11]> [8] vasja666 (14.06.11 10:29)
А значения праметров почему вдруг решил задать перед их определением?
← →
Anatoly Podgoretsky © (2011-06-14 11:08) [12]
> vasja666 (14.06.11 11:05) [10]
Меняй порядок (уже писал).
TParameter такого свойства не имеет, используй Value
← →
vasja666 (2011-06-14 11:18) [13]
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;
так?или я опять что то путаю\
← →
sniknik © (2011-06-14 11:38) [14]> так?или я опять что то путаю\
не читаешь...
внимательно!
Inovet © (14.06.11 09:27) [4]
sniknik © (14.06.11 09:53) [7]
... не хотел, но... ADOQuery на помойку! ADODataSet форевер! ;)
← →
vasja666 (2011-06-14 18:28) [15]> внимательно!
Inovet © (14.06.11 09:27) [4]
sniknik © (14.06.11 09:53) [7]
ADOQuery нет свойства AsData, AsDateTime
← →
Медвежонок Пятачок © (2011-06-14 18:37) [16]У тебя и параметров Date1 и Date2 тоже нету.
А ты зачем-то присваиваешь им значения.
← →
vasja666 (2011-06-14 18:54) [17]
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:58) [18]сделай как было в начале ветки и сразу узнаешь насколько последний вариант правильный.
← →
Inovet © (2011-06-14 19:31) [19]> [17] vasja666 (14.06.11 18:54)
> ParamByName("pDate2").Value:=DateToStr(Form1.Da teTimePicker2.Date);
Мда. Смысл тогда всего этого обсуждения.
← →
sniknik © (2011-06-14 20:44) [20]> ADOQuery нет свойства AsData, AsDateTime
а читать нужно по тому что есть... сказал же, внимательно.
← →
Palladin © (2011-06-14 20:47) [21]супер метод разработки, пальцем в небо брейнлесс эдишн...
← →
Медвежонок Пятачок © (2011-06-14 20:48) [22]причем еще и зрение используется наполовину.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.003 c