站内搜索

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

回复
 
LinkBack 主题工具 搜索本主题 显示模式
  #1 (permalink)  
旧 2008-11-28, 12:16 AM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认 birt动态生成sql时参数中带%号的问题

通过页面传参数给报表,在数据集的script中的beforeOpen中通过获取参数来重新组装sql语句,主要是拼查询条件,并且是在页面上把查询条件拼成一个字符串后作为参数传过来,现在遇到的问题是在页面中传过来一个" and t.code like '1234%' "时出现问题,最后发现应该是百分号的问题,在beforeOpen中是通过下面方式组装sql的:
var mycondition = params["condition"];
sql=select ........;
sql+=mycondition;
..........
试过在beforeOpen这里直接写上这个条件时执行没问题,但就是当作参数穿过就出错,是不是在var mycondition = params["condition"];获取参数时百分号被什么处理了,请高人指点,多谢了!
回复时引用此帖
  #2 (permalink)  
旧 2008-11-28, 09:11 AM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认

知道解决办法的朋友请帮下忙,多谢了!
回复时引用此帖
  #3 (permalink)  
旧 2008-11-28, 10:39 AM
Tianli 的头像
Super Moderator
 
注册日期: 2008-3-13
住址: Shanghai
帖子: 395
存款: 5,054
默认

你用的哪个版本?只要你SQL脚本正确的话不会有问题的。看看sample report
上传的附件
文件类型: rptdesign samplereport.rptdesign (23.4 KB, 9 次查看)
__________________
Actuate China
回复时引用此帖
  #4 (permalink)  
旧 2008-11-28, 02:28 PM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认

非常感谢你的回复,我用的是BIRT2.3,我试试你给的那个例子!
回复时引用此帖
  #5 (permalink)  
旧 2008-11-28, 03:17 PM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认

Tianli:
试了一下你给的那个例子,最后发现问题是这样的:当在BIRT弹出的参数输入框中输入带%的参数时,执行起来没问题。但是当我在页面通过一个URL,比如我通过下面这种方式:
sqlWhere = " CUSTOMERNAME like 'Atelier%'";
src="<%=request.getContextPath()%>/run?__report=report\\test\\samplereport.rptdesign&condition="+sqlWhere;
这种方式传参数时,其实BIRT并没有获取参数,而是还照样弹出输入参数的对话框,其实我在工程里面是把参数condition中的“Is Required”属性去掉了,选择了“Hidden”属性,为了在页面上不弹出参数输入对话框。这时其实BIRT根本就没有获取到参数,所以就报错了,然而我要是把sqlWhere = " CUSTOMERNAME like 'Atelier%'";中的%号去掉,就没问题了,BIRT就能正确获得CUSTOMERNAME like 'Atelier'这个条件(注意不带%),不知道我说明白了没有,请问这是什么原因呢?
再次感谢!!!
回复时引用此帖
  #6 (permalink)  
旧 2008-12-2, 09:53 AM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认

没人知道吗???还是大家都没有试过或者有其它实现方法???
回复时引用此帖
  #7 (permalink)  
旧 2008-12-2, 03:37 PM
Tianli 的头像
Super Moderator
 
注册日期: 2008-3-13
住址: Shanghai
帖子: 395
存款: 5,054
默认

如果这样传到URL里的话是不是%需要做一下转义啊。%在URL里的功能是encode/escape 其他字符的,所以用%25代表%试试
__________________
Actuate China
回复时引用此帖
  #8 (permalink)  
旧 2008-12-3, 02:05 PM
Junior Member
 
注册日期: 2008-11-26
帖子: 6
存款: 210
默认

^_^ 确实是需要转义,按照Tianli的方法试了一下, 顺利解决。
多谢Tianli的帮助!!!
回复时引用此帖
回复


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

高级搜索
显示模式

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

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


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

Content Relevant URLs by vBSEO 3.1.0