Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.009 c
2-1307782174
Pepe
2011-06-11 12:49
2011.10.02
MPEG VBR


2-1307642941
Gu
2011-06-09 22:09
2011.10.02
Передача имени процедуры в Dll и вызов ее там


2-1305747906
volkafff
2011-05-18 23:45
2011.10.02
Serversocket и Clientsocket


15-1307656883
Германн
2011-06-10 02:01
2011.10.02
Сетевой диск на локальном компьютере


2-1307876453
avil
2011-06-12 15:00
2011.10.02
Проверка в множестве