![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO отбор по диапазону дат
armstrong © (2011-08-17 22:18:00)create table my (
startdate date
)
select startdate from my
where startdate>'01.01.2011'
вываливается с ошибкой "Несоответствие типов данных в выражении условия отбора"
что интересно пока записей нет отбор вроде работает.
в гриде отображаются добавленные записи с разделителем точкой.
вообще-то мне нужно хранить дату со временем и в дальнейшем отбирать и по диапазону времени. натолкнулся на эту ошибку, у простил до даты а оно всё равно.
кто сталкивался, подскажите в чем может быть проблема.
соединение с базой стандартное TADO, через "Microsoft.Jet.OLEDB.4.0"
OW (2011-08-18 11:54:00) [1]
> ак передать дату в запросе напрямую..
>
зачем?
проще написать вспомогательную процедурку, аля
procedure GetByDate(Date: TDateTime);
begin
ADODataSet.CommandText := 'select startdate from my where startdate > :StratDate';
ADODataSet.ParamByName('StratDate').As ... := Date;
end;
и юзать
GetByDate(StrToDateTime('01.01.2011'));
ixen (2011-08-18 10:48:00) [2]
> armstrong (17.08.11 23:02) [9]
> Ega23 ©, насчет параметров я вкурсе, всё работает..
> Вот как передать дату в запросе напрямую..
ADODataSet.CommandText := 'select startdate from my where startdate >'+quotedstr('01.01.2011');
Медвежонок Пятачок (2011-08-17 23:52:00) [3]есть форматы, понятные не конкретному провайдеру.
канонические.
тот же odbc canonical yyyy-mm-dd
Ega23 (2011-08-17 23:42:00) [4]
> понятного адо
Не АДО, а конкретному драйверу.
armstrong (2011-08-17 23:18:00) [5]function DateTimeForSQL(const dateTime : TDateTime) : string;
begin
result := FormatDateTime('#yyyy-mm-dd hh.nn.ss#', dateTime) ;
end;
armstrong (2011-08-17 23:14:00) [6]#yyyy-mm-dd HH:MM:SS#
Медвежонок Пятачок (2011-08-17 23:10:00) [7]вот мы плавно и подошли к вопросу чтения документации на предмет строкового представления даты понятного адо
Ega23 (2011-08-17 23:10:00) [8]
> Вот как передать дату в запросе напрямую..
Так, как говорит Jet.
armstrong (2011-08-17 23:02:00) [9]Ega23 ©, насчет параметров я вкурсе, всё работает..
Вот как передать дату в запросе напрямую..
Медвежонок Пятачок ©, а как тогда обрамлять дату?
Ega23 (2011-08-17 22:59:00) [10]
> я не могу понять как передать в сомом выражении для ADO
> дату..
ADODataSet.CommandText := 'select startdate from my where startdate > :StratDate';
ADODataSet.ParamByName('StratDate').As ... := ....
Медвежонок Пятачок (2011-08-17 22:52:00) [11]что даты обрамляются кавычками и всегда работало...
ты с прямым углом перепутал.
кавычками обрамляются строки а не даты
armstrong (2011-08-17 22:38:00) [12]Ega23 ©, через парамерты отбор даты работает.
я не могу понять как передать в сомом выражении для ADO дату..
armstrong (2011-08-17 22:30:00) [13]Вы имеете ввиду что там дата а там строка?
как тогда правильно составить запрос?
меня с детства вроде учили, что даты обрамляются кавычками и всегда работало... только не в этом ADO..
Медвежонок Пятачок (2011-08-17 22:27:00) [14]там и про это тоже написано. в чем несоответсвие. читай еще раз
armstrong (2011-08-17 22:24:00) [15]Я внимательно прочитал сообщение.
Вот в чем несоответсвие понять никаки не могу.
Не могли бы Вы подсказать?
Медвежонок Пятачок (2011-08-17 22:21:00) [16]проблема уже озвучена в сообщении об ошибке.
осталось его прочитать.
Ega23 (2011-08-17 22:20:00) [17]"О сколько раз твердили миру"
ИСПОЛЬЗУЙТЕ ПАРАМЕТРЫ, Б...!!!!!!