<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 61,  comments - 2033,  trackbacks - 0

    設(shè)計優(yōu)化的 Web 報表

    Crystal Reports 本身的性能優(yōu)點:

    • 按需分配頁技術(shù)

    按需分配頁的報表訪問允許用戶只下載需要查看的特定報表頁,從而縮短了響應(yīng)時間,減少了 Web 流量。不僅如此,占位符和部分頁技術(shù)還使您無須等待圖形和子報表等大對象的處理,就能立即查看 Web 上的報表頁和數(shù)據(jù)。

    • 優(yōu)化的多線程報表引擎

    Crystal Report 引擎的多線程能力及線程安全數(shù)據(jù)庫驅(qū)動程序使您能夠在許多其他操作在后臺進(jìn)行的同時,繼續(xù)執(zhí)行您自己的重要任務(wù)。此外,報表引擎減少了數(shù)據(jù)傳遞次數(shù),通過改善的內(nèi)存管理來加快處理速度,盡可能高效處理子報表和參數(shù)。

     

    優(yōu)化 Web 報表的關(guān)鍵策略

    通過 BusinessObjects Enterprise 縮放

    計劃

    BusinessObjects Enterprise 包含一個靈活的基于時間和事件的調(diào)度系統(tǒng),使您可以在工余時間處理大的報表,從而避免不必要的數(shù)據(jù)庫訪問。(Report Application Server 提供按需制表功能,每個查看請求都會產(chǎn)生一個單獨的數(shù)據(jù)庫查詢)。

    版本管理

    版本管理和調(diào)度功能緊密配合,共同實現(xiàn)報表實例的存儲。版本管理不僅可以降低為服務(wù)用戶而造訪數(shù)據(jù)庫的次數(shù),而且可以保留報表實例的檔案作為歷史參考。

    集群

    BusinessObjects Enterprise 整合了成熟的集群和負(fù)載平衡技術(shù),可幫助您實現(xiàn)一個高度易用、性能可靠的信息傳送系統(tǒng)。

    可伸縮性

    BusinessObjects Enterprise 建立在分布式多服務(wù)器結(jié)構(gòu)的基礎(chǔ)上,可使您通過單機擴(kuò)容(添加處理器)或多機擴(kuò)展來處理較重的用戶負(fù)載。

    管理

    BusinessObjects Enterprise 包含大量的管理控件,可用來組織內(nèi)容,設(shè)置復(fù)雜的調(diào)度和安全性,并調(diào)節(jié)系統(tǒng)達(dá)到最佳性能。

    外部(第三方)身份驗證

    BusinessObjects Enterprise 允許您利用現(xiàn)有安全系統(tǒng)來管理用戶和組。所有身份驗證工作都可委托給第三方 NT 或 LDAP 系統(tǒng)。

    BusinessObjects Enterprise 中日期函數(shù)的求值時間

    Crystal Reports 中可用的不同日期和時間函數(shù)是在報表處理的不同階段求值的。某些函數(shù)是在處理預(yù)定的報表或刷新報表實例時求值的:該求值時間稱為“WhileReadingRecords”。其他函數(shù)是在每次格式化報表頁以在報表查看器或瀏覽器中顯示時求值的:該求值時間稱為“WhilePrintingRecords”。

    如果使用 BusinessObjects Enterprise 生成報表實例,并且注意到所求出的日期或時間函數(shù)值不是預(yù)期值,請考慮以下因素:

    • 當(dāng)前日期和時間始終是從報表引擎可以在本地訪問的時鐘(即處理報表的計算機上的時鐘)中讀取的。在 BusinessObjects Enterprise 中,“作業(yè)服務(wù)器”依據(jù)數(shù)據(jù)庫處理預(yù)定報表,而“頁面服務(wù)器”依據(jù)數(shù)據(jù)庫處理按需要顯示的報表。Page Server 還在用戶查看報表實例的個別頁面時對頁面進(jìn)行格式化。
    • 在處理預(yù)定報表時,Job Server 將對所有日期和時間公式進(jìn)行求值,以便生成報表實例。如果只是查看生成的報表實例,則不會對任何公式重新求值。
    • 當(dāng)您查看緩存的報表頁時,不會對任何日期函數(shù)重新求值,原因是記錄已被讀取并且頁面已被格式化。
    • 如果在報表的選定公式中使用日期和/或時間函數(shù),則報表數(shù)據(jù)依賴于這些公式的返回值。因此,在以后某個日期查看報表實例時,函數(shù)可能會導(dǎo)致系統(tǒng)依據(jù)數(shù)據(jù)庫對報表數(shù)據(jù)進(jìn)行更新。
    • 若要確保日期和時間函數(shù)返回預(yù)期的值,可以通過使用 WhileReadingRecords 和 WhilePrintingRecords 函數(shù)來強制確定求值時間。

     

    作出正確的設(shè)計選擇

    在設(shè)計報表,尤其是設(shè)計用于 Web 的報表時,應(yīng)該允許報表用戶操縱其所查看的數(shù)據(jù)。即,顯示匯總信息,以便每個用戶可以快速地瀏覽報表,然后深化以訪問其他數(shù)據(jù)。采用此方法,由于僅從數(shù)據(jù)庫服務(wù)器傳輸用戶所請求的數(shù)據(jù),所以最大限度地降低了 Web 流量并縮短了響應(yīng)時間。

    下面只是設(shè)計用戶驅(qū)動報表的幾點優(yōu)勢:

    • 報表用戶可以對其在 Web 上查看的信息類型和數(shù)量進(jìn)行交互控制。
    • 因為只從數(shù)據(jù)庫服務(wù)器返回用戶所請求的信息,所以數(shù)據(jù)傳輸和網(wǎng)絡(luò)流量減少。
    • 當(dāng)用戶需要通過 Web 根據(jù)實時數(shù)據(jù)制作報表時,面向用戶的報表響應(yīng)迅速,并能有效地與數(shù)據(jù)庫服務(wù)器通訊。
    • 報表變得更有用,原因在于每個用戶均可自定義報表的內(nèi)容,從而創(chuàng)建針對其特定決策問題的報表解決方案。

    使用更快的報表格式

    要提高在 Crystal Reports 舊版本中創(chuàng)建的報表的性能,最快速的方法是將其以最新的 Crystal Reports 格式保存。Crystal Reports 在經(jīng)過改進(jìn)后,已能較以往更快地處理報表:更新舊報表可利用這些改進(jìn)功能。

    若要更新舊報表的格式,只需用 Crystal Reports 將其打開,然后從“文件”菜單中選擇“保存”。舊版本的報表將被替換為版本 11 的報表。

     

    在實時數(shù)據(jù)和已保存數(shù)據(jù)之間選擇

    設(shè)計匯總報表

    設(shè)計和分發(fā)摘要報表是確保用戶可以在 Web 上快速查找所需數(shù)據(jù)的一種相對簡便的方法。摘要報表可以包含的數(shù)據(jù)與其他任何報表一樣多。但是,通過隱藏匯總報表的“詳細(xì)資料”節(jié),可以避免用戶陷入他們可能并不直接需要的數(shù)據(jù)中。

    Crystal Reports 中打開報表。

    如果尚未創(chuàng)建分組及匯總的報表,則從“Feature Examples”樣本文件夾中打開“Group.rpt”。

    “報表”菜單上,單擊“節(jié)專家”打開“節(jié)專家”。

    “節(jié)”列表中,單擊“詳細(xì)資料”

    “節(jié)專家”的“公用”選項卡上,選中“隱藏(深化完成)”復(fù)選框。

    單擊“確定”

    慎用子報表

    利用按需分配子報表

    如果報表有處理大量記錄的節(jié),則可以將該節(jié)放入按需分配子報表中。按需分配子報表在主報表中以超級鏈接的形式出現(xiàn)。在打開主報表時,不會檢索按需分配子報表的任何數(shù)據(jù),直到深化相應(yīng)的超級鏈接為止。

     

    使用鏈接子報表

    當(dāng)鏈接子報表時,Crystal Reports 會根據(jù)主報表中的匹配記錄協(xié)調(diào)子報表中的數(shù)據(jù)。

     

    鏈接表而不是鏈接子報表

    只要可能,就應(yīng)采用以下方法協(xié)調(diào)報表數(shù)據(jù):將數(shù)據(jù)庫專家鏈接選項卡上的數(shù)據(jù)庫表鏈接到主報表,而不是將常規(guī)子報表(即非按需分配子報表)鏈接到主報表。因為每個子報表都是作為單獨的報表運行,所以鏈接的表常常有性能優(yōu)勢

     

    有效地使用其他設(shè)計元素

    映射

    映射呈現(xiàn)是一種單線程操作,它的縮放性能并不好。盡管支持映射,但您仍然需要仔細(xì)考慮報表中的映射將對性能產(chǎn)生的總體影響。

    報表模板

    如果將對多個報表應(yīng)用同一模板,最好將報表模板打開一次,然后將其保存在緩存中,這是因為模板只需要為只讀。

    包括“第 N 頁,共 M 頁”或“總頁數(shù)”

    如果在報表中包括特殊字段“第 N 頁,共 M 頁”或“總頁數(shù)”,則報表需要先完成處理,然后才能計算此值。除非報表非常小或者的確需要此值,否則,請避免使用這些特殊字段。

    設(shè)計報表以最大程度地利用數(shù)據(jù)共享

    BusinessObjects Enterprise 具有數(shù)據(jù)共享功能,通過減少具有多個用戶的系統(tǒng)中進(jìn)行的數(shù)據(jù)庫調(diào)用次數(shù)來提高性能。

    只有在滿足某些條件時,才能在報表對象的用戶之間共享數(shù)據(jù)。在不損害用戶的報表信息需求的情況下,嘗試通過設(shè)計盡可能滿足數(shù)據(jù)共享條件的報表來最大程度地利用數(shù)據(jù)共享。

    如果報表由頁面服務(wù)器處理,則在滿足以下條件時將會在報表用戶之間共享數(shù)據(jù):

    • 用戶使用相同數(shù)據(jù)庫登錄信息查看報表時。
    • 用戶使用相同參數(shù)查看報表時。
    • 用戶使用相同頁面布局選項查看報表時。
    • 用戶使用相同區(qū)域設(shè)置查看報表時。

    使用 DHTML 查看器、ActiveX 查看器或 Java 查看器查看的報表是使用頁面服務(wù)器處理的。這些查看器不允許用戶更改報表的頁面布局或區(qū)域設(shè)置。但是,可以開發(fā)提供此功能的自定義查看器應(yīng)用程序。

    如果報表由報表應(yīng)用程序服務(wù)器 (RAS) 處理,則在滿足以下條件時將會在報表用戶之間共享數(shù)據(jù):

    • 用戶使用相同數(shù)據(jù)庫登錄信息查看報表時。
    • 用戶使用相同參數(shù)查看報表時。
    • 用戶使用相同區(qū)域設(shè)置查看報表時。
    • 用戶不修改報表時。

    使用高級 DHTML 查看器(或允許查看或修改報表的自定義應(yīng)用程序)查看的報表是使用報表應(yīng)用程序服務(wù)器處理的。

     

    優(yōu)化您的制表環(huán)境

    選擇最快的數(shù)據(jù)庫和連接

    若要提高制表性能,應(yīng)充分利用數(shù)據(jù)庫進(jìn)行大部分報表處理工作。理想情況下,結(jié)構(gòu)化查詢語言 (SQL) 數(shù)據(jù)庫是執(zhí)行這類任務(wù)最有效的數(shù)據(jù)庫。

    使用表索引

    要使處理速度達(dá)到最快,可基于 SQL 數(shù)據(jù)庫中帶索引的字段創(chuàng)建報表。使用表索引很容易提高數(shù)據(jù)的訪問速度,減少 Crystal Reports 計算數(shù)據(jù)所花的時間。

    改進(jìn)表鏈接選擇

    1.      確保每個數(shù)據(jù)庫表在要使用的字段上編制了索引。

    2.       將數(shù)據(jù)庫表添加到您的報表,然后在公用字段上鏈接主表和查閱表,而不要插入鏈接子報表再將其綁定到主報表的數(shù)據(jù)。

    3.       在主表中,使用對索引字段設(shè)置了范圍限制的記錄選定公式。這樣可以減少 Crystal Reports 必須在查閱表中找到的與主表中記錄相匹配的記錄的數(shù)目。

    使用線程安全數(shù)據(jù)庫驅(qū)動程序

    使用存儲過程進(jìn)行更快的處理

    使用增強的記錄選定公式

    下推記錄選定

    Year ({訂單.訂單日期}) < 2001 返回所有DB記錄;{訂單.訂單日期} < #Jan 1, 2001# 只返回所需記錄

    記錄選定性能提示

    在設(shè)置記錄選定請求時,請考慮下列與性能相關(guān)的項目:

    常規(guī)
    • 要下推記錄選定,必須在“報表選項”對話框(從“文件”菜單打開)中選中“為提高速度而使用索引或服務(wù)器”。
    • 在記錄選定公式中,避免在非參數(shù)字段的字段上進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。

    例如,避免使用 ToText( ) 將某數(shù)值數(shù)據(jù)庫字段轉(zhuǎn)換為字符串?dāng)?shù)據(jù)庫字段。

    • 能夠下推一些使用常量表達(dá)式的記錄選定公式。
    PC 數(shù)據(jù)庫
    • 只能下推編有索引的字段上的記錄選定。
    • 只能下推 AND 子句(非 OR)。
    SQL 數(shù)據(jù)庫
    • 能夠下推索引字段或非索引字段上的記錄選定。
    • 如果使用索引字段,SQL 服務(wù)器響應(yīng)速度將加快。
    • 能夠下推 AND 和 OR 子句。
    • 可以下推包含某些類型的嵌入公式的記錄選定公式。
    • 應(yīng)該合并 SQL 表達(dá)式字段以下推進(jìn)行記錄選定所需的公式計算。
    • “數(shù)據(jù)庫”菜單上單擊“顯示 SQL 查詢”,以查看將要發(fā)送到數(shù)據(jù)庫服務(wù)器的 SQL。

    編寫高效記錄選定公式的策略

    考慮 1

    任何完全用“選擇專家”生成、而不是自己編寫的記錄選定公式,都可以下推。

    考慮 2

    任何具有 DataBaseField SupportedOperator ConstantOrParameterExpression 形式的選定公式均可下推。

    當(dāng)然,DataBaseField 只是一個數(shù)據(jù)庫字段。SupportedOperator 是 =、<>、<、<=、>、>=、StartsWith、Like 或 In 之中的任何一個。

    ConstantOrParameterExpression 是涉及常量值、運算符、函數(shù)和參數(shù)字段的任何表達(dá)式。它不能包含變量、控制結(jié)構(gòu)或參數(shù)字段以外的字段。根據(jù)其本身定義,常量表達(dá)式和參數(shù)表達(dá)式可以無須訪問數(shù)據(jù)庫而求得。

    注意:    常量或參數(shù)表達(dá)式的求值結(jié)果可以是簡單值、區(qū)域值、數(shù)組值或一個區(qū)域值數(shù)組。這類表達(dá)式的舉例如下:

    {?number parameter} - 3

    Year ({?run date})

    CurrentDate + 5

    DateDiff ("q", CurrentDate, CDate("Jan 1, 1996"))

    Month (Maximum ({?date range parameter}) + 15)

    ["Canada", "Mexico", "USA", {?enter a country}]

    1000 To 5000

    [5000 To 10000, 20000 To 30000, 50000 To 60000]

    一個完整的示例:

    {訂單.訂單日期} >= CurrentDate - 3

    該程序還可下推只包含布爾字段(不包含運算符和常量部分)的表達(dá)式。

    {訂單.已發(fā)貨}

    Not {訂單.已發(fā)貨}

    考慮 3

    IsNull (DataBaseField) 可以下推。

    考慮 4

    SqlExpression SupportedOperator ConstantOrParameterExpression 可以下推。例如,如果 {@ExtendedPrice} = (Quantity * Price),則選定公式 {@ExtendedPrice} > 1000 不能下推。但是,如果用等價的 SQL 表達(dá)式代替 @ExtendedPrice,則該選定公式可以下推。

    考慮 5

    當(dāng)使用遵循上述考慮因素編寫的多個表達(dá)式時,將其用 AND 和 OR 分開,也可以使用 NOT。每種表達(dá)式可以有多個,并用括號確定優(yōu)先級。例如:

    {Orders.Order ID} < Minimum({?number range}) Or

    {訂單.訂單金額} >= 1000

    (IsNull({客戶.地區(qū)}) Or

    {客戶.地區(qū)} = "BC") And

    {客戶.去年銷售額} > 2000

     

    將參數(shù)字段合并到記錄選定公式中

    不要在每次打開報表時均顯示報表的所有數(shù)據(jù),可以創(chuàng)建參數(shù)字段提示用戶指定希望查看的數(shù)據(jù)。為了減少從數(shù)據(jù)庫服務(wù)器傳輸?shù)臄?shù)據(jù)量,請將這些參數(shù)字段直接合并到記錄選定公式中。

    一般情況下,參數(shù)字段為用戶提供交互性,用戶響應(yīng)參數(shù)提示以指定希望查看的數(shù)據(jù)。但是,通過將參數(shù)字段直接合并到記錄選定公式中,將不僅提供交互性,而且減少了數(shù)據(jù)傳輸并改善了性能。

    可以通過“選擇專家”或“記錄選定公式工作室”向記錄選定公式添加參數(shù)字段。當(dāng)使用“記錄選定公式工作室”時,可將參數(shù)字段和其他任何字段一樣對待。

     

    適時使用 SQL 表達(dá)式

    為了維持最佳的報表處理速度,請避免在記錄選定公式中使用公式(不管是 Crystal 語法還是 Basic 語法)。而應(yīng)該用等效的 SQL 表達(dá)式字段替換原公式,然后將 SQL 表達(dá)式字段合并到記錄選定公式中。這樣做將大大提高您的記錄選定被下推到服務(wù)器的機會。

    另外,應(yīng)避免對公式字段進(jìn)行排序、分組或總計(不管是 Crystal 語法還是 Basic 語法)。而應(yīng)該用等效的 SQL 表達(dá)式字段替換原公式字段,然后在 SQL 表達(dá)式字段上進(jìn)行排序、分組或總計。這樣做也將大大提高在服務(wù)器上執(zhí)行處理的機會。

    最后,如果數(shù)據(jù)庫支持 Case 邏輯,并且報表需要摘要 If-Then-Else 公式計算,請用 SQL 表達(dá)式字段替換該公式。

    改進(jìn)分組、排序和總計

    在服務(wù)器上執(zhí)行分組

    當(dāng)通過 Web 從活動數(shù)據(jù)中進(jìn)行實時制表時,使用選項“在服務(wù)器上執(zhí)行分組”可減少從數(shù)據(jù)庫服務(wù)器傳輸?shù)臄?shù)據(jù)量。使用此選項后,大部分?jǐn)?shù)據(jù)處理工作都卸載到數(shù)據(jù)庫服務(wù)器,并且開始時僅讀入一個數(shù)據(jù)子集。僅當(dāng)您在報表中進(jìn)行深化時才從數(shù)據(jù)庫返回詳細(xì)數(shù)據(jù)。

    注意:    服務(wù)器端處理僅適用于那些基于 SQL 數(shù)據(jù)源的經(jīng)過排序和分組的報表。

    啟用服務(wù)器端處理
    1. “文件”菜單中,單擊“報表選項”
    1. 選擇“報表選項”對話框中的“在服務(wù)器上執(zhí)行分組”

    如果沒有選擇“為提高速度而使用索引或服務(wù)器”,則該復(fù)選框是不活動的。

    提示:    當(dāng)選中“為提高速度而使用索引或服務(wù)器”后,您可以迅速從“數(shù)據(jù)庫”菜單啟用“在服務(wù)器上執(zhí)行分組”。

    1. 單擊“確定”

    SQL 表達(dá)式用于分組、排序和總計

    SQL 表達(dá)式用于 Case 邏輯

    如果數(shù)據(jù)庫支持 Case 邏輯,并且報表需要對 If-Then-Else 公式計算進(jìn)行匯總,請用 SQL 表達(dá)式字段替換該公式。在此類情況下,SQL 表達(dá)式字段使 Crystal Reports 可以在服務(wù)器上執(zhí)行報表的分組。

    例如,假設(shè)您正在從支持 Case 邏輯的 MS SQL Server 7 數(shù)據(jù)庫中制作報表。您需要在報表中包含一個 If-Then-Else 計算,并且對報表中每個組的計算進(jìn)行匯總。通過使用如下形式的 SQL 表達(dá)式字段執(zhí)行計算,您就利用了數(shù)據(jù)庫的能力來處理 Case 邏輯:

    CASE DatabaseTable."DatabaseField"

    WHEN 'SpecifiedValue' THEN Calculation1

    ELSE Calculation2

    END

    如果記錄的 DatabaseField 值等于 SpecifiedValue 值,則執(zhí)行 Calculation1;對于所有其他記錄則執(zhí)行 Calculation2。通過包含 SQL 表達(dá)式字段,您利用了數(shù)據(jù)庫服務(wù)器的能力來處理 Case 邏輯。甚至當(dāng)您在報表的其他地方對該 SQL 表達(dá)式字段進(jìn)行匯總時,報表的分組也將隨之在服務(wù)器上進(jìn)行。

    在可能的位置插入?yún)R總和運行總計字段

    可能的情況下,應(yīng)避免創(chuàng)建包含全局變量的公式來計算匯總或運行總計。

    相反,應(yīng)通過單擊“插入”菜單然后選擇相應(yīng)的命令(小計、總計和匯總)來創(chuàng)建匯總。通過打開“字段資源管理器”,右擊“運行總計字段”,然后從快捷菜單中選擇“新建”來創(chuàng)建運行總計字段。

     

     

     

    posted on 2005-12-07 22:02 魚上游 閱讀(4569) 評論(2)  編輯  收藏 所屬分類: 爪哇世界探險


    FeedBack:
    # re: 水晶報表系列文章--優(yōu)化策略筆記
    2006-04-26 14:06 | pc
    字體好大 看得不舒服  回復(fù)  更多評論
      
    # re: 水晶報表系列文章--優(yōu)化策略筆記
    2011-08-22 14:14 | 同病968
    好!看了模糊  回復(fù)  更多評論
      
    <2005年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(82)

    隨筆分類(59)

    文章分類(21)

    相冊

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267192
    • 排名 - 22

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲免费网站在线观看| 亚洲女人18毛片水真多| 成人免费一区二区三区在线观看| 亚洲阿v天堂在线2017免费| 亚洲欧洲AV无码专区| 亚洲白嫩在线观看| 好看的亚洲黄色经典| 亚洲国产V高清在线观看| 天堂在线免费观看中文版| 国产成人精品免费午夜app| 好久久免费视频高清| 久久高潮一级毛片免费| 美女黄频免费网站| 亚洲AV成人无码网站| 亚洲kkk4444在线观看| 亚洲一区免费视频| 亚洲日本国产乱码va在线观看| 图图资源网亚洲综合网站| 亚洲精品无码久久久影院相关影片 | 亚洲成人在线免费观看| 国产福利电影一区二区三区,免费久久久久久久精 | 精品无码人妻一区二区免费蜜桃| 人妻巨大乳hd免费看| 国产偷国产偷亚洲高清在线| 亚洲人成色777777老人头| 国产日本亚洲一区二区三区| 亚洲国产中文在线视频| 亚洲另类精品xxxx人妖| 亚洲人成日本在线观看| 中文字幕亚洲男人的天堂网络 | 人人玩人人添人人澡免费| 人妻免费一区二区三区最新| a级特黄毛片免费观看| 免费网站观看WWW在线观看| 久久性生大片免费观看性| a级毛片100部免费观看| 今天免费中文字幕视频| 污视频在线观看免费| 67194国产精品免费观看| 国产在线a免费观看| 女人18一级毛片免费观看|