![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет. Простейшая задача: в dbf-файл записывается строка следующим образом:
ADOQuery1.SQL.Add('INSERT INTO main_base (DATE_VR) values ("DateTimePicker1.Date")'); В файле main_base.dbf поле DATE_VR имеет тип Date. Выдается ошибка: Data type mismatch. Пытался использовать различные функции преобразования (FormatDateTime, CAST) - но все равно не работает. Выдаются ошибки Incompatible types: 'String' and 'TDate' или Data type mismatch. Если кто-нибудь сталкивался с подобной задачей - помогите плиз. Заранее огромное спасибо! |
|
#2
|
||||
|
||||
|
Конечно будет несоответствие типов. Ты пытаешься присвоить строке дату. Так делать нельзя. Вообще, чтобы не было проблем с типами данных я советую использовать параметры в запросах. Для твоего случая решение будет вот таким:
Код:
...
with ADOQuery1 do
begin
if Active then
Close;
SQL.Text:='INSERT INTO main_base (date_vr) values (:date_vr)';
Parameters.ParseSQL(SQL.Text,True);
Parameters.ParamByName('date_vr').Value:=DateTimePicker1.Date;
try
ExecSQL;
except
on E:Exception do
ShowMessage(Format('Ошибка "%s", при обновлении таблицы',[E.Message]));
end;
end; |
|
#3
|
|||
|
|||
|
Спасибо большое, все работает! Единственное - не работает строка:
Parameters.ParamByName('date_vr').Value:=DateTimeP icker1.Date; Поэтому сделал так :-) (работает только так) Parameters.ParamByName('date_vr').Value:=strtodate (datetostr(DateTimePicker1.Date)); |