2010-07-14 59 views
1

我正在WPF中開發一個應用程序,在該應用程序中我需要生成並顯示報告。我正在使用RDLC來生成和顯示報告。報告要求爲保存並重新加載已保存的rdlc報告

  1. 應該生成並顯示報告。
  2. 用戶應該可以保存報告(他們還沒有指定保存報告的格式)。
  3. 用戶應該能夠加載和查看保存的報告。

我現在正在做的是,我正在生成RDLC文件的臨時pdf文件來顯示報告。如果用戶希望保存報告,報告將被保存爲PDF,否則臨時PDF文件將被刪除。當用戶想要加載保存的報告時,他可以像PDF格式一樣。

在程序中,我使用WPF中的「winformhost」控件來顯示報告。 ReportViewer控件也被使用。

但是我現在面臨的問題是,由於我們使用「winformhost」控件和PDF格式,所以顯示報告相當慢。

我的問題是,如果我使用這種生成並顯示PDF報告的邏輯,我該如何提高性能?如果不可能,我是否可以通過其他方式保存報告並在需要時重新加載報告,這會增加報告顯示的過程?

由於提前, 阿尼什

+0

我不認爲在應用程序中重新打開保存的報告是一個好主意;最好讓用戶每次重新生成報告以獲得最新數據。用戶始終可以將報告保存爲SSRS支持的任何格式(pdf,excel,tiff等),然後打開該文件再次查看。 – akjoshi 2010-07-14 09:51:56

回答

0

在我看來,您可以通過分離關注提高你的表現。我的意思是,最好從自定義類中爲報表生成數據集,而不是直接從數據庫生成數據集。

例如,如果我想要我的報告顯示:訂單年份 - 訂單總數 - 客戶。我將創建一個類像

class CustomerStatistics 
{ 
    public int OrderYear {get;set;} 
    public int OrderQty {get;set;} 
    public string CustomerName {get;set;} 

} 

一旦你這樣做,你將能夠採取多線程的優勢。例如,我知道OrderQty的計算需要一段時間,所以我把它放在一個單獨的線程中。

此外,您可以通過創建存儲過程來提高性能,這些存儲過程適用於需要通過大型數據集的一些繁重計算。如果是這樣的話,你應該使用像INTERSECT,EXCEPT等設置操作。優化查詢。

這是我的一些想法。

乾杯。