Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Access-Fehler aus VBA abfangen

Access-Fehler aus VBA abfangen
19.08.2013 10:26:47
Peter
Hallo zusammen,
ich hab' gerade ein kleines Problemchen mit einer ADO-Abfrage auf eine Access-Datenbank.
Vielleicht könnt Ihr mir ja dabei helfen ...
Zu Beginn meines Modules schalte ich "eine Fehlerbehandlung ein" mittels:
On Error GoTo ErrorHandler:
Im Laufe des Codings lese ich dann alle Datensätze aus einer Access-DB.
dbRecordSet.Open "SELECT * FROM tabV2", dbConnection, adOpenKeyset, adLockOptimistic
Wenn nun die angesprochene Tabelle in der DB nicht enthalten ist wird ein Fehler ausgelöst - so soll es ja auch sein. Das Mudul springt in den Errorhandler und schreibt mir eine Info dazu in eine Excel-Tabelle ... siehe Coding:
ProzedurEnde:
On Error Resume Next
dbRecordSet.Close
dbConnection.Close
Unload ufSteuerung
tabVerantwortlich.Visible = xlSheetVisible
Application.ScreenUpdating = True
Exit Sub
ErrorHandler:
Application.EnableEvents = True
Application.Calculation = xlCalculationManual
If Err.Number = -2147217865 Then
SchreibeFehlerEintrag "VerantwortlichLesen", "Datenbanktabelle nicht gefunden"
Else
SchreibeFehlerEintrag "VerantwortlichLesen", "Ein Fehler :-("
End If
Application.Calculation = xlCalculationAutomatic
On Error GoTo 0
GoTo ProzedurEnde
Am Ende des Error-Handlers springe ich dann an die Stelle ProzedurEnde.
Dort stoppt Excel dann bei der Stelle "dbRecordSet.Close". Eigentlich klar, denn das RecordSet konnte ja nicht geöffnet werden.
Dennoch die Frage: Warum greift hier "On Error Resume Next" nicht?
Vielen Dank für Eure Beschäftigung mit meiner Frage und schon jetzt vielen Dank für Eure Ideen dazu ...
Peter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Access-Fehler aus VBA abfangen
19.08.2013 10:57:10
{Boris}
Hi Peter,
keine direkte Antwort, aber warum setzt Du die On-Error-Anweisung zunächst zurück, um sie dann direkt wieder zu aktivieren?
On Error GoTo 0
GoTo ProzedurEnde
ProzedurEnde:
On Error Resume Next
Lass das On Error Goto 0 mal weg.
Ich lass die Frage aber offen.
VG, Boris

AW: Access-Fehler aus VBA abfangen
19.08.2013 11:02:23
Peter
Hallo Boris,
danke für die Idee ...
die Zeile "On Error GoTo 0" ist drin ... weil's auch ohne nicht wie gewünscht funktioniert und das einer meiner Versuche zur Fehlerbehebung war :-(
Viele Grüße
Peter

AW: Access-Fehler aus VBA abfangen
19.08.2013 11:08:01
Luschi
Hallo Peter,
ich habe das mal getestet und so gemacht wie es Boris vorgeschlagen hat und auch in der Vba-Hilfe steht. Aber das funktioniert so nicht.
Wenn ein Fehler durch ein Objekt-Zugriff geworfen wurde, funktioniert die Fehlerroutine
das 1. mal. Wird aber in der Folge auf das gleiche Objekt wieder ein Fehler produziert, hat Vba _ damit Probleme. Deshalb wier Dir nichts weiter übrig bleiben, das Schließen des Recordsets so zu machen:

If Not (dbRecordSet Is Nothing) Then
dbRecordSet.Close
End If
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Access-Fehler aus VBA abfangen
19.08.2013 11:10:54
Peter
Hallo Luschi,
vielen Dank für Deine Hilfe.
Ist zwar schade, dass es "so einfach" nicht geht ... aber Deine Idee gefällt mir - werd' ich so umsetzen.
Viele Grüße ganz in die Nähe meiner alten Heimat :-)
Peter

AW: Access-Fehler aus VBA abfangen
19.08.2013 11:16:48
Peter
Hi Luschi,
doch nochmal 'ne Meldung zum Problem ...
Auch wenn das Öffnen des Recodsets schiefgeht ... ist er nicht Nothing ...:
?(dbrecordset is nothing)
Falsch
Für Excel scheint der Recordset in Ordnung zu sein :-(
Gruß
Peter

AW: Access-Fehler aus VBA abfangen
19.08.2013 12:11:06
{Boris}
Hi Peter,
noch ne Idee: Frag das Err-Objekt ab:
If Err Is Nothing Then
dbRecordSet.Close
End If
VG, Boris

Anzeige
AW: Access-Fehler aus VBA abfangen
19.08.2013 12:16:30
Peter
Hallo Boris,
that's it ... und es ist auch gut handhabbar, denn die anderen potentiellen Fehler hab' ich (hoffentlich) so im Griff, dass ich an dieser Stelle eine globale Fehlerabfrage nutzen kann.
Vielen Dank für Euer aller Grübeln und für's Helfen
Viele Grüße
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige