Zeilen ausblenden die einen minus DB aufweisen

2. Juli 2009 15:50

Hallo Zusammen

Hab mal wieder eine anpassung zu machen in einem Report.

AusgangslageDer Report stellt zu allen Erl. Verkaufsaufträge folgende Zeilen. Erl. Verkaufsauftrag, Materialkosten IST, Fertingungskosten IST ,Produktionskosten IST und den Verkaufspries. Darunter erstellt er eine Zusammenfassung der Mat. Fert. und Produktionskosten mit der jeweiligen Prozentzahl vom Verkaufbetrag dar. Das ganze wird in einem GroupFooter zusammengefasst ausgegeben.

Nun möchte ich, dass nur diejenigen Zeilen ausgegeben werden die eine minus Prozentzahl aufweisen.

Ich habe mir dazu mal einen bestehenden Report zu gemüte gefhührt und wollte dies so nachbauen. Hier meine Idee!

Auf einem RequestForm eine CheckBox hinzugefügt dieser die Variabel(Boolean) zugeteilt und unter dem DataItem Erledigter Verkaufsauftragskopf unter OnAfterGetRecord() folgenden Code eingefügt.
Code:
IF Variabel(Boolean) AND (DBAuftrag > 1) THEN
CurrReport.SKIP;


Dies gibt ein Ergebnis das nicht gerade befriedigend ist. Er gibt mit von etwa 12 Seiten nur noch zwei Verkaufsauftäge mit den dazugehörigen Produktionszeilen aus. In der ersten ist auch ein minus DB vorhanden, leider auf dem zweiten nicht mehr. Da steht über 50% DB drinn.
Ich verstehe nicht ganz warum er nur noch zwei Zeilen ausgibt und die restlichen minus DB nicht mehr.

Kann mir da vieleicht einer helfen?
Gruss
maesi

Re: Zeilen ausblenden die einen minus DB aufweisen

3. Juli 2009 08:28

Setz diese Prüfung mal direkt unter die Berechnung von DBAuftrag.
Von der Logik her würde ich sagen das der Code stimmt.
Er scheint nur (aus meiner Perspektive) das Feld DBAuftrag noch nicht errechnet zu haben.

Re: Zeilen ausblenden die einen minus DB aufweisen

3. Juli 2009 14:38

Hallo Danjo

Das geht leider nicht, da er wenn ich den Code in eine Section gebe einen Fehler meldet (Die aufgerufene Funktion kann nur von einem DataItem Trigger aufgerufen werden.).

Ich habe aber das ganze bereits in den DataItem Erledigter Verkaufsauftragskopf von dem auch der GruopFooter ist eingetragen.

Gruss
maesi

Re: Zeilen ausblenden die einen minus DB aufweisen

3. Juli 2009 15:01

Heisst das du berechnest den Wert in einer Section?
In diesem Fall solltest du prüfen ob du das (Berechnung DBAuftrag) nicht in den OnAfterGetRecord umziehen kannst.
Sonst wird es etwas umständlicher die Bedingung abzuprüfen.

Re: Zeilen ausblenden die einen minus DB aufweisen

3. Juli 2009 15:43

Hallo Danjo

Wenn du mir sagen kannst wie ich ein GroupFooter Total im OnAfterGetRecord erstellen kann würde ich dies sehr gerne machen. leider keinen dunst wie so etwas geht.

Gruss
Maesi

Re: Zeilen ausblenden die einen minus DB aufweisen

3. Juli 2009 15:48

Addiere das Feld im OnAfterGetREcord in einer Variable hoch.
Das kannst du dann mit CLEAR in dem Groupfooter(besser im Groupheader dann) wieder zurück setzen.

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 08:52

Habe es geschafft das Total in den OnAfterGetRecord zu transferieren, leider geht aber die Anzeitge der minus Beträge immer noch nicht richtig. Er zeigt mir nur drei Stück an. Er hätte aber bestimmt etwa 15 die er Anzeigen sollte.

Keine Idee wiso er mir nur drei und unter denen auch noch einen mit positiven Betrag anzeigt.

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 08:56

Poste hier doch einmal deinen Code.
Vielleicht finden wir dann ja eine Unstimmigkeit.
Hast du in dem DataItem evtl. noch Filter unter denm Properties gesetzt?

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 09:26

