Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.06 c
1-1137292304
--zaazoo--
2006-01-15 05:31
2006.02.12
Непонятно криво грузятся логи аси в моей программе и в винде.


3-1134730429
y0zh
2005-12-16 13:53
2006.02.12
Служба + Firebird


15-1137435668
Kerk
2006-01-16 21:21
2006.02.12
Проблемы с логином в асе


4-1133562913
Delphi_is_cool
2005-12-03 01:35
2006.02.12
Не отображаются Item ы в СomboBox


15-1138087423
Serg1981
2006-01-24 10:23
2006.02.12
Не могу понять