Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1307593117
Sergey
2011-06-09 08:18
2011.10.02
перезагрузка адсл модема


2-1308141783
Patrick1968
2011-06-15 16:43
2011.10.02
Конвертация из Excel


15-1306259758
R_R
2011-05-24 21:55
2011.10.02
Трехмерные шахматы


2-1308038648
FIL-23
2011-06-14 12:04
2011.10.02
Бегуший текст в кнопке


2-1307895125
Leon-Z
2011-06-12 20:12
2011.10.02
Предупреждение компилятора.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский