1

我正在使用iReport 5.0尝试为SQL Server 2008R2后端开发报告。

使用户能够混合/匹配列表中的选择(多选)很重要。如果iReport中的查询是 SQL 或具有作为源的视图, 则多选效果很好——例如http://community.jaspersoft.com/questions/529890/how-do-multi-select-ireport-36

在这种情况下,WHERE $X{IN,<colname>,<iReport parameter>}启用多选的工作正常:http: //community.jaspersoft.com/questions/519185/using-x-query-parameter-type-not-supporte

但是,我想将所有输入传递给iReport查询中的SQL Server 存储过程。在这种情况下,单值输入都可以正常工作——但我一直无法弄清楚如何使用多选——似乎不起作用,否则——因为iReport多选参数必须定义为java.util.Collection - 我得到“查询中不支持的参数类型”。 $X{}

谁能指出我缺少的东西,或提出解决方法?

4

1 回答 1

1

好的——我在这方面已经走得更远了,可以展示什么对我有用:让数组 SP 参数工作(即使用 WHERE IN() 子句进行查询,其中输入参数的所有逗号分隔元素都进入在()):

1 – 从 iReport 中的调用中删除了参数名称 – 可能会混淆问题……</p>

2 – 制作 iReport 参数:CLINSTAGEGROUP_MULTI 类型:java.util.Collection

3 – 在 Jasperserver 上:/usr/local/jasperreports-server-cp-4.5.0/apache-tomcat/webapps/jasperserver/WEB-INF/classes/esapi/security-config.properties 关闭 security.validation.sql 。上 :

security.validation.sql.on=false

当使用数组/集合参数安装和运行 iReport 时,这消除了 6626 错误。

4 – 在 SQL Server 上下载并安装 fn_Split():http: //sqlmag.com/stored-procedures/treat-yourself-fnsplit

5 – 在 Jasperserver 上安装 iReport .jrxml 文件

6 – 创建 Jasperserver INPUT 对象 – 获取 clinstagegroup (s) 列表的查询,以及 Multi-Select Query 类型的 INPUT CONTROL(参数名称设置为 CLINSTAGEGROUP_MULTI – 以便识别同名的 iReport 参数)。

7 – 在 SQL Server 上设置存储过程:将 CLINSTAGEGROUP_MULTI 参数传递到 SQL Server 存储过程中,变为 @ClinStageGroup_Multi varchar(4000)

将结果集返回到 iReport 的示例查询:

选择 a,b,c, ... n

FROM VW_SpecimenAccessions

哪里 ClinstageGroup

IN(SELECT [value] FROM dbo.fn_split(@ClinStageGroup_Multi, ','))

8 – 现在可以在 jasperserver 报告上切换 clinstagegroup(多)选择,并在屏幕上显示适当的结果集。

9 – 跨过那个障碍 – 现在进入下一个……</p>

于 2013-04-23T20:57:19.833 回答