水晶報表效能優化之道

2021-03-31 08:56:31 字數 4652 閱讀 1309

目錄

一、在資料庫伺服器端執行紀錄選定,只傳輸篩選後的資料。

1、優勢

2、下推記錄選定 - 示例

二、按需顯示資料,僅在需要的時候獲取並顯示需要的資料。

1、優勢

2、隱藏(深化完成)資料,按需顯示……

3、利用按需分配子報表……

三、在資料庫伺服器端處理分組和排序

1、優勢

2、在伺服器上執行多數處理並只將有關詳細資訊推入您的計算機。

四、使用已儲存在報表裡的資料。

1、優勢

2、已儲存資料

3、將資料與報表一起儲存命令

----------------------------------

一、在資料庫伺服器端執行紀錄選定,只傳輸篩選後的資料。

1、優勢

(1)與資料庫伺服器的連線時間更短。

(2)從資料庫伺服器到客戶端傳輸的資料量更少。

(3)從資料庫伺服器到客戶端的傳輸時間更短。

(4)處理計算機上的報表所需的記憶體更少。

2、下推記錄選定 - 示例

本示例展示編寫可以下推到資料庫伺服器的記錄選定公式的好處。

在 xtreme 示例資料庫的訂單表中,有 2192 條記錄,其中訂單日期在 2001 年以前的有 181 條。假設您只想對這些記錄製表。一方面,可以使用下面的記錄選定公式:

year () < 2001

生成的 sql 查詢會將 2192 條記錄全部傳送至 crystal reports,然後記錄選定公式將其減少到 181。要了解這一點,單擊「資料庫」選單上的「顯示 sql 查詢」,您會注意到 sql 查詢沒有 where 子句。這是因為 crystal reports 無法下推 where 子句中的 year ( ) 函式。

另一方面,下面的記錄選定公式生成相同的報表:

< #jan 1, 1997#

上面的第二條公式可在資料庫伺服器上執行,因此可以下推。所生成的 sql 查詢僅將 181 條記錄傳送到 crystal reports。因此,在由 crystal reports 對記錄選定公式求值時,無須進一步消除記錄。單擊「資料庫」選單上的「顯示 sql 查詢」,您會注意到所生成的 sql 查詢中有 where 子句。

如本示例所示,在改進記錄選定公式後,報表的處理速度提高了。在本例中,兩個公式生成相同的報表,但第二個公式利用了資料庫伺服器在處理其資料時可以使用的功能和優化。

注意:    如果您不熟悉記錄選定公式,可以先從「選擇專家」或記錄選定公式示例模板開始學起。有關更多細節以及對記錄選定的介紹,請參閱選擇記錄。

----------------------------------

二、按需顯示資料,僅在需要的時候獲取並顯示需要的資料。

1、優勢

(1)只傳輸當前需要的資料。

(2)與資料庫伺服器的連線時間更短。

(3)從資料庫伺服器到客戶端傳輸的資料量更少。

(4)從資料庫伺服器到客戶端的傳輸時間更短。

(5)處理計算機上的報表所需的記憶體更少。

2、隱藏(深化完成)資料,按需顯示……

隱藏(深化完成)結合在伺服器上分組 - 示例

以下示例描述了乙個典型的製表方案,對於該方案,在伺服器上分組可顯著減少資料庫伺服器的不必要的資料傳輸。

開啟示例報表 group.rpt(位於 feature examples 資料夾)。

檢視 crystal reports 視窗的右下角,可以注意到有 269 條記錄返回給此報表。

注意:    只有在「檢視」選單中選中「狀態列」選項才會看到此數字。

在「報表」選單中,單擊「節專家」開啟「節專家」。

在「節」列表中,選擇「詳細資料」。

在「公用」選項卡中,選擇「隱藏(深化完成)」。這會隱藏報表的「詳細資料」節,從而在報表中僅顯示組頁首。(在這種情況下,報表按「國家/地區」分組。)

單擊「節專家」中的「確定」。「詳細資料」記錄會從報表中消失。

