2008-08-12 100 views
2

我正在嘗試編寫一個Crystal報表,其總計以主報表的不同方式分組。到目前爲止,我能做到這一點的唯一方法是使用總報告的子報告,但這意味着必須再次擊中數據源才能檢索相同的數據,這看起來像是無稽之談。下面是一個簡化的例子:是否有某種方式可以回收Crystal Reports數據集?

 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 

在這個例子中,主報告由「日期」分組,但總計由「源」附加分組。我查了一些使用運行總數的例子,但他們並沒有真正做我需要的。是不是有一些存儲結果集的方法,並且主報表和子報表引用都是相同的數據?

回答

1

嗯......就像從報告中調用存儲過程並將其全部包含在一個位置一樣好,但是我們發現(像您一樣)您最終達到了無法獲取晶體的點做你想做的甚至是數據就在那裏。

我們最後介紹了一個位於報表下的業務層,而不是從報表中「拉」數據,我們將數據集「推」到其中,並將數據綁定到報表。優點是您可以在數據集或對象中的代碼中處理數據,然後到達報告,然後將數據簡單地綁定到報告。

This article關於如何設置將數據推送到報告有一個很好的介紹。我瞭解您的時間/業務限制可能不會允許您這樣做,但如果完全可能,我會強烈建議您這樣做,因爲這意味着我們可以將所有「編碼」從我們的報告中刪除並轉換爲託管代碼一件好事。

1

我可以想到做到這一點的唯一方法是在沒有第二次運行數據的情況下,通過創建一些公式來執行每組運行總計。我假設你遇到的問題是現有運行總數,他們打算跟隨他們總計的每個組。由於您似乎希望在所有「原始」數據之後遵循小計,因此這種方式無效。

如果您爲每個組創建了自己的公式,只需將這些公式添加到與組匹配的行中,那麼您應該能夠將它們放在報表的末尾。這種方法的不利之處在於,由此產生的小計與團體之間的關係不會動態。換句話說,如果你有一個新的「源」,它將不會顯示在小計中,直到你添加它,或者如果你沒有「走狗」數據,你仍然會有一個小計。

相關問題