![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос [D7, Access]
Valerik © (2008-11-25 10:46:00)Помгите пожалуйста с запросом!!!!
Form2.ADOQuery1.SQL.Add('select * from Otchet Where data='+DateTimePicker1.+'');
Дает ошибку:Число содержит синтаксическую ошибку в выражении запроса 'data=24.11.2008'
В чем может быть проблема?
Palladin (2008-11-25 15:39:00) [21]Это не разница. Это игра такая. Угадай где месяц. На какой машине.
Valerik (2008-11-25 15:20:00) [22]
> а так ?Form2.ADOQuery1.Parameters.ParamByName('D1').Value:
> = '12.11.2008';иForm2.ADOQuery1.Parameters.ParamByName('D1').
> Value:= '11.12.2008';
А в чем разница????
Palladin (2008-11-25 15:03:00) [23]
> Valerik © (25.11.08 14:50) [19]
а так ?
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:= '12.11.2008';
и
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:= '11.12.2008';
Valerik (2008-11-25 14:50:00) [24]
> вместо этого выполни к примеру вот эту пару и сравни результатForm2.
> ADOQuery1.Parameters.ParamByName('D1').Value:= '24.11.2008';
> иForm2.ADOQuery1.Parameters.ParamByName('D1').Value:= '11.
> 24.200
Результат одинаковый)))
sniknik (2008-11-25 14:23:00) [25]> Form2.ADOQuery1.Parameters.ParamByName('D1').Value:=DateToStr(DateTimePicker1.Da te)
вместо этого выполни к примеру вот эту пару и сравни результат
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:= '24.11.2008';
и
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:= '11.24.2008';
sniknik (2008-11-25 14:19:00) [26]> Перевел дату в стринг и все заработало:
ну это только на первый взгляд. ты просто перенес ошибку из очевидных в "плавающие" и трудно уловимые.
Sergey13 (2008-11-25 14:17:00) [27]> [15] Valerik © (25.11.08 14:11)
> Перевел дату в стринг и все заработало
Успехов тебе в нелегкой борьбе.
Valerik (2008-11-25 14:11:00) [28]Разобрался. Перевел дату в стринг и все заработало:
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:=DateToStr(DateTimePicker1.Da te)
Palladin (2008-11-25 14:11:00) [29]
> sniknik © (25.11.08 14:03) [11]
) я имею в виду, что значение времени в данных не 0 (взял да поставил значение по умолчанию на поле Date()+Time()),
> и кстати DateTimePicker1.Date тоже не совсем Date
а вот это, кстати да, упущение с моей стороны, причина скорее всего наоборотная )
Form2.ADOQuery1.Parameters.ParamByName('D1').Value:= Trunc(DateTimePicker1.Date );
Правильный$Вася (2008-11-25 14:09:00) [30]
> есть за эту дату данные
начало и конец суток можешь определить?
BETWEEN юзай
Valerik (2008-11-25 14:08:00) [31]есть за эту дату данные. и функцию в Access задавал, что бы ставил только дату.
И все равно пусто.
sniknik (2008-11-25 14:03:00) [32]> у тебя поди в данных дата еще и со временем сидит...
по другому и не бывает, типа только дата в аксессе нет, и кстати DateTimePicker1.Date тоже не совсем Date...
Palladin (2008-11-25 13:45:00) [33]у тебя поди в данных дата еще и со временем сидит...
Palladin (2008-11-25 13:44:00) [34]значит нет ничего за эту дату
Valerik (2008-11-25 13:35:00) [35]Form2.ADOQuery1.Close;
Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add('select * from Otchet Where data=:D1'); Form2.ADOQuery1.Parameters.ParamByName('D1').Value:=DateTimePicker1.Date;
Form2.ADOQuery1.Open;
Попробовал через параметры. Ошибки нет, но запрос возвращается пустым.
qqq (2008-11-25 13:10:00) [36]
> stas © (25.11.08 11:22) [5]
это зло!
Sergey13 (2008-11-25 11:57:00) [37]> [5] stas © (25.11.08 11:22)
А в другой СУБД в бемолях. А через параметры едят все.
stas (2008-11-25 11:22:00) [38]Valerik © (25.11.08 10:46)
Дата в Access записывается в диезах
data=#24.11.2008#
sniknik (2008-11-25 10:55:00) [39]> Дает ошибку:Число содержит синтаксическую ошибку в выражении запроса 'data=24.11.2008'
а разве нет? правильным с точки зрения любого sql сервера будет число с одной точкой между целой и дробной частью типа 'data=24.11'
используй параметры.
qqq (2008-11-25 10:53:00) [40]
> )+'');
этот хвостик зачем?