Frage : Sumarize TopN Werte von laufenden Gesamtmengen im Gruppen-Seitenende des Kristalles berichtet über 2008

Sir/gnädige Frau,

I möchten die Spitzendrei Werte zusammenfassen, die im laufendes Gesamtgegenstand gefunden werden, den, ich im Gruppen-Seitenende meines Kristallreports habe und setzen diese Gesamtsumme in das Report-Seitenende.  Ich kann Zwanzig Gruppen haben, aber ich möchte nur die Spitzen3 Werte addieren, die in der laufenden Gesamtmenge gefunden werden, die ich im Report-Seitenende verursachte.  Ich weiß, dass dieses Multidurchgangs- \ Auswertungsausgabe ist - aber sicher kann dieses done.
sein

Antwort : Sumarize TopN Werte von laufenden Gesamtmengen im Gruppen-Seitenende des Kristalles berichtet über 2008

Ich denke noch, dass meine Idee gearbeitet haben sollte, aber solange Sie eine Lösung fanden.

 > Ich sage plumpes, weil, jedes Mal wenn ich ändern möchte
 > TopN Wert, den ich beschäftigt erhalten muss, viel Formel ändernd:

 Ist „Änderung der TopN Wert“, der bezieht, auf wieviele der Spitzenwerte Sie zusammen hinzufügen möchten, oder möglicherweise gerade sind wieviele Gruppen im Report?  Jede Weise, muss es nicht ein Problem sein (bis zu einem Punkt).

 Ihre erste Formel verwendet Redim, um die Größe der Reihe bis 4 einzustellen, und die geändert nie in den Formeln, die Sie bekannt gaben.  Wenn Ihr Report mehr als 4 Gruppen hat, erhalten Sie eine subscript Störung.  Möglicherweise tun Sie etwas, das nie mehr als 4 Gruppen auf einem Report hat, wie die 4 Viertel in einem Jahr.  Andernfalls sollten Sie mehr Gruppen zulassen.

 Zu behandeln der One-way, der, die Zahl im Redim auf die Höchstzahl der Gruppen einfach zu erhöhen sein, denen Sie Sie denken, hat überhaupt auf einem Report.  Eine dynamischere Wahl ist, die Größe der Reihe falls erforderlich zu erhöhen.  Um das zu tun, Ihre zweite Formel einfach ändern wie folgt:

//array auswerten in Gruppen-Seitenende en
WhilePrintingRecords;
numberVar Reihe Funktelegrafie;
wenn GroupNumber > (Funktelegrafie) dann zählen
  Redim Konserve Funktelegrafie [GroupNumber];
