PDA

Vollständige Version anzeigen : Primärschlüssel UND Index setzen


LisiH
24.01.2008, 12:11
Hi,
mit dem Befehl

dim primaer_key as string
primaer_key = "[" & mytable.Fields(0).Name & "], [" & mytable.Fields(1).Name & "], [" & mytable.Fields(2).Name & "]"
CurrentDb.Execute "CREATE INDEX UIX_" & mytable.Name & " ON " & mytable.Name & _
" (" & primaer_key & ") WITH PRIMARY"

erstelle ich auf den ersten drei Feldern eines verknüpften ODBC-Views einen Primary Key. Soweit so gut.
Ich möchte nun auf eine weitere Spalte mit folgendem Befehl einen Index auf denselben View erstellen:

Dim sqlstring As String
sqlstring = "CREATE INDEX I_HtKat_Name ON t_Hotel_Kategorie (HtKat_Name)"
DoCmd.RunSQL sqlstring

Ich bekomme aber immer die Fehlermeldung: "3283 Der Primärschlüssel ist bereits vorhanden."
Dabei will ich ja keinen Primärschlüssel setzen, sondern nur einen Index. Es spielt dabei auch keine Rolle, ob ich eins der drei Felder des Primärschlüssels indizieren möchte, oder ein anderes Feld der Tabelle.

Kann jemand von Euch sehen, was ich hier falsch mache?
Oder handelt es sich hier um ein Problem, weil ich kein Schreibrecht auf die Tabelle / den View habe? Gibt es dann einen Workaround?
LG
Lisi

Josef P.
24.01.2008, 19:34
Wozu soll der Index im Frontend gut sein? :confused:

Anne Berg
24.01.2008, 22:43
Per ODBC verknüpfte Views haben keine Indizierung, daher ist es u.U. erforderlich oder auch nur sinnvoll, in Access einen Index zu vergeben. Das Verfahren hat aber offensichtlich nur eingeschränkte Möglichkeiten, schließlich handelt es sich nicht um eine Access-Tabelle, die man per Zugriff über das Database-Objekt direkt manipulieren könnte.

Ich fürchte, damit musst du leben...

Josef P.
24.01.2008, 22:59
Was soll eine Indizierung eine verknüpfte Sicht im FE bringen?
Eine Ausnahme gibt es: damit die Sicht bearbeitet werden kann muss Access einen PK kennen.
Den Nutzen eines "normalen" Index erkenne ich nicht.
(Where-Ausdrücke, die einen Index nutzen könnten, sollten an den Server weitergeben werden können, und der macht dann etwas mit den Indizes aus den Tabellen.)
BTW: Es besteht aber im Server die Möglichkeit die Sicht extra mit einem Index zu versehen.

Anne Berg
24.01.2008, 23:39
Eine Ausnahme gibt es: damit die Sicht bearbeitet werden kann muss Access einen PK kennen.Das ist IMHO der springende Punkt.

Nachtrag:BTW: Es besteht aber im Server die Möglichkeit die Sicht extra mit einem Index zu versehen.Sagst du uns auch Wie?

Josef P.
24.01.2008, 23:51
Sagst du uns auch Wie?
... Suchbegriff "indizierte Sichten" in der SQL-Server-Hilfe.

Anne Berg
25.01.2008, 00:07
SQL-Server? - davon war jetzt eigentlich nicht die Rede, oder habe ich das übersehen? :confused:

(...es gibt auch noch ein paar andere DB-Systeme. ;))

Josef P.
25.01.2008, 00:18
... und bestimmt gibt es auch auf anderen DBMS so etwas wie indizierte Sichten.

Anne Berg
25.01.2008, 00:22
Danke für den Hinweis, da werde ich dann wohl mal unseren Datenbank-Administrator belästigen müssen. ;)