Access-Datenfeld-Primärschlüssel mit vba anlegen

Bild

Betrifft: Access-Datenfeld-Primärschlüssel mit vba anlegen
von: Carola41
Geschrieben am: 29.03.2006 01:02:40
Hallo liebe Usergemeinde,
ich habe ein Excelmacro, was u.a. mehrere Access-DB-Tabellen anlegen kann, wenn noch nicht vorh.
Klappt auch zuverlaessig, auch der Datenimport.
Ich brauche aber auch das Anlegen des Primaerschluesselfeldes, nur komme ich hier mit keiner Recherche weiter, ist das 'ausserhalb' so nicht zu vereinbaren ??
Wer kann mir bitte helfen ?
Verweis : DAO 3.51 Object Library Access 97
'Prüfen, ob Tabelle bereits vorhanden
If Not TableExists(Dateiname, Tabellenname) Then
'Tabelle erzeugen
Set Datenbank = OpenDatabase(Dateiname)
Set Tabelle = Datenbank.CreateTableDef(Tabellenname)
'Felder erzeugen
'Die Namen der Felder 2 b.4 werden aus den
'entsprechenden Excel-Zellen geholt
With Tabelle
??? Set Feld1 = .CreateField("ID"), dbAutowert) ' , dbInteger ???
+++++++++++++++++++++++++++++++++++++++++++++++
diese Angaben habe ich auch gefunden :
Set idx = CreateObject("ADOX.Index")
With idx
.Name = "PrimaryKey"
.IndexNulls = adIndexNullsDisallow
.PrimaryKey = True
.Unique = True
.Columns.Append "AutoWertFeld"
End With
Primärschlüssel angelegt -übliche Einstellungen : keine Nullwerte erlaubt, Uniqueness sowie primary key Einstellung. Dann wird noch das Feld AutoWertFeld in die Collection Columns angefügt, und der Index der entsprechenden Tabelle zugeordnet .
+++++++++++++++++++++++++++++++++++++++++++++++
Set Feld2 = .CreateField(Range("C2"), dbText, 20)
Set Feld3 = .CreateField(Range("D2"), dbDate)
Set Feld4 = .CreateField(Range("E2"), dbInteger)
.Fields.Append Feld1
.Fields.Append Feld2
.Fields.Append Feld3
.Fields.Append Feld4
End With
'Tabelle hinzufügen
Datenbank.TableDefs.Append Tabelle
End If
'Datenbank schließen
Datenbank.Close
Set Feld3 ...........nothing
usw.
Viele Gruesse aus Berlin.
Carola -iss 41 :-))

Bild

Betrifft: AW: Access-Datenfeld-Primärschlüssel mit vba anlegen
von: Walter Reinthaler
Geschrieben am: 29.03.2006 09:07:43
Hallo Carola,
mir scheint, daß Du noch einen Verweis auf die ADOX-Bibliothek (Microsoft ADO Ext. 2.5 for DDL and Security) benötigst, sonst kann das wohl nicht funktionieren. Leider hast Du nicht erwähnt, was nicht funktioniert.
Falls Du es noch nicht kennst - eine recht brauchbare Beschreibung, wie man Access-Tabellen in VBA anlegt: http://www.aspheute.com/artikel/20000626.htm.
Gruß Walter (aus Wien)

Bild

Betrifft: AW: Access-Datenfeld-Primärschlüssel mit vba anlegen
von: Carola41
Geschrieben am: 29.03.2006 11:14:56
Hallo Walter,
vielen Dank für die Info, aber meine Frage war, ob mit dem Code und der Feldüberschriftenzuordnung auch ein Primärschlüsselfeld angelegt werden kann, also nicht über die ADOX-Mathode.
??? Set Feld1 = .CreateField("ID"), dbAutowert) ' , dbInteger ???
Ich hoffe, es hat noch einer eine Idee!
Danke.
Carola

Bild

Betrifft: AW: Access-Datenfeld-Primärschlüssel mit vba anlegen
von: Walter Reinthaler
Geschrieben am: 29.03.2006 13:21:04
Hallo Carola,
mit dem Code gehts mE. nicht, denn CreateField kennt keinen Feldtyp "dbAutowert". Du müßtest einen Index anlegen und diesem dann das Primärschlüsselfeld (so wie in Deinem Text erwähnt) hinzufügen. Ein Beispiel gibts in der Access-Hilfe unter "Primary-Eigenschaft (Beispiel)".
Ich hoffe, das hilft ein wenig weiter.
Gruß Walter (aus Wien)

Bild

Betrifft: AW: Access-Datenfeld-Primärschlüssel mit vba anlegen
von: Carola41
Geschrieben am: 29.03.2006 15:52:06
Hallo Walter,
erstmal Danke für den Tipp mit der Accesshilfe, jaja sowas gibts gratis im Proggy . . .
Durch diesen Code muss ich erst mal durchsteigen, vielleicht hilft es doch noch.
Gruss.
Carola

Bild

Betrifft: AW: Access-Datenfeld-Autowert mit vba anlegen
von: Carola41
Geschrieben am: 02.04.2006 01:46:34
Hallo Usergemeinde,
endlich bin ich auf einen gangbaren Weg gestoßen:
http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Autowert-Feld_per_VBA-Code_erstellen
Diese Page ist sehr informativ!
Zwar klebt der Autowert jetzt hinten dran, aber er ist eben da und es funzt erst mal.
Gibt es einen Codespruch, dass er den 1. Spaltenplatz beseelt (etwa: movebefore ;-) ??
---- CurrentDb.TableDefs("Tabname").Field.Append Field ---------
In dieser, oder vorher müßte also etwas wackeln.
Aber erst einmal Gute Nacht!
Carola

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Access-Datenfeld-Primärschlüssel mit vba anlegen"