Office: (Office 2010) Laufzeitfehler 91 trotz On Error Goto Sprungmarke

Helfe beim Thema Laufzeitfehler 91 trotz On Error Goto Sprungmarke in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Community, ich verzweifle derzeit am Auftreten des Laufzeitfehlers 91 trotz On Error Goto Sprungmarke. Ich betreibe eine Access 2010... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von danthobee, 18. Februar 2017.

  1. Laufzeitfehler 91 trotz On Error Goto Sprungmarke


    Hallo liebe Community,

    ich verzweifle derzeit am Auftreten des Laufzeitfehlers 91 trotz On Error Goto Sprungmarke.

    Ich betreibe eine Access 2010 (32-Bit Variante ) Anwendung die in Front- und Backend aufgeteilt ist. Das Frontend liegt jeweils lokal beim Benutzer, die Backendtabellen auf einem SQL Server. Sobald keine Netzwerkverbindung mehr zum Backend vorhanden ist, soll eine entsprechende Fehlermeldung auftauchen.

    Dies möchte ich durch nachfolgenden Code bewerkstelligen:

    Code:
    Code:
    Diese Code beinhaltet die zentrale Fehlerbehandlung:

    Code:
    Sobald allerdings die Netzwerkverbindung nicht vorhanden ist, erhalte ich eine Systemmeldung durch Access selbst und nicht die von mir im Sub "fSchreibeLogEintrag" vorgesehene Fehlermeldung. Diese erscheint erst danach.

    Kann jemand einen Fehler im Coding finden, der dieses komische Verhalten verursacht?

    Falls weitere Infos benötigt werden, stelle ich diese gerne zur Verfügung.

    Vielen Dank im Voraus für eure Mühe.

    danthobee

    :)
     
    danthobee, 18. Februar 2017
    #1
  2. Hast du Option Explicit gesetzt?
    Kannst du fehlerfrei kompilieren?
    Warum machst du ein resume in der Fehlerbehandlung?
    Wo der Fehler entsteht musst du uns sagen, zumal du im Code weitere Funktionen/Prodzeduren verwendest die nicht zu sehen sind.

    Warum ADO und DAO paralell?
    LG Markus
     
    markusxy, 20. Februar 2017
    #2
  3. Ja, die Option Explicit ist gesetzt.

    Kompilieren ist fehlerfrei möglich. Die Anwendung funktioniert auch tadellos solange die Netzwerkverbindung vorhanden ist. Ich kann mir nur das Verhalten des Codes bei Abbruch der Netzwerkverbindung nicht erklären, da er ja normalerweise in meine Fehlerbehandlung rein müsste ohne eine eigene Meldung zu bringen.

    Das Resume ist für die Fehler gedacht, die nicht den Abbruch der Netzwerkverbindung betreffen. Sodass der Code weiter durch läuft.

    Der Fehler ensteht beim .open hier, da er ohne Netzwerkverbindung den SQL-Server nicht findet:
    Code:
    Erst poppt die Fehlermeldung auf (siehe Fehler.PNG im Anhang) und erst dann durchläuft er die Fehlerbehandlung. Die Fehlermeldung soll aber gar nicht erst aufpoppen.


    Ist mir nicht aufgefallen, dass ich ADO und DAO parallel verwende. Kannst du mir die Stelle zeigen? Eigentlich soll nur ADO verwendet werden, da ich gelesen habe, dass dies bei ACCDE Dateien bzw. im Mehrbenutzerbetrieb weniger Komplikationen erzeugt?!
     
    danthobee, 20. Februar 2017
    #3
  4. Laufzeitfehler 91 trotz On Error Goto Sprungmarke

    Bericht das Netzwerk ab, oder die Verbindung zum Server?

    Generell sollte es so aufgebaut sein, dass es in der Access Anwendung nur eine Server Connection gibt. Du kannst irgendwo eine Property oder Funktion definieren, die eine Connection liefert. Schon wegen der möglichen Transaktionen würde ich das nur so machen. Die Connection soll natürlich erst mit dem Schließen des Frontends geschlossen werden.
    Außerdem nur Client Cursor einsetzen, damit die Anwendung sich nicht verabschiedet, wenn die Verbindung abbricht.

    Vielleicht kannst du für einen Abriss der Verbindung auch mit dem Disconnect Event arbeiten. Hab ich bis jetzt noch nicht getan.

    So kann der Code nie abbrechen oder?

    CurrentDb.Execute nutzt DAO, daher verwendest du beides gleichzeitig.

    Edit:
    Offensichtlich hast du dann auch alle Tabellen verknüpft oder.
    Hast du schon einmal getestet eine dirkete Verbindung zum Server aufzubauen, ohne Verknüpfungen zu verwenden.
    Ich würde die nur für Reports verwenden - entweder mit gespeicherten Sichten am Server oder mit Passthrough Abfragen.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 20. Februar 2017
    #4
  5. Das Netzwerk.

    Wie genau muss ich dass im Code umsetzen? Derzeit baue ich beim Öffnen der Anwendung eine Verbindung auf, dass wird über eine Global definierte Connection-Variable umgesetzt (Public Cn As ADODB.Connection). Diese wird beim Beenden der Anwendung geschlossen.

    Das war nur ein Versuch, vorher hatte ich dort ein Resume next, er hat dann mit der nächsten Code Zeile weitergemacht. Sobald es wie gewünscht funktioniert werde ich den Code so umbauen, das er je nachdem fortgesetzt oder beendet wird.

    Danke für den Hinweis mit DAO und ADO. Eigentlich ist es ja dann egal was ich einsetze oder?

    Ja, ich arbeite mit verknüpften Tabellen. Eine direkte Verbindung habe ich noch nicht genutzt, da ich nicht weiß wie das funktioniert. Ich werde mal Google befragen. Danke für den Tipp und deine Unterstützung.

    Viele Grüße
    Daniel
     
    danthobee, 20. Februar 2017
    #5
  6. Vorschlag Connection mit Funktion/Property:

    Code:
    Damit ist die Connection gekapselt und kann im gesamten Code verwendet werden.
     
    markusxy, 20. Februar 2017
    #6
  7. Vielen Dank für den Vorschlag.

    Hast du auch noch eine Idee warum die Fehlerbehandlung nicht greift und die Access-eigene Fehlermeldung trotz "On Error GoTo Fehler" erscheint?
     
    danthobee, 20. Februar 2017
    #7
  8. Laufzeitfehler 91 trotz On Error Goto Sprungmarke

    nein.
    Kannst du die Prüfung bezüglich Netzwerk nicht vor dem Öffnen durchführen, dann sollte ja klar sein ob es geht.

    Kennst du dich mit Events aus?
    Wenn ja so könntest du mit den ADO.Connection Events wie schon angedeutet testen, ob die auslösen, wenn das Netzwerk abreißt.
    Ich würde davon ausgehen. Dann hast du unmittelbar eine Meldung, sobald die Verbindung zum Server getrennt ist - die Frage ist nur wie darauf reagieren

    LG Markus
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 20. Februar 2017
    #8
  9. Das würde mir aber nicht weiterhelfen, wenn das Netzwerk im laufenden Betrieb wegbricht.

    Nein, mit den Events habe ich bisher noch nicht gearbeitet.

    Ich verstehe halt nicht, warum er den Fehler 91 als Access Meldung wirft obwohl die eigene Fehlerbehandlung eigentlich greifen sollte.

    LG Daniel
     
    danthobee, 20. Februar 2017
    #9
  10. Das ist ungünstig.
    Da kannst du viele Möglichkeiten nicht nutzen.
    Google mal Events Tutorial oder Events VBA

    Grundsätzlich gibt es auch nicht auffangbare Fehler!
    Da hilft dann auch keine Fehlerbehandlung. Ob das der Fall ist kann ich nicht beurteilen.
    Das Err Objekt existiert aber immer.

    Das Problem mit dem Netzwerk ist aber gravierend.
    Warum kommt es dazu?

    LG Markus
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 20. Februar 2017
    #10
  11. Ich glaube da hab ich dich falsch verstanden. Mit den Events der Formulare und Klassen etc. bin ich vertraut. Die Anwendung ist komplett mit Hilfe von VBA implementiert.

    Ja, ich habe auch festgestellt, dass es nicht am Err Objekt liegt und dieses existiert.

    Was ist denn beispielsweise ein nicht auffangbarer Fehler?
    Vll. hilft mir das bei der Fehlersuche weiter.

    Mir will es ums verrecken nicht in den Kopf warum dieser Fehler 91 auftritt wenn der SQL-Server nicht verfügbar ist. WEnn er einfach in meine Fehlerbehandlung ohne das rein springen würde, wäre alles wunderbar und mit einer verständlichen Fehlermeldung behandelt.

    Zum Beispiel wenn ein User sich von zuhause einloggt und noch keine VPN Verbindung aufgebaut hat und somit nicht auf den SQL-Server zugreifen kann.

    Markus, vielen Dank für deine Unterstützung und Geduld.

    LG Daniel
     
    danthobee, 20. Februar 2017
    #11
  12. Da haben wir die Wurzel allen Übels.
    Die Datenbank muss halt warten, bis die Verbindung steht.

    Besser wäre eine Remotedesktop - Terminalserver Lösung.
    Da wird auch bei einem Verbindungsverlust der Code vollständig abgearbeitet.

    In allen anderen Fällen, musst du ein Konzept entwerfen, dass dem unsicheren Netzwerk Rechnung trägt.

    LG Markus
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 21. Februar 2017
    #12
  13. Laufzeitfehler 91 trotz On Error Goto Sprungmarke

    Na das Konzept lautet eigentlich: Fehlermeldung dass das Netzwerk nicht zur Verfügung steht und beenden der Datenbank mittels der Fehlerbehandlungsroutine. Aber in die springt er ja nicht direkt rein, sondern erst kommt die harte Fehlermeldung.
     
    danthobee, 21. Februar 2017
    #13
  14. Hallo!

    Wegen
    Code:
    Ist das ein gebundenes Formular bzw. hat das Formular Comboboxen oder Listboxen mit Odbc-Datenquellen?

    Oder anders gefragt:
    Startet die Prozeduren Form_Open überhaupt vor dem Fehler?
    Vielleicht tritt der Fehler auf, bevor du auf das Open-Ereignis reagierst.

    Der Gezeigte ADODB-Code sollte nämlich schon einen Fehler auslösen, der abgefangt werden kann.

    mfg
    Josef
     
    Josef P., 21. Februar 2017
    #14
  15. Hallo Josef,

    ja, das Form_Open wird gestartet.

    Der Fehler ensteht beim .open , da er ohne Netzwerkverbindung den SQL-Server nicht findet:
    Code:
    Was bewirkt dass "Cancel As Integer" hinter dem Ereignis?

    In diesem Formular wird das Switchboard als Navigation verwendet. Dieses funktioniert tadellos.

    LG Daniel
     
    danthobee, 21. Februar 2017
    #15
