Primärschlüssel per DAO ermittelnHier 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 |