Office: Primärschlüssel per VBA ermitteln

Helfe beim Thema Primärschlüssel per VBA ermitteln in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe ein recht einfach klingendes Problem: In einer DB sind mehrere Tabellen mit unterschiedlichen Primärschlüsseln definiert. Dabei kann... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von spacystar, 22. August 2005.

  1. Primärschlüssel per VBA ermitteln


    Hallo,

    ich habe ein recht einfach klingendes Problem: In einer DB sind mehrere Tabellen mit unterschiedlichen Primärschlüsseln definiert. Dabei kann sowohl nur ein Feld als auch mehrere Felder Primärschlüssel sein.

    Die Frage ist jetzt, ob es möglich ist, den Primärschlüssel zu ermitteln bzw. abzufragen, welches Feld den Schlüssel definiert. Die Anzahl der Schlüssel bekomme ich über Indexes.Count eines TableDefs heraus. Allerdings ist es mir nicht gelungen zu ermitteln, welches Feld denn nun der Schlüssel ist. Ist da jemanden etwas bekannt? Das wäre super...

    Zum Hintergrund: Anhand der Schlüssel wird eine SQL-Abfrage zusammengebaut, welche die Daten zwischen zwei Tabellen vergleicht - allerdings Recordsetweise. Eine bessere Methode habe ich nicht gefunden, obwohl ich vermute, dass es mit Hilfe von SQL vielleicht direkt eine Methode gibt, Tabellen zu vergleichen und die als Resultat nur die Recordsets auflistet, die eben nicht in Tabelle 2 vorhanden sind, wohl aber in Tabelle 1.

    Danke & Gruss

    :)
     
    spacystar, 22. August 2005
    #1
  2. Hi,

    was ist denn dein eigentliches Ziel und wodurch ist es bedingt?
     
    J_Eilers, 24. August 2005
    #2
  3. Eigentlich ist das Ziel ganz einfach: Zwei Datenbanken sollen verglichen werden. Dabei ist eine die Master und die andere die Slave. Aus der Slave werden die Daten in die Master übernommen.

    Sind die Daten vorhanden, sollen sie auf Veränderung gecheckt werden. Sind die Daten nicht vorhanden sollen sie eingefügt werden und sind die Daten nur noch in der Master vorhanden, sollen sie aus der Slave gelöscht werden.

    Dazu gehe ich tabellenweise vor. Ich öffne eine Tabelle in der Master und Slave, und starte mit den Daten des Recordsets aus der Slave eine Abfrage in der Master, die mir, wenn die Daten in der Master vorhanden sind einen Recordset returniert. Die Abfrage stützt sich dabei auf die Schlüssel, welche jeden Datensatz in den Tabellen eineindeutig identifiziert. Deshalb war jetzt die Frage, wie ich die Primärschlüssel einer Tabelle ermittle damit ich weiss, wie ich den SQL-String für die Abfrage zusammen setzen muss.
     
    spacystar, 24. August 2005
    #3
  4. Primärschlüssel per VBA ermitteln

    Hallo,

    Indexes.Count

    gibt Dir nur die zahl der indizierten Felder der Tabelle zurück. Das hat noch nichts mit dem Primärschlüssel zu tun. Primärschlüssel ist ein Index, wenn seine Eigenschaft primary=True ist.

    Beziehungen zwischen Tabellen untersuchst Du übrigens am besten mit dem Relation-Objekt.

    mfg Rita
     
    rita2008, 24. August 2005
    #4
  5. Reicht vielleicht schon ein tdf.Indexes(i).Name?
     
    J_Eilers, 24. August 2005
    #5
  6. Du könntest dir den nötigen Code sicherlich aus meinem Tool TabToWeb (Link in meiner Signatur) rausziehen.
     
    Arne Dieckmann, 24. August 2005
    #6
  7. danke für die hinweise. besonders dem mit dem hinweis auf die primary-eigenschaft. damit ist es mir gelungen, die primärschlüssel für eine tabelle eindeutig auszulesen. frage bleibt, ob es nicht noch eventuell eine schnellere variante gibt, als der, die ich realisiert habe. anbei kurz der code:


    Dim tables As TableDef
    Dim keys As index

    Set tables = wodb.TableDefs(table)

    For Each keys In tables.Indexes
    If keys.Primary = True Then
    For i = 0 To keys.Fields.Count - 1
    key(number_of_keys) = keys.Fields(number_of_keys).Name
    If number_of_keys > UBound(key) Then
    ReDim Preserve key(UBound(key) * 2)
    End If
    Next i
    End If
    Next keys

    im speziellen stört mich die for-each schleife, weil diese bis zum ende durchlaufen wird auch wenn die primärschlüssel schon längst ermittelt worden sind.
     
    spacystar, 25. August 2005
    #7
  8. Primärschlüssel per VBA ermitteln

    Du kannst doch, sobald Du den primary gefunden hast mit Exit For die Schleife verlassen.

    mfg Rita
     
    rita2008, 25. August 2005
    #8
  9. stimmt! danke... es gibt doch immer wieder einfache lösungen die aufgrund ihrer einfachheit immer wieder übersehen werden *grins
     
    spacystar, 25. August 2005
    #9
