RecRef/FieldRef und Optionsfeld

20. November 2017 12:30

Guten Morgen,

ich möchte den Inhalt eines Optionsfeldes in Tabelle 4711 abfragen und wenn hier die Option a gewählt ist, soll in Tabelle 0815 das Feld xy mit dem Wert "ABC" gefüllt werden.

Code:
FromFRef := gFromRecRef.FIELD(Record.Quellfeld);
IF FORMAT(FromFRef.VALUE) = 'Option a' THEN BEGIN
  ToFRef := gToRecRef.FIELD(record.Zielfeld);
  ToFRef.VALUE := 'ABC'
END;


Das funktioniert aber nicht... das Zielfeld wird nicht gefüllt...

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 13:30

Um den Wert nach der Zuweisung auch zu speichern, muss man den MODIFY absetzen, nähmlich in der Ziel-RecRef:
Code:
gToRecRef.MODIFY;

Und wenn das abzufragende Feld ein Optionsfeld ist, dann steht im FORMAT(FromFRef.VALUE) leider nicht der OptionsString sondern nur die numerische OptionID, also muss man schauen welche OptionIID hat die 'Option a' in diesem Feld und auf die ID abfragen.

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 15:17

Verstehe ich nicht ganz.

Code:
FromFRef := gFromRecRef.FIELD(Record.Quellfeld);
IF FORMAT(FromFRef.VALUE) = 'Option a' THEN BEGIN   // hier muss ich dann die OptionsID statt den 'Text' eingeben?
  ToFRef := gToRecRef.FIELD(record.Zielfeld);
  ToFRef.VALUE := 'ABC'
END;

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 15:30

Wenn man z.B. das Optionsfeld "Blocked" in der Customer-Tabelle abfragt, dann:
Code:
IF FORMAT(FromFRef.VALUE) = FORMAT(1) THEN BEGIN  // Abfrage, ob das Feld "Blocked" im Customer-Datensatz aktuell die Option "Liefern" hat

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 16:01

Jupiter hat geschrieben:Und wenn das abzufragende Feld ein Optionsfeld ist, dann steht im FORMAT(FromFRef.VALUE) leider nicht der OptionsString sondern nur die numerische OptionID, also muss man schauen welche OptionIID hat die 'Option a' in diesem Feld und auf die ID abfragen.


Also bei NAV 2013 R2 wird die Caption der Option ausgegeben. Beim Booleanfeld auch. Also "Ja" oder "Nein".
Wobei ich es blöd finde, dass nicht der String bzw. der englische Wortlaut ausgegeben wird. So muss man sich mit sinnlosen Hilfsfunktionen helfen, wenn man mehrsprachig programmieren möchte.
Man muss glaube nur bei der Zuweisung einer Option-Feldreferenz die Optionsnr. nehmen.

Code:
IF FORMAT(FromFRef.VALUE) = 'a' THEN
sollte also funktioniern. Das "option" in "option a" muss also noch weg und am Ende halt das MODIFY, um den Datensatz zu schreiben, wie schon von Jupiter gesagt.

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 16:05

ok... verstanden.
Und was schreibe ich nun in das Zielfeld? (auch ein Optionsfeld)

Code:
ToFRef.VALUE := 'ABC';      //wäre ja dann auch nicht korrekt, oder?

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 16:31

Beim Schreiben ins Zielfeld besser auch die OptionID anstatt Text übergeben

Re: RecRef/FieldRef und Optionsfeld

20. November 2017 16:35

Korrektur. Das Zielfeld hat eine TableRelation. Kein Optionsfeld.