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

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

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]

"О сколько раз твердили миру"

ИСПОЛЬЗУЙТЕ ПАРАМЕТРЫ, Б...!!!!!!


Наверх

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