birt开发拾掇(个人)
birt开发整理(个人)
- 解决问题的网址:
- http://www.birthome.cn
- 1、设置table隔行变色
- 新建table,选择表格,点script,在onprepare事件里写:count=0;
- 再选择明细行,在明细行script oncreate方法里写:
- count++;
- if(count%10 ==0){
- style.pageBreakAfter ="Always"; //设置每页显示10行
- }
- if(count%2 !=0){
- style.setBackgroundColor("white");
- }else{
- style.setBackgroundColor("#123456");
- }
- 2、dataset 里写上:
- select *
- from CLASSICMODELS.CUSTOMERS
- where CUSTOMERNUMBER = ?
- 参数绑定到自建立的参数:no,
- 在dataset beforeopen里设置:
- var no ="103";
- reportContext.setParameterValue("no",no);
- 这样就可以设置报表的参数值了。
- 3、birt动态参数的处理
- (点击创建好的Data Set,然后点击右侧Data Set的Script页面,在beforeOpen里面写入脚本)
- 本例实现根据用户选择不同的查询条件查询显示报表。
- 按我的报表业务来演示。
- 我的报表要查询条件是起始时间,结束时间,站点,有票,没票,55以上,55以下
- 分别设置报表参数对应这几个查询条件。start,end,station,ticketed,unticketed,up55t,below55t
- 其中有票,没票,55以上,55以下只能选择一种情况
- 页面代码我就不写了,大概就是如果选择哪个就设置哪个值为1,
- 在报表的数据集的script里写上:
- var condition = "and 1=1 order by Weight desc";
- var start = reportContext.getParameterValue("start");
- var end = reportContext.getParameterValue("end");
- var ticket = reportContext.getParameterValue("ticketed");
- var unticket = reportContext.getParameterValue("unticketed");
- var up55t = reportContext.getParameterValue("up55t");
- var below55t = reportContext.getParameterValue("below55t");
- var st = reportContext.getParameterValue("station");
- var station = "and DetectionStationNo = '"+ st +"'";
- if(st == "all"){
- station = "and 1=1";
- }
- if(ticket==1){
- condition = " and VehClass=1 order by Weight desc";
- }
- if(unticket==1){
- condition = " and VehClass=0 order by Weight desc ";
- }
- if(up55t==1){
- condition = " and Weight>55000 order by OverPercent desc";
- }
- if(below55t==1){
- condition = " and not Weight>=55000 order by Weight desc";
- }
- 然后就是this.queryText =" ... .." + condition;
- 当然有时候我们可能是一种情况就是选择一类,也可以选择全部,比如上面的站点,可能选择所有站点,那就在页面如果用户选择全部,就个特定值过来,我是指定如果是全部,就不加这个条件,1=1
- 大概就这些,大家自己试试。
- 4、表格显示行号
- 在表格明细行的一列,添加数据,然后写上 row.__rownum+1; 数据类型选整数。
- 5、birt中打印测试
- 使用保存到文件的形式,代码如下:
- importPackage( Packages.java.io );
- out = new PrintWriter( new FileWriter( "c:/test/info.txt", true ) );
- out.println( "println "+ 变量);
- out.close();
- 当然这里没有判断创建文件,先建立个文件便是,或者也可以判断文件存在否,不存在创建一下。
- 6、birt 中写入Java代码:
- importPackage( Packages.java.io );
- out = new PrintWriter( new FileWriter( "c:/test/info.txt", true ) );
- out.println( "println "+ 变量);
- out.close();
- 这样可以在birt里面写入所有想要的Java代码
- 7、脚本里面的注释
- 用 // 或者 /**/
- 8、自定义jar:
- 在birt中可以加入自定义的jar
- 右键点击项目 Properties -> Report Design -> Classpath -> 按钮[Add External JARs]
- 然后加入自己的jar
- 在birt的Script里面引入:
- importPackage( Packages.java.io );
- 例子:我写了一个com.wanmei.birt.test.Birt.java 的类,如下
- public class Birt{
- public String getThreadName(){
- return Thread.currentThread().getName() + "-thread";
- }
- }
- 在birt的script中写入
- importPackage( Packages.java.io );
- importPackage( Packages.com.wanmei.birt.test );
- var birt = Birt();
- var threadName = birt.getThreadName();
- out = new PrintWriter( new FileWriter('c:/info.txt', true ) );
- out.println('threadName: ' + threadName);
- out.close();
- 这样就可以在文件 c:/info.txt 中看见打印的内容。
-