Benutzung auf eigene Gefahr ! |
Beschreibung |
Die Funktion gibt an, ob auf einer Spalte in einer Tabelle ein Index liegt. Falls ja, gibt die Funktion den Index-Namen zurück. |
VBA-Quelltext |
Public Function SpalteHatIndex(TabName As String, SpaltenName As String) As String Dim IndexNr As Integer, SpalteNr As Integer, TabellenIndex As Object ' Enthält die Tabelle überhaupt Index-Felder ? SpalteHatIndex = vbNullString Set TabellenIndex = DBEngine(0)(0).TableDefs(TabName).Indexes If TabellenIndex.Count = 0 Then Exit Function ' Alle Indizes durchlaufen und überprüfen For IndexNr = 0 To TabellenIndex.Count - 1 ' Bei einem Mehrfeldindex sind mehrere Spaltennamen zu überprüfen For SpalteNr = 0 To TabellenIndex(IndexNr).Fields.Count - 1 If TabellenIndex(IndexNr).Fields(SpalteNr).Name = SpaltenName Then SpalteHatIndex = TabellenIndex(IndexNr).Name Exit Function End If Next SpalteNr Next IndexNr End Function ' ****** Alternative Version - bei Problemen verwenden ****** ' Function SpalteHatIndex(TabName As String, SpaltenName As String) As String Dim IndexNr As Integer, SpalteNr As Integer ' Enthält die Tabelle überhaupt Index-Felder ? SpalteHatIndex = vbNullString If CurrentDb.TableDefs(TabName).Indexes.Count <= 0 Then Exit Function ' Alle Namen aller Spalten In allen Indizes überprüfen For IndexNr = 0 To CurrentDb.TableDefs(TabName).Indexes.Count - 1 For SpalteNr = 0 To CurrentDb.TableDefs(TabName).Indexes(IndexNr).Fields.Count - 1 If CurrentDb.TableDefs(TabName).Indexes(IndexNr).Fields(SpalteNr).Name = SpaltenName Then SpalteHatIndex = CurrentDb.TableDefs(TabName).Indexes(IndexNr).Name Exit Function End If Next SpalteNr Next IndexNr End Function |
Argumente der Funktion/Prozedur |
|
Verwendete Variable |
|
Rückgabewert |
|
Anwendungsgebiete, Fehler und Warnungen |
Wenn ein Feld mit mehreren Indizes belegt ist (theoretisch möglich, aber selten sinnvoll), gibt die Funktion nur einen Indexnamen zurück.
Die Existenz der Tabelle und der Spalte wird nicht überprüft. Access hat seit Version 95 ein latentes Problem mit dem Field-Objekt. Dieses kann weder in einer Objektvariablen zugewiesen noch mit |