[Gelöst] Erfahrung mit DictTable.primaryKeyField()?

10. Oktober 2007 13:48

Hallo zusammen

ich bin ja doof.
Darum ersuche ich eure Hilfe.

Wann gibt DictTable.primaryKeyField() einen Wert ungleich 0 zurück?

Ich habe an meiner Tabelle alles versucht, um einen Primary Key zu erstellen.
Hat bis jetzt noch nicht funktioniert.

Kann mir jemand diesen Rätsel lösen bitte?

Vielen Danl

Mit freundlichen Grüssen
SaigonKid
Zuletzt geändert von SaigonKid am 23. Oktober 2007 12:40, insgesamt 1-mal geändert.

14. Oktober 2007 23:03

Hmm, Primary Key... :-)

Hierfür musst du einen eindeutigen Index für die Tabelle anlegen. Diesen Index kannst du dann der PrimaryIndex Eigenschaft der Tabelle zuweisen.

Dadurch wird der PrimaryKey über alle Felder, die in dem eindeutigen Index enthalten sind, gebildet.

15. Oktober 2007 11:12

Vielen Dank für die Antwort,

ich habe das auch schon probiert.

aber die dicttable.primarykeyfield() gibt mir auch diesen selbst angelegten Feld mit 0 zurück.

Darf ich euch mein Leidensweg schildern?

Also:
1.Geht in die Personalverwaltung\Einstellungen\Referenztypen
2. Klickt in das Feld 'Bezeichnung der Tabelle'
3. Ein Lookup Button erscheint.
4. Beim Auslösen des Lookup Buttons wird die CCPrimaryTableLookup Formular geöffnet.
5. Darin wird eine Methode fillTables() aufgerufen und es wird dabei alle primären Tabellen in der AOS angezeigt.

Die Filterung wird durch die dicttable.primarykeyfield() methode gesteuert.

Ich habe bis jetzt nicht geschafft, eine eigene Tabelle dort drauf erscheinen zulassen.
UND: Obwohl ich eine angezeigte Tabelle dupliziere, erscheint dieses Duplikat nicht in diesem Lookup.

Und das blöde dran ist, es gibt keine Dokumentation zum DictTable.
Oder ich habe es bisanhin nicht gefunden.

Kann mir bitte jemand eine ausfürhlichere Dokumentation zeigen? Bitte??? :(

Vielen Dank für eure Antwort

Mit freundlichen Grüssen

SaigonKid

15. Oktober 2007 21:27

Ah, ok... jetzt weis ich was du machst und wo dein Problem liegen könnte/wird :-)

Soweit ich es beurteilen kann liegt dein Problem nicht an der Tabelle selbst, sondern am EDT (Extended Data Type), den du für das primaryKey Feld verwendest. Oder auch daran, dass du keinen EDT verwendet hast.

Lösung:
1. Du musst einen EDT für das Feld, welches als primaryKey "erkannt" werden soll, verwenden.
2. Der EDT muss eine Relation zu dem primaryKey Feld deiner Tabelle haben.
3. Für die Tabelle muss ein eindeutiger Index mit diesem Feld angelegt werden.

Dann sollte es funktionieren.

Am besten wird es sein, wenn du dir den Zusammenhang mal mit der Tabelle "CustTable" dem Feld "CustTable.AccountNum" und dem EDT "CustAccount" ansiehst.

Warum es bei einer dublizierten Tabelle nicht funktioniert hat, liegt daran, dass der verwendete EDT noch die Relation zu der "orginalen" Tabelle hat. Ohne eine richtige EDT Relation geht das ganze einfach nicht. :-(

Kurz noch den Job, den ich zum Testen verwendet habe:

DictTable dictTable;
FieldId fieldId;
;
dictTable = new DictTable(tablenum(<NameDeinerTabelle>));
fieldId = dictTable.primaryKeyField();
info(fieldid2name(tablenum(<NameDeinerTabelle>), fieldId));

18. Oktober 2007 15:29

Vielen Dank akuehn

hat geholfen

Das problem hier ist gelöst.

Danke nochmals

Gruss
SaigonKid