Client Absturz bei TableRelation und Enabled mit Bedingung

31. März 2021 15:34

Hallo,
ich habe gerade lange nach einer Absturzursache gesucht, und frage mich, ob das ein bekannter Bug ist:

Tabelle "A" enthält ein Feld "Ref B"(Code 20), das auf Tabelle B verweist. Die TableRelation ist gesetzt auf "Tabelle B"."PK Feld"

Die Page "Karte A" verwendet Tabelle "A" als SourceTable.
Ein Action auf "Karte A" öffnet "Karte B" und verwendet das Feld "Ref B":
RunObject = "Page Karte B"; RunPageLink="PK Feld"=FIELD(Ref B)"

Das funktioniert soweit.
Jetzt wollte ich aber die Action deaktivieren, wenn "Ref B" leer ist. Also schreibe ich in die "Enabled"-Eigenschaft der Action "Ref B"<>''.
Habe ich schon x-fach gemacht und klappt.
Aber hier stürzt der NAV-Client ab (wird ohne Fehlermeldung beendet), sowie ich "Page A" öffne.

Alles geht wieder, wenn ich entweder
- die Bedingung aus dem Enabled der Action enferne, oder
- die TableRelation für "Ref B" entferne.

Meine Frage(n): ist das ein bekannter Bug? Wurde er in einer neueren Version von NAV (oder Dynamics) behoben? Gibt es einen bekannten Workaraund (außer eine der beiden Eigenschaften zu entfernen :wink: )?

Re: Client Absturz bei TableRelation und Enabled mit Bedingu

1. April 2021 10:30

HI,

nimm doch mal für die Enabled-Eigenschaft eine Boolean Variable. Z.B. RefB_Enabled und im OnAfterGetCurrRecord schreibst du
Code:
RefB_Enabled := ("Ref B" <> '');


Ggf. noch vorher ein Calcfield auf das Ref B Feld. Vielleicht ist es deswegen nicht direkt in der Eigenschaft nutzbar.

Re: Client Absturz bei TableRelation und Enabled mit Bedingu

6. April 2021 10:49

Hallo vandyke,
gute Idee, danke, aber...
Da ist (!mal wieder!) mein Problem mit der Lizenz: mein Chef hat mir "nur" eine Designer-Lizenz genehmigt. Damit kann ich zwar Felder und Eigenschaften hinzufügen/ändern, aber ich kann in Tabellen und Pages keine Variablen oder Code erzeugen.

Re: Client Absturz bei TableRelation und Enabled mit Bedingu

6. April 2021 16:11

Ich kann aus meiner Erfahrung berichten dass es mit Variable wie von vandyke beschrieben funktioniert, haben wir in einer speziellen Lösung recht oft genutzt, aber nie direkt was im Enabled Property programmiert. Das hilft dir jetzt aber nicht weiter...