Frage

Ich versuche, einen Crystal Report zu schreiben, dessen Gesamtsummen anders gruppiert sind als im Hauptbericht.Die einzige Möglichkeit, dies bisher zu erreichen, besteht darin, einen Unterbericht für die Gesamtsummen zu verwenden, aber das bedeutet, dass ich erneut auf die Datenquelle zugreifen muss, um dieselben Daten abzurufen, was unsinnig erscheint.Hier ist ein vereinfachtes Beispiel:

       date   name   earnings   source          location
-----------------------------------------------------------
12-AUG-2008   Tom      $50.00   washing cars    uptown
12-AUG-2008   Dick    $100.00   washing cars    downtown     { main report }
12-AUG-2008   Harry    $75.00   mowing lawns    around town

                    total earnings for washing cars: $150.00 { subreport }
                    total earnings for mowing lawns:  $75.00

       date   name   earnings   source          location
-----------------------------------------------------------
13-AUG-2008   John     $95.00   dog walking     downtown
13-AUG-2008   Jane    $105.00   washing cars    around town  { main report }
13-AUG-2008   Dave     $65.00   mowing lawns    around town

                    total earnings for dog walking:   $95.00
                    total earnings for washing cars: $105.00 { subreport }
                    total earnings for mowing lawns:  $65.00

In diesem Beispiel ist der Hauptbericht nach „Datum“ gruppiert, die Gesamtbeträge werden jedoch zusätzlich nach „Quelle“ gruppiert.Ich habe nach Beispielen für die Verwendung laufender Summen gesucht, aber sie erfüllen nicht wirklich das, was ich brauche.Gibt es nicht eine Möglichkeit, die Ergebnismenge zu speichern und sicherzustellen, dass sowohl der Hauptbericht als auch der Unterbericht auf dieselben Daten verweisen?

War es hilfreich?

Lösung

Hmm...So schön es auch ist, den gespeicherten Prozess aus dem Bericht aufzurufen und alles an einem Ort zu haben, wir haben (wie Sie) jedoch festgestellt, dass Sie irgendwann einen Punkt erreichen, an dem Sie Crystal nicht dazu bringen können, das zu tun, was Sie wollen Die Daten sind genau dort.

Am Ende haben wir eine Business-Schicht eingeführt, die sich unter dem Bericht befindet, und anstatt Daten aus dem Bericht zu „ziehen“, „schieben“ wir die Datensätze dorthin und binden die Daten an den Bericht.Der Vorteil besteht darin, dass Sie die Daten im Code in Datensätzen oder Objekten bearbeiten können, bevor sie den Bericht erreichen, und die Daten dann einfach an den Bericht binden können.

Dieser Artikel hat eine schöne Einführung, wie man das Übertragen von Daten an die Berichte einrichtet.Ich verstehe, dass Ihre Zeit-/Geschäftsbeschränkungen dies möglicherweise nicht zulassen, aber wenn es überhaupt möglich ist, würde ich es wärmstens empfehlen, da es bedeutet, dass wir die gesamte „Codierung“ aus unseren Berichten in verwalteten Code entfernen können, was immer der Fall ist eine gute Sache.

Andere Tipps

Die einzige Möglichkeit, die ich mir vorstellen kann, ohne einen zweiten Durchlauf der Daten durchzuführen, besteht darin, einige Formeln zu erstellen, um laufende Summen pro Gruppe zu ermitteln.Das Problem, auf das Sie bei den vorhandenen laufenden Gesamtsummen stoßen, besteht vermutlich darin, dass sie jeder der Gruppen folgen sollen, die sie summieren.Da Sie anscheinend möchten, dass die Zwischensummen nach allen „Rohdaten“ folgen, wird dies nicht funktionieren.

Wenn Sie für jede Gruppe eigene Formeln erstellen, die einfach die Summe aus den zur Gruppe passenden Zeilen addieren, sollten Sie diese am Ende des Berichts platzieren können.Der Nachteil dieses Ansatzes besteht darin, dass die resultierenden Zwischensummen im Verhältnis zu den Gruppen nicht dynamisch sind.Mit anderen Worten: Wenn Sie eine neue „Quelle“ hätten, würde diese erst dann in den Zwischensummen angezeigt, wenn Sie sie hinzugefügt hätten, oder wenn Sie keine „Hundeauslauf“-Daten hätten, hätten Sie immer noch eine Zwischensumme dafür.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top