Thema:

Primärschlüssel per VBA ermitteln

Die Seite wird geladen...
  1. Primärschlüssel per VBA ermitteln - Similar Threads - Primärschlüssel VBA ermitteln

  2. Daten-Import inkl. Primärschlüssel

    in Microsoft Access Hilfe
    Daten-Import inkl. Primärschlüssel: Hallo! Ich habe eine Accesstabelle, die ich in Sharepoint importieren möchte, brauche jedoch auch die - gleichen - IDs, die zugleich auch als Primärschlüssel fungieren und ich diese als...
  3. Datensatze löschen INKLUSIV Primärschlüssel

    in Microsoft Access Hilfe
    Datensatze löschen INKLUSIV Primärschlüssel: Hey Ihr Lieben, gibt es die Möglichkeit Datensätze inklusiv Primärschlüssel zu löschen? Hintergrund: Ich habe einige Testdaten eingetragen, möchte nun "reale" Daten eintragen und gerne bei...
  4. Doppelte Einträge verhindern ohne Primärschlüssel

    in Microsoft Access Hilfe
    Doppelte Einträge verhindern ohne Primärschlüssel: Folgendes Problem: habe ein Tabellenfeld (Zahl) ohne Primärschlüssel. Wie kann ich doppelte Einträge verhindern, indem ich auswählen kann ob ja oder nein (Doppelte Einträge sollen grundsätzlich...
  5. Primärschlüssel/Fremdschlüssel aus 2.Tabelle automatisch einfügen

    in Microsoft Access Hilfe
    Primärschlüssel/Fremdschlüssel aus 2.Tabelle automatisch einfügen: Hallo zusammen, ich stehe gerade vor dem Problem, dass ich die Datensätze zwischen zwei Tabellen nicht verknüpfen kann. Konkret habe ich die beiden Tabellen tblEigenschaft und tblBasis. In der...
  6. Primärschlüssel für zwei Tabellen gebrauchen

    in Microsoft Access Hilfe
    Primärschlüssel für zwei Tabellen gebrauchen: Hallo zusammen, Ich beschäftige mich mit Access und Versicherungen. Dazu habe ich mir eine Datenbank gezimmert mit den Tabellen Unternehmen, Kontakte (Zwischentabelle), Personen, Adressen und...
  7. Hinzufügen oder Ändern des Primärschlüssels einer Tabelle in Access

    in Microsoft Access Tutorials
    Hinzufügen oder Ändern des Primärschlüssels einer Tabelle in Access: Hinzufügen oder Ändern des Primärschlüssels einer Tabelle in Access Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access...
  8. Primärschlüssel oder Index kann nicht auf die Spalte "< 0 s >" erstellt werden, da deren ...

    in Microsoft Access Tutorials
    Primärschlüssel oder Index kann nicht auf die Spalte "< 0 s >" erstellt werden, da deren ...: Primärschlüssel oder Index kann nicht auf die Spalte "< 0 s >" erstellt werden, da deren Datentyp "< 1 s >" ist. (ADP) Access 2010 Access 2007 Mehr... Weniger...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden