[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Existenz einer Spalte überprüfen

Sprache / Programm: Access ab Version 97
Beschreibung

Mit dieser Funktion kann man aus VBA heraus überprüfen, ob eine Spalte in einer Tabelle oder Abfrage existiert. Dazu benötigt das die Funktion 'RecordSetExistiert', die zunächst prüft, ob die  entsprechende Tabelle bzw. Abfrage existiert.

VBA-Quelltext
' Überprüft, ob eine Spalte existiert.
Public Function SpalteExistiert(TabName As String, SpName) As Boolean
    Dim Spalte As Field
    SpalteExistiert = RecordSetExistiert(TabName) And Not IsNull(SpName)
    If SpalteExistiert Then
        For Each Spalte In CurrentDb.OpenRecordset(TabName).Fields
            If Spalte.Name = SpName Then Exit Function
        Next Spalte
        SpalteExistiert = False
    End If
End Function
Argumente der Funktion/Prozedur

TabName

Name der Tabelle oder Abfrage, in der sich die Spalte befinden soll als Text ohne begrenzende Klammern [].

SpName

Name der zu überprüfenden Spalte als Text ohne begrenzende Klammern [] oder NULL
Verwendete Variable

Spalte

Objektvariable, welche die Spalte durchläuft.
Rückgabewert

Wahrheitswert, der angibt daß eine Spalte existiert (SpalteExistiert = True) oder das entweder Tabelle/Abfrage oder Spalte nicht existieren (SpalteExistiert = False).

Anwendungsbeispiel(e)...

Das folgende Beispiel gibt eine Fehlermeldung aus, falls eine Spalte nicht existiert.

    If SpalteExistiert("Artikel", "Bezeichnung") Then MsgBox "Spalte nicht vorhanden"
Hinweis

Das Programm benötigt das Unterprogramm RecordSetExistiert um zu überprüfen, ob überhaupt die Tabelle/Abfrage existiert.

Anwendungsgebiete, Fehler und Warnungen

Bei der Überprüfung von Abfragen müssen alle Tabellen/Abfragen auf der die geprüfte Abfrage aufbaut, existieren. Andernfalls tritt ein Fehler auf, der sich nicht in VBA abfangen läßt. Bei Kreuztabellenabfragen dauert diese Funktion etwas länger, da bei diesem Abfragetyp die Namen und Anzahl der Spalten erst beim Ausführen der Abfrage selbst bestimmt wird. Access muss daher zunächst die Kreuztabellenabfrage im Hintergrund ausführen. Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.