Java軟件報表軟件技術博客

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

          1. 問題描述

          對于多數據集關聯報表,當數據很大時報表的展現速度就會很慢,或通過寫sql語句又很復雜。為此FineReport提供一種,既可加快報表的展現速度,又不用編寫復雜的sql語句的方案。即使用動態參數注入功能。

          2. 原理

          動態參數注入,是通過注入的值對數據庫中的數據進行操作的,只是取對應的數據,所以會提高報表的性能。

          3. 示例

          · 新建模板

          展現多個關聯數據表的數據

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

          SQL語句,ds2:SELECT * FROM 訂單明細

          · 報表樣式

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

          3.1 設置過濾

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

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

          注:對于數據量大的報表,若將數據全部取出會降低報表的性能,因此會降低報表的展現速度。

          3.2 定義sql

          若是采用將兩個數據集定義成一個數據集,則SQL語句為:select a.訂單ID,訂購日期,到貨日期,發貨日期,產品ID,單價,數量,進價,折扣 from 訂單 a,訂單明細 b where a.訂單ID=b.訂單ID

          注:當數據集很多時, 這樣定義sql很麻煩,看了也覺得很復雜。

          3.3 使用動態參數注入

          · 修改sql語句

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

          · 參數注入設置

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

          點擊設計器預覽是,日志中可看出每執行一行就只是取出的對應訂單ID的那條數據,如下圖所示:

           

          注:動態參數注入功能適用于大數據量報表,能夠明顯的體現出速度優勢,而上文中的模板只是介紹其方法的。

           

           




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


          網站導航:
           
          主站蜘蛛池模板: 西昌市| 新乡市| 密山市| 高尔夫| 涡阳县| 湖北省| 宁波市| 黎平县| 朝阳区| 江陵县| 高台县| 衡水市| 东明县| 雷波县| 皋兰县| 桃园县| 河北区| 河西区| 灯塔市| 土默特右旗| 科技| 高尔夫| 肇东市| 彩票| 商南县| 呈贡县| 伊川县| 东乌珠穆沁旗| 邳州市| 弥渡县| 宁波市| 丰原市| 商城县| 大邑县| 涞源县| 镇平县| 塔城市| 嫩江县| 岑溪市| 错那县| 高雄市|