Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Primärschlüssel per DAO ermitteln

Hier und da möchten Sie vielleicht einmal den Primärschlüssel einer Tabelle ermitteln Wie dies für einzelne Primärschlüssel funktioniert, zeigt der Codeschnipsel aus diesem Beitrag. Achtung: Der Code funktioniert nur für Tabellen, deren Primärschlüssel aus nur einem Feld besteht, was aber der Regelfall sein sollte.

Indizes der Felder der Tabelle durchsuchen 

Die Funktion GetSinglePrimaryKey erwartet lediglich den Namen der Tabelle, deren Primärschlüsselfeld ermittelt werden soll. Der Aufruf erfolgt also beispielsweise mit der folgenden Anweisung: 

Debug.Print GetSinglePrimaryKey("tblArtikel")

Die Funktion durchläuft schlicht die Indexes-Auflistung des auf der angegebenen Tabelle basierenden TableDef-Objekts und prüft, ob die Eigenschaft Primary den Wert True hat. Ist dies der Fall, hat sie den Primärschlüssel-Index schon gefunden. Wir müssen aber noch prüfen, ob der Index nur ein oder mehrere Felder enthält. Enthält er nur ein Feld, handelt es sich um den gesuchten Primärschlüssel und der Name wird als Funktionswert zurückgegeben:

Public Function GetSinglePrimaryKey(strTable As String) As String
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim idx As DAO.Index
    Set db = CurrentDb
    Set tdf = db.TableDefs(strTable)
    For Each idx In tdf.Indexes
        If idx.Primary Then
            If idx.Fields.Count = 1 Then
                GetPrimaryKey = idx.Fields(0).Name
            End If
            Exit For
        End If
    Next idx
End Function

© 2003-2015 André Minhorst Alle Rechte vorbehalten.