Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen
26.02.2025 13:58:14
Volker Bunge
ich möchte gerne mit Excel einige Access Tabellen erstellen. Soweit alles kein Problem.
Das einzige, was ich bisher überhaupt nicht hinbekomme ist, dass das ID-Feld später in der Access Tabelle den Primärschlüssel hat.
Sub CreateTableInAccess()
Dim aktuelle_Zeile As Integer
Dim aktuelle_Spalte As Integer
Dim TabellenName As String
Dim Feldname As String
Dim Feldtyp As String
aktuelle_Zeile = 5
aktuelle_Spalte = ActiveCell.Column()
TabellenName = Range(Cells(aktuelle_Zeile, aktuelle_Spalte), Cells(aktuelle_Zeile, aktuelle_Spalte))
' Überprüfen, ob es die richtigen Spalten sind
If InStr(1, TabellenName, "_") = 0 Then
MsgBox "Leider haben Sie die falsche Spalte ausgewählt. Gültige Spalten haben in der Zeile 5 einen Unterstrich."
Exit Sub
End If
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
' Pfad zur Access-Datenbank
Dim dbPath As String
dbPath = "d:\Modellbahnsammlung\Datenbank\Testdatenbank.accdb" ' Ändere den Pfad entsprechend
' Öffne die Datenbank
Set db = DBEngine.OpenDatabase(dbPath)
' Erstelle eine neue Tabelle
Set tdf = db.CreateTableDef(TabellenName) ' Name der neuen Tabelle
For Zeile = 7 To 200
' Wenn es keine Zeile mit Inhalt gibt, dann Schleife verlassen
If Range(Cells(Zeile, aktuelle_Spalte), Cells(Zeile, aktuelle_Spalte)) = "" Then
Exit For
End If
' Jetzt werden die Tabellenfelder in die neue Tabellee erstellt
Feldname = Range(Cells(Zeile, aktuelle_Spalte), Cells(Zeile, aktuelle_Spalte))
Feldtyp = Range(Cells(Zeile, aktuelle_Spalte + 1), Cells(Zeile, aktuelle_Spalte + 1))
Select Case LCase(Feldtyp)
Case "a"
' Füge Felder zur Tabelle hinzu
Set fld = tdf.CreateField(Feldname, dbLong)
fld.Attributes = dbAutoIncrField ' Auto-Increment für ID-Feld
tdf.Fields.Append fld
Case "t"
Set fld = tdf.CreateField(Feldname, dbText, 255) ' Textfeld mit max. 255 Zeichen
tdf.Fields.Append fld
Case "v"
Set fld = tdf.CreateField(Feldname, dbLong)
tdf.Fields.Append fld
Case "z"
Set fld = tdf.CreateField(Feldname, dbDouble)
tdf.Fields.Append fld
Case "d"
Set fld = tdf.CreateField(Feldname, dbDate)
tdf.Fields.Append fld
Case "j"
Set fld = tdf.CreateField(Feldname, dbBoolean)
tdf.Fields.Append fld
Case "m"
Set fld = tdf.CreateField(Feldname, dbMemo)
tdf.Fields.Append fld
End Select
Next Zeile
' Füge die Tabelle zur Datenbank hinzu
db.TableDefs.Append tdf
' Schließe die Datenbank
db.Close
MsgBox "Tabelle erfolgreich erstellt!"
Range(Cells(5, aktuelle_Spalte + 3), Cells(5, aktuelle_Spalte + 3)).Select
End Sub
So sieht meine Datenbasis aus
Bedruckung
UT_Bedruckung Ft
ID a
UT_Bedruckung_Artikel_StammdatenID v
UT_Bedruckung_UT_Bedruckung_AuswahlID v
d t
UT_Bedruckung_Schriftgroesse z
UT_Bedruckung_Wert t
Die Buchstaben bedeuten folgendes
T = Textfeld
Z =Zahlenfeld
J = Ja-Nein-Feld
A = Autowert
V = Verweiszahlenfeld
D = Datum/Uhrzeit
M = Memofeld
Kann mir jemand von Euch verraten, wie ich den Primärschlüssel setzen kann?
Vielen Dank für jede Antwort.
Gruß
Volker
Anzeige