Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Обработка в приложении исключения, вызываемого в триггере.   Найти похожие ветки 

 
DROWSY   (2010-05-13 05:15) [0]

Как в можно проге перехватить, например, такое исключение в триггере

CREATE EXCEPTION NO_DELETE "Нельзя удалять строку, нужную другой таблице";

CREATE TRIGGER SCRN_SURF_FORM_BD0 FOR SCRN_SURF_FORM
ACTIVE BEFORE DELETE POSITION 0
AS
begin
 if (exists(select scrn_surf_form_code from screen where scrn_surf_form_code = old.code )) then
 exception no_delete;
end


 
Leonid Troyanovsky ©   (2010-05-13 08:55) [1]


> DROWSY   (13.05.10 05:15)
 
> Как в можно проге перехватить, например, такое исключение

OnDeleteError?

--
Regards, LVT.


 
DROWSY   (2010-05-13 09:13) [2]

Этот обработчик почему - то не вызывается.
При Database.ApplyUpdates генерируется исключение "User abort".


 
Leonid Troyanovsky ©   (2010-05-13 10:03) [3]


> DROWSY   (13.05.10 09:13) [2]

> Этот обработчик почему - то не вызывается.

Отсюда ж не видно, почему. Кроме того, у EDBEngineError есть Errors,
да и в партизанов играть недосук.

--
Regards, LVT.


 
Игорь Шевченко ©   (2010-05-13 10:24) [4]


> Этот обработчик почему - то не вызывается.


Больно слышать


 
DROWSY   (2010-05-13 19:36) [5]

BDE не используется.
База FireBird 1.5., IBX

Вопрос в том, как (какой компонент) отловить исключение, вызванное в триггере.


 
turbouser ©   (2010-05-13 20:25) [6]


> DROWSY   (13.05.10 19:36) [5]

на ibase.ru все есть


 
DROWSY   (2010-05-13 23:59) [7]

try

       Database.ApplyUpdates([DataSet as TIBCustomDataSet]);
       Transaction.CommitRetaining;
      { Always call CancelUpdates to remove any discard changes }
       CancelUpdates;
 except
 on E: EIBInterBaseError do begin
   ShowMessage(Format("ErrCode: %d, SQLCode: %d ",
   [E.IBErrorCode,E.SQLCode]));
   Raise;
 end;
 on E: EIBInterBaseRoleError do begin
   ShowMessage(Format("ErrCode: %d, SQLCode: %d ",
   [E.IBErrorCode,E.SQLCode]));
   Raise;
 end;
 on E: EIBClientError do begin
   ShowMessage(Format("ErrCode: %d, SQLCode: %d ",
   [E.IBErrorCode,E.SQLCode]));
   Raise;
 end;

 on E: EIBError do begin
   ShowMessage(Format("ErrCode: %d, SQLCode: %d ",
   [E.IBErrorCode,E.SQLCode]));
   Raise;
 end;
   on E: Exception do
   begin
     ShowMessage((PChar(E.Message + "   " + IntToStr(E.HelpContext)) ,PChar("Change Data"));
     Raise;
   end;
 end

Выдаёт:
ErrCode = 0
SQLCode = 56

Где есть "расшифровка" этих кодов?

Как добраться до исключения в триггере?


 
DROWSY   (2010-05-16 18:34) [8]

Удалено модератором


 
Сергей М. ©   (2010-05-16 23:05) [9]


> Где есть "расшифровка" этих кодов?
>


В документацмм к соответствующей СУБД соответствующей версии.


 
DROWSY   (2010-05-17 16:34) [10]


> Сергей М. ©   (16.05.10 23:05) [9]

В документации к Firebird 1.5 все SQLCode отрицательные.


 
DROWSY   (2010-05-17 16:38) [11]

... кроме SQlCode = 100 и 101.


 
DROWSY   (2010-05-19 22:48) [12]

Для мастеров это, конечно ламерские наблюдения, но таким "мученикам", как я,
может будет интересно.

На таблицах Main и Depend, связанных по foreign key
построены
ibMain, ibDepend : TIBDataSet;
upMain, upDepend : TIBUpdateSQL;

Что я "наковырял":
при удалении записи в ibMain, если есть зависимые записи:
1)
если ibMain.CachedUpdates := true, то
если обновление через upMain (ibMain.UpdateObject := upMain), то Database.ApplyUpdates выыдаёт исключение
E: EIBClientError, E.IBErrorCode = 0 , E.SQLCode = 56 ("user abort")


если ibMain.CachedUpdates := true, то
если обновление без upMain (ibMain.UpdateObject := nil), то Database.ApplyUpdates выыдаёт исключение
E: EIBInterBaseError, E.SQLCode = -530 (ошибка на сервере, типа "bad foreign key"

2)
событие OnDeleteError для ibMain вызывается только если ibMain.CachedUpdates := false;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.058 c
2-1268719836
zergost
2010-03-16 09:10
2010.08.27
Очистка параметров ADOQuery


8-1204825605
VID
2008-03-06 20:46
2010.08.27
Проиграть звук в отдельном потоке


15-1273350599
Юрий
2010-05-09 00:29
2010.08.27
С днем рождения ! 9 мая 2010 воскресенье


2-1272537853
12
2010-04-29 14:44
2010.08.27
WNetAddConnection2. В чем могут быть проблемы?


15-1274473788
Юрий
2010-05-22 00:29
2010.08.27
С днем рождения ! 22 мая 2010 суббота





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский