[Gelöst] Wert der Variable wird nicht gespeichert

18. Juli 2017 15:50

Hallo,

manchmal gibt es diese Tage, bei denen x einfach nicht x bleibt... Ich habe mein Problem inzwischen anders gelöst, jedoch verstehe ich es in diesem Fall nicht.

Kurzform:
Ich setze eine Variable (Boolean, global) auf TRUE.
Ich gehe anschließend sofort in eine Funktion.
Mit dem Aufruf der Funktion ist die Variable FALSE. Weder so programmiert, noch sonstwas.

Langform:
Im folgenden Code dreht sich alles um "changestatus" (Boolean, global). Erst FALSE, wird es nach der Bestätigung von CONFIRM auf TRUE gesetzt. Laut dem Debugger funktioniert das auch alles prima.
Sobald aber die Funktion "update_zeilen" ausgeführt wird, ist der Wert wieder auf FALSE. Und das verstehe ich nicht. Der Status wird nirgends verändert. Es ist eine globale Variable und muss meiner Ansicht nach
ganz einfach den Status beibehalten.

Ich habe auch nochmal messages() zwischengeschaltet, um den Status an den verschiedenen Punkten abzufragen. Vor update_zeilen steht die Variable auf TRUE, in der ersten Zeile von update_zeilen direkt auf FALSE.

Code:
Status Muster - OnValidate()
changestatus := FALSE;
IF (xRec."Status Muster" <> Rec."Status Muster") AND (statusmanuell) THEN
  IF CONFIRM('Möchten Sie den Status auch bei allen Musterzeilen ändern?',TRUE) THEN
    changestatus := TRUE;

update_zeilen;



Kann mir das jemand erklären?

Liebe Grüße
Hannes
Zuletzt geändert von Hannes Rathje am 24. Juli 2017 16:24, insgesamt 1-mal geändert.

Re: Wert der Variable wird nicht gespeichert

18. Juli 2017 16:59

Hallo Hannes,

prüfe einmal bitte, ob in deiner Funktion update_zeilen nicht rein zufällig eine lokale Variable mit dem Namen changestatus angelegt ist.
Lokale Variablen haben nämlich Vorrang vor globalen Variablen.

Weitere Möglichkeiten:
Es gibt eine Funktion oder ein Feld namens changestatus.
Dann kommt Navision auch gerne durcheinander, ohne dass der Debugger meckert.

Re: Wert der Variable wird nicht gespeichert

24. Juli 2017 11:57

Timo Lässer hat geschrieben:prüfe einmal bitte, ob in deiner Funktion update_zeilen nicht rein zufällig eine lokale Variable mit dem Namen changestatus angelegt ist.

Ich kann Variablen nicht doppelt anlegen, da bekomme ich beim Compilieren direkt die Fehlermeldung, dass diese doppelt vorhanden ist.


Timo Lässer hat geschrieben:Es gibt eine Funktion oder ein Feld namens changestatus.

Leider nein. Weder eine Funktion, noch ein Feld heißt so.

Re: Wert der Variable wird nicht gespeichert

24. Juli 2017 12:40

Hannes Rathje hat geschrieben:Ich kann Variablen nicht doppelt anlegen, da bekomme ich beim Compilieren direkt die Fehlermeldung, dass diese doppelt vorhanden ist.

Das war nicht gemeint, man kann Variablen unter dem gleichen Namen sowohl lokal als auch global anlegen. Die lokale hat dann Vorrang.

Re: Wert der Variable wird nicht gespeichert

24. Juli 2017 16:23

Oh wow :shock: Das darf mir nicht passieren. Das hätte ich selbst merken müssen.
Ich war irgendwie die ganze Zeit der Meinung, dass ich da auch eine Fehlermeldung bekomme.

Ich danke euch! Kaum macht man's richtig, schon geht's.

Ich glaube, ich sollte jetzt lieber in Urlaub gehen :wink: