GELÖST Error Handling

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

GELÖST Error Handling

Beitrag von WSO »

Haallo Zusammen,
ich suche nach Beispielen für ein Error handling für die Feldprüfungen via Makro vor der Verarbeitung (update, delete, insert).
Die Updates der Datenbank für die nach der fehlerfrei durchlaufenen Prüfung soll Base übernehmen.

Falls das Makro Fehler bei der Eingabedatenprüfung feststellt, soll:

der Cursor neu positioniert werden (wie?)
die weitere Veratbeitung durch das Formular (update, delete, inset) soll nicht ausgeführt werden (wie?)
der Fehlertext aus der Fehlertabelle geholt werden (funktioniert)
der varibale Fehlertext per msgbox ausgegeben werden (funktioniert)

Systemfehlermeldungen möchte ich global an/ausschalten können und wenn ausgeschlatet durch eine eigene Meldung ersetzen,
z.B.: ("Systemfehler in Modul: " +modul + "Die aktuelle Verarbeitung wurde abgrbrochen, bitte wenden Sie sich an den Systemadministrator"

Danke für alle Anregungen,
Wolfram
Zuletzt geändert von WSO am Mo, 14.07.2014 23:39, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Error Handling

Beitrag von RobertG »

Hallo Wolfram,

zuerst einmal musst Du beim Formular an die Eigenschaft "Vor der Datensatzaktion" gehen.
Dann ist Dir vielleicht dieser Thread nützlich, in dem ich auch nach etwas gesucht habe, wie ich Fehler abfangen kann:
viewtopic.php?f=8&t=63400#p242354

Gruß

Robert
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Error Handling

Beitrag von WSO »

Hi Robert,
Hmm, vielleicht habe ich mich falsch ausgedrückt.
In dem Thread war ich zuvor schon drin um zu lernen, dass der ErrorListneter das nicht kann.

Ein Makro zue Eingabedatenprüfung, ist ja irgentwann mit der Fehlerpüfung durch, gibt z.B. die Fehlereldung über ungültige Dateneingaben aus,
der Anwender drückt ok und schon habe ich den Schrott in der Datenbank.

Es geht hier nicht um Mussfelder, sondern um kontextsensitive Abhängigkeiten zwischen den Datenfeldern.
Praxisbeispiel:
Feld "Summe_bisheriger_Umsatz"
Feld "Kauf_auf_Rechnug" (J/N)
Jetzt soll die Anwendung verhindern, dass ein Kauf auf Rechnung durc hgeführt bwird, wenn der bisherige Umsatz < x ist.

Es muss einen Befehl geben, der das Formular zwingt die weitere Verarbeitung (die Datensatzaktion) abzubrechen und mit dem Einlesen der Formulardaten erneut zu beginnen,
sonst machen Fehlerprüfungen doch keinen Sinn.

Genau diesen Befehl suche ich, in der Doku konnte ich dazu nichts finden.

Macht sonst keiner sowas?

Gruss,
Wolfram
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Error Handling

Beitrag von RobertG »

Hallo Wolfram,

genau das habe ich an der entsprechenden Stelle doch geschrieben - aber vielleicht klappt das ja bei Dir nicht:
Mit oForm.MoveToCurrentRow verhindere ich, dass ein Datensatz abgespeichert wird, wenn er neu erstellt wird und noch Eingaben erforderlich sind.
Gruß

Robert
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Error Handling

Beitrag von WSO »

ja, und wie ist das update und delete von einen Datensatz?
Gruss
Wolfram (sonnig 25 Grad)
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Error Handling

Beitrag von WSO »

geht leider nicht wie erwartet.
habe diese Makro beim als Ereignis "vor der Datensatzaktion" eigehängt.

Bei Insert wird der update verhindert, allerdings wird die Fehlermeldung zweimal ausgegeben.

Bei Datensatzänderung oder Löschung geht es nicht.
Nach zweimaliger Bestätigung der msgbox wir die Datensatzverarbeitung durchgeführt.

Könnte natürlich die gesamte Datenmanipulation in Makros verlegen, das wäre aber ein zu aufwendiger workaround.

Code: Alles auswählen

sub xDEL

        DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oBearbForm AS OBJECT    

	oDoc=thisComponent	
	oDrawpage=oDoc.drawpage
	oBearbForm = oDoc.drawpage.forms.getbyindex(0)
		
	msgbox ("Abbruch wegen Userfehler")	

	oBearbForm.MoveToCurrentRow
   
end sub
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Error Handling

Beitrag von DPunch »

Servus

Du könntest z.B. eine Funktion wie die folgende an das Formularereignis "Vor der Datensatzaktion" hängen

Code: Alles auswählen

Function Validate as Boolean
	Validate = True
	
	REM ***
	REM Auf Fehler testen
	REM ***
	
	If Fehler Then
		MsgBox "Es ist ein Fehler aufgetreten (...)"
		Validate = False
	End If
End Function
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Error Handling

Beitrag von WSO »

genial einfach und effektiv!
Vielen, vielen Dank,
Wolfram
Antworten