[Gelöst]Rechnungsrabatt andrucken

14. Juli 2009 09:44

Folgendes möchte ich auf einem Report tun.
Besteht ein Rechnungsrabatt, so soll das entsprechende Label und die Textbox angedruckt werden. Besteht kein Rechnungsrabatt, so soll die Textbox und das Label nicht angedruckt werden.

Ich bin wie folgt vorgegangen.

Zuerst habe ich mir 2 Header mit den Labels (einmal mit und einmal ohne Rechnugsrabatt) und 2 Bodys angelegt. Dann habe ich in den Section in denen der Rechnugsrabatt nicht angedruckt werden soll folgendes in OnPreSection geschrieben:

if "Line Discount %" = '' then
CurrReport.SHOWOUTPUT(false);

Damit dachte ich die Funktion zu erfüllen.

Es kam aber die Fehlermeldung: Eine Typkonvertierung kann nicht durchgeführt werden, da eine der Seiten einen ungültigen Typ hat. Decimal = text

Wo liegt mein Fehler?
Zuletzt geändert von misterelektro1981 am 14. Juli 2009 11:11, insgesamt 3-mal geändert.

Re: Rechnungsrabatt andrucken

14. Juli 2009 09:52

Line Discount % ist ein Decimal-Feld, daher war dein Code syntaktisch falsch.
So lässt es sich kompilieren:

Code:
IF "Line Discount %" = 0 then
  CurrReport.SHOWOUTPUT(FALSE);


Line Discount hat übrigens nichts mit dem Rechnungsrabatt zu tun. Dieser lautet "Invoice Discount Amount" (dann abgekürzt).

Re: Rechnungsrabatt andrucken

14. Juli 2009 09:56

Hallo misterelektro1981,

das Problem liegt an den '' (zwei Hochkomma), diese geben ein leeren String an.
in deinem Fall müsstest du folgendes verwenden:
Code:
if "Line Discount %" = 0 then
CurrReport.SHOWOUTPUT(false);


BTW:
Beachte, das du diesen Wert erst abfragen kannst, wenn der Record eingelesen wurde.
-->Vermutlich werden die Labels vor der Verarbeitung angedruckt, daher könnte es sein das die Abfrage auf den LineDiscount zu spät erfolgt.


***EDIT BY MIKKA***
Natalie war schneller :wink:

Re: Rechnungsrabatt andrucken

14. Juli 2009 10:16

Danke, alles wunderbar!"

Re: Rechnungsrabatt andrucken

14. Juli 2009 10:36

Mir kommt gerade das Beispiel der UmsatzsteuerNr. in den Kopf.
Was schreibt man denn bei einem Integer Wert?

Re: Rechnungsrabatt andrucken

14. Juli 2009 10:43

Habe es gerade rausgefunden ist halt wie bei einem Text.

Das steht in OnPreSection:

//+++++++++++ MR 14.07.09
IF "Sales Invoice Header"."VAT Registration No." = '' then
CurrReport.SHOWOUTPUT(false);
//------------

//+++++++++ MR 13.07.09 (Nur auf der ersten Seite)
CurrReport.SHOWOUTPUT(CurrReport.PAGENO=1);
//--------

Nehme ich die Anpassung vom 13.07. zurück dann funktioniert es, sonst wird die Seite immer angedruckt. Kann man beides KOmbinieren, dass unter der Bedingung vom 14.07. immer nur die erste Seite angedruckt wird?

Re: Rechnungsrabatt andrucken

14. Juli 2009 10:54

misterelektro1981 hat geschrieben:Mir kommt gerade das Beispiel der UmsatzsteuerNr. in den Kopf.
Was schreibt man denn bei einem Integer Wert?


Vorsicht mit Vermutungen dieser Art. Schaue bitte immer direkt in den Tabellen nach, welcher Datentyp sicher hinter einem Feld versteckt (alternativ verrät dir das auch der C/AL-Editor, wenn du mit der Maus über ein im C/AL ausgeschriebenen Feld der Form Recordname.Feldnahme gehst).

Weil "VAT Registration No." wie die meisten Nos. in NAV CODE ist, nicht INTEGER, wird über einen Leerstring auf leer referenziert.

Re: Rechnungsrabatt andrucken

14. Juli 2009 10:59

misterelektro1981 hat geschrieben://+++++++++++ MR 14.07.09
IF "Sales Invoice Header"."VAT Registration No." = '' then
CurrReport.SHOWOUTPUT(false);
//------------

//+++++++++ MR 13.07.09 (Nur auf der ersten Seite)
CurrReport.SHOWOUTPUT(CurrReport.PAGENO=1);
//--------

Nehme ich die Anpassung vom 13.07. zurück dann funktioniert es, sonst wird die Seite immer angedruckt. Kann man beides KOmbinieren, dass unter der Bedingung vom 14.07. immer nur die erste Seite angedruckt wird?


Ja, das kann man:
Code:
CurrReport.SHOWOUTPUT((CurrReport.PAGENO=1) AND ("Sales Invoice Header"."VAT Registration No." <> ''));

Re: Rechnungsrabatt andrucken

14. Juli 2009 11:04

Danke, das habe ich verstanden, ich hatte Integer geschrieben, da es in der Fehlermeldung stand.

Wie bekomme ich es denn jetzt hin, das mir mein entsprechender Header immer nur auf der ersten Seite angezeigt wird.

Hier mal mein Quellcode.

Header1:

//+++++++++++ MR 14.07.09
IF "Sales Invoice Header"."VAT Registration No." = '' then
CurrReport.SHOWOUTPUT(false);
//------------

//+++++++++ MR 13.07.09 (Nur auf der ersten Seite)
//CurrReport.SHOWOUTPUT(CurrReport.PAGENO=1);
//--------

Header2:

//+++++++++++ MR 14.07.09
IF "Sales Invoice Header"."VAT Registration No." = '' then
CurrReport.SHOWOUTPUT;
IF "Sales Invoice Header"."VAT Registration No." <> '' then
CurrReport.SHOWOUTPUT(false);
//------------

//+++++++++ MR 13.07.09 (Nur auf der ersten Seite)
//CurrReport.SHOWOUTPUT(CurrReport.PAGENO=1);
//--------

Wenn ich den Code so lasse, werden immer die richtigen Header angezeigt. Das Problem ist, dass der Header auf jeder Seite (bei z.B. einer Rechnung über 2 Seiten) steht.
Mache ich die Ämderung vom 13.07. wieder aktiv, so werden immer beide Header angedruckt.

Wie bekommt man das in den Griff?

Re: Rechnungsrabatt andrucken

14. Juli 2009 11:11

Danke!!!