Seite 1 von 1

Fehler in RecordRef bzw. KeyRef

Verfasst: 5. Januar 2006 12:40
von maxwell
Hallo zusammen,

Ich habe mich jetzt mal ein wenig ausführlicher mit den eigentlich genialen RecordRef bzw. KeyRefs beschäftigt. Dummerweise sind diese nur zu verwenden, wenn man keinen Wert auf einen passenden Key legt (also überhaupt nicht zu gebrauchen), da KEYCOUNT und KEYINDEX ja wohl irgendwie fehlerhaft laufen. KEYINDEX scheint es im Gegensatz zu KEYCOUNT überhaupt nicht zu interessieren, ob ein Key enabled ist oder nicht. Das macht es natürlich sehr schwer einen passenden Key auszuwählen. Leider berücksichtigt das RecordRef-Sample aus dem Download-Bereich diesen Fehler auch nicht, so dass man die GetBestKey-Funktion daraus leider nicht verwenden kann. Mir ist noch kein Workaround für diesen Fehler eingefallen. Vielleicht hat ja einer von Euch eine Idee.

Ach ja, ein gutes Neues Jahr wünsche ich noch

Viele Grüße

Maxwell

Re: Fehler in RecordRef bzw. KeyRef

Verfasst: 5. Januar 2006 13:57
von Timo Lässer
maxwell hat geschrieben:[...]
Leider berücksichtigt das RecordRef-Sample aus dem Download-Bereich diesen Fehler auch nicht, so dass man die GetBestKey-Funktion daraus leider nicht verwenden kann.
[...]

Vielen Dank für den Hinweis.
Ich werde mir das mal genauer anschauen und nach einer geeigneten Lösung forschen.

Eine spontane Idee (habe mal kurz in das C/AL-Symbol-Menü geschaut) währe vorher zu prüfen, ob der Key enabled ist:
IF MyKeyRef.ACTIVE THEN ...

Verfasst: 5. Januar 2006 23:18
von Timo Lässer
Ich habe nun die Codeunit RecRefManagement dahingehend angepasst, dass sie bei der Auswahl des besten Schlüssels die inaktiven Schlüssel ignoriert.

Ich habe es aber bei mir ausprobiert: Ich kann per RecRef.KEYINDEX sogar bei deaktivierten Schlüsseln auf die einzelnen Felder zugreifen. Somit sehe ich kein Problem mit KeyRef, da der Programmierer selbst dafür verantwortlich ist zu prüfen, ob der gewählte Schlüssel aktiv ist oder nicht.
Bei der Funktion Record.SETCURRENTKEY wird in der Online-Hilfe sogar darauf hingewiesen, dass es zu einem Fehler kommt, wenn ein deaktivierter Schlüssel ausgewählt wird:
[...]
If you omit this optional return value, a run-time error occurs if the system cannot find the key.
[...]