BIRT 如何配置動態資料來源

xiaohuihui發表於2020-06-23

BIRT本身不直接支援動態資料來源,常見解決辦法是在資料來源的beforeopen事件中新增類似如下程式碼:

...

importPackage( Packages.java.io );

importPackage( Packages.java.util );

fin = new java.io.FileInputStream(new String("d:/config.txt"));

props = new java.util.Properties( );

props.load(fin);

extensionProperties.odaDriverClass = new String(props.getProperty("driver"));

extensionProperties.odaURL = new String(props.getProperty("url"));

extensionProperties.odaUser = new String(props.getProperty("username"));

extensionProperties.odaPassword = new String(props.getProperty("password"));

fin.close()

...

這種透過硬編碼的方式解決(要麼需要大量修改報表檔案,要麼需要每個報表繼承一個公共的庫檔案),過程還是比較複雜,在報表數量較多,開發人數較多時,需要注意的地方有些多,並不完美。

如果有了集算器,這樣的問題就簡單多了,其獨特的宏替換機制極大地提高程式碼複用程度,根據不同引數值,得到不同結果。

比如要處理這麼個場景: 資料來源myDB和oraDB分別指向不同的資料庫,兩庫中有相同結構的表ORDER,報表需要根據引數動態連線資料來源,查詢並展現ORDER中金額大於1000的訂單。示意圖如下:

BIRT 如何配置動態資料來源

集算器SPL僅1行就搞定了:


A

1

=${pSource}.query("select * from ORDER where Amount>1000")

其中 pSource 為是報表引數,代表資料來源名,${…} 表示將字串解析為表示式。其實還有很多情況BIRT解決動態計算問題不太方便,但有集算器SPL的輔助卻很簡單,感興趣可以參考:

集算器提供了 JDBC 驅動,可以很方便的與BIRT等報表工具整合, 有使用和獲得它的方法。

關於集算器安裝使用、獲得免費授權和相關技術資料,可以參見 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700153/,如需轉載,請註明出處,否則將追究法律責任。

相關文章