Event "bei Fehler in BE-Recht_Event_Formel"
Event "bei Fehler in BE-Recht/Event/Formel"
Der Aufruf erfolgt, falls in einem DB-Recht (Tabellen-/Feld-Recht, Neu, Update, Delete), einem BE-Event oder einer Formel in den allgemeinen Parametern ein Fehler auftritt.
Der Event bietet die Möglichkeit die Fehlinformationen auszuwerten und zu steuern, ob anschließend ein Programm-Fehler ausgelöst werden soll (siehe Beispiel).
Beispiel
CODE
| nEvtNo:P1, nEventTyp:P2, cEventID:P3, oException:P4, lHandled:P5,
cTyp, nRes |
// Handling von BE-Event-Fehlern
// nEventTyp : 0 = Tabellen/Feld-Recht (Neu, Update, Delete)
// cEventID : Text mit genaueren Infos zum Recht (Tabellen-/Feldname, Art des Rechts, etc.)
// nEventTyp : 1 = BE-Event (z.B. "beim Start von BE-32")
// cEventID : Numerische ID und Name des Events (z.B.: "2: beim Start von BE-32")
// nEventTyp : 2 = Allg.Parameter Formel (z.B. "Formel Auftrags-Sperre")
// cEventID : Feldname in DABPAR (z.B.: "AUF_SPERR")
// oException : Exception-Object, entspricht Rückgabe von GetErrorObj()
// lHandled : Vorgabe, ob der Fehler bereits gehandled wird (Sprich: das keine Exception mehr ausgelöst wird)
// True = bereits gehandled, keine Exception
// False = nicht gehandled, Exception auslösen
// Rückgabe : True = Fehler WURDE in diesem Events gehandled, KEINE Exception auslösen
// False = Fehler wurde NICHT in diesem Events gehandled, Exception AUSLÖSEN
// <leer> = Vorgabe von lHandled übernehmen
// HINWEIS: Fehler in diesem Event werden ignoriert!
// Test-Werte für Programmeditor
if EditorMode() then
nEventTyp := 0,
cEventID := '999: bei Ereignis',
oException:= CreateObject('TComponent'),
lHandled := False,
startseq,
SetError('Fehler in Funktion xxx()'),
onerror,
stopseq,
endif,
// Typ im Klartext
case nEventTyp
of 0 :: cTyp := "Tabellen/Feld-Recht",
of 1 :: cTyp := "BE-Event",
of 2 :: cTyp := "Allg.Parameter Formel",
otherwise
cTyp := "Unbekannt"
endcase,
nRes := MessageDlg('FEHLER IN BE-EVENT:' + crlf + crlf +
'Event-Typ: ' + cTyp + crlf +
'Fehler-Typ: ' + ClassName(oException) + crlf +
'Fehler-Text: ' + GetErrorText(oException) + crlf + crlf +
'Event-ID: ' + cEventID + crlf + crlf +
'Programmausführung wird per Default ' + iif(not lHandled, 'NICHT ', '')
+ 'fortgesetzt!' + crlf + 'Programmausführung fortsetzen?',
mtError, mbYes + mbNo + mbCancel, 0 ),
if nRes = mrYes then
lHandled := True,
else
if nRes = mrNo then
lHandled := False,
endif,
endif,
lHandled