Forums Neueste Beiträge
 

[Access 2003 SP3] Primaerschluessel einer Tabelle per VBA finden

01/09/2009 - 20:06 von Lars P. Wolschner | Report spam
Hallo,

wie finde ich per VBA den Primàrschlüssel einer (per VBA
eingebundenen) Tabelle?

Aus der Indexes-Auflistung der Tabledef-Objekte werde ich nicht
schlau: Da wird ein Index "PrimaryKey" mit den zu einem Primàr-
schlüssel passenden Eigenschaften aufgelistet, wàhrend das im
Tabellendefinitionseditor tatsàchlich als Primàrschlüssel
festgelegte Feld zwar auch als Index aufgeführt wird, aber die
Eigenschaften dazu nicht passend eingestellt sind:

Index "IdUser" (im Tabelleneditor als Primàrschlüssel festgelegt)
Name="IdUser"
Unique=Falsch
Clustered=Falsch
Primary=Falsch
Foreign=Falsch
Required=Falsch
IgnoreNulls=Falsch
DistinctCount=0

Index "PrimaryKey"
Name="PrimaryKey"
Unique=Wahr
Clustered=Falsch
Primary=Wahr
Foreign=Falsch
Required=Wahr
IgnoreNulls=Falsch
DistinctCount=0

Schon jetzt vielen Dank für Eure Hinweise,
mit freundlichen Grüßen
Lars P. Wolschner
 

Lesen sie die antworten

#1 Josef Poetzl
01/09/2009 - 20:40 | Warnen spam
Hallo!

Lars P. Wolschner schrieb:
wie finde ich per VBA den Primàrschlüssel einer (per VBA
eingebundenen) Tabelle?

Aus der Indexes-Auflistung der Tabledef-Objekte werde ich nicht
schlau: Da wird ein Index "PrimaryKey" mit den zu einem Primàr-
schlüssel passenden Eigenschaften aufgelistet, wàhrend das im
Tabellendefinitionseditor tatsàchlich als Primàrschlüssel
festgelegte Feld zwar auch als Index aufgeführt wird, aber die
Eigenschaften dazu nicht passend eingestellt sind:

Index "IdUser" (im Tabelleneditor als Primàrschlüssel festgelegt)


[...]
Index "PrimaryKey"


[...]

Ich vermute, da wurden bei der Tabellenerstellung einfach 2 Indizes
angelegt, ohne dass es dir aufgefallen ist.
Der PK, den du im Tabellenentwurf einstellst, ist normalerweise der
Index mit dem Namen "PrimaryKey".
Der andere Index "IdUser" wurde vermutlich durch die ursuper
Autoindex-Einstellung erzeugt. (Das ist so ein Dingens, dass ich
sofort deaktiviere, wenn ich Access neu installiere. :-)

Der Name des Index ist aber eigentlich nebensàchlich.
Zum Suchen ist die DAO-Index-Eigenschaft "Primary" wichtig.


Eine Alternative zur DAO-Variante wàre ADODB mit OpenSchema
Prinzip:
Set cnn = CurrentProject.Connection
Set rst = cnn.OpenSchema(adSchemaPrimaryKeys, _
Array(Empty, Empty, "DeineTabelle))
.. und nun nur noch das Recordset auswerten.


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen