2008-08-12 13 views
2

Ich versuche, einen Crystal Report zu schreiben, dessen Summen auf andere Weise als der Hauptbericht gruppiert sind. Die einzige Möglichkeit, dies bisher zu tun, ist die Verwendung eines Unterberichts für die Summen, aber es bedeutet, dass ich die Datenquelle erneut treffen muss, um die gleichen Daten zu erhalten, was wie Unsinn aussieht. Hier ist ein vereinfachtes Beispiel:Gibt es eine Möglichkeit, ein Crystal Reports-Dataset zu recyceln?

 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 wird der Hauptbericht wird von ‚Datum‘ gruppiert, aber die Summen sind gruppiert zusätzlich durch ‚Quelle‘. Ich habe Beispiele für die Verwendung von laufenden Summen gesucht, aber sie tun nicht wirklich, was ich brauche. Gibt es keine Möglichkeit, die Ergebnismenge zu speichern und sowohl den Hauptbericht als auch den Unterbericht auf dieselben Daten zu verweisen?

Antwort

1

Hmm ... so schön es ist, den gespeicherten Proc aus dem Bericht zu rufen und alles an einem Ort enthalten zu haben, aber wir fanden (wie Sie), dass Sie irgendwann einen Punkt erreichen, an dem Sie keinen Kristall bekommen zu tun, was Sie wollen, auch wenn die Daten genau dort sind.

Wir haben am Ende eine Business-Schicht eingeführt, die unter dem Bericht liegt, 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 in Code in Datasets oder Objekten bearbeiten können, bevor sie den Bericht erreichen, und dann die Daten einfach an den Bericht binden.

This article hat ein nettes Intro wie man Daten in die Berichte pusht. Ich verstehe, dass Ihre Zeit-/Geschäftsbeschränkungen dies möglicherweise nicht erlauben, aber wenn es überhaupt möglich ist, würde ich es sehr empfehlen, da es bedeutet, dass wir alle "Kodierungen" aus unseren Berichten und in verwalteten Code entfernen können, was immer der Fall ist eine gute Sache.

1

Der einzige Weg, wie ich dies ohne einen zweiten Durchlauf durch die Daten tun könnte, würde durch die Erstellung einiger Formeln für die laufenden Summen pro Gruppe sein. Das Problem, von dem ich annehme, dass Sie mit den vorhandenen laufenden Summen zusammenstoßen, ist, dass sie jeder der Gruppen folgen sollen, die sie summieren. Da die Zwischensummen nach all den 'rohen' Daten zu folgen scheinen, funktioniert das nicht.

Wenn Sie für jede Gruppe eigene Formeln erstellen, die einfach aus den Zeilen, die der Gruppe entsprechen, zu der Summe hinzufügen, sollten Sie sie 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 sie nicht in den Zwischensummen angezeigt werden, bis Sie sie hinzugefügt haben oder wenn Sie keine Daten zum "Gehen mit dem Hund" hätten, hätten Sie immer noch eine Zwischensumme dafür.

Verwandte Themen