Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

sql запрос дата [D7, XP]


Страницы:   1 2

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


не в параметрах дело-то... :(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо