Hallo,
ich hatte heute den Fall, dass bei uns zwei Rechner Netzwerkprobleme hatten und mit Fehler 3043 - Ihr Netzwerkzugriff wurde unterbrochen. Schließen Sie die Datenbank, und öffnen Sie sie erneut, um den Vorgang fortzusetzen. vor sich hinvegetierten.
Meine erste Idee war jetzt, diesen Fehler einfach mit Application.Quit abzukürzen, dann müllt mir der Rechner jedenfalls nicht mehr zyklisch meine Fehlertabelle voll ;-)
Allerdings, muss man denn immer gleich den Stecker ziehen, nur weil jemand kurz aufs Netzwerkkabel getreten ist?
Eine KI schlug mir nun vor, alle Querys usw vorher abzusichern, quasi beim Öffnen also zu checken, ob die Verbindung noch da ist:Public Function OpenQuerySafe(qName As String) As Boolean
On Error GoTo Fehler
DoCmd.OpenQuery qName
OpenQuerySafe = True
Exit Function
Fehler:
If Err.Number = 3043 Then
Sleep 1000
Resume
Else
MsgBox Err.Number & " - " & Err.Description
OpenQuerySafe = False
End If
End FunctionWas mir ein bisschen missfällt: Normalerweise, wenn ich mehrere Abfragen in einer Prozedur aufrufe, setze ich erst ein set cdb = CurrentDb vorweg und greife dann nur noch auf die cdb zu. Das wäre dann natürlich mit der obigen Funktion nicht mehr so.
Ich fand die Idee an sich jetzt gar nicht so schlecht, möchte aber gerne mal Eure Sichtweise erfahren.
Gruß
Doming
Hallo Doming,
grundsätzlich brauchen DBs stabile Netzwerkverbindungen, weil die Clients i.d.R. das sehr übel nehmen. Probleme mit der Hardware kannst nicht mit Software lösen. Deshalb mein Rat: sorge für vernünftige und stabile Hardware.
Warum nicht so einfach ein "Retry" eingebaut werden kann und ob der Vorschlag von der KI wirklich sinnvoll ist, kannst du ja mal selber überlegen.
Knobbi38