Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.005 c
4-1252505872
Игорь
2009-09-09 18:17
2011.12.04
SYSTEM_HANDLE_INFORMATION


8-1220951683
Konung
2008-09-09 13:14
2011.12.04
Рисовать на pf32bit битмапе


8-1220146711
Agent[007]
2008-08-31 05:38
2011.12.04
max to 3ds


15-1313170131
Leon-Z
2011-08-12 21:28
2011.12.04
Delphi 2007.


2-1314022808
Mishanja
2011-08-22 18:20
2011.12.04
Формирование TreeView




   Наверх