vb-Zentrum
Datenbank
http://www.vb-zentrum.de/tip_datenbank.html

© 2016 vb-Zentrum

0001 Existenz einer Tabelle überprüfen (DAO)

Nach dem Öffnen einer Datenbank kann es sinnvoll sein zu prüfen, ob auch alle Tabelle vorhanden sind. Bei Erweiterungen von vorhandenen Datenbanken kann so zur Laufzeit der aktuelle Stand überprüft werden und gegebenenfalls eine neue Tabelle angelegt werden.

' Funktion:
' Durchläuft alle Tabellen der übergebenen Datenbank 'db'
' vergleicht den Namen mit der übergebenen Tabelle 'strTable'
' Ist True, wenn Tabelle gefunden, sonst False!

Public Function table_exist(ByVal db As Database, ByVal strTable As String) As Boolean
  Dim tdf As DAO.TableDef
  
  If Not db Is Nothing Then
    For Each tdf In db.TableDefs
      If UCase$(tdf.Name) = UCase$(strTable) Then
        table_exist = True
        Exit Function
      End If
    Next
  End If
  table_exist = False
End Function

Autor: ralf schlegel
Stand 03/2006

Nach oben

0002 Existenz eines Datenfeldes überprüfen (DAO)

Aufbauend auf Tipp 0001 kann auch die Prüfung eines Datenfeldes erforderlich sein; z.B. dann, wenn Sie ein bereits veröffentlichtes Projekt in einer neuen Version um ein Datenfeld erweitert haben (wie es mir bei meinem Projekt ProFiler MP3 ergangen ist). Übergeben Sie der nachfolgenden Funktion den Tabellennamen, in der gesucht werden soll und den Feldname, den Sie prüfen möchten:

' Prüft das Vorhandensein eines Feldes in einer Datentabelle:
Public Function field_exist(ByVal td As TableDef, ByVal strField As String) As Boolean
  Dim fld As DAO.Field
  
  If Not td Is Nothing Then
    For Each fld In td.Fields
      If UCase$(fld.name) = UCase$(strField) Then
        field_exist = True
        Exit Function
      End If
    Next
  End If
  field_exist = False
End Function

Gibt Ihnen die Funktion FALSE zurück, müssen Sie das erforderliche Feld natürlich hinzufügen.
Hierfür eignet sich am Besten ein SQL-Aufruf mit EXECUTE.

Dazu ein Beispiel:
- die Datenbank "Datenbank.mdb" wird geöffnet
- es wird nach der Tabelle "Adressen" gesucht
- ist das Feld "Geburtstag" nicht vorhanden, so wird es hinzugefügt...

Dim DB As DAO.Database
Dim tdf As DAO.TableDef

Set DB = DBEngine.Workspaces(0).OpenDatabase("Datenbank.mdb") For Each tdf In DB.TableDefs Select Case UCase$(tdf.name) Case "ADRESSEN" If Not field_exist(tdf, "Geburtstag") Then DB.Execute "ALTER TABLE ADRESSEN ADD COLUMN [Geburtstag] DATE;" End If End Select Next
 

Autor: ralf schlegel
Stand: 07/2007

Nach oben