Главная страница
    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
1-1137230335
V-A-V
2006-01-14 12:18
2006.02.12
Импорт справочника товара в 1с


15-1137954636
Ford
2006-01-22 21:30
2006.02.12
Где можно скачать ?


1-1137313250
igi
2006-01-15 11:20
2006.02.12
Как сделать на дельфи...


11-1119419512
midas2k5
2005-06-22 09:51
2006.02.12
StatusBar


1-1137267073
veb
2006-01-14 22:31
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский