![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EOleException [D6]
Trilon1 © (2006-01-26 16:07:00)Привет.
Помогите, как правильно обработать исключительную ситуацию:
EOleException with message "Data type mismatch in criteria expression
Появляется если жму сохранить, а Edit1in.Text пустое, процедура ниже:
procedure TForm1.BtnInOKClick(Sender: TObject);
begin
Adoqin.Close;
Adoqin.SQL.Text:='INSERT INTO InDoc (numberin,dat,NDDOC,FROM_H,doc,QLIST,Regist,TO_WHOM,NNOT) VALUES ('
+ QuotedStr(Edit1in.Text)+','
+ QuotedStr(DateEdit1.Text)+','
+ QuotedStr(Edit2in.Text)+','
+ QuotedStr(REd2in.Text)+','
+ QuotedStr(Red1in.Text)+','
+ QuotedStr(Edit6in.Text)+','
+ QuotedStr(Edit5in.Text)+','
+ QuotedStr(Edit7in.Text)+','
+ QuotedStr(Edit8in.Text) + ')';
Adoqin.ExecSQL;
Adoqin.Close;
Trilon1 (2006-01-27 16:41:00) [1]Sniknik, первый вариант получился, УРА.
Есть одно но, в это поле нужно только цифры вводить ?
Как сделать проверку перед нажатием (до инсерта), покажи пожалуйста какой-нить примерчик?
Trilon1 (2006-01-26 18:11:00) [2]Спасибо за помощь. Буду пробовать.
sniknik (2006-01-26 17:48:00) [3]> Как его "заставить" не забывать заполнять Edit?
+ рубль, - рубль. еще и не такие "проблемы" решает...
но можно и менее радикально
procedure TForm1.EditChange(Sender: TObject);
begin
Button1.Enabled:= (Trim(Edit1.Text) <> '') and
(Trim(Edit2.Text) <> '') ...
end;
"повесить" на все критичные едиты (условие желательно "поинтелектуальней")
или проверку в нажатии делать до инсерта... и выдавать "не заполнен едит_х"
Trilon1 (2006-01-26 17:12:00) [4]Спасибо, это понял.
Но у меня на форме Edit, в который вводится номер документа, если пользователь забыл его ввести и нажал сохранить, т.е. исполнил комманду INSERT, то получил exception :(
Как его "заставить" не забывать заполнять Edit?
sniknik (2006-01-26 17:02:00) [5]AdoComm.CommandText:= 'INSERT INTO InDoc (numberin, dat) VALUES (:num, :dat)';
AdoComm.Parameters.ParamByName('num').Value:= 1;
AdoComm.Parameters.ParamByName('dat').Value:= Now();
AdoComm.Execute;
Trilon1 (2006-01-26 16:40:00) [6]Покажите на примере, пожалуйста.
sniknik (2006-01-26 16:32:00) [7]дата это тоже не текст... ( DateEdit1 наверняка содержит "типа дату")
универсальное решение - параметры. и следить за типами, посылать только то что соответствует типу в базе.
Trilon1 (2006-01-26 16:25:00) [8]1. Простая таблица в Access
2. Действительно это поле в базе 'Number'
Убрал кавычки, другая EoleException Syntax error in INSERT INTO statement
Val (2006-01-26 16:18:00) [9]1. СУБД?
2. вероятно не все поля текстовые, а вы обрамляете их кавычками.