Thema:

Laufzeitfehler 91 trotz On Error Goto Sprungmarke

Die Seite wird geladen...
  1. Laufzeitfehler 91 trotz On Error Goto Sprungmarke - Similar Threads - Laufzeitfehler trotz Error

  2. Sql-Abfrage, Laufzeitfehler 3075, Syntaxfehler (fehlender Operator)

    in Microsoft Access Hilfe
    Sql-Abfrage, Laufzeitfehler 3075, Syntaxfehler (fehlender Operator): Hallo an alle, ich habe folgendes Problem. In meiner Datenbank habe ich mehrere Tabellen, unter anderem die Tabelle Teile_allgemein und Faktura. Mit meinem Abfrageformular funktioniert folgender...
  3. Bei Prüfung einer Anmeldefunktion erhalte ich Laufzeitfehler 3075

    in Microsoft Access Hilfe
    Bei Prüfung einer Anmeldefunktion erhalte ich Laufzeitfehler 3075: Halo, ich will über eine Funktion abbrühen ob die Kombination aus Benutzername und verschlüsseltes Kennwort in einer Tabelle steht. Irgendwas habe ich falsch Gesetz, da mir der Laufzeitfehler...
  4. VBA:Laufzeitfehler beim Einlesen in Variable

    in Microsoft Excel Hilfe
    VBA:Laufzeitfehler beim Einlesen in Variable: Hallo Excel Freaks, ich habe eine Frage, ein Problem wo ich nicht mehr weiter weis.... In eine Exceldatei kopiere ich mir über Makro auf ein Tabellenblatt von anderen Exceldateien das...
  5. Datenbank bleibt gesperrt - laccdb wird nicht gelöscht

    in Microsoft Access Hilfe
    Datenbank bleibt gesperrt - laccdb wird nicht gelöscht: Hallo zusammen, ich betreue eine Datenbank mit getrenntem Back- und Frontend, die in einem Firmennetzwerk auf dem Netzlaufwerk liegt. Ich entwickle sie lokal weiter, ohne vor Ort zu sein, wobei...
  6. Access Laufzeitfehler 3048

    in Microsoft Access Hilfe
    Access Laufzeitfehler 3048: Bevor ihr Euren Code durchrackert, weil Access plötzlich Probleme macht: Die Version 2408 (Build 17928.20114) dürfte ein wenig misslungen sein! Access bleibt nach dem Schließen im Taskmanager...
  7. Laufzeitfehler 13 trotz korrekter Funktion!

    in Microsoft Excel Hilfe
    Laufzeitfehler 13 trotz korrekter Funktion!: Hallo, ich habe ein kleines Programm geschrieben, dass nach Stählen in einer Tabelle sucht und dann die Daten des gesuchten Stahls herausgibt. Ich gebe also den gesuchten Stahl (z.B. CS70) ein...
  8. Laufzeitfehler trotz Fehlerbehandlung

    in Microsoft Access Hilfe
    Laufzeitfehler trotz Fehlerbehandlung: Hallo, ich bin grad dabei eine Access Datenbank zu bearbeiten und um eine Mailfunktion die ich im Internet gefunden habe zu erweitern. Auf meinem PC funktioniert das ganze auch wunderbar, auf...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden