潤乾報表實現動態資料源報表及改進

來源:互聯網
上載者:User

標籤:報表   潤乾報表   動態資料源   集算報表   

經常會遇到一些報表需要根據不同的情況(參數)串連不同的資料來源從而完成相應的資料的展現,也就是經常說的動態資料源報表。報表工具通常的做法有兩種,一是不同的情況載入不同的資料來源串連參數,如:url、driver、username、password等;二是利用已配置的多個串連池,根據不同情況選擇。這裡通過一個執行個體,說明潤乾報表的實現過程及改進方案。

報表說明

    應用中需要通過參數控制報表串連的資料來源,當參數flag為1時串連資料來源一(db1),否則串連資料來源二(db2)。

潤乾報表實現

     首先根據flag參數為context設定不同資料來源(這裡以兩個hsql資料庫為例):

    String flag=request.getParameter("flag");

        Connection con1 = null;

        Connection con2 = null;

        try{

            Driver driver = (Driver)Class.forName("org.hsqldb.jdbcDriver").newInstance();

            DriverManager.registerDriver(driver);

            con1=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/runqianDB","sa","");

            con2=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");

        }catch (Exception e){

            e.printStackTrace();

        }

 

        Context cxt=  new Context();

        String defDsName =cxt.getDefDataSourceName ();

        if ("1".equals(flag) || "1"==flag){

            cxt.setConnection(defDsName,con1);

        }else{

            cxt.setConnection(defDsName,con2);

        }

   

    將cxt存入request:

    request.setAttribute("myContext", cxt );

 

    以context方式發布報表:

    <report:htmlname="report1"

        contextName=”myContext”

    />

 

    通過使用潤乾報表的API可以完成動態資料源報表,詳盡的API的確為應用開發人員提供了諸多便利。不過,由於上面的做法我們看到都需要依賴Java編程,修改維護性很差,對一般報表開發維護人員都是不小的挑戰。

    這種情況下,如果採用潤乾公司基於潤乾報表引擎開發的集算報表,則可以非常方便完成動態資料源報表需求,集算報表內建了用於處理報表資料來源準備的集算器,在集算器中編寫處理動態資料源的代碼比較簡單。

集算報表實現

編寫集算指令碼

     使用集算指令碼編輯工具完成計算指令碼,並為報表輸出計算後結果集:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/F6/wKioL1PteBGxqkHyAAFVQZ0N_9w697.jpg" style="float:none;" title="1.jpg" alt="wKioL1PteBGxqkHyAAFVQZ0N_9w697.jpg" />

    A1:根據參數flag值決定串連哪個資料來源(db1和db2為資料來源名稱)

    A2:執行sql取數

    A3:關閉串連

    A4:將結果集返回報表 

報表調用

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/45/F6/wKioL1PteBLTYH3nAAE5lbuNa80476.jpg" style="float:none;" title="2.jpg" alt="wKioL1PteBLTYH3nAAE5lbuNa80476.jpg" />

在集算指令碼中處理動態資料源後,將結果輸出給報表範本,報表範本使用時就好像在使用一個資料來源一樣,從而簡化了報表開發。此外,集算器指令碼允許使用者分步編寫計算邏輯,並且代碼比較簡單(相對Java和sql來說),從而提升了報表開發和維護效率。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.