PK einer Tabelle finden?!

24. Mai 2007 12:55

Hallo zusammen,

ich möchte irgendwie die Schlüssel (nur der Primärschlüssel reicht auch!) einer Tabelle herausfinden.

Jetzt bitte nicht gleich losschreiben: Guck in den Designer!

Etwas komplizierter ist es schon:

Gibt es eine versteckte Tabelle (wie "Fields" oder "Objekt"), in der die Schlüssel gespeichert werden?

Hintergrund der ganzen Aktion ist folgender:
Ich ziehe mir über ODBC Tabellendaten nach Excel, um sie mit anderen Datenbanken zu vergleichen.
Der Vergleich erfolgt z.B. so: Artikelnr. der ersten DB wird in der zweiten DB gesucht, alle Felder dieser Zeile werden verglichen und dann geht´s weiter mit der nächsten Artikelnr.

Das Ganze läuft natürlich nur, wenn das Feld Artikelnr. auch eindeutig ist, sprich keine Artikelnr. mehrfach vergeben ist.

Sollte eine Tabelle einen PrimärKey aus mehreren Feldern besitzen, läuft der Vergleich so nicht mehr und ich mußte mir was anderes überlegen.

Mein Problem ist nun, dass ich erst mal herausfinden muss, ob die entsprechende Tabelle einen PrimärKey aus einem Feld oder mehreren besitzt.

Mein erster Versuch, dies über die Feldnr. herauszufinden hat nicht funktioniert. In der Tabelle "Artikel VK-Preis" ist Artikelnr. Feld 1, aber der PK besteht trotzdem aus mehreren Feldern.

Hoffe, es ist verständlich formuliert.

Danke.

24. Mai 2007 13:47

Hallo.

Müsste doch eigentlich über CURRENTKEY funktionieren.

Code:
Datei.RESET;
Primärschlüssel := Datei.CURRENTKEY;

24. Mai 2007 15:39

Hallo MartinR,

danke für deinen Hinweis, das stimmt zwar, aber das suche ich leider nicht.

Ich müßte wissen, ob die Schlüssel in einer versteckten Tabelle stehen und wie diese Tabelle heißt!

Der Vergleich der DBs läuft in Excel (VBA), d.h. ich habe keine Navision-Befehle zur Verfügung. (Ich hoffe, dass wurde auch im ersten Beitrag deutlich!)
Sollte es diese o.g. Tabelle geben, könnte ich diese mittels ODBC auslesen und so herausfinden, wie der PrimärKey der Tabelle XY lautet.

Bis dann.

24. Mai 2007 15:47

Ab Version 4.02 (eventuell auch schon ab 4.0) gibt es die Tabelle Key (2000000063). Dort Kannst du nach Tabellen ID und nach Schlüsselnummer (Primärkey = 1) abfiltern.

24. Mai 2007 15:51

Hallo Dune.

Sorry, hab wohl Deinen ersten Beitrag falsch verstanden.

Meines Wissens nach gibt es leider keine Systemtabelle,
aus der man die Schlüssel einer bestimmten Tabelle
ermitteln kann.

24. Mai 2007 15:55

mespelage hat geschrieben:Ab Version 4.02 (eventuell auch schon ab 4.0) gibt es die Tabelle Key (2000000063). Dort Kannst du nach Tabellen ID und nach Schlüsselnummer (Primärkey = 1) abfiltern.


Cool. Kannte ich noch gar nicht.

24. Mai 2007 16:27

Hi mespelage,

dank dir für deine Antwort. Dann könnten die Keys vor 4.0 doch auch in einer Tabelle stehen und man muß diese Tabelle nur noch finden!?

Hoffentlich hat sie bereits jemand gefunden und kann mir noch schnell den Namen sagen.

24. Mai 2007 18:19

Dune hat geschrieben:Hoffentlich hat sie bereits jemand gefunden und kann mir noch schnell den Namen sagen.


Ohne nachgeschaut zu haben: In der Regel existieren die Tabellen in ältereren Versionen einfach nur in der deutschen Übersetzung. Da die Tabelle heute "Key" heißt (wie mehrfach genannt), könnte sie früher "Schlüssel" geheißen haben.

24. Mai 2007 19:13

Dune hat geschrieben:Hoffentlich hat sie bereits jemand gefunden und kann mir noch schnell den Namen sagen.


Nein, die Daten haben bestimmt irgendwo existiert, wurden aber nicht über Systemtabellen auf der C/AL-Ebene zur Verfügung gestellt.

Um sich alle Systemtabellen (und auch die "normalen") mit ihnen Feldern anschauen zu können, muss man nur eine neue Form auf die Tabelle "2000000041" aufsetzen.
Aber bitte Editable=nein, da ein Löschen hier wirklich Felder im Tabllendesign löscht.