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