我创建了一个参数类型列表框,可以在其中选择多个值。我想在数据集中使用此参数。我以前使用StoredProcdureName(?,?)作为SP的参数来赋值其他数据集中的值。该过滤器的问题在于,如果我选择一个或多个值,它将显示选择,但是在传递给sp时,它仅发送一个值。我该如何处理?
您至少应该发布您的存储过程,以便我们可以了解如何使用此参数。BIRT将多值参数作为java数组处理,这不是存储例程识别的数据类型。这就是为什么您只获得第一项的原因。
因此,假设此参数是“ IN”子句中的SQL过滤器,我们需要将其作为逗号分隔的String传递给存储过程。
将您的数据集参数声明为String,并且不要将其链接到报表参数,而是改为根据报表参数设置默认值表达式。在此示例中,“ myMultivalueParam”表示数据库中的一个数字字段:
params["myMultivalueParam"].value.join(",");
如果“ myMultivalueParam”表示字符串,则需要添加引号:
params["myMultivalueParam"].value.join("','");
然后在存储过程中使用此逗号分隔的字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句