【发布时间】:2014-08-18 10:24:22
【问题描述】:
我创建了一个允许选择多个值的参数类型列表框。我想在数据集中使用这个参数。我曾经使用 StoredProcdureName(?,?) 作为 SP 的参数来接受其他数据集中的值。这个过滤器的问题是,如果我选择一个或多个值,它会显示选择,但是在传递给 sp 时它只发送一个值。我该如何处理?
【问题讨论】:
-
请贴出代码
我创建了一个允许选择多个值的参数类型列表框。我想在数据集中使用这个参数。我曾经使用 StoredProcdureName(?,?) 作为 SP 的参数来接受其他数据集中的值。这个过滤器的问题是,如果我选择一个或多个值,它会显示选择,但是在传递给 sp 时它只发送一个值。我该如何处理?
【问题讨论】:
你至少应该发布你的存储过程,这样我们就可以看到这个参数是如何使用的。 BIRT 将多值参数作为 java 数组处理,这不是存储例程识别的数据类型。这就是为什么你只得到第一个项目。
因此假设该参数是“IN”子句中的SQL过滤器,我们需要将其作为逗号分隔的字符串传递给存储过程。
将您的 dataset 参数声明为 String,并且不要将其链接到 report 参数,而是根据报告参数设置默认值表达式。在此示例中,“myMultivalueParam”表示数据库中的一个数字字段:
params["myMultivalueParam"].value.join(",");
如果“myMultivalueParam”代表一个字符串,我们需要添加引号:
params["myMultivalueParam"].value.join("','");
然后在你的存储过程中使用这个逗号分隔的字符串。
【讨论】: