[gelöst] Berechnung/Zähler

16. Juni 2011 13:35

Hallo,
mal wieder eine Frage zur Thematik Berechnung.

Ich möchte oder bin bereits dabei, einen Bericht zu erstellen, der mir zu jedem Artikel sämtliche mögliche Lieferanten aufführt. Das war kein Thema :-)

Nun möchte ich in einem ersten Schritt zunächst die Anzahl der Lieferanten pro Artikel ausgeben. Hierzu finde ich jedoch keine Bedingung, um den Zähler hochzählen zu lassen. Wie schreibt man das?

In einem zweiten Schritt möchte ich dann am Ende des Bericht eine % Angabe ausgeben, die aussagt wieviel % der Artikel mindestens 2 Lieferanten haben. Wäre mal wieder sehr dankbar über Unterstützung.
Zuletzt geändert von misterelektro1981 am 17. Juni 2011 11:25, insgesamt 3-mal geändert.

Re: Berechnung/Zähler

16. Juni 2011 13:42

Wie hast du denn sämtlich mögliche Lieferanten erfasst?

misterelektro1981 hat geschrieben:In einem zweiten Schritt möchte ich dann am Ende des Bericht eine % Angabe ausgeben, die aussagt wieviel % der Artikel mindestens 2 Lieferanten haben. Wäre mal wieder sehr dankbar über Unterstützung.

Das hat dir Danjo doch heute vormittag erst erklärt?¿

Re: Berechnung/Zähler

16. Juni 2011 13:46

Das sollte doch genau so funktionieren wie beim letzten Bericht.

DataItem Artikel
und daruter DataItem Lieferant.

Das müsstest du schon haben.
Anschliessend noch 2 Variablen:
AnzahlLieferanten und AnzahlMultiLieferantenArtikel (beides Integer)

OnPreDataItem Lieferant dann folgendes:
Code:
IF AnzahlLieferanten >= 2 THEN BEGIN
  AnzahlMultiLieferantenArtikel +=1;
  AnzahlLieferanten := 0;
END;

Hier wird immer die Anzahl der Lieferanten des vorherigen Artikels überprüft.

OnAfter.. Lieferant:
Code:
AnzahlLieferanten += 1;


Beim berechnen der Prozente (in der Footer-Section Artikel) musst du dann noch einmal prüfen ob der letzte Artikel auch >= 2 Lieferanten hatte und ggf. noch einmal die AnzahlderMultiLieferantenArtikel um eins erhöhen.
Sonst wird der letzte Artikel für die Gesamtsumme nicht berücksichtigt.

Re: Berechnung/Zähler

16. Juni 2011 13:57

Wieso nicht pro Artikel in Tabelle Item Vendor filtern und dann count?

Re: Berechnung/Zähler

16. Juni 2011 14:04

JanGD hat geschrieben:Wieso nicht pro Artikel in Tabelle Item Vendor filtern und dann count?

Ich bin davon ausgegangen das er Zeitgleich eine komplette Liste haben möchte:
Ich möchte oder bin bereits dabei, einen Bericht zu erstellen, der mir zu jedem Artikel sämtliche mögliche Lieferanten aufführt.

Ansonsten ist ein Count einfacher, schneller und fehlerfreier. :)

Re: Berechnung/Zähler

16. Juni 2011 14:20

Danke für die Antwort, ich hatte ein Brett vor dem Kopf, hat sich aber wieder gelöst. Ich hatte vergessen, die Anzahl aller Artikel für eine spätere Berechnung in Item vorher zu zählen.

Re: Berechnung/Zähler

16. Juni 2011 14:25

misterelektro1981 hat geschrieben:Danke für die Antwort, ich hatte ein Brett vor dem Kopf, hat sich aber wieder gelöst. Ich hatte vergessen, die Anzahl aller Artikel für eine spätere Berechnung in Item vorher zu zählen.

Heisst das soviel wie: [gelöst] ? :wink:

Re: Berechnung/Zähler

16. Juni 2011 15:26

