Error()

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

madmatmed
**
Beiträge: 32
Registriert: Do, 15.01.2015 09:26

Error()

Beitrag von madmatmed »

Hallo zusammen,

kann man in OOo Basic einen Fehler/Exception "schmeißen"?

Was das Error-Handling selber betrifft, ist es kein Problem.

Ich bin über den Befehl Error() gestoßen, leider bewirkt der bei mir nichts.

Ich hab im Prinzip folgenden Code (gekürzt auf das Wesentliche):

Code: Alles auswählen

On Error Goto ErrorHandler:
  
  SQLOpenConnection()

  CashBonRegisterHeaderResultSet = SQLExecuteCommand("SELECT ""PostingDate"", ""ShopID"" FROM ""CashBonRegisterHeader""")
  CashBonRegisterHeaderResultSet.Next()
  
  If CashBonRegisterHeaderResultSet.GetString(1) = "" Then
    Error(MissingPostingDate())
  End If
  
  Dim CashBonRegisterLineResultSet As Object
  CashBonRegisterLineResultSet = SQLExecuteCommand("SELECT ""ProductGroupID"", ""Description"", ""Amount"", ""PrimaryKey"" FROM ""CashBonRegisterLine""")
  
  SQLCommit()
  
  UpdateForm("MainForm", "SubFormCashBonRegisterLines")
  Exit Sub
  ErrorHandler:
    MsgBox "Fehler " & Err & ": " & Error$
    SQLRollback()
Im Prinzip möchte ich ein paar Modifikationen in der Datenbank machen und überprüfe dabei zwischendurch immer mal ein paar Werte. Falls das nicht funktioniert möchte ich einen Fehler auslösen, diesen ausgeben und ein Rollback machen.
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Error()

Beitrag von pmoegenb »

Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
madmatmed
**
Beiträge: 32
Registriert: Do, 15.01.2015 09:26

Re: Error()

Beitrag von madmatmed »

Hmmm... interessant ist, wenn ich selber die Funktion

error(5)

z.B. im Quelltext einbaue, wird eine Exception ausgelöst .. die ich auch abfangen kann etc. Problem nur, dass ich nicht eigene Fehlercodes einbauen kann.... Oder weiß das jemand?
madmatmed
**
Beiträge: 32
Registriert: Do, 15.01.2015 09:26

Re: Error()

Beitrag von madmatmed »

Ist zwar nicht so schön, aber ich hab es jetzt folgendermaßen gelöst:

In meinem Modul ist es so eingerichtet:

Code: Alles auswählen

Dim LastErrorText As String

Sub SQLError(ErrorMsg As String)
  LastErrorText = ErrorMsg
  
  SQLRollback()  
  
  Error(4)
End Sub

Sub SQLErrorHandler 
  MsgBox "Fehler " & Err & ": " & Error$ & "(" & LastErrorText & ")"
End Sub
und wenn ich meine Werte überprüfe, hab ich es so gemacht:

Code: Alles auswählen

  On Error GoTo ErrorHandler
...
If CashBonRegisterHeaderResultSet.GetString(1) = "" Then
    SQLError(MissingPostingDate())
  End If
...
  Exit Sub
  
  ErrorHandler:
    SQLErrorHandler()
Im Feherfall wird alles beendet, ein Rollback findet statt und es erscheint eine Meldung. Z.B.:
Fehler 4: Inkorrekte Eingabe, bitte wiederholen.(Sie müssen ein Buchungsdatum angeben).

Sollte jemand noch eine bessere Idee haben, würde ich mich natürlich freuen.
Antworten