繫結至快取的內嵌報表類別

物件模型

這個報表繫結案例使用 ReportDocument (請參閱與 ReportDocument 「與 ReportDocument 物件模型繫結的報表」)。

報表位置

報表內嵌於專案中。

說明

當報表內嵌於 Visual Studio 專案時,會自動產生代表專案報表檔案的報表包裝函式類別。該報表的快取管理公用程式類別也會同時自動產生。

包裝函式類別的用法在「繫結至內嵌的報表類別」中有詳細說明。

您會在這個案例中將 CrystalReportViewer 控制項繫結至快取管理公用程式類別,這樣才能夠自動處理 ASP.NET 快取物件中所快取的報表。

Note附註

如需快取報表及快取管理公用程式類別的詳細資訊,請參閱「我應該使用一般或快取報表?」

快取的使用

快取的使用要加以限制與規範,如果沒有謹慎管理,可能會造成過度使用系統資源。若要瞭解使用快取的時機,請參閱「以「高度共用性」快取報表」

快取非內嵌的報表

如果要管理非內嵌報表的快取,您必須自行建立快取管理公用程式類別。如需詳細資訊,請參閱「繫結至已載入快取管理公用程式類別中的非內嵌報表」

優點

  • 專為共用的目的而設計:非常適合用來儲存具有高度共用性且其參數或登入資訊少有變化的報表。
  • 最佳化資料存取:如果具高度共用性的報表非常龐大,或是它有複雜到需要數分鐘來擷取資料的查詢,使用快取管理公用程式類別存取資料會比較快速。

缺點

  • 伺服器負載加重:報表留在 ASP.NET 快取物件中會使伺服器的記憶體資源相當吃重。
  • 保存性問題:快取具有某種相依性,允許其檢查報表執行個體內的變更,然後重新快取報表執行個體。但如果資料庫有所變更,快取中的報表執行個體並不會重新整理顯示該變更。
  • 消耗資源:如果報表含有經常要用不同參數字串進行呼叫的參數 (特別是其中一個參數為使用者 ID 時),就表示每次都得產生新的快取報表。這樣相當消耗系統資源,如果無法充分共用報表,報表執行個體即應轉而指派給工作階段物件。請參閱「ReportDocument 物件模型的工作階段和保存性」

繫結至快取管理公用程式類別

Note附註

這個程序只能與「專案設定」一節中建立的專案搭配使用。「專案設定」包含特定命名空間參考以及本程序所需的程式碼組態;您必須具備這個組態,否則將無法完成此程序。因此,在您開始本程序前,必須先遵循「專案設定」中的步驟進行。

  1. 在您已於「專案設定」時建立的 ConfigureCrystalReports() 方法中,刪除現有的幾行程式碼,以便將報表包裝函式類別取代為快取管理公用程式類別。

  2. 產生 Hierarchical Grouping.rpt 所關聯的快取管理公用程式類別之執行個體。

``` vb
Dim cachedHierarchicalGroupingReport As CachedHierarchical_Grouping
= New CachedHierarchical_Grouping()
```

``` csharp
CachedHierarchical_Grouping cachedHierarchicalGroupingReport = new
CachedHierarchical_Grouping();
```
  1. 將快取管理公用程式執行個體傳遞給 CrystalReportViewer 控制項。
``` vb
myCrystalReportViewer.ReportSource = cachedHierarchicalGroupingReport
```

``` csharp
crystalReportViewer.ReportSource = cachedHierarchicalGroupingReport;
```
  1. 若要檢視報表,請建置並執行專案。

請參閱