Java軟件報表軟件技術(shù)博客

          java報表軟件技術(shù)匯總 java報表軟件制作 報表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          1. 問題描述

          對于多數(shù)據(jù)集關(guān)聯(lián)報表,當(dāng)數(shù)據(jù)很大時報表的展現(xiàn)速度就會很慢,或通過寫sql語句又很復(fù)雜。為此FineReport提供一種,既可加快報表的展現(xiàn)速度,又不用編寫復(fù)雜的sql語句的方案。即使用動態(tài)參數(shù)注入功能。

          2. 原理

          動態(tài)參數(shù)注入,是通過注入的值對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作的,只是取對應(yīng)的數(shù)據(jù),所以會提高報表的性能。

          3. 示例

          · 新建模板

          展現(xiàn)多個關(guān)聯(lián)數(shù)據(jù)表的數(shù)據(jù)

          SQL語句,ds1:SELECT * FROM [訂單]

          SQL語句,ds2:SELECT * FROM 訂單明細(xì)

          · 報表樣式

          傳統(tǒng)做法:先定義多個數(shù)據(jù)集,然后在報表中設(shè)置過濾條件,或使用連接將多個數(shù)據(jù)表定義成一個sql,但這兩種方案會產(chǎn)生的一系列問題(具體下面有介紹)。而使用動態(tài)參數(shù)注入的功能可解決大數(shù)量報表展現(xiàn)的速度,下面對比看下這三種做法。

          3.1 設(shè)置過濾

          此方法是定義兩個數(shù)據(jù)集查詢出所有數(shù)據(jù),然后在報表中設(shè)置過濾條件。

          分頁預(yù)覽query_like.cpt,從日志中可看出,是將第二個數(shù)據(jù)集中的數(shù)據(jù)全部取出了,如下所示:

          注:對于數(shù)據(jù)量大的報表,若將數(shù)據(jù)全部取出會降低報表的性能,因此會降低報表的展現(xiàn)速度。

          3.2 定義sql

          若是采用將兩個數(shù)據(jù)集定義成一個數(shù)據(jù)集,則SQL語句為:select a.訂單ID,訂購日期,到貨日期,發(fā)貨日期,產(chǎn)品ID,單價,數(shù)量,進(jìn)價,折扣 from 訂單 a,訂單明細(xì) b where a.訂單ID=b.訂單ID

          注:當(dāng)數(shù)據(jù)集很多時, 這樣定義sql很麻煩,看了也覺得很復(fù)雜。

          3.3 使用動態(tài)參數(shù)注入

          · 修改sql語句

          將上述模板中,數(shù)據(jù)集ds2的sql語句,修改成:SELECT * FROM [訂單明細(xì)] where 訂單ID =${orderid},并將參數(shù)orderid設(shè)置個默認(rèn)值為訂單ID中的一個值,如:10248。

          · 參數(shù)注入設(shè)置

          雙擊原進(jìn)行過濾的E2單元格,在彈出數(shù)據(jù)列對話框中,點擊動態(tài)參數(shù)注入按鈕,彈出動態(tài)參數(shù)注入對話框,然后點擊插入:名字和值分別為數(shù)據(jù)集ds2的參數(shù):orderid和數(shù)據(jù)集ds1對應(yīng)數(shù)據(jù)列所在的單元格:A2,且同時刪除過濾條件。

          點擊設(shè)計器預(yù)覽是,日志中可看出每執(zhí)行一行就只是取出的對應(yīng)訂單ID的那條數(shù)據(jù),如下圖所示:

           

          注:動態(tài)參數(shù)注入功能適用于大數(shù)據(jù)量報表,能夠明顯的體現(xiàn)出速度優(yōu)勢,而上文中的模板只是介紹其方法的。

           

           




          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 中牟县| 嘉义县| 柞水县| 阿拉尔市| 岑溪市| 鹰潭市| 黄平县| 前郭尔| 寿阳县| 肥城市| 临夏市| 绵竹市| 日土县| 西安市| 迁安市| 房山区| 临夏县| 巫溪县| 麻栗坡县| 新津县| 松阳县| 大城县| 无极县| 泽普县| 云梦县| 通辽市| 洛川县| 五大连池市| 舟山市| 台南县| 宜昌市| 裕民县| 兴和县| 沙洋县| 峨眉山市| 抚顺市| 铁岭县| 泰宁县| 固镇县| 东平县| 长泰县|