Birt报告参数为WHERE-Clause

时间:2012-01-20 12:23:09

标签: sql-server birt

我有一份BIRT报告,其中我想要显示一定数量的数据(Hi Capt.Bhisvious)。到现在为止还挺好。现在数据位于MSSQL数据库中,并且我使用jdbc驱动程序连接到它,这一切都完美无缺。

现在的问题是我想将“查询”报告参数传递给此报告。我知道如何以下列方式将参数传递给报表: 查询:

SELECT * FROM table WHERE field = ?

然后在数据集 - 参数中定义参数。

现在我要做的是以下内容:

SELECT * FROM table ?

我的参数包含类似

的内容
WHERE field1 = 'xyz' AND field2 = 2

问题是BIRT会在每个String-Parameter的开头和结尾自动添加单引号,以便最终查询看起来如此:

SELECT * FROM table 'WHERE field1 = 'xyz' AND field2 = 2'

这导致MSSQL由于显而易见的原因无法处理查询。 你怎么解决这个问题?

提前致谢

1 个答案:

答案 0 :(得分:1)

关于SQL注入风险,您可以写:

this.queryText = 'SELECT * FROM table ' + params['where_clause'].value;

beforeOpen数据集脚本中。

但我强烈建议避免这种构造,并将查询重写为Mark Ba​​nnister提出的表格,除非您100%确定输入是安全的。