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));