[gelöst] Richtige Ausgabe

2. Dezember 2011 10:23

Vor einiger Zeit hatte ich einen Beitrag aufgemacht zu diesem Thema.

Ich habe einen Report erstellt, der abprüfen soll wieviele Artikel mindestens 2 Lieferanten besitzen.

Kurz zum Aufbau.
Item => Sortiert und gruppiert nach Artikelkategoriecode
Item Vendor

In Item Vendor OnPreDateItem:
Code:
AnzahlArtikel +=1;

IF AnzahlLieferanten >= 2 THEN BEGIN
  AnzahlMultiLieferantenArtikel +=1;
  AnzahlLieferanten := 0;
END;

IF AnzahlLieferanten >= 1 THEN BEGIN
  AnzahlArtikelmind1Lieferant +=1;
  AnzahlLieferanten := 0;
END;


OnAfterGetRecord:
Code:
AnzahlLieferanten += 1;



Im Item Group Footer führe ich dann hiermit die Berechung durch:
Code:
TerminBerechnung2 := (AnzahlMultiLieferantenArtikel/AnzahlArtikel*100);
TerminBerechnung3 := ROUND(TerminBerechnung2);
TerminBerechnung := FORMAT(TerminBerechnung3) + ' %';


Nun mein Problem, was mir erst jetzt aufgefallen ist. Die erste Berechnung ist ok, aber schon die zweite ist verfälscht, da die Varibalen (AnzahlArtikel und AnzahlMultiLieferantenArtikel) noch einen Wert vorgespeichert haben.
Wie kann ich diese Werte Gruppenbezogen leeren. Ich hatte es mit Clear im OnAfterGetRecord versucht, dann kommt es jedoch zur Nulldivision.
Zuletzt geändert von misterelektro1981 am 2. Dezember 2011 14:40, insgesamt 1-mal geändert.

Re: Richtige Ausgabe

2. Dezember 2011 10:46

Dir ist schon bewusst, dass unter AnzahlArtikelmind1Lieferant die summiert werden, die nicht mindestens einen, sondern genau einen Lieferanten haben?

Und sonst könntest du versuchen, die Anzahl der Artikel bei einem Gruppenwechsel in einer neuen Variable zwischen zu speichern, bevor du AnzahlArtikel leerst.

Re: Richtige Ausgabe

2. Dezember 2011 10:56

Nein, mir war das nicht bewusst, dass AnzahlArtikelmind1Lieferant die Summe für Artikel mit einem Lieferanten ausgeben. Habe jetzt statt >= 1 ein = 1 gemacht.

Wie stelle ich das denn programmtechnisch an beim Gruppenwechsel die Anzahl der Artikel (denke dann wohl auch die Anzahl der Artikel mit mind. Lieferanten) zu speichern. Anzahl Artikel kann dann nicht geleert werden, da es am Ende des Report noch einmal für eine Gesamte Ausgabe verwendet wird, so soll:
a) Die Anzahl der Artikel mit mind. 2 Lieferanten pro Gruppe (in meinem Fall Artikelkategorie)
b) Die gesamte Anzahl an Artikeln mit mind. 2 Lieferanten

Re: Richtige Ausgabe

2. Dezember 2011 11:12

misterelektro1981 hat geschrieben:Nein, mir war das nicht bewusst, dass AnzahlArtikelmind1Lieferant die Summe für Artikel mit einem Lieferanten ausgeben. Habe jetzt statt >= 1 ein = 1 gemacht.

Da kommt das Gleiche raus :wink: . Nur, wenn du zusätzlich den Artikeln mit mehreren Lieferanten auch die haben willst, die mindestens einen haben, darfst du AnzahlLieferanten nicht in der ersten Abfrage auf Null setzen. Denn sonst bleiben dann eben nur noch die mit <2 übrig.

misterelektro1981 hat geschrieben:Wie stelle ich das denn programmtechnisch an beim Gruppenwechsel die Anzahl der Artikel (denke dann wohl auch die Anzahl der Artikel mit mind. Lieferanten) zu speichern.

Artikelkategoriencode zwischenspeichern und mit dem des Vorgängers vergleichen. Sind sie ungleich, hast du einen Gruppenwechsel und kannst deine Zwischensummen in neuen Variablen speichern.

Re: Richtige Ausgabe

2. Dezember 2011 11:26

Danke für die Anregung, mal wieder ist es für mich schwer umzusetzen.

Erst mal die erste Anpassung, hoffe das ist nun so ok.
Code:
IF AnzahlLieferanten >= 2 THEN BEGIN
  AnzahlMultiLieferantenArtikel +=1;
END;

IF AnzahlLieferanten >= 1 THEN BEGIN
  AnzahlArtikelmind1Lieferant +=1;
  AnzahlLieferanten := 0;
END;


Ich verstehe zwar, was du geschrieben hattest, nur hilft mir das für die Umsetzung leider nicht weiter.

Prinzipiell:
SaveValue("Item Category Code");
if SaveValue <> Current "Item Category Code" then
AnzahlArtikelGruppe;

Aber wie und wo schreibt man das richtig?

Re: Richtige Ausgabe

2. Dezember 2011 12:54

Code:
if LastItemCategoryCode<>"Item Category Code"then begin
  .. Summen der alten Gruppe leeren ..
  LastItemCategoryCode:="Item Category Code";
end;

Re: Richtige Ausgabe

2. Dezember 2011 13:01

Danke, was ist denn dann LastItemCategoryCode => Record und waf welche Tabelle?

Re: Richtige Ausgabe

2. Dezember 2011 13:34

Eine stinknormale Code-Variable :)

Re: Richtige Ausgabe

2. Dezember 2011 14:40

Danke. Es läuft nun alles Prima, den Tip muss ich mir merken :-)