Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen

Forumthread: Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen

Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen
26.02.2025 13:58:14
Volker Bunge
Hallo zusammen,

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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen
26.02.2025 14:20:58
Volker Bunge
Hallo zusammen,

da ich natürlich selbst auch immer noch nach einer Lösung suche, bin ich gerade per Zufall auf eine gestossen.



' Füge die Tabelle zur Datenbank hinzu
db.TableDefs.Append tdf

With tdf

' Create and append a new Index object to the
' Indexes collection of the new TableDef object.
Set idxNew = .CreateIndex("NumIndex")
idxNew.Fields.Append idxNew.CreateField("ID")
idxNew.Primary = True
.Indexes.Append idxNew

End With



Nachdem man mit db.TableDefs.Append tdf die Tabelle abgelegt hat, muss man einfach noch mit den folgenden Zeilen den Primärschlüssel im Nachgang ändern.

Wenn jemand noch eine bessere oder kürzere Version kennt, der darf gerne hierdrauf antworten.

Gruß
Volker
Anzeige
AW: Accesss Tabelle anlegen ID-Feld mit Primärschlüssel versehen
26.02.2025 14:41:17
Ulf
Hi,
beim Erstellen:
                strIdx = "PK01"

Feldname = "PK_Auto"
Feldtyp = dbLong
Set fld = tdf.CreateField(Feldname, dbLong)
fld.Attributes = dbAutoIncrField ' Auto-Increment für ID-Feld
tdf.Fields.Append fld

Set idx = tdf.CreateIndex(strIdx)
With idx
.Primary = True
.Fields = Feldname
End With
tdf.Indexes.Append idx

hth
Ulf
Anzeige

Forumthreads zu verwandten Themen

Anzeige