发新话题
打印

关于带参数报表的制作

关于带参数报表的制作

您好:
       我在按照使用手册做参数化报表:
              建立数据源时:select * from jor_test_area where p_id=${pid} and id=${id}
              然后在建了两个参数:如图p1
              建好的数据源如图p2
问题是我怎么吧数据源里的字段拖到表格里
附件: 您所在的用户组无法下载或查看附件

TOP

你的参数变量名称,与select里引用的不一致,你应该把参数变量名称的 "$" 符去掉,这样,数据集就会有字段名出现.

TOP

如管理员所说,我的数据源定义如下:select * from jor_test_area where p_id=${pid}
我的参数定义如下:名称:pid
                                    参数类型:int
                                    默认值:0
在保存数据源的时候后台报错: ORA-00936: 缺失表达式
经过跟踪调试,发现在SqlReader.readStart 第200行执行SQL的时候报错
执行的SQL为:select * from jor_test_area where p_id=
可见并未将{}之间的pid替换为参数默认值
通过进一步跟踪调试发现在ReportContext.evalTemplate第192行调用eval(String expr)这个方法的时候返回值是null
所以ReportContext.evalTemplate在SQL拼装的时候把null替换成了一个空字符串
也就说在ReportContext.eval 第241行调用BeanShell的时候出了问题,通过跟踪调试发现BeanShell是被修改过的
不知道是我配置有问题,还有程序有问题
另外是否可以将修改后的beanshell源码给我一份,以便我调试
谢谢

TOP

select * from jor_test_area where p_id=${has(pid)?pid:0}

用这个试试, 三元运算符, has用来判断有没有这个变量,意即,有pid这个变量,就用这个变量的值,没有则用默认值0

其实,有了这种用法,不必定义 pid参数变量了.

TOP

嗯,可以了,多谢管理员童鞋;
那个beanshell源码是否可以给我一份?

TOP

反应好快.

这位同学很好学啊,beanshell是开源的脚本引擎,我们不过作了些扩展,你可以到以下网址下载,或反编译工具。
http://www.beanshell.org/

TOP

发新话题