DBUseExceptions()
DBUseExceptions() – Exception-Handling für Datenbank-Funktionen
Die Funktion bietet die Möglichkeit, die Datenbankfunktionen auf Exception-Handling umzustellen. Die Umstellung gilt nur für den aktuellen Codeblock. Globale Funktionen verhalten sich wie der Kontext, aus dem sie aufgerufen werden. In diesen Funktionen sollten möglichst keine Änderungen am Exception-Handling vorgenommen werden. Falls es doch notwendig ist, muß vor dem Verlassen der globalen Funktion der alte Wert zurückgeschrieben werden. Module, die per Call() aufgerufen werden, sind kontextunabhängig und ändern ihr Verhalten nicht.
Der Rückgabewert von DBUseExceptions ist die vorherige Einstellung.
Der Vorgabewert für jeden Codeblock ist False, d.h. alle Datenbankfunktionen arbeiten per Default ohne Exceptions.
Vergleich des Verhaltens
Zuweisungen auf geschützte Datenbank-Felder erzeugen im Exception-Modus einen Laufzeitfehler. Folgende Funktionen weisen ein geändertes Verhalten auf:
Funktion: | Fehler | Rückgabe mit Exception | ohne Exception Laufzeitfehler |
---|---|---|---|
AsString | Falsches Argument | EmptyValue | Abort() |
AsVariant | Falsches Argument | EmptyValue | Abort() |
DbAppend | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbCancel | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbDelete | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbEdit | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbFCount | Falsches Argument | 0 | Abort() |
DbGoBottom | Falsches Argument | EmptyValue | Abort() |
DbGoTop | Falsches Argument | EmptyValue | Abort() |
DbInsert | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbOldVal | Falsches Argument | EmptyValue | Abort() |
DbPost | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbRefresh | Falsches Argument | .F. | Abort() |
DbReplace | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbState | Falsches Argument | .F. | Abort() |
DbType | Falsches Argument | Leerstring | Abort() |
BoF | Falsches Argument | .F. | Abort() |
EoF | Falsches Argument | .F. | Abort() |
DbRecNo | Falsches Argument | 0 | Abort() |
LastRec | Falsches Argument | 0 | Abort() |
DbReplace | Falsches Argument | .F. | Abort() |
Rechtefehler | .F. | Abort() | |
DbSkip | Falsches Argument | .F. | Abort() |
DbSeek | Falsches Argument | .F. | Abort() |
DbOpen | Fehler beim Öffnen | EmptyValue | Abort() |
DbRecNo | Falsches Argument | -1 | Abort() |
DbGoTo | Falsches Argument | .F. | Abort() |
DbLock | Falsches Argument | .F. | Abort() |
DbUnlock | Falsches Argument | .F. | Abort() |
DbFilter | Falsches Argument | EmptyValue | Abort() |
DbIndex | Falsches Argument | .F. | Abort() |
Nicht ausgeführt | .F. | Abort() | |
DbZap | Falsches Argument | .F. | Abort() |
Nicht ausgeführt | .F. | Abort() |
Parameter | Beschreibung |
---|---|
aDoUse:L | Exception-Handling aktivieren / deaktivieren |
Rückgabewert
Logisch - Wert der vorherigen Einstellung
Beispiel
// Beispiel im alten Modus:
// ------------------------
| oDab000:DB := 'waDAB000, 1', aFehler |
aFehler := .T.,
If DbEdit(oDab000) then
If DbReplace(DbField('NAME1', 'XXX') then
If DbPost(oDab000) then
aFehler := .F.,
EndIf,
EndIf,
EndIf,
WriteLn('Kundenname ' + If(aFehler, 'nicht ', '') + 'geändert!')
Beispiel im neuen Modus:
------------------------
| oDab000:DB := 'waDAB000, 1', aFehler |
StartSeq
DbEdit(oDab000),
DbReplace(DbField('NAME1', oDab000), 'XXX'),
DbPost(oDab000),
aFehler := .F.,
OnError
aFehler := .T.,
StopSeq,
WriteLn('Kundenname ' + If(aFehler, 'nicht ', '') + 'geändert!')