Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.041 c
2-1138123522
MasacreAnt
2006-01-24 20:25
2006.02.12
Форма невидимая, но все равно копирует на себя экран за собой...


3-1134135704
DSKalugin
2005-12-09 16:41
2006.02.12
like % - не работает. Почему?


5-1124023949
Navi
2005-08-14 16:52
2006.02.12
Компонент не реагирует на сообщение


15-1137730196
Думкин
2006-01-20 07:09
2006.02.12
Jeer с днем тебя человечище.


15-1137442466
Гарри Поттер
2006-01-16 23:14
2006.02.12
Рисовалки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский