Prüfen der Existenz einer Spalte in einer Tabelle einer Access-Datenbank

14/01/2009 - 10:23 von Susann Markward | Report spam
Hallo,

ich soll Daten in ein Formular drucken, die die bisherige DB-Struktur
nicht hergibt, da ein Feld mit diesen Daten bisher nicht existierte.
Deswegen soll zukünftig die DB-Struktur um ein zusàtzliches Feld
erweitert werden.

Jetzt möchte ich aus Kompatibilitàtsgründen bevor ich auf das Feld
zugreife testen, ob es überhaupt existiert.

Dazu eine Frage:
Wie würdet ihr das machen?

1) Einfach eine Function mit Rückgabewert Boolean schreiben in der man
auf das Feld lesend zugreift. Falls das gelingt, gibt man True zurück
und falls das zu einem Fehler führt, gibt man False zurück. _ODER_
2) Eine Funktion (s.u.) schreiben, welche die DB normal öffnet und per
Rückgabewert ebenfall True oder False zurückgibt. _ODER_

,-
| ...
| Dim fldLoop As ADODB.Field
| 'Debug.Print "Attribute des Feldes:"
| For Each fldLoop In rstDaten.Fields
| 'Debug.Print " " & fldLoop.Name
| If fldLoop.Name = FieldName Then
| FieldExistTest = True
| Exit Function
| End If
| Next fldLoop
| rstDaten.Close
| cnnDaten.Close
|
| Exit Function
|
|FehlerBehandlung:
| ...
|End Function
`-

3) Gibt es noch eine andere elegantere Variante, die ich nicht kenne?


MfG
Susann
 

Lesen sie die antworten

#1 Stefan Dase
14/01/2009 - 11:31 | Warnen spam
Hallo Susann!

Jetzt möchte ich aus Kompatibilitàtsgründen bevor ich auf das Feld
zugreife testen, ob es überhaupt existiert.

Dazu eine Frage:
Wie würdet ihr das machen?



Ich verwende seit Jahren àhnliche Konstrukte wie dein 2. Vorschlag: Es
wird die Auflistung geladen und durchlaufen.

2) Eine Funktion (s.u.) schreiben, welche die DB normal öffnet und per
Rückgabewert ebenfall True oder False zurückgibt. _ODER_

,-
| ...
| Dim fldLoop As ADODB.Field
| 'Debug.Print "Attribute des Feldes:"
| For Each fldLoop In rstDaten.Fields
| 'Debug.Print " " & fldLoop.Name
| If fldLoop.Name = FieldName Then
| FieldExistTest = True
| Exit Function
| End If
| Next fldLoop
| rstDaten.Close
| cnnDaten.Close
|
| Exit Function
|
|FehlerBehandlung:
| ...
|End Function
`-



Allerdings würde ich anstatt des "Exit Function" nur den Loop verlassen,
um die Objekte sauber wieder zu schließen!

Viele Grüße aus Bremen,
Stefan

Ähnliche fragen