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

Работа с SQL, база dbf   Найти похожие ветки 

← →
Tornado ©   (2006-10-19 08:06) [0]

Надо написать простенький запрос к таблице dbf:

SQL.Add("SELECT * FROM KART.DBF WHERE (KART.DROJD > :TDATE_)");
Parameters.ParamByName("TDATE_").Value := "10.12.1965";

Не проходит, пишет Operator/operand type mismatch

Уж по всякому пытался - никак не идет. Вообще надо даже в параметре вместо статичной даты написать текущую дату, типа Date(). С dbf никогда не работал, читал где-то что там по другому как то надо строить запросы?


← →
Tornado ©   (2006-10-19 08:07) [1]

KART.DROJD - это тоже поле с датой (день рожденья)


← →
Zacho ©   (2006-10-19 08:10) [2]

Надо:

ParamByName("TDATE_").AsString := "10.12.1965";


← →
Tornado ©   (2006-10-19 08:20) [3]

Zacho ©   (19.10.06 08:10) [2]

Я может чегото не допонимаю, но
Parameters.ParamByName("TD_").AsString := "31.12.1965";

Ошибка: [Error] Unit1.pas(223): Undeclared identifier: "AsString"


← →
ЮЮ ©   (2006-10-19 08:23) [4]

А, по-моему, надо
 .AsDateTime
ибо если .Value := <строка>, то это эквивалентно  .asString = <строка> и параметр будет определен как строкового типа, а поле, KART.DROJD, полагаю, типа Data


← →
Zacho ©   (2006-10-19 08:23) [5]

А какими собственно компанентами доступа ты пользуешься ?


← →
ЮЮ ©   (2006-10-19 08:26) [6]

Parameters.ParamByName("TD_").DataType := ....
Parameters.ParamByName("TD_").Value :=


← →
Zacho ©   (2006-10-19 08:52) [7]

ЮЮ ©   (19.10.06 8:23) [4]

Я, может чего-нибудь не понимаю, но разве при .AsDateTime:=<строка> произойдёт пребразование строки в дату ?

ИМХО, тогда уж .AsDateTime:=StrToDate(...)


← →
ЮЮ ©   (2006-10-19 08:58) [8]


> AsDateTime:=<строка>


Я не предлагал строку. Есиественно нужно получить TDateTime
P/S/ у ADO-Parameters нет никаких asXXX. Поэтому надо особенно внимательно подсовывать variant значение. Или определять DataType "вручнкю": см [6]


← →
Zacho ©   (2006-10-19 09:06) [9]

ЮЮ ©   (19.10.06 8:58) [8]

Ага, понял.

До меня просто не сразу дошло, что речь идёт об ADO.
Только сейчас обратил внимание на Parameters


← →
Desdechado ©   (2006-10-19 11:02) [10]

> надо даже в параметре вместо статичной даты написать текущую дату, типа Date()
Ну так и напиши туда дату, а не строку, безуспешно пытающуюся изобразить из себя дату. Главное - соблюсти тип поля при впихивании в вариантный Value значения параметра.


← →
ANB ©   (2006-10-19 11:04) [11]


> Вообще надо даже в параметре вместо статичной даты написать
> текущую дату, типа Date().

Now;


← →
ANB ©   (2006-10-19 11:04) [12]

Если нужна текущая дата без времени - round(now);


← →
ЮЮ ©   (2006-10-19 11:21) [13]


> Вообще надо даже в параметре вместо статичной даты написать
> текущую дату, типа Date().
WHERE (KART.DROJD > :TDATE_)


Типа картотека на ожидающихся новорожденных :)


← →
sniknik ©   (2006-10-19 11:52) [14]

> Если нужна текущая дата без времени - round(now);
trunc, а то у тебя можно получить и завтра.


← →
ANB ©   (2006-10-19 11:53) [15]


> trunc, а то у тебя можно получить и завтра.

Согласен. Лопухнулся.


← →
Anatoly Podgoretsky ©   (2006-10-19 19:04) [16]

Какие еще trunc или round, просто Date


← →
Anatoly Podgoretsky ©   (2006-10-19 19:06) [17]

А если это еще и MS SQL сервер, то можно элементарно получить дату на два дня меньше, у него формат даты не совпадает с Борландовским. Поэтому ни каких целых чисел, только типы TDate/TDateTime



Страницы: 1 вся ветка

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



Память: 0.48 MB
Время: 0.031 c
15-1165303847
Kerk
2006-12-05 10:30
2006.12.31
Сценарий телесериала "Бригада"


15-1165871895
IMHO
2006-12-12 00:18
2006.12.31
Слово о eDonkey


3-1161330355
Megabyte
2006-10-20 11:45
2006.12.31
Не работает RowsAffected у TpFIBStoresProc


15-1165089940
Cyrax
2006-12-02 23:05
2006.12.31
Java - это же не Yava...


15-1165588186
sergey888
2006-12-08 17:29
2006.12.31
Прослушка мобильных




   Наверх