Tipp 1.22 - Verweise überprüfen
Welche Möglichkeiten habe ich, um fehlerhafte Verweise zu ermitteln?
Defekte Verweise führen in der Regel zu Problemen beim Ausführen der Datenbanken unter Microsoft Access. Um den Benutzer nicht damit zu überraschen, ist es sinnvoll, gleich beim Start der Datenbank zu prüfen, ob alles in Ordnung ist.
Seit Microsoft Access 2002 (Access XP oder höher) steht Ihnen hierzu eine passende Eigenschaft zur Verfügung, die angibt, ob es fehlerhafte Verweise gibt. Die Eigenschaft heißt BrokenReference und gibt False zurück, wenn alles in Ordnung ist. Beim Starten Ihrer Anwendung brauchen Sie diese also nur auszuwerten.
Beispielfunktion:
Beispiel:
' Check broken Reference Public Function CheckReference(psMsg As String) As Boolean '// ===================================================== '// Methode | Überprüft die Verweise in der Datenbank '// ----------------------------------------------------- '// Parameter | psMsg - Leerstring für die Ausgabe der ' fehlerhaften Verweise '// ----------------------------------------------------- '// Rückgabe | Boolean = True=OK, False=Verweise defekt '// ----------------------------------------------------- '// Erstellt | Manuela Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf: '// siehe Beispielaufruf '// ===================================================== Dim ref As Reference Dim sMsg As String Dim fCheck As Boolean On Error GoTo CheckReference_Err fCheck = True ' Überprüfung, ob fehlerhafte Verweise ' vorhanden sind If Application.BrokenReference = True Then fCheck = False ' Wenn ja, Schleife über alle Verweise, ' um die fehlerhaften zu ermitteln For Each ref In Application.References ' Wenn der aktuelle Verweis defekt ist, If ref.IsBroken = True Then ' dann Verweisname ermitteln und in der ' Msg-Variable zwischenspeichern sMsg = sMsg & " " & ref.Name & vbCrLf End If Next ref End If ' Übergabe der Überprüfung CheckReference = fCheck CheckReference_Exit: On Error GoTo 0 Exit Function CheckReference_Err: MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "modDiv.CheckReference" Resume CheckReference_Exit End Function
Anwendungsbeispiel:
Public Sub TestReference() Dim sMsg As String If CheckReference(sMsg) = False Then MsgBox "Folgende Verweise sind fehlerhaft:" & vbCrLf & _ Left(sMsg, Len(sMsg) - 2), vbInformation, _ "Hinweis" End If End Sub
Bis Access 2000 steht Ihnen die BrokenReference Eigenschaft leider nicht zur Verfügung. Wenn wir aber unsere oben aufgeführte Funktion ein bissel abwandeln, können Sie diese natürlich auch unter Microsoft Access 97 oder 2000 verwenden:
Beispielfunktion für Access 97 und 2000:
Beispiel:
' Check broken Reference for Access 97 and 2000 Public Function CheckReference2(psMsg As String) As Boolean '// ===================================================== '// Methode | Überprüft die Verweise in der Datenbank '// ----------------------------------------------------- '// Parameter | psMsg - Leerstring für die Ausgabe der ' fehlerhaften Verweise '// ----------------------------------------------------- '// Rückgabe | Boolean = True=OK, False=Verweise defekt '// ----------------------------------------------------- '// Erstellt | Manuela Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf: '// siehe Beispielaufruf '// ===================================================== Dim ref As Reference Dim sMsg As String Dim fCheck As Boolean On Error GoTo CheckReference2_Err fCheck = True ' Schleife über alle Verweise, ' um die fehlerhaften zu ermitteln For Each ref In Application.References ' Wenn der aktuelle Verweis defekt ist, If ref.IsBroken = True Then fCheck = False ' dann Verweisname ermitteln und in der ' Msg-Variable zwischenspeichern sMsg = sMsg & " " & ref.Name & vbCrLf End If Next ref ' Übergabe der Überprüfung CheckReference2 = fCheck CheckReference2_Exit: On Error GoTo 0 Exit Function CheckReference2_Err: MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "modDiv.CheckReference2" Resume CheckReference2_Exit End Function
Weiterführende Informationen erhalten Sie auch bei Microsoft direkt:
ACC97: Fehler: "Funktion steht in Ausdrücken nicht zur Verfügung"