Ja ich habe auf dem DataItem Filter gesetzt.
SORTING(Belegart,Nummer) WHERE(Belegart=CONST(Auftrag))
Die Nummer und das Buchungsatum Filter ich wenn ich den Report starte.

Dieser Code stammt aus dem DataItem Erledigter Verkaufskopf
Code:
IF ErlVerkBetragFr >0 THEN BEGIN
  DB4 := (100 / ErlVerkBetragFr) * DBAuftrag;
END;

IF NMDB AND (DB4 > 1 ) THEN
CurrReport.SKIP;


Dieser aus der GroupFooter Seciton Erledigter Verkaufskopf
Code:
DBMat := Produktionsauftragskopf."EP Material Ist";
DBFert := Produktionsauftragskopf."Fertigungskosten IST";
DBHerst := ErlVerkBetragFr - Produktionsauftragskopf."Produktionskosten IST";
DBAuftrag := ErlVerkBetragFr - Produktionsauftragskopf."Selbstkosten IST Auftrag";

IF ErlVerkBetragFr >0 THEN BEGIN
  DB1 := (100 / ErlVerkBetragFr) * DBMat;
  DB2 := (100 / ErlVerkBetragFr) * DBFert;
  DB3 := (100 / ErlVerkBetragFr) * DBHerst;
END;


Habe gerade gesehen, dass ich das Total im OnAterGetRecord doch nicht hinbekommen habe, er versetzt mir alle Ergebnisse um einen Record.
Aber trotzdem sollte er doch die minus Beträge ausweisen.

Gruss
maesi

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 11:00

Ich habe mir nochmals gedanken gemacht wie ich es eventuell mit den Sections erreichen kann.

Bin schon mal etwas weiter gekommen als mit dem DataItem.

Ich kann jetzt alle GroupFooter ausblenden die einen positiven Betrag aufweisen.
Dieser Code steht in dem GroupFooter
Code:
IF NMDB AND (DB4 > 1 ) THEN
CurrReport.SHOWOUTPUT(FALSE);


Jedoch kommen natürlich die beiden Bodys die vor dem GroupFooter stehen auf dem Ausdruck. Habe noch keine lösung gefunden die funktionert, da ich denselben Code in den Bodys nicht verwenden kann.

Gibt es in dieser Section geschichte nicht eine abfolge wenn zum Beispiel im GroupFooter der durchgelaufene Record nicht übereinstimmt mit dem Code, dass er alles zwischen GroupHeder und GroupFooter auslässt.

Gruss
maesi

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 11:11

Du kannst (leider) keine Sections von einer nachfolgenden Sections ausblenden lassen.
Wenn es keine Möglichkeit gibt das dir der Deckungsbeitrag bereits in den Body-Sections bzw. im DataItem korrekt vorliegt, könntest du noch versuchen das DataItem im Anschluss mit einem anderen Namen noch einmal aufzurufen. Mit den selben Links und Filtern.
In dem DataItem werden dann Body und Groupfooter angedruckt.
Den Showoutput von deinem ursprünglichen Groupfooter setzt du auf FALSE.
Im Code deines jetzigen Groupfooters kannst du stattdesen eine Boolean-Variabke füllen.
Code:
IF NMDB AND (DB4 > 1 ) THEN
ShowData := FALSE;

In alle Sections deines neuen DAtaItems fügst du dann das hier ein:
Code:
CurrReport.SHOWOUTPUT(ShowData);

Nicht wirklich optimal, sollte aber alles tun was du willst.

Re: Zeilen ausblenden die einen minus DB aufweisen

6. Juli 2009 11:39

Nun mal ne andere Frage.
Warum kann ich in dem DataItem Erlediger Verkaufskopf die DB4 GlobaleVariable nicht abfragen?

Denn dann müsste doch die erste Variante funktionieren. Ich kann ja auf einem DataItem nicht mit CurrReport.SHOWOUTPUT fungieren da sich dies ausschliesslich in den Sections zulässig ist.

Wenn ich den Ganzen DataItem Erledigter Verkaufsauftrag für einem Record ausblenden will, geht dies doch mit CurrReport.SKIP. Warum also macht er bei mir diese Fehler.

Gruss
maesi