Primärschlüsselfelder ermitteln

Für die eine oder andere Anforderung benötigen Sie das Primärschlüsselfeld beziehungsweise die Primärschlüsselfelder einer Tabelle. Dieser Beitrag liefert zwei Funktionen, mit denen dies möglich ist.

Einzelnes Primärschlüsselfeld ermitteln

Gelegentlich wollen Sie das Primärschlüsselfeld einer Tabelle ermitteln. Dies erledigen Sie mit den Methoden der DAO-Bibliothek. Die folgende Funktion namens GetSinglePrimaryKey ermittelt einen einzelnen Primärschlüssel.

Sie funktioniert nicht für Tabellen mit zusammengesetzten Primärschlüsseln. Die Funktion erwartet den Namen der zu untersuchenden Tabelle als Parameter und liefert den Namen des Primärschlüsselfeldes zurück.

Sie erstellt ein TableDef-Objekt auf Basis der übergebenen Tabelle und durchläuft alle Elemente der Indexes-Auflistung dieser Tabelle. Dabei prüft sie, ob die Eigenschaft Primary den Wert True hat. In diesem Fall handelt es sich um einen Primärschlüssel-Index. Wenn dieser Index nur ein Feld der Tabelle enthält, trägt die Funktion den Namen dieses Feldes als Rückgabewert in die Variable GetPrimaryKey ein (s. Listing 1).

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

Listing 1: Ermitteln des Primärschlüssels einer Tabelle

Alle Primärschlüssel ermitteln

Manche Tabellen verwenden zusammengesetzte Primärschlüssel. Dies ist nicht besonders praktisch, da Sie beispielsweise bei einer Verknüpfung mit einer solchen Tabelle immer direkt zwei Fremdschlüsselfelder bereitstellen müssen (s. Bild 1).

Für die eine oder andere Anforderung benötigen Sie das Primärschlüsselfeld beziehungsweise die Primärschlüsselfelder einer Tabelle. Dieser Beitrag liefert zwei Funktionen, mit denen dies möglich ist.

Einzelnes Primärschlüsselfeld ermitteln

Gelegentlich wollen Sie das Primärschlüsselfeld einer Tabelle ermitteln. Dies erledigen Sie mit den Methoden der DAO-Bibliothek. Die folgende Funktion namens GetSinglePrimaryKey ermittelt einen einzelnen Primärschlüssel.

Sie funktioniert nicht für Tabellen mit zusammengesetzten Primärschlüsseln. Die Funktion erwartet den Namen der zu untersuchenden Tabelle als Parameter und liefert den Namen des Primärschlüsselfeldes zurück.

Sie erstellt ein TableDef-Objekt auf Basis der übergebenen Tabelle und durchläuft alle Elemente der Indexes-Auflistung dieser Tabelle. Dabei prüft sie, ob die Eigenschaft Primary den Wert True hat. In diesem Fall handelt es sich um einen Primärschlüssel-Index. Wenn dieser Index nur ein Feld der Tabelle enthält, trägt die Funktion den Namen dieses Feldes als Rückgabewert in die Variable GetPrimaryKey ein (s. Listing 1).

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

Listing 1: Ermitteln des Primärschlüssels einer Tabelle

Alle Primärschlüssel ermitteln

Manche Tabellen verwenden zusammengesetzte Primärschlüssel. Dies ist nicht besonders praktisch, da Sie beispielsweise bei einer Verknüpfung mit einer solchen Tabelle immer direkt zwei Fremdschlüsselfelder bereitstellen müssen (s. Bild 1).

Access im Unternehmen

Unser exklusives Angebot für Dich!

Access im Unternehmen
13,25 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →