Форум: "Базы";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизОбработка исключительных операций Найти похожие ветки
← →
Alek Aaz (2003-06-10 11:02) [0]Хелп!
Сделал уникальный индекс, если вводится дублирующаяся информация возникает EDatabaseError. Отлавливаю и что делать дальше? У меня новая строчка все-таки возникает и БДЕ кажет свой обработчик ошибки.
Делаю так:
Table1.Append;
Table1.Fields[0].AsInteger:=i;
Table1.Fields[1].AsInteger:=random(5999);
Table1.Fields[2].AsString:=s1;
Try
Table1.Post;
Except
on EDatabaseError do
Application.MessageBox("Error","Database error",idOk);
// Что тут надо написать?
End;
Спасибо
← →
sniknik (2003-06-10 11:09) [1]ничего не надо. если ошибка возникла в блоке
Try
....
Except
End;
то обработчик ошибки БДЕ не показывается(если в этом проблема), у тебя показывает т.к. ты в режиме разработки (из дельфей запускаеш), запусти скомпиленный exe(с явной ошибкой в блоке) там не будет.
← →
Alek Aaz (2003-06-10 11:56) [2]Нифига.
Данные заносятся в цикле.
Посылаем ошибочные данные - сообщения нет. Но, работа тормозится. Так как DBGrid кажет строчку с новыми введенными данными. Пока не нажмешь ESC ничего работать не будет. Да и цикл вываливается.
← →
sniknik (2003-06-10 12:03) [3]какие такие циклы? судя по вопросу тебе сообщение мешало. судя по дополнению... нихрена неясно что происходит и от чего пытаешся избавится.
если вываливается из цикла то исключение возникло вне блока.
← →
Johnmen (2003-06-10 12:11) [4]> // Что тут надо написать?
Table1.Cancel;
← →
Alek Aaz (2003-06-10 12:17) [5]
Table1.Active:=True;
Table2.Active:=True;
// Данные из Table3 раскидываем по 2 таблицам
Table3.First;
Repeat // Поехали
Application.ProcessMessages;
i:=Table3.Fields[0].AsInteger;
s1:=Table3.Fields[1].AsString;
s2:=Table3.Fields[2].AsString;
s3:=Table3.Fields[3].AsString;
j:=Table3.Fields[4].AsInteger;
IF j>0 then // условие занесения в таблицу
Begin
Table1.Append;
Table1.Fields[0].AsInteger:=i;
Table1.Fields[1].AsInteger:=random(5999);
Table1.Fields[2].AsString:=s1;
Table1.Post; // данные в первую таблицу
Table2.Append;
Table2.Fields[1].AsInteger:=i;
Table2.Fields[2].AsInteger:=j;
If j=1 then Table2.Fields[3].AsString:=s3
else Table2.Fields[3].AsString:=s2;
Table2.Post; // во вторую
End;
Table3.Next; // следующая строчка
Until Table3.Eof;
Table3.First;
От try exept решил отказаться в пользу
procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action:=daAbort;
end;
На форме 3 DBGridа связаны с базами. При дубляже данных в DBGride связанным с Table1 вылазит строчка с бубль-данными и не убирается пока не нажмешь ESC. Можно конечно отвязать от Table1 DBGrid, закончить разносить данные и отобразить новые. Но если процесс займет минут 5? А пользователю всеж интересно узнать на какой он стадии...
← →
Alek Aaz (2003-06-10 12:22) [6]2Johnmen ©
Yes!
Спасибо! Мля... как сам не догадался?!!!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c