birt-j脚本调试 & 动态sql的实现
一个比较好的birt问题解决网址: http://www.myexception.cn/h/1335919.html
1,Birt的JavaScript脚本简单调试
Birt中的js脚本不能用alert直接弹出提示,也没法用断点跟踪(至少我没发现)。用一个简单方法可以打印,在脚本里写上
importPackage(Packages.java.lang);
System.out.println("test===");
就可以再控制台里打印出来,进行简单的调试了。
需要注意的是,必须要把报表部署在tomcat下才能打印,用Preview预览模式不能打印。
2,Eclipse Birt使用动态sql创建data set
来自: http://3ccoder.iteye.com/blog/545550如这样一条sql query
- select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay
- from user_table user
- where user.second_name = ?
- and user.sex = ?
定义两个报表参数SecondName,Sex定义两个data set参数secondname,sex并与报表参数关联,用户查看报表时必须要输入姓和性别作为查询条件,
一、date set编辑器中有property binging的属性,可以在右边的query text框中设输入sql语句,或者用expression生成器辅助生成sql语句
- var query = " select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay";
- query += " from user_table user";
- query += " where user.second_name = ?"
- if(param["Sex"].value != null){
- query += " and user.sex = ‘" + param["Sex"].value + "‘";
- }
- this.text = query;
我试了一下,这种方法没有成功,可能我哪里写的有误吧。
二、利用script,在data set的before open事件中
- var query = " select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay";
- query += " from user_table user";
- query += " where user.second_name = ?"
- var sex = reportContext.getParameterValue("Sex");
- if(sex != null){
- query += " and user.sex = ‘" + sex + "‘";
- }
- this.queryText = query;
// 机构号 this.queryText+=" where SELFCUR.BIZ_MAIN_TRANS.BANK_NO=‘" + params["自助银行"] + "‘"; // 终端号或者柜员号二选一 if(params["终端ID"]!= null){ this.queryText += " and SELFCUR.BIZ_MAIN_TRANS.TERM_ID= ‘" + params["终端ID"] + "‘"; }else{ this.queryText += " and SELFCUR.BIZ_MAIN_TRANS.TELL_NO= ‘" + params["柜员ID"] + "‘"; }
这两种方法的区别在于:第一种方法是在报表run的时候创建data set,因此在data set编辑器里是没有办法像通常那样预览的
第一种方法中用param["sex"].value获得Sex参数值,而第二种方法需要利用reportContext来获取Sex参数的值
另外需要注意的是在拼凑sql时要细心,例如如果参数是String类型时前后一定要加上一对‘‘(具体的取决于所使用的数据库,笔者使用的是oracle)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。