Button Home/Top/Zurück


Prüfen, ob eine Tabelle in der DB existiert




Eine Frage, die in den Access-Foren des öfteren gestellt wird ist, wie man in einer MS-Access-Datenbank feststellen kann ob eine bestimmte Tabelle existiert.
Zu dieser Prüfung gibt es zwei Lösungsansätze.
Beim ersten Ansatz wird die Liste aller Tabellendefinitionen der Datenbank durchlaufen und der gesuchte Tabellenname mit den vorhanden verglichen.
Beim zweiten Ansatz wird blind auf die Tabellendefinition der gesuchten Tabelle zugegriffen und der ggf. erwartete Fehler abgefangen.
Ich persönlich favorisiere den 2. Fall, welcher im nachfolgenden Code abgebildet ist.

Function IfTabExists(TabName As String) As Boolean
'
' Überprüfen, ob eine Tabelle mit dem Namen <TabName>
' in der Datenbank existiert.
'
' IN:	TabName		Name der Tabelle, die gesucht ist
' OUT:	True		Wenn Tabelle in DB vorhanden
'	False		sonst.
'
Dim db As Database	' Datenbankobjekt
Dim tds As TableDefs	' Liste der Tabellendefinitionen
Dim td As TableDef    	' Eine Tabellendefinition
 
    '
    ' Default-Value der Funktion ist True
    '
    IfTabExists = True
    '
    ' Sprungmarke für den Fehlerfall setzen
    '
    On Error GoTo IfTabExists_Err
    '
    ' Datenbankobjekt setzen
    '
    Set db = Application.CurrentDb
    '
    ' Liste der Tabellendefinitionen setzen
    '
    Set tds = db.TableDefs
    '
    ' Auf die Tabellendefinition der gesuchten Tabelle
    ' zugreifen.
    '
    Set td = tds(TabName)
    '
    ' Eigene Fehlerbehandlung ausschalten, damit diese anschließend
    ' "normal" weitergeht.
    '
    On Error Goto 0	
    '
    ' wenn es jetzt keinen Fehler gegeben hat, dann
    ' gibt es die gesuchte Tabelle.
    ' Die Funktion kann verlassen werden.
    '
    Exit Function
 
IfTabExists_Err:
    '
    ' Bei der Suche nach der Tabelle ist ein Fehler
    ' aufgetreten.
    ' Der Funktionswert wird auf jeden Fall auf FALSE gesetzt.
    '
    IfTabExists = False
    '
    ' Wenn es sich bei dem Fehler nicht um den mit der Nummer 3265 handelt
    ' (Element in dieser Auflistung nicht gefunden.) dann den Fehler
    ' weitergeben.
    '
    If Err.Number <> 3265 Then
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
    End If
    '
    ' Wenn es sich bei dem Fehler um den mit der Nummer 3265 handelt, dann
    ' gibt es die gesuchte Tabelle nicht, was ein erwartetes Ergebnis ist.
    ' Für den Fall, daß in der aufrufenden Prozedur/Funktion das Error-Objekt
    ' ausgewertet wird, dieses hier entleeren, damit nicht doch noch eine
    ' ungewollte Fehlermeldung erzeugt wird
    '
    Err.Clear	
 
End Function


Modul Icon Modul als Textfile zum downloaden.

Button Home/Top/Zurück