Funktelegrafie [GroupNumber]: = tonumber ({#period grob});


 Das benutzt gerade Redim Konserve, um Funktelegrafie erforderlichenfalls zu erweitern.  Die Konservewahl hält den gegenwärtigen Inhalt (alle Werte gespeichert bis zu diesem Punkt).

 Wenn die Zahl Gruppen auf dem Report ein Interesse war, sollte diese um ihm, bis zu einem Punkt kümmern.  Die Beschränkung hier ist, dass eine Reihe 1000 Elemente nur haben kann, also wenn Sie überhaupt einen Report mit mehr als 1000 Gruppen haben, die ein Problem sind.  Aber, da die Begrenzung using Ihre gegenwärtigen Formeln 4 ist, schätze ich, dass eine Begrenzung auf 1000 vermutlich nicht ein Problem ist.  :-)


 Wenn Sie über das Ändern der Formeln, um etwas anders als die Spitzen3 Werte zusammen hinzuzufügen betroffen, ist das etwas, dass Sie beschäftigen müssen, aber Sie es vereinfachen können.  Während es jetzt ist, sortiert die Schlussformel die Werte in der Reihe von am niedrigsten nach am höchsten und addiert zusammen die abschließenden 3 Werte, und es funktioniert nur, wenn es genau 4 Gruppen auf dem Report gibt (der uns zurück zu dieser früheren Frage holt, tut Ihr Report _always_ haben 4 Gruppen auf ihm?).  Sie können vereinfachen dass eine Spitze, indem Sie zusammen die Werte von am höchsten nach am niedrigsten sortieren und die ersten 3 Werte addieren.  So ausmacht sie nicht ht, wieviele Elemente in der Reihe sind (IE. wieviele Gruppen auf dem Report sind).  Die ersten n-Elemente einfach zusammen addieren, um Ihre Gesamtmenge zu erhalten.  Das ist diskutierbar ein wenig einfacheres als, das letzte N. zusammen addierend.

 Um die Reihe von am höchsten zu niedrigstem zu sortieren, diese Linie in der abschließenden Formel einfach ändern

wenn Funktelegrafie [counter2] > Funktelegrafie [counter2 + 1] dann

   zu diesem

wenn Funktelegrafie [counter2] < RT="">
 IOW, ändern > zu <>
 Die letzte Linie zu dann ändern:

hinzufügen: = FUNKTELEGRAFIE [1] +RT [2] +RT [3]


 FWIW, ist es eine sehr kleine Sache, aber die hinzufügenvariable in den Aufschlägen dieser Formel kein echtes Ziel.  Sie konnten gerade vergessen, dass es und die abschließende Linie sein konnten:

Funktelegrafie [2] +RT [3] +RT [4] // Ihre ursprüngliche Formel

Funktelegrafie [1] +RT [2] +RT [3] // meine Version


 Auch als Sie „auf das Ändern vieler Formel“ bezogen, sind Sie möglicherweise verwendenformeln wie die, die Sie bekannt gaben, um die topN Werte für mehr als ein Feld zusammen hinzuzufügen, und Sie sprachen, die Formeln für alle jene Felder ändernd, wenn Sie N ändern wollten?

 Wenn ja konnten Sie das vereinfachen, indem Sie das N in eine Formel einsetzten und diese Formel in den Formeln verwendeten, die zusammen die Werte addieren.  Z.B. eine Formel verursachen, die topN genannt, das gerade sagt

3

 Eine andere Wahl sein, die 3 in eine Variable in der Formel in Ihrer Reportüberschrift einzugeben.  Jede Weise, verwenden Sie dann diese Formel/Variable in Ihrer abschließenden Formel.  Wie Sie verwenden, abhängt sie davon, wie Ihre Reihe sortiert.  Wenn Sie sie in absteigender Folge sortieren, wie ich vorschlug, dann möchten Sie die ersten n-Werte zusammen addieren und Sie konnten die abschließende Linie der abschließenden Formel durch dieses gerade ersetzen:

wenn {@topN} < Array="">  Redim Konserve Funktelegrafie [{@topN}];
Summe (Funktelegrafie)

 Das sagt gerade dass, wenn die Reihe mehr Elemente als Sie wünschen lässt (z.B. lässt sie 4 Elemente und Sie nur das Spitzen3) wünschen, dann benutzt Redim Konserve, um die Reihe kleiner zu bilden und wegwirft die unerwünschten Werte en.  Wenn die Reihe wirklich wenige Elemente als Sie wünschen lässt (z.B., hat sie 3 Elemente und Sie, das Spitzen4), es zu wünschen stören nicht mit dem Redim.  Kein Punkt, wenn mehr Elemente addiert, die gerade 0 sind.
 Dann verwendet er gerade Summe, um zusammen zu addieren, was in der Reihe gelassen.

 Wirklich selbst wenn Sie nicht die topN Formel/die variable Idee verwenden, könnte diese eine gute Weise sein, das Ändern der Zahl Werten zu behandeln, um hinzuzufügen.  Die letzten Linien konnten sein:

wenn 3 < Array="">  Redim Konserve Funktelegrafie [3];
Summe (Funktelegrafie)


 Wenn Sie ändern möchten, wieviele Werte addiert, jene zwei 3 zum neuen Wert einfach ändern.


 O.K., schätze ich, der Sie geben sollte genug, um an zu kauen.  :-)

 James
Weitere Lösungen  
 
programming4us programming4us