PDA

Vollständige Version anzeigen : Tabelle mit Feldern und Primärschlüssel in VBA erzeugen


<Dan>
08.01.2002, 08:36
hai folks,

ich habe eine Tabelle erzeugt mit CreateTableDef, dann habe ich Felder erzeugt mit CreateField und mit Append an das TableDef angefügt, klappt auch.

Jetzt möchte ich, dass das Feld "ID", Typ dbLong Primärschlüssel wird und keine Duplikate erlaubt.

Wie stelle ich das an?

Sorry, den bisherigen SourceCode habe ich nicht hier :(

cu Daniel...

Anne Berg
08.01.2002, 09:01
hier ein Beispiel:

dim idx as index, tdf as tabledef

set tdf = currentdb.tabledefs("myTable")
Set idx = tdf.CreateIndex("pIndex")

idx.Fields.Append .CreateField("ID")
idx.Unique = true
idx.Primary = True
tdf.Indexes.Append idx

Dan
08.01.2002, 09:24
Hallo,
erstmal Danke,

Der Code kommt mir sehr bekannt vor, nur hat der bei mir irgenwie nicht funktioniert.

Ich habe in einer Prozedur die Tabelle und die Felder erzeugt (und angehängt)

Danach habe ich (IMHO so wie unten) den Index erzeugt und beim tdf.Indexes.Append idx kam eine Fehlermeldung. (Ich weiss leider gerade den genauen Wortlaut nicht)

Kann es sein, dass ich erst noch so was wie einen REFRESH oder REQUERY mit den TableDefs hätte machen müssen?

cu Daniel


Dim idx As Index, tdf As TableDef

Set tdf = CurrentDb.TableDefs("myTable")
Set idx = tdf.CreateIndex("pIndex")

idx.Fields.Append .CreateField("ID")
idx.Unique = True
idx.Primary = True
tdf.Indexes.Append idx <-- Hier trat Fehler auf

Anne Berg
08.01.2002, 09:54
Es ist wohl so, dass man den Index in die Tabellenerstellung mit einbeziehen muß und erst am Ende kommt das Append für tdf. - So läufts bei mir!
Ein nachträgliches Einfügen eines Primärschlüssels mache ich mit folgendem Code:
' Primary-Key anlegen
If Not idxP Then
Set idx = tdf.CreateIndex("PrimaryKey")
Set fld = idx.CreateField("RowID") ' Feld vorhanden!
idx.Primary = True
idx.Required = True
idx.Fields.Append fld
tdf.Indexes.Append idx
End If

Frag mich bitte nicht warum, aber beide Varianten laufen!!

P.S. Nach dem 'Editieren' war mein Beitrag futsch!!! (2x ausprobiert, klappt zuverlässig - irgendwie gefällt mir die neue Oberfläche ganz und gar nicht...)

Dan
08.01.2002, 10:44
Hmm,
eigentlich habe ich alle Möglichkeiten
index vor tabledef.append
index nach ...
index ganz nach fertigstellung des tabledefs erstellen ausprobiert - und hatte jede Menge verschiedenster Fehlermeldungen.

Ich werde das mal weiterprobieren, irgendwo hab ich warscheinlich einfach nur einen Fehler gemacht.

cu Daniel