2011-11-30 14 views
1

我有一個類似於員工工作日誌的內置報告。爲每個員工創建一個組,其中包含他們完成的所有工作的逐項列表。在每位員工的最後,總工作時間和獲得的金額顯示在組頁腳區域中。在整個報告結束時,顯示所有員工的總時數和收入。JasperReports中的彙總樂隊iReport

我也有一個單獨的報告,這是同一信息的摘要,但沒有詳細信息。這是一份報告,其中列出了每位員工,工作時間和總收入。這與其他報告的組頁腳中顯示的信息基本相同。

兩個報告都使用相同的SQL命令。我想將它們合併成一個報告,首先生成逐項工作日誌,然後再詳細總結。但我看不出有辦法做到這一點。

其實,也許我可以將我的兩個報告都變成子報告並創建一個主報告來保存它們。這是最好的方法嗎?還是有更好的解決方案?

+1

我認爲關於master和subreport的分裂報告是一個好主意。但你應該考慮報告的表現;如果你的數據源很小,那麼這並不重要。另一種方法是用條件隱藏細節帶,但可能對報告的性能不利。 –

回答

1

你當然可以把它們放到同一個報告中。

您需要運行SQL查詢兩次†將您的總結報告作爲子報表放入您的詳細報告的彙總區域是最簡單的解決方案。您將使用相同的SQL連接,那麼子報表將運行自己的查詢(恰好與主報表中的查詢相同)。

替代解決方案包括:

  • 一個主要的報道幾乎空它擁有兩個子報表。這對複雜的報告來說可能是一個很好的解但考慮到您的要求,它會創造更多的工作而沒有任何好處。

  • 在摘要帶中使用表組件(或List組件)而不是子報告。我通常更喜歡這個。如果你還沒有創建這兩個報告,我可能會推薦這個。但是將報告重新編寫爲表格組件將再次成爲額外的工作,而沒有真正的好處。

†這不是一個基本要求。如果您決定SQL查詢的運行時間非常長,而且不能進一步調整,那麼通過結果集一次性完成所有操作肯定是可能的。只需要額外的聰明就可以在單次迭代中捕獲所需的所有信息,然後將其顯示在摘要中。這將是比其他變化更多的工作。

+0

感謝您的所有建議! – Tauren

+1

我喜歡把這個子報告作爲一個臨時解決方案加入彙總帶的想法。但是從更長遠的角度來看,我最好喜歡一種只運行一次SQL的方法,因爲它是長期運行的。我不清楚如何去做。什麼類型的「額外的聰明」將被用來捕獲所有的信息? – Tauren

相關問題