7. September 2009 11:58
Hallo,
ich habe ein Problem bei einem erstellten Report (Bestellung). Dort wird komischer Weise immer eine Zeile doppelt angedruckt, nämlich einmal mit und ohne Zeilenrabatt, falls ein Rabatt vorliegt.
In der Word Datei ist das ganze zu sehen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von misterelektro1981 am 8. September 2009 07:17, insgesamt 1-mal geändert.
7. September 2009 12:11
Mein Tipp:- Code:
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" = 0);
und
- Code:
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" <> 0);
je nach Section! bzw. das in den schon vorhandenen implementieren!
BTW ich weiss nicht was defaultwert bei SHOWOUTPUT ist, koennte FALSE sein?! O.o
BTW2: Screenshots bitte immer als Bild und nicht als Dokument, das ist echt unpraktisch!
7. September 2009 12:16
MatthiasKönig hat geschrieben:BTW ich weiss nicht was defaultwert bei SHOWOUTPUT ist, koennte FALSE sein?! O.o
BTW2: Screenshots bitte immer als Bild und nicht als Dokument, das ist echt unpraktisch!
BTW: -->CurrReport.SHOWOUTPUT<---
Der Defaultwert ist TRUE, ich habe mich eben auch das gleiche gefragt
BTW2: Jepp, das macht keinen Spass.
7. September 2009 12:33
Ja, beim nächsten mal werde ich ein Bild hochladen.
Es klappt soweit für die Text Boxes, jedoch habe ich bei den Labels ein Problem. Liegt beim ersten Artikel ein Zeilenrabatt vor, so wird auch die Section mit dem Label Zeilenrabatt angedruckt. Ist der erste Artikel ohne Zeilenrabatt und der zweite mit Zeilenrabatt, so wird die Section ohne Zeilenrabatt angedruckt.
Wie kann ich festlegen, dass sobald eine Verkaufszeile (Artikel) einen Zeilenrabatt enthält, die Section mit dem Label Zeilenrabatt angedruckt wird?
7. September 2009 13:01
@mikka
danke ;)
- Code:
// Verkaufszeile Zeilenrabatt nicht null ist
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" <> 0);
sollte eigentlich genau dieser Code machen, wenn ich mich nicht irre!
7. September 2009 13:07
Ich habe den Code 1:1 übernommen und es läuft wie beschrieben. hat noch jemand eine Idee?
7. September 2009 13:11
in die Zweite Section muss natuerlich der Code invertiert eingespielt werden:
- Code:
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" = 0);
langsam habe ichd as Gefuehl, dass ich das Problem missverstehe...
7. September 2009 13:12
Ist schon klar. Das hatte ich natürlich gemacht.
7. September 2009 13:19
Ich habe jetzt den Grund gefunden. Es wird immer nur die erste Zeile abgearbeitet.
Wie kann ich dieses Code in eine und Funktion packen?
CurrReport.SHOWOUTPUT(PurchLine.Type > 0);
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" <> 0);
7. September 2009 13:45
Hallo misterelektro1981 ,
vielen Dank für deinen Beitrag, leider mussten wir feststellen, dass du das Thema durch eine Antwort auf deinen eigenen Beitrag wieder nach oben geschoben hast.
Wir bitten dich, zukünftig mindestens 24 Stunden zwischen zwei Antworten zu warten.
Falls du deinem Beitrag weitere Informationen hinzufügen möchtest, nutze hierzu bitte die [Ändern]-Funktion (rechts oben in jedem deiner Beiträge zu finden).
Vielen Dank für dein Verständnis.
Solltest du dich ungerecht behandelt fühlen, so wende dich bitte an einen Administrator.
Gruß, Mikka
MSDynamics.de-Team
7. September 2009 13:46
misterelektro1981 hat geschrieben:Ich habe jetzt den Grund gefunden. Es wird immer nur die erste Zeile abgearbeitet.
Wie kann ich dieses Code in eine und Funktion packen?
CurrReport.SHOWOUTPUT(PurchLine.Type > 0);
CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" <> 0);
Meinst du das hier:
- Code:
CurrReport.SHOWOUTPUT(("Purchase Line"."Line Discount %" <> 0) AND (PurchLine.Type > 0))
Das
CurrReport.SHOWOUTPUT erwartet ein Boolschen Wert, daher kannst du in den Funktionsklammern eine beliebige Berechnung durchführen, entscheidend ist, das Ergbnis ist Ja oder Nein.
7. September 2009 14:07
Danke, aber wieso klappt das in dem Header nicht. Taucht z.B. beim zweiten Artikel ein Rabatt auf, so soll ja die Section mit dem Label Zeilenrabatt angedruckt werden. Es wird aber immer nur die Section angedruckt mit der Info aus dem esrten Artikel, sprich falls der esrte Artikel einen Zeilenrabatt hat, kommt der richtige Header, sonst nicht.
Was kann ich da machen?
7. September 2009 14:39
Wieso Header, es geht doch um die Zeilen oder?
Wenn die erste Zeile fäschlicher Weise erscheint, muss die Bedinung vermutl. falsch sein oder?
-->Ich mache gerade die "Geistige Grätsche" um dieses Thema verfolgen zu können.
Kleiner Tipp:
Schreib die die Varianten auf, die eintreten können (TRUE oder FALSE) und wo welches Ergebniss erwartet wird.
Dann sollte es eigentlich ein "leichtes" sein, die korrekten Bedinungen in die Sections zu bekommen.
7. September 2009 14:55
Ich beschrieb es mal anders.
Um folgendes geht es.
Header1 => mit Zeilenrabatt; Code: CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" <> 0);
Header2 => ohne Zeilenrabatt; Code: CurrReport.SHOWOUTPUT("Purchase Line"."Line Discount %" = 0);
Body5 => mit Zeilenrabatt; Code: CurrReport.SHOWOUTPUT(("Purchase Line"."Line Discount %" <> 0) AND (PurchLine.Type > 0));
Body6 => ohne Zeilenrabatt; Code: CurrReport.SHOWOUTPUT(("Purchase Line"."Line Discount %" = 0) AND (PurchLine.Type > 0));
Beispiel:
Ich habe 5 Artikel, von denen Artikel 3 einen Zeilenrabatt hat. Nun wird Header2 angedruckt, obwohl Header1 gedruckt werden sollte.
Die Info des ersten Artikels bezüglich des Zeilenrabattes bestimmt den Header, es sollte aber so sein, das wenn nur ein Artikel einen Zeilenrabatt hat, Header 1 angedruckt wird.
7. September 2009 15:09
ahhh jetzt versteh ich was du meinst ^^
Wenn du bei NAV von Headern sprichst, wird jeder instinktiv an "Sales Header" oder "Purchase Header" oder sowas in der Art denken!
Aber wenn du "Section Header" sagst, sollte jeder wissen was du meinst!
Du müsstest in dem "OnAfterGetRecord" des "Purchase Headers" eine PurchaseLine Var. anlegen, die passend Filtern und durchgehen um zu schauen ob eine der Zeilen den Rabatt hat und diese dafuer angelegte Var. dann in den Header Sections Prüfen.
7. September 2009 15:34
Danke für die Antwort. Es wäre sehr nett, wenn du mir das etwas genauer erklären könntest, da ich nicht gerade der Profi bin.
7. September 2009 16:28
In dem Report findest du ja mehrere Dataitems, eines davon wird der Purchase Header sein. nun Legst du Global eine Boolsche Variable an die vll. ShowDiscHeader heisst und local in dem Trigger legst eine Variable des Typs Record (Purchase Line) an und schreibst an einer passenden Stelle den richtigen Code :)
sollte ca. (!!!) der sein:
- Code:
CLEAR(ShowDiscHeader);
PuchaseLine.RESET;
PuchaseLine.SetRange("Document No.", "Purchase header"."No.");
REPEAT
ShowDiscHeader := PurchaseLine."Line Discount %" <> 0;
UNTIL (PuchaseLine.NEXT = 0) OR ShowDiscHeader;
in die Section Header schreibst du dann
- Code:
CurrReport.SHOWOUTPUT(ShowDiscHeader);
bzw.
- Code:
CurrReport.SHOWOUTPUT(NOT ShowDiscHeader);
ich hoffe das reicht so :)
8. September 2009 07:17
Danke für die super Beschreibung, es funktioniert und ich habe wieder etwas dazugelernt.
8. September 2009 08:33
misterelektro1981 hat geschrieben:Danke für die super Beschreibung, es funktioniert und ich habe wieder etwas dazugelernt.
Da sehr angagiert Entwickelst, kann ich dir nur "ans Herz Legen", überzeuge deinen Chef einen Entwicklerkurs für dich zu Bezahlen. Der Lohnt sich wirklich, du wirst Qualitativ und Quantitativ dich verbessern. Falls Eure Lizenz nicht alles zulässt, würde sich zumindest ein Kurs im Reportdesign lohnen.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.