Benutzer mit den meisten Antworten
Create Index über eine verknüpfte Tabelle?

Frage
-
Hallo Zusammen,
ich probiere schon seit einiger Zeit, einen Index auf einer Tabelle via VBA zulegen.
Das Problem dabei ist, das es sich um eine verknüpfte Tabelle (Front- und Backend wurden aufgeteilt in 2 Access-Datenbanken).Mein Ansatz ist wie folgt - aber leider macht er dies nicht.
Hättet ihr eine Idee, wie es funktionieren könnte?Sub UpdateTable_t_Kunden_Einkaufshistory()
On Error GoTo PROC_ERR
Dim db As DAO.Database
Set db = OpenDatabase(GetFilenameDBBackend_with_Path()) 'Backend-DB
'Create
db.Execute "CREATE UNIQUE INDEX IndexKdNrDatum ON [t_Kunden_Einkaufshistory] (H_KundenNr, H_Datum) WITH DISALLOW NULL;"
MsgBox "UNIQUE INDEX erstellt!"
PROC_ERR:
db.Close
Set db = Nothing
End Submfg Oliver
Antworten
-
Hallo Oliver
evtl. über VBA ein neues Feld anlegen mit AltesFeld _Neu - Natürlich gleich mit indexdann die Daten von feld AltesFeld in AltesFeld_Neu kopieren
AltesFeld löschen
AltesFeld_Neu in AltesFeld umbenennen
oder auf MSSQL als Backend umstellen :)
natürlich danach die Tabellen neu in der Anwendung Verknüpfen
LG
Michael
- Bearbeitet MCDPone Mittwoch, 27. Juli 2022 15:14
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 1. August 2022 06:11
- Als Antwort markiert Peter DoeringMVP, Moderator Montag, 1. August 2022 12:12
Alle Antworten
-
Hallo Oliver,
Es gibt in Microsoft Access zwei Arten von Indizes über verknüpfte Tabellen, einen „echten“ und einen Pseudoindex. Der „echte“ bleibt innerhalb der verknüpften Tabelle und wird nicht durch Jet/Access verwendet und bearbeitet. Der Index wird während der Datenbearbeitung (z. B. für Eindeutigkeit wie in Deinem Beispiel) durchgesetzt. Der Pseudoindex ist ein dynamischer Querverweis, der durch Access erstellt und bearbeitet wird. Wie ich Deiner Beschreibung entnehme, möchtest Du einen „echten“ Index zulegen. Erstelle zu diesem Zweck den Index in der verknüpften Tabelle und aktualisiere den Link auf die Tabelle im Tabellenverknüpfungs-Manager (Linked Table Manager). Alternativ kannst Du programmatisch die TableDef.RefreshLink-Methode aufrufen. Für weitere Informationen verweise ich Dich auf diesen Blogeintrag:
Indices on Linked Tables/Views in Access
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Danke dir Dimitar.
Natürlich könnte ich den "echten" Index in der Backend-Tabelle setzen, das wäre kein Problem. Mein Problem ist, das ist dies vom "Hauptprogramm" aus via VBA tun muss, weil die Backend-Tabellen/Datenbanken in Deutschland bei den Kunden verteilt ist. Mein Problem erkannt? :-)
Ich mache alles, lege neue Tabellen an, neue Felder innerhalb den Tabellen, verknüpfe / refreshe via VBA alles klappt. Nur das Dinge mit dem Index via VBA möchte leider nicht.
Gruß Oliver
-
Hallo Oliver
evtl. über VBA ein neues Feld anlegen mit AltesFeld _Neu - Natürlich gleich mit indexdann die Daten von feld AltesFeld in AltesFeld_Neu kopieren
AltesFeld löschen
AltesFeld_Neu in AltesFeld umbenennen
oder auf MSSQL als Backend umstellen :)
natürlich danach die Tabellen neu in der Anwendung Verknüpfen
LG
Michael
- Bearbeitet MCDPone Mittwoch, 27. Juli 2022 15:14
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 1. August 2022 06:11
- Als Antwort markiert Peter DoeringMVP, Moderator Montag, 1. August 2022 12:12