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

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

Работа с 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 - это тоже поле с датой (день рожденья)


Наверх

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