Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!
Zitat von: Doming am Juli 14, 2025, 21:06:18Die lokale, boolsche Variable setze ich, weil ich im Nachgang noch mehrere Datensätze aus der Tabelle nutzen möchte, dazu muss nicht jedes Mal erneut das DCount losgeschickt werden.Wieso sollte man mehrmals DCount() aufrufen müssen? Alles gehört in einen IF THEN ELSE Zweig:
IF TabelleOK() then
' Todo:
ELSE
' Error:
END IF
Zitat von: Doming am Juli 14, 2025, 21:06:18Das ganze Resume Next ist mir eigentlich zuwider, aber der ganze Rotz soll im Hintergrund ablaufen. Wenn Fehler auftreten sollen sie ins Protokoll, ansonsten möchte ich da keine Unterbrechungen bei den Anwendern.Ich zweifle ob auch dafür dein Ansatz mit Resume Next so geeignet ist.
Zitat von: Doming am Juli 14, 2025, 15:05:24tblSAPDaten ist nicht vorhanden, also booltblOK ist False und die Meldung "nicht lesbar" wird ausgegeben.Dann schau dir mal genau an was in deinem hier nicht gezeigtem Code-Segment "..." passiert. M.M. muss dort erneut auf die nicht vorhandene SAP-Tabelle zugegriffen werden und dabei wird der neue Fehler ausgelöst.
Dann wird erneute eine Eingabe generiert, mit dem Fehler 3075 Tabelle nicht vorhanden, obwohl mit Err.Number vorher mit 0 angezeigt wird.
Public Function TabelleOK(Tabelle As String) As Boolean
On Error GoTo Fehler
Dim Menge
Menge = DCount("*", Tabelle)
TabelleOK = True
Ende:
Err.Clear
Exit Function
Fehler:
Resume Ende
End Function
On Error Goto Fehler
BooltblOK = TabelleOK("tblSAPDaten")
If BooltblOK then
Eingabe "Importiere Daten aus SAP"
SAPLesen
Else
Eingabe "Tabelle tblSAPDaten ist nicht lesbar"
End if
...
Exit Sub
Fehler:
Eingabe "Fehler (" & Err.Number & ") Prozedur Ablauf:" & Err.Description
Resume Next
End Sub
'Eingabe' gibt dem Nutzer die aktuelle Aktion ausPublic Sub Eingabe(Txt As String)
Debug.Print Err.Number
CurrentDb.Execute "INSERT INTO tbl_WartungsProtokoll(Zeit, Tat) VALUES (" _
& fncTimSQL(Now) & ", '" _
& Txt & "')"
Das hat jetzt folgenden Effekt:Zitat von: Bitsqueezer am Juli 14, 2025, 13:52:35Err.Clear hebt natürlich jeden Fehler auf.Err.Clear löscht nur das Error-Objekt, setzt aber nicht den Errorhandler zurück! Err.Clear wird implizit auch bei