misterelektro1981 hat geschrieben:Danke für die Antwort, ich hatte ein Brett vor dem Kopf, [...]
"Den Abstand zwischen Brett und Kopf nennt man geistigen Horizont." ;-) :-P :-D

Re: Berechnung/Zähler

16. Juni 2011 16:42

Danjo hat geschrieben:Das sollte doch genau so funktionieren wie beim letzten Bericht.

DataItem Artikel
und daruter DataItem Lieferant.

Das müsstest du schon haben.
Anschliessend noch 2 Variablen:
AnzahlLieferanten und AnzahlMultiLieferantenArtikel (beides Integer)

OnPreDataItem Lieferant dann folgendes:
Code:
IF AnzahlLieferanten >= 2 THEN BEGIN
  AnzahlMultiLieferantenArtikel +=1;
  AnzahlLieferanten := 0;
END;

Hier wird immer die Anzahl der Lieferanten des vorherigen Artikels überprüft.

OnAfter.. Lieferant:
Code:
AnzahlLieferanten += 1;


Beim berechnen der Prozente (in der Footer-Section Artikel) musst du dann noch einmal prüfen ob der letzte Artikel auch >= 2 Lieferanten hatte und ggf. noch einmal die AnzahlderMultiLieferantenArtikel um eins erhöhen.
Sonst wird der letzte Artikel für die Gesamtsumme nicht berücksichtigt.



Jetzt muss ich doch noch etwas schreiben...
Habe den Bericht nun ausgiebig getestet. Seltsamerweise stimmen die Anzahl der Lieferanten pro Artikel nicht, woran liegt das? Die Aufsummierung am Ende der Footer Section Item stimmt dann aber, ohne zu überprüfen, ob der letzte Artikel auch >= 2 Lieferanten hatte und ggf. noch einmal die AnzahlderMultiLieferantenArtikel um eins erhöhen.

Dann habe ich noch eine Frage zur Berechnung am Ende des Item Section Footer.

Meine erste Annahme war, dass ich die Anzahl der Artikel mit mind. 2 Lieferanten durch die Anzahl aller Artikel teilen muss. Die Anzahl aller Artikel hatte ich mir dazu vorher im OnAfter.. des DataItem Item geholt mit
Code:
AnzahlArtikelGesamt += 1;

Zürückgesetzt habe ich die Variable dann im OnInit des Berichts.

Nun soll ich jedoch die Anzahl der Artikel mit mind. 2 Lieferanten durch die Anzahl der Artikel mit mind. 1 Lieferanten teilen. Hier weiß ich wieder nicht, wie ich diese Info bekomme, bitte nicht lachen, ich verzweifel mal wieder grad...

Re: Berechnung/Zähler

17. Juni 2011 08:56

Hierzu gibt es zwei Möglichkeiten.
Entweder zhälst du an der selben Stelle, an der die Anzahl der Artikel mit >= 2 Lieferanten hochgezählt werden auch noch eine weitere Variable mit Anzahl Lieferungen >= 1 hoch.

Oder du befüllst die Variable im Lieferanten.
Dazu müsstest du abprüfen ob der aktuelle Artikel noch der selbe ist wie bei letzen Lieferanten, wenn nicht, zählst du eins hoch.
Hierfür benötigst du dann allerdings zwei neue Variablen.

Was heisst die Anzahl der Lieferanten pro Artikel stimmt nicht?
Sind die Lieferantenanzhalen verschoben? Komplett falsch?
Wo genau stimmen die Anzahlen den nicht?

Re: Berechnung/Zähler

17. Juni 2011 10:27

Falls Du es auf der gleichen Zeile wie das Item haben willst, dann packst Du das Count auf den OnAfterGetRecord das Item DataItems. Wenn Du es unterhalb auf dem Artikellieferanten haben willst, reicht das Count auf dem OnPreDataItem trigger (ohne filter).
Bitte nie eine Counter-Schleife bauen, das ist fehleranfällig und schlecht.

Re: Berechnung/Zähler

17. Juni 2011 11:25

Hallo,

jetzt habe ich das komplett hinbekommen und bin sehr dankbar für die Uunterstützung.