![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с SQL, база dbf [D7]
Tornado © (2006-10-19 08:06:00)Надо написать простенький запрос к таблице dbf:
SQL.Add('SELECT * FROM KART.DBF WHERE (KART.DROJD > :TDATE_)');
Parameters.ParamByName('TDATE_').Value := '10.12.1965';
Не проходит, пишет Operator/operand type mismatch
Уж по всякому пытался - никак не идет. Вообще надо даже в параметре вместо статичной даты написать текущую дату, типа Date(). С dbf никогда не работал, читал где-то что там по другому как то надо строить запросы?
Anatoly Podgoretsky (2006-10-19 19:06:00) [1]А если это еще и MS SQL сервер, то можно элементарно получить дату на два дня меньше, у него формат даты не совпадает с Борландовским. Поэтому ни каких целых чисел, только типы TDate/TDateTime
Anatoly Podgoretsky (2006-10-19 19:04:00) [2]Какие еще trunc или round, просто Date
ANB (2006-10-19 11:53:00) [3]
> trunc, а то у тебя можно получить и завтра.
Согласен. Лопухнулся.
sniknik (2006-10-19 11:52:00) [4]> Если нужна текущая дата без времени - round(now);
trunc, а то у тебя можно получить и завтра.
ЮЮ (2006-10-19 11:21:00) [5]
> Вообще надо даже в параметре вместо статичной даты написать
> текущую дату, типа Date().
WHERE (KART.DROJD > :TDATE_)
Типа картотека на ожидающихся новорожденных :)
ANB (2006-10-19 11:04:00) [6]Если нужна текущая дата без времени - round(now);
ANB (2006-10-19 11:04:00) [7]
> Вообще надо даже в параметре вместо статичной даты написать
> текущую дату, типа Date().
Now;
Desdechado (2006-10-19 11:02:00) [8]> надо даже в параметре вместо статичной даты написать текущую дату, типа Date()
Ну так и напиши туда дату, а не строку, безуспешно пытающуюся изобразить из себя дату. Главное - соблюсти тип поля при впихивании в вариантный Value значения параметра.
Zacho (2006-10-19 09:06:00) [9]ЮЮ © (19.10.06 8:58) [8]
Ага, понял.
До меня просто не сразу дошло, что речь идёт об ADO.
Только сейчас обратил внимание на Parameters
ЮЮ (2006-10-19 08:58:00) [10]
> AsDateTime:=<строка>
Я не предлагал строку. Есиественно нужно получить TDateTime
P/S/ у ADO-Parameters нет никаких asXXX. Поэтому надо особенно внимательно подсовывать variant значение. Или определять DataType "вручнкю": см [6]
Zacho (2006-10-19 08:52:00) [11]ЮЮ © (19.10.06 8:23) [4]
Я, может чего-нибудь не понимаю, но разве при .AsDateTime:=<строка> произойдёт пребразование строки в дату ?
ИМХО, тогда уж .AsDateTime:=StrToDate(...)
ЮЮ (2006-10-19 08:26:00) [12]Parameters.ParamByName('TD_') .DataType:= ....
Parameters.ParamByName('TD_').Value :=
Zacho (2006-10-19 08:23:00) [13]А какими собственно компанентами доступа ты пользуешься ?
ЮЮ (2006-10-19 08:23:00) [14]А, по-моему, надо
.AsDateTime
ибо если .Value := <строка>, то это эквивалентно .asString = <строка> и параметр будет определен как строкового типа, а поле, KART.DROJD, полагаю, типа Data
Tornado (2006-10-19 08:20:00) [15]Zacho © (19.10.06 08:10) [2]
Я может чегото не допонимаю, но
Parameters.ParamByName('TD_').AsString := '31.12.1965';
Ошибка: [Error] Unit1.pas(223): Undeclared identifier: 'AsString'
Zacho (2006-10-19 08:10:00) [16]Надо:
ParamByName('TDATE_'). AsString:= '10.12.1965';
Tornado (2006-10-19 08:07:00) [17]KART.DROJD - это тоже поле с датой (день рожденья)