按 f5 鍵重新整理報表資料(或單擊工具欄中的「重新整理」按鈕)。

可以看到,即使從檢視中隱藏「詳細資料」記錄,仍為報表返回了 269 條記錄。

在「資料庫」選單中,單擊「在伺服器上執行分組」。

現在可以看到僅有 71 條記錄返回給報表。(按「國家/地區」)分組已在伺服器上執行完畢,這樣,傳輸給報表的記錄就更少。

crystal reports 將根據您的需要檢索相應的「詳細資料」記錄。

例如,如果對澳大利亞進行深化,crystal reports 會迅速檢索構成該組的七條記錄。

通過隱藏此報表的「詳細資料」記錄,您已為使用者建立了易於瀏覽的彙總報表。每個使用者可先定位他或她關注的國家/地區,然後進行深化以檢索有價值的詳細資料。

此外,通過啟用「在伺服器上執行分組」選項,您已確保初始處理在資料庫伺服器上完成。此後,僅為報表傳輸必要的記錄。

有關伺服器端處理的更多資訊,請參閱伺服器端處理。

3、利用按需分配子報表……

如果報表有處理大量記錄的節,則可以將該節放入按需分配子報表中。按需分配子報表在主報表中以超級鏈結的形式出現。在開啟主報表時,不會檢索按需分配子報表的任何資料,直到深化相應的超級鏈結為止。

例如,在設計報表顯示每個雇員對於每種產品和每種產品型別的季度銷售額時,可能還希望通過包含每週銷售資訊來跟蹤每個雇員的進展情況。但是,檢視該報表的很多使用者可能不會對此類額外的資料感興趣。在此類情況下,可將報表的每週銷售部分提取出來,將其作為按需分配子報表附加到報表中。僅當使用者在該按需分配子報表上深化時,才會從資料庫檢索有關每週銷售情況的詳細資訊。

很多報表物件(如大型交叉表、olap 網格、高階圖表和地圖)都是可以包含到按需分配子報表中的理想候選物件,以使物件在深化之前不會被處理。

若要插入乙個按需分配子報表,請參閱插入子報表和建立按需要顯示子報表。

2、在伺服器上執行多數處理並只將有關詳細資訊推入您的計算機。

伺服器端處理使您得以建立報表,以在伺服器上執行多數處理並只將有關詳細資訊推入您的計算機。

伺服器端處理是這樣運作的:通過使用 sql 傳遞技術將 sql 語句傳送到資料庫伺服器並檢索初始資料集,crystal reports 將很多資料檢索和排序工作解除安裝到伺服器系統上,從而釋放了本地記憶體和資源以用於更重要的任務。這就是為什麼伺服器端處理只處理已排序和分組的報表,如果報表沒有排序和分組(例如,如果是乙個簡單的列表報表),則無法推入伺服器進行處理。還應注意伺服器端處理只處理基於 sql 資料來源的報表。

注意:該說明僅適用於將分組和排序解除安裝到伺服器的情況。

將分組推入到伺服器進行處理時,所需的臨時資料庫可能會使用大量伺服器資源。

請記住:若要在伺服器上執行分組,報表必須符合下列條件:

啟用了「在伺服器上執行分組」選項(位於「選項」對話方塊中)。有關更多資訊,請參閱啟用伺服器端處理。

報表使用某種分組形式。

報表至少是部分隱藏的(至少「詳細資料」節一定是隱藏的)。由於伺服器將處理那些隱藏的節,所以報表的可視部分越大,必須在客戶端進行的處理量就越大。如果顯示「詳細資料」節,將無法進行伺服器端處理。

有些情況下,必須在客戶端處理公式字段。如果分組基於公式字段,或者如果公式用於彙總欄位中,則必須將所有記錄都傳輸到客戶端後才能對公式求值。這將增加執行報表所需的時間量。因此,可能需要使用 sql 表示式作為公式的替代物。

注意:記錄選定公式是個例外,它可以被推入伺服器。

