Benutzung auf eigene Gefahr ! |
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 |
|
Verwendete Variable |
|
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 |
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. |