BIRT参数四舍五入

时间:2014-11-04 15:13:21

标签: sql-server birt

我正在将BIRT报告从版本2.6迁移到4.4,并面临一个非常奇怪的问题,如

作为查询的一部分传递的BIRT参数被舍入,即如果我将1作为参数传递,则查询执行为0,如果我将参数传递为99或101,则查询将执行100

查询 - 从table1中选择数据,其中actualID =?;

参数的数据类型是十进制(28,0)

使用的数据库是SQL Server 2012

我在BIRT函数中记录了参数的值(beforeOpen,beforeClose等),并且它总是显示与我传递的参数值一致的参数值。

请帮助我理解或指出我可以进一步调查的方向

非常感谢任何帮助

请注意 如果我将数据类型从Decimal转换为String,它可以正常工作 如果我将参数作为Query的一部分传递它工作正常但是当参数值动态替换'?'时它不起作用在查询中

1 个答案:

答案 0 :(得分:0)

您还应该在afterOpen事件中记录参数值。 也许他们在beforeOpen事件中以某种方式被修改。 在我的BIRT框架中,我定义了一个这样的函数:

afterOpen: function(ds) {
    log.debug("afterOpen DS " + ds.getName() + " inputParams=" + ds.getInputParameters().toString());
}

此函数可以作为trace.afterOpen调用。 然后我可以在数据集的afterOpen事件中使用它,如下所示:

trace.afterOpen(this);

你也可以将BIRT的内部记录设置为FINEST;这将产生大量的调试消息,并应包括每个执行AFAIK的SQL语句的绑定变量。