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

Вниз

Обработка исключительных операций   Найти похожие ветки 

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

Наверх




Память: 0.48 MB
Время: 0.018 c
6-7570
danka
2003-04-25 17:42
2003.07.03
idFTP и id HTTP


1-7406
LinOS
2003-06-23 06:33
2003.07.03
В ListBox хочу выделять Item правой кнопкой мыши.


14-7711
Aga
2003-06-17 18:39
2003.07.03
Проба


14-7619
ferrik
2003-06-18 21:06
2003.07.03
Hard Disk Drive


1-7474
Doc
2003-06-20 13:07
2003.07.03
Вопрос по Стэку и все что с ним связано.