站内搜索

返回   安讯中国 > 自由讨论区 > 百灵报表(BIRT)
注册
忘记密码?
论坛帮助 日历事件 搜索 今日新帖 标记版面已读

回复
 
LinkBack 主题工具 搜索本主题
  #1 (permalink)  
旧 2008-12-4, 05:06 PM
Junior Member
 
注册日期: 2008-11-28
帖子: 3
积分: 230
默认 birt2.3参数多值问题

在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中要做什么变化吗?
不知说清楚了没有,请各位大侠指点迷经。。。先谢谢了
回复时引用此帖
  #2 (permalink)  
旧 2008-12-5, 09:36 AM
Junior Member
 
注册日期: 2008-11-28
帖子: 3
积分: 230
默认

怎么就没有高手指点一下呢
回复时引用此帖
  #3 (permalink)  
旧 2008-12-5, 11:18 AM
Tianli 的头像
Super Moderator
 
注册日期: 2008-3-13
住址: Shanghai
帖子: 399
积分: 8,161
默认

Query中的参数不支持link到allow multiple value的parameter

FYI
https://bugs.eclipse.org/bugs/show_bug.cgi?id=235252
__________________
Actuate China
回复时引用此帖
  #4 (permalink)  
旧 2008-12-5, 01:03 PM
Junior Member
 
注册日期: 2008-11-28
帖子: 3
积分: 230
默认

谢谢指教,非常遗憾,是个BUG
回复时引用此帖
  #5 (permalink)  
旧 2008-12-24, 09:51 AM
Junior Member
 
注册日期: 2008-10-23
帖子: 14
积分: 251
默认

你参数中需要的值,是sql查出来的,还是外界传给它的?
回复时引用此帖
  #6 (permalink)  
旧 2008-12-29, 07:48 PM
Junior Member
 
注册日期: 2008-12-29
帖子: 22
积分: 266
默认

引用:
作者: mjianguo 查看帖子
在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 multiple values 是因为java.sql.PreparedStatement 里面不可能setParameter(position,String[] params) 接受数组这种参数, 下面那个bug 修正的是UI上提示你不能link multiple values. 如果你要接受多个参数值可以:
1. dataset 的filter 里面加 xxx in params["allow multiple values"]
2. 或者在property binding 里面写 this.query.text="手工把params["multiple"]拼起来的sql"
回复时引用此帖
  #7 (permalink)  
旧 2008-12-30, 03:54 PM
Junior Member
 
注册日期: 2008-10-23
帖子: 14
积分: 251
默认

你说的是什么情况呢?是in ('1','2','3','4')这样的吗?值的个数是不定的,对吗?
回复时引用此帖
  #8 (permalink)  
旧 2008-12-30, 04:12 PM
Junior Member
 
注册日期: 2008-10-23
帖子: 14
积分: 251
默认

我遇到一个类似的问题!是用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就发挥作用了,这就是参数多值问题的解决!
解决这个东西花了一下午时间啊,转载的朋友,注明是小哲发布的啊!呵呵!
回复时引用此帖
  #9 (permalink)  
旧 2009-1-14, 02:21 PM
Junior Member
 
注册日期: 2008-10-23
帖子: 14
积分: 251
默认

引用:
作者: Tianli 查看帖子
Query中的参数不支持link到allow multiple value的parameter

FYI
https://bugs.eclipse.org/bugs/show_bug.cgi?id=235252
可能是个bug,但是不要把一切问题归结为bug,那样的话!这工具什么时候没bug你在用吧!换句话,所有的软件都不能用了!
回复时引用此帖
  #10 (permalink)  
旧 2009-2-1, 04:44 PM
Junior Member
 
注册日期: 2008-12-19
帖子: 10
积分: 236
默认 我之前也发现这个问题

正在求解决方法,我后来用script实现了。
回复时引用此帖
回复


主题工具 搜索本主题
搜索本主题:

高级搜索

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

论坛启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用


服务条款 | 隐私政策
安讯中国 上海浦东新区浦东南路1271号华融大厦12层
电话:(+86)21-58826388   发送邮件联系我们  沪ICP备06010344号
Actuate Corporation © 2008
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios

Content Relevant URLs by vBSEO 3.1.0