2014-11-04 47 views
0

我遷移BIRT從2.6版本上報給4.4和麪臨的一個很奇怪的問題,這是因爲在BIRT參數入門四捨五入

BIRT參數傳遞作爲查詢的一部分,即如果我通過1作爲參數被四捨五入,查詢得到執行爲0,如果我將參數傳遞爲99或101,查詢得到執行爲100

查詢 - 從table1中選擇數據where actualID =?

爲參數的數據類型是小數DB使用(28,0)

是SQL Server 2012中

我已經登錄參數的BIRT功能(beforeOpen,beforeClose等)的值,它始終顯示參數值與我所傳遞的一致。

請幫助我瞭解或指向我,我可以藉此調查進一步方向

任何幫助將非常感激

注 如果我轉換數據類型從十進制轉換爲字符串,它工作正常 如果我將參數作爲查詢的一部分傳遞,它可以正常工作,但當參數值動態替換'?'時它不起作用。在查詢中

+1

[BIRT 4.4.0 PARAMETERS在運行時變爲四捨五入]的可能重複(http://stackoverflow.com/questions/26882302/birt-4-4-0-parameters-getting-rounded-at-runtime) – hvb 2014-11-13 08:23:34

回答

0

您還應該在afterOpen事件中記錄參數值。 也許他們在beforeOpen事件中以某種方式進行了修改。 在我的BIRT框架,我已經定義了一個函數是這樣的:

此功能可以被稱爲trace.afterOpen。 然後,我可以在數據集中的afterOpen事件中使用這樣的:

trace.afterOpen(this); 

您還可以設置BIRT的內部記錄爲:最;這將生成大量的調試消息,並且應該包含每個執行AFAIK的SQL語句的綁定變量。

+0

I參數的日誌和值是否反映爲傳遞給查詢的參數,而不是實際傳遞給DB的取整值我記錄了各種內部BIRT函數之後的參數值(儘管我不確定它們被調用),但參數的值仍然是作爲查詢的一部分發送的,而不是四捨五入的值 – 2014-11-06 08:46:27