|
|
|||
|
|||
|
通过页面传参数给报表,在数据集的script中的beforeOpen中通过获取参数来重新组装sql语句,主要是拼查询条件,并且是在页面上把查询条件拼成一个字符串后作为参数传过来,现在遇到的问题是在页面中传过来一个" and t.code like '1234%' "时出现问题,最后发现应该是百分号的问题,在beforeOpen中是通过下面方式组装sql的:
var mycondition = params["condition"]; sql=select ........; sql+=mycondition; .......... 试过在beforeOpen这里直接写上这个条件时执行没问题,但就是当作参数穿过就出错,是不是在var mycondition = params["condition"];获取参数时百分号被什么处理了,请高人指点,多谢了! |
|
||||
|
你用的哪个版本?只要你SQL脚本正确的话不会有问题的。看看sample report
__________________
Actuate China |
|
|||
|
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'这个条件(注意不带%),不知道我说明白了没有,请问这是什么原因呢? 再次感谢!!! |
|
||||
|
如果这样传到URL里的话是不是%需要做一下转义啊。%在URL里的功能是encode/escape 其他字符的,所以用%25代表%试试
__________________
Actuate China |
![]() |
| 主题工具 | 搜索本主题 |
| 显示模式 | |
|
|