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

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

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. вероятно не все поля текстовые, а вы обрамляете их кавычками.


Наверх

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