2012-02-06 41 views
3

使用BIRT設計器3.7.1,可以很容易地爲XML文件數據源定義報告;但是,輸入文件名最初是作爲常量寫入.rptdesign文件的。開始不錯,但在現實生活中無用。我想要的是通過genReport.bat腳本啓動BIRT ReportEngine,並將XML數據源文件的名稱指定爲參數。這應該是微不足道的,但它是令人驚訝的困難...BIRT:將XML數據源文件指定爲參數不起作用

我發現是這樣的:而不是在報告定義中定義XML數據源文件作爲常量,你可以使用params [「datasource」] .value ,它將在運行時被參數值替換。另外,在BIRT Designer中,您可以定義報告參數(數據源)併爲其指定一個默認值,例如「file:// d:/sample.xml」。

但是,它不起作用。這是在設計我的預覽嘗試的結果:

Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.xml. 
org.eclipse.datatools.connectivity.oda.OdaException: The xml source file cannot be found or the URL is malformed. 

ReportEngine,開始與 'genReport.bat -p 「數據源=文件:// d:/sample.xml」 xx.rptdesign' 說幾乎相同。 當然,我確定XML文件存在,並嘗試對文件URL進行不同的拼寫。那麼,怎麼了?

回答

5

我發現了什麼是這樣的:而不是定義報表定義,你可以使用PARAMS XML數據源文件爲一個常數的[「數據源」]值,這將是在運行時的參數值替換。

不,它不會 - 至少,如果指定的&XML Data Source File值作爲params["datasource"].value(而不是一個有效的XML文件路徑)在設計時,那麼你將嘗試運行報表時出現錯誤。這是因爲它試圖將文字字符串params["datasource"].value用於文件路徑,而不是params["datasource"].value

而是,您需要使用事件處理程序腳本 - 特別是beforeOpen腳本。

要做到這一點:

  • 在數據資源管理您的數據源上單擊鼠標左鍵。
  • 在主「報表設計」窗格中,單擊「腳本」選項卡(而不是「佈局」選項卡)。一個空白的beforeOpen腳本應該是可見的。
  • 複製以下代碼粘貼到腳本:

this.setExtensionProperty("FILELIST", params["datasource"].value);

如果你現在運行的報告,你會發現,在參數datasource的值用於XML文件的位置。

您可以在BIRT Exchange找到更多關於參數驅動的XML數據源的信息。

+0

謝謝 - 它現在有效。我可以爲初學者(如我自己)添加您還必須添加報表參數的定義(在Designer的「報表參數」部分中)。 – user1192739 2012-02-08 12:28:15