none
Primärschlüssel bei ODBC-Verknüpfung ändern

    Frage

  • Hallo,
    ich muss bei der Verknüpfung zu einer Tabelle in einer externen Datenbank den Primärschlüssel ändern, finde aber keine Möglichkeit dazu.
    Bei dem Versuch das Problem durch erneute Verknüpfung zu umgehen kommt keine Abfrage mehr welches Feld der/die Primärschlüssel sein sollen.
    Vermutlich habe ich irgendwann mal den Primärschlüssel falsch definiert und mein System hat diese Einstellung irgendwo abgespeichert.

    Wer kann mir helfen?

    Gruß L.H.

    Mittwoch, 9. Januar 2013 13:07

Alle Antworten

  • Beim Erstellen der verknüpften Tabelle kommt es auf die Art der Quelle an.

    Bei Verknüpfungen auf Tabellen werden Primärschlüssel im Normalfall automatisch erkannt und entsprechend markiert.

    Bei Verküpfung z.B. auf eine SQL Server Sicht geht das nicht, da einen Sicht keinen Primärschlüssel hat. Hier muss man diese Information in Access manuell nachgetragen werden. Einfach die Felder in der verknüpften Tabelle in der Entwurfsansicht, welche den "Primärschlüssel" bilden, markieren, auf Primarschlüssel setzten und speichern.

    Mittwoch, 9. Januar 2013 13:45
    Moderator
  • Danke für die schnelle Antwort.
    Ich hatte auch schon den Verdacht, dass Access versucht den Primärschlüssel automatisch zu erkennen, hier aber das falsche Feld auswählt.
    Auch in der Entwurfsansicht finde ich keine Möglichkeit den Primärschlüssel zu ändern. Der Punkt im Kontextmenu ist grau unterlegt.
    Mittwoch, 9. Januar 2013 14:36
  • Um was für eine Datenquelle handelt es sich denn?

    Ggf. kannst du den Primärschlüssel per SQL anlegen: CREATE INDEX pk_TabellenName ON TabelleName ( Feldliste ) WITH PRIMARY;

    Mittwoch, 9. Januar 2013 14:44
    Moderator
  • Es handelt sich um eine ODBC-Verknüpfung auf eine AS400 Tabelle (DB2?).

    Mittwoch, 9. Januar 2013 15:06
  • Ah ja, nicht jeder Datentyp kann in Access bei einer verküpften Tabelle Teil eines Primärschlüssels sein. GGf. mal den Datentype ein DB2. Welchen Treiber benutzt ihr?
    Mittwoch, 9. Januar 2013 15:16
    Moderator
  • Hallo

    Wir haben ähnliche Probleme mit eingebundenen Views aus Oracle Tabellen vom Datawarehouse welche wir wie folgt gelöst haben:

    Wir erstellen auf der Tabelle in Access einen eindeutigen Index mit:

    Create Unique Index ix1 ON tblTabelle (Feld1, Feld2);

    Dadurch wird in der Tabelle ersichtlich im Abfrage Editor dieses Felder (oder mehrere) Fett angezeigt und der Zugriff insbesondere bei Joins mit mehreren Tabellen ist deutlich schneller.

    Vielleicht hilft dies auch bei Dir.

    Gruss Markus

    Mittwoch, 9. Januar 2013 16:06
  • Treiber ist  "Client Access ODBC Driver (32-bit) Version 8.00.08.00 von IBM (vom 08.05.2011)

    Donnerstag, 10. Januar 2013 07:36
  • Der sollte passen, wie sieht es mit den Datentypen aus?
    Donnerstag, 10. Januar 2013 08:00
    Moderator
  • Datentyp in eine "Zahl", Feldeigenschaften sind identisch zum "falschen" Primärschlüssel.

    Aber nachdem ich mir jetzt einige Sache angeschaut und kontrolliert habe, vermute ich noch ganz andere Probleme.
    Wenn ich die Verknüpfung auf die Tabelle öffne steht da nur Müll drin. 1907 Datensätze von 1850 identisch sind.
    (Hier habe ich ein Problem mit dem Primärschlüssel vermutet)
    Jetzt habe ich gerade die Abfrage mal mit Excel 2010 gemacht (Daten -  Vom Datenverbindungsassistent - ODBC DSN usw.) und bekomme ebenfalls 1907 Datensätze, hier aber mit den richtigen Daten.

    Dieses Verhalten zeigt Access nur bei dieser einen Verknüpfung zu dieser einen Tabelle. Andere Verknüpfungen auf größere Tabellen funktionieren problemlos.

    Wie kommt es zu so einem Verhalten??

    Donnerstag, 10. Januar 2013 09:39
  • Das liegt an der interen Funktweise und dem Problem, das er eben die falschen Informationen zum Primärschlüssel hat.
    Donnerstag, 10. Januar 2013 11:07
    Moderator
  • Danke für die Unterstützung.

    Ich habe mir von unserem Systemanbieter einen View auf die betroffene Tabelle einrichten lassen.
    Hier konnte ich den Primärschlüssel wieder selber definieren.

    Warum das bei der ursprünglichen Tabelle nicht ging war meinem Ansprechpartner ebenfalls schleierhaft.

    Donnerstag, 10. Januar 2013 15:28