Rubrik: Datenbanken · DAO | VB-Versionen: VB4, VB5, VB6 | 15.08.02 |
Datenbankfeld vorhanden? (DAO) Mit dieser Funktion lässt sich prüfen, ob ein bestimmtes Feld innerhalb einer Datenbank-Tabelle existiert oder nicht. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.934 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Sicher kennen Sie das auch: Sie entwickeln eine Datenbank-Applikation, und merken erst später, dass innerhalb der Datenbank-Tabelle noch ein Feld fehlt. Oder: Der Kunde Ihrer Anwendung möchte eben gerne noch ein zuästzliches Feld, oder ...
OK - kein Problem. Zusätzliche Felder lassen sich ja auch nachträglich noch hinzufügen. Siehe hierzu:
Datenbankfelder nachträglich hinzufügen (DAO)
Nun sollte man vor dem Hinzufügen des neuen Feldes aber auch sicherstellen, dass es noch nicht existiert! Denn sonst gibt's mal wieder Fehlermeldungen
Nachfolgende Funktion prüft, ob innerhalb einer angegebenen Tabelle ein bestimmtes Feld vorhanden ist, und gibt im Erfolgsfall den Wert TRUE zurück.
' Vorhandensein eines Feldes prüfen Public Function dbFieldExists(TabDef As TableDef, _ ByVal sFieldName As String) As Boolean Dim oField As Field For Each oField In TabDef.Fields If oField.Name = sFieldName Then dbFieldExists = True Exit For End If Next End Function
Und hier noch eine zweite - jedoch "unsaubere" Möglichkeit:
Public Function dbFieldExists(TabDef As TableDef, _ ByVal sFieldName As String) As Boolean Dim sName As String On Error Resume Next sName = TabDef.Fields(sFieldName).Name dbFieldExists = (Err = 0) On Error Goto 0 End Function
Egal, welche der beiden Funktionen Sie verwenden möchten, hier noch kurz die Erläuterung der Parameterliste:
- TabDef: TabellenDefinitions-Objekt der Datenbank
- sFieldName: Name des zu prüfenden Tabellenfeldes
Beispiel
Dim Db As Database Set Db = DBEngine.OpenDatabase("MyDatenbank.mdb") ' Prüfen, ob das Feld "Email" in der Tabelle "Kunden" ' vorhanden ist If Not dbFieldExists(Db.TableDefs("Kunden"), "EMail") Then ' Nicht vorhanden... ... End If