Beitrag aus SmartTools Access Weekly
Primärschlüssel programmatisch ermitteln
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Ich muss in meiner Access-Datenbank manchmal die vorhandenen Tabellen programmatisch analysieren. Bisher bin ich allerdings daran gescheitert, in meinen VBA-Prozeduren den Primärschlüssel (ich benötige Feldname und Feldtyp) aus einer bestimmten Tabelle auszulesen. Bei meiner Suche bin ich schon auf die MySys-Tabellen gestoßen, aber hier ist die gesuchte Information leider nicht immer mit angegeben. Haben Sie eine Lösung?
Diverse Anfragen
ANTWORT Verwenden Sie die folgende Funktion "GetPrimaryKey()":
Public Function GetPrimaryKey(strTable As String) As String
Dim I&
Dim strResult As String
'Access/DAO
Dim idx As DAO.Indexes
On Error GoTo GPK_Error
With CurrentDb
Set idx = .TableDefs(strTable).Indexes
For I = 0 To idx.Count - 1
If idx(I).Primary Then
strResult = Mid$(idx(I).Fields, 2)
Exit For
End If
Next
End With
GPK_Exit:
GetPrimaryKey = strResult
Exit Function
GPK_Error:
strResult = "???"
Resume GPK_Exit
End Function
Aufgerufen wird die Funktion dann zum Beispiel so:
Dim strPK As String
.....
strPK = GetPrimaryKey("Kunden")
Das Ergebnis ist in diesem Fall beispielsweise "[Kunden-Code]".