為了在伺服器上處理報表,出現在報表中的任何執行總計必須基於彙總字段(因為執行總計所需的資料將被拉到客戶端)。

為了在伺服器上處理報表,報表一定不能包含平均或非重複計數彙總。

報表不包含指定的值分組。

2、已儲存資料

帶有已儲存資料的報表用於處理不經常更新的資料。當使用者瀏覽帶有已儲存資料的報表並對列或圖表深化以檢視細節時,他們不直接訪問資料庫伺服器;相反,他們訪問的是已儲存的資料。因此,帶有已儲存資料的報表不僅將網路資料傳輸量降到最低,而且還減輕了資料庫伺服器的負擔。

您可以從 crystal enterprise 內部排程這些報表,使其自動從資料庫定時重新整理。例如,如果銷售資料庫每天或每週只更新一次,那麼可按相似的進度執行報表並將其與資料一同儲存。這樣,銷售代表就總能使用當前的銷售資料,而不必在每次開啟報表時訪問資料庫。或者,您也可以根據需要來重新整理帶有已儲存資料的報表。

若要儲存帶有資料的報表,首先要確保在「檔案」選單中選中「隨報表儲存資料」選項,然後儲存報表。

3、將資料與報表一起儲存命令

如果打算過一段時間再次使用所建立的報表(例如精確調整它),或者打算與無法訪問原始資料的其他人共享報表,請使用「將資料與報表一起儲存」命令。

通常情況下,當儲存報表時,程式儲存報表定義及其基礎資料。報表定義包含列印報表所需的所有資訊。這些資料是執行報表時原始資料的快照。如果通過「檔案」選單上的選項命令清除「將資料與報表一起儲存」選項,則程式僅儲存報表定義。每次執行報表時必須重新整理資料。請參閱重新整理報表資料命令。若要為當前報表選擇該選項,請使用該命令。

在使用「將資料與報表一起儲存」命令前需考慮一些事情。

如果僅儲存報表定義,則需要較少的磁碟空間(僅夠模板使用),但程式在列印報表前需要檢索資料。

如果與報表一起儲存資料,則報表需要較多的磁碟空間(足夠供報表模板和資料使用),但程式在列印報表前無需檢索資料。

根據需要在開或關之間切換該命令。預設情況下,該選項設定為開。若要更改預設設定,請從「檔案」選單中選擇選項命令,並在「建立報表」選項卡(「選項」對話方塊)對話方塊出現後選擇其中的「將資料與報表一起儲存」選項。

注意:當程式將資料與報表一起儲存時,會壓縮資料以減少所占用的磁碟空間。開啟報表時將解壓縮資料。

水晶報表效能優化之道

目錄 一 在資料庫伺服器端執行紀錄選定,只傳輸篩選後的資料。1 優勢 2 下推記錄選定 示例 二 按需顯示資料,僅在需要的時候獲取並顯示需要的資料。1 優勢 2 隱藏 深化完成 資料,按需顯示 3 利用按需分配子報表 三 在資料庫伺服器端處理分組和排序 1 優勢 2 在伺服器上執行多數處理並只將有關...

水晶報表 建立報表

水晶報表是乙個優秀的報表開發工具,本人在開發通用管理系統的時候,所有報表都使用水晶報表,其簡單 易用和強大的功能令筆者倍加喜愛,現將水晶報表使用手記呈現給大家。一 在使用自帶的水晶報表時,請註冊,否則只能使用30次 二 使用crystalreportviewer進行預覽 crystalreportv...

水晶報表 子報表

經過了一段時間對水晶報表的操作,我對其稍稍了解了一點點。這兩天,一直在為資料量太大而煩惱,我有六張表,其中一張關聯剩餘的五張表。想要顯示資料,結果,顯示不出來,即使我已經在鏈結裡面設定了左外連線。我知道這個是按照笛卡爾積相乘,所以資料會成倍的增加。所以,即使我改用直接連線資料庫的方式也行不通。就是p...