|
|
|||
|
|||
|
在birt2.3中,我用JDBC连数据库,创建数据集,创建参数(注:我用的是list box,Dynamic,此时没有选Allow Multiple Values),然后edit数据集,在Query中加入?,
在Paremeters中加入参数,Preview results ,没有问题。 此时我将一个参数中的Allow Multiple Values选中,Preview results时报表中就没有值了? 查看原因:edit数据集,点击Parmeters进入查看参数时,在上面显示此行错误:The report parameter 'ipadd' allows multiple values, which can not be used to link with data set parameter. 请问我该如何使用Allow Mulitple Values此选项?在SQL中要做什么变化吗? 不知说清楚了没有,请各位大侠指点迷经。。。先谢谢了 |
|
||||
|
Query中的参数不支持link到allow multiple value的parameter
FYI https://bugs.eclipse.org/bugs/show_bug.cgi?id=235252
__________________
Actuate China |
|
|||
|
引用:
1. dataset 的filter 里面加 xxx in params["allow multiple values"] 2. 或者在property binding 里面写 this.query.text="手工把params["multiple"]拼起来的sql" |
|
|||
|
我遇到一个类似的问题!是用js脚本解决的!
起初我有这样一个数据集: select * from table1 where column1 in (params["psnname"]); 这里的参数params["psnname"]传进来的数量是一个变动的,个数不定! 你想啊,in过程是一个特殊的过程; 最后研究发现需要借助脚本函数function和数据集中的“属性绑定”功能; 还拿上面的语句为例, 1.在数据集的查询里写上不带任何条件的一个select: select * from table1 2.在数据集的“属性绑定中”写入下面内容,对应你的语句去做相应的修改: function pm(n){ var s,ss; var bbb=""; var s = n; if(s!=""){ ss = s.split(","); for( i=0;i < ss.length;i++){ if(ss.length==1){ bbb = ss[i] ; } else{ if (i==ss.length-1){ bbb += "'"+ ss[i]; } else if (i>=1){ bbb += "'" + ss[i] + "'," ; } else{ bbb += ss[i] + "'," ; } } } return (bbb); } } "select * from table1 where column1 in ('" + pm(params["psnname"]) +"')" 这里定义一个pm函数,这个函数的功能是将你要输入的条件转换成在语句中可以in的字符串; 如,你要传过来三个值:a,b,c (格式必须这样) 救过pm后,就会变为:'a','b','c' 这样在语句中的in就发挥作用了,这就是参数多值问题的解决! 解决这个东西花了一下午时间啊,转载的朋友,注明是小哲发布的啊!呵呵! |
|
|||
|
引用:
|
![]() |
| 主题工具 | 搜索本主题 |
|
|