none
Create Index über eine verknüpfte Tabelle? RRS feed

  • 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 Sub

    mfg Oliver

    Sonntag, 17. Juli 2022 09:26

Antworten

  • Hallo Oliver


    evtl. über VBA ein neues Feld anlegen mit  AltesFeld _Neu - Natürlich gleich mit index

    dann 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




    Mittwoch, 27. Juli 2022 15:13

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ß,
    Dimitar

    Bitte 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.

    Montag, 18. Juli 2022 09:52
    Moderator
  • 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

    Montag, 18. Juli 2022 17:04
  • Hallo Oliver


    evtl. über VBA ein neues Feld anlegen mit  AltesFeld _Neu - Natürlich gleich mit index

    dann 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




    Mittwoch, 27. Juli 2022 15:13
  • Danke Michael, hmmm ... das müsste ich mal testen, nicht das mir Daten verloren gehen. Aber ich werde hier höchstwahrscheinlich das selbe Problem haben.


    Gruss Oliver

    Dienstag, 2. August 2022 19:00