[Gelöst] Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 10:48

Hallo liebe Community,
ich habe vor 2 Wochen nach dem Studium einen Job in der Navision Programmierung angenommen. Ich habe einen neuen Report angelegt und die Sections werden auch alle korrekt als Rechnung angezeigt. Nun möchte ich aber einen ausgelesenen Wert so umwandeln, dass er, wenn er 0 ist eine 1 anzeigt. Lässt sich das bewerkstelligen? Vielen Dank :?:
(Ich arbeite im Classic-Client (CC).
Zuletzt geändert von Semirhage am 3. August 2017 16:12, insgesamt 1-mal geändert.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 10:57

Semirhage hat geschrieben:ich habe vor 2 Wochen nach dem Studium einen Job in der Navision Programmierung angenommen.

Herzlichen Glückwünsch und herzlich Willkommen!

... Report .... Nun möchte ich aber einen ausgelesenen Wert so umwandeln, dass er, wenn er 0 ist eine 1 anzeigt.

Grundsätzlich druckt der Report nur Variablenwerte statt physischer Daten, wobei jedes Feld der durchlaufenden Tabelle eine Variable darstellt. Das heißt: Du kannst im OnAfterGetRecord-Trigger einen (Feld-)Wert manipulieren, OHNE ihn zu speichern, und er wird dann trotzdem geändert angedruckt.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 11:07

Und wie mache ich das? Ich habe in dem Feld im Section Designer unter Source Expression den direkten link auf die Datenbank. Kann ich das in dem OnAfterRecord Teil im Code in eine Variable schreiben und die dann statt dem link auf den Table ausgeben?
Vielen Dank

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 11:14

Ja, oder du änderst den Wert direkt mit ":=". Dann solltest du dir nur sicher sein, das nirgendwo ein MODIFY steht.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 13:17

Hmm, muss zugeben, dass ich das leider nicht verstehe. An der TH sind wir nicht so tief in Navision eingestiegen. Also, die SourceExpr. in der Textbox - Properties liest die Daten aus der betreffenden Tabelle aus. Diesen Wert würde ich gerne ungefiltert ausgeben, wenn er jedoch ='' (leer) ist, dann soll er eine 1 ausgeben^^. Ich nenne die Tabelle jetzt einfach mal A, in der steht dann der Datensatz A.a. In dem OnPostSection müsste ich da jetzt was schreiben? :X

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 15:00

Semirhage hat geschrieben: In dem OnPostSection müsste ich da jetzt was schreiben? :X

Im OnAfterGetRecordTrigger (wie Natalie schon schrieb), nicht OnPostSection.
Code:
IF A.a = '' THEN
  A.a := '1';

Sicherer ist allerdings, den Wert in eine Puffervariable vom gleichen Typ abzulegen und diese dann als SourceExpr anzudrucken.
Code:
MyVar := A.a;
IF MyVar = '' THEN
  Myvar := '1';

Dann braucht man sich über ein mögliches MODIFY keine Sorgen zu machen. Selbst wenn aktuell keins vorhanden ist, kann das später irgendwann jemand darunter aus anderem Anlass dazuschreiben, der diese Codestelle übersieht.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 15:41

Hmmm, ich scheine auf dem Schlauch zu stehen.

Code:
ExchangeRate := "Sales Invoice Header"."Currency Factor"
If ExchangeRate = '' Then Begin
  ExchangeRate := '1';
End;


Bricht jedenfalls mit einem Syntaxfehler ab :(

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 15:44

Das sieht mir sehr nach einem Datentyp-Konflikt aus.

Mach aus der ExchangeRate mal eine Decimal Variable und ändere den Code entsprechend:

Code:
ExchangeRate := "Sales Invoice Header"."Currency Factor";
IF ExchangeRate = 0.0 THEN
  ExchangeRate := 1.0;

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 15:51

Ändert leider gar nichts, bricht mit einem Syntaxfehler ab. Habe auch die verschiedenen "" und '' durchprobiert, wenn ich die Variable als Text definiere ändert das auch nichts.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 15:57

Hast du meinen Code kopiert?
Ich habe in der ersten Zeile auch am Ende noch ein Semicolon hinzugefügt.

Re: Wert aus Tabelle auslesen und wenn 0 soll er 1 sein

3. August 2017 16:12

Stimmt, sorry, das Semiklon habe ich total übersehen... Vielen Dank. Bin halt neu *hust*^^