隨筆 - 225  文章 - 98  trackbacks - 0
          <2011年9月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          隨筆分類

          相冊

          報表工具廠商們

          搜索

          •  

          最新評論

          閱讀排行榜


          在使用java報表工具時如有一個參數查詢語句:SELECT * FROM Stscore WHERE Stdno IN (${studentno})實際情況中studenno可能是根據其他條件查詢出來的結果列表,也許超過1000個學號,如最終為

          SELECT * FROM Stscore WHERE Stdno IN (10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, ……,10989, 10990, 10991, 10992, 10993, 10994, 10995, 10996, 10997, 10998, 10999, 11000,11001)

          直接執行上述語句,由于studentno參數的個數超過了1000個,數據庫端將報ORA-01795的錯誤,如下圖

          http://www.finereport.com/forumimages/e440.png

          如何解決該問題呢?此時,如果將studentno參數分割成多段,如以500為單位進行分割,將上述11001個參數值分為3部分,形成3條查詢條件,便可避免該問題。

              即變為SELECT * FROM Stscore WHERE Stdno IN (10001,10002,…,10500) or Stdno IN (10501,10502,…,11000) or Stdno IN (11001)

                  FineReport并沒有實現該功能的內置函數,對于這種情況,我們可以自定義一個SubSection分組函數        該函數的使用規則為:SubSection(para)

          參數para為字符串形式,該函數的作用即將字符串參數以500為單位進行分割,并返回分割后形成的數組。

          完整代碼如下:

          http://www.finereport.com/forumimages/e441.png

          http://www.finereport.com/forumimages/e442.png

          編譯自定義函數

          將編譯后的SubSection.class放到FineReport的安裝目錄WEB-INF下面的classes目錄下,因為SubSection.java屬于包com.fr.demo,所以SubSection.class需要放到classes\com\fr\demo目錄下。

          注冊并使用自定義函數

                 注冊好定義的函數后便可進行使用了,注冊與使用方法在上一節簡單的自定義函數中已經介紹過,在此就不詳細描述了。由于實際獲得的參數格式不定,可以根據具體情況在報表工具中調整java程序。

          文章轉自:

          http://blog.vsharing.com/fanfanzheng/A1421549.html



          了解Java報表工具就從這里開始
          posted on 2011-09-21 15:46 season 閱讀(273) 評論(0)  編輯  收藏 所屬分類: Java報表—技術知識
          主站蜘蛛池模板: 布尔津县| 安国市| 安徽省| 锡林郭勒盟| 观塘区| 来凤县| 清丰县| 罗平县| 英德市| 汶川县| 长兴县| 虎林市| 应用必备| 阿拉善左旗| 奉化市| 古田县| 凌源市| 英吉沙县| 屏边| 洛隆县| 重庆市| 双桥区| 靖西县| 华蓥市| 靖江市| 石柱| 吉隆县| 台江县| 孙吴县| 紫阳县| 济源市| 辽宁省| 宾阳县| 天水市| 浦县| 晋宁县| 都兰县| 侯马市| 林州市| 洛浦县| 宜兰县|