Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
ВнизEOleException Найти похожие ветки
← →
Trilon1 (2006-01-26 16:07) [0]Привет.
Помогите, как правильно обработать исключительную ситуацию:
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;
← →
Val © (2006-01-26 16:18) [1]1. СУБД?
2. вероятно не все поля текстовые, а вы обрамляете их кавычками.
← →
Trilon1 (2006-01-26 16:25) [2]1. Простая таблица в Access
2. Действительно это поле в базе "Number"
Убрал кавычки, другая EoleException Syntax error in INSERT INTO statement
← →
sniknik © (2006-01-26 16:32) [3]дата это тоже не текст... (DateEdit1 наверняка содержит "типа дату")
универсальное решение - параметры. и следить за типами, посылать только то что соответствует типу в базе.
← →
Trilon1 (2006-01-26 16:40) [4]Покажите на примере, пожалуйста.
← →
sniknik © (2006-01-26 17:02) [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 17:12) [6]Спасибо, это понял.
Но у меня на форме Edit, в который вводится номер документа, если пользователь забыл его ввести и нажал сохранить, т.е. исполнил комманду INSERT, то получил exception :(
Как его "заставить" не забывать заполнять Edit?
← →
sniknik © (2006-01-26 17:48) [7]> Как его "заставить" не забывать заполнять Edit?
+ рубль, - рубль. еще и не такие "проблемы" решает...
но можно и менее радикально
procedure TForm1.EditChange(Sender: TObject);
begin
Button1.Enabled:= (Trim(Edit1.Text) <> "") and
(Trim(Edit2.Text) <> "") ...
end;
"повесить" на все критичные едиты (условие желательно "поинтелектуальней")
или проверку в нажатии делать до инсерта... и выдавать "не заполнен едит_х"
← →
Trilon1 (2006-01-26 18:11) [8]Спасибо за помощь. Буду пробовать.
← →
Trilon1 (2006-01-27 16:41) [9]Sniknik, первый вариант получился, УРА.
Есть одно но, в это поле нужно только цифры вводить ?
Как сделать проверку перед нажатием (до инсерта), покажи пожалуйста какой-нить примерчик?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c