birt开发拾掇(个人)

birt开发整理(个人)
Java代码  birt开发拾掇(个人)
  1. 解决问题的网址:  
  2. http://www.birthome.cn  
  3.   
  4. 1、设置table隔行变色  
  5.     新建table,选择表格,点script,在onprepare事件里写:count=0;  
  6.     再选择明细行,在明细行script oncreate方法里写:  
  7.     count++;  
  8.     if(count%10 ==0){  
  9.     style.pageBreakAfter ="Always"//设置每页显示10行  
  10.     }  
  11.     if(count%2 !=0){  
  12.     style.setBackgroundColor("white");  
  13.     }else{  
  14.     style.setBackgroundColor("#123456");  
  15.     }  
  16.   
  17. 2、dataset 里写上:  
  18.     select *  
  19.     from CLASSICMODELS.CUSTOMERS  
  20.     where CUSTOMERNUMBER = ?  
  21.       
  22.     参数绑定到自建立的参数:no,  
  23.     在dataset beforeopen里设置:  
  24.     var no ="103";  
  25.     reportContext.setParameterValue("no",no);  
  26.     这样就可以设置报表的参数值了。  
  27.   
  28. 3、birt动态参数的处理  
  29. (点击创建好的Data Set,然后点击右侧Data Set的Script页面,在beforeOpen里面写入脚本)  
  30.     本例实现根据用户选择不同的查询条件查询显示报表。  
  31.     按我的报表业务来演示。  
  32.     我的报表要查询条件是起始时间,结束时间,站点,有票,没票,55以上,55以下  
  33.     分别设置报表参数对应这几个查询条件。start,end,station,ticketed,unticketed,up55t,below55t  
  34.     其中有票,没票,55以上,55以下只能选择一种情况  
  35.     页面代码我就不写了,大概就是如果选择哪个就设置哪个值为1,  
  36.     在报表的数据集的script里写上:  
  37.     var condition = "and 1=1 order by Weight desc";   
  38.     var start = reportContext.getParameterValue("start");  
  39.     var end = reportContext.getParameterValue("end");  
  40.     var ticket = reportContext.getParameterValue("ticketed");  
  41.     var unticket = reportContext.getParameterValue("unticketed");  
  42.     var up55t = reportContext.getParameterValue("up55t");  
  43.     var below55t = reportContext.getParameterValue("below55t");  
  44.     var st = reportContext.getParameterValue("station");  
  45.     var station = "and DetectionStationNo = '"+ st +"'";  
  46.       
  47.     if(st == "all"){  
  48.             station = "and 1=1";  
  49.     }  
  50.       
  51.       
  52.     if(ticket==1){  
  53.     condition = " and VehClass=1 order by Weight desc";  
  54.     }  
  55.     if(unticket==1){  
  56.     condition = " and VehClass=0 order by Weight desc ";  
  57.     }  
  58.     if(up55t==1){  
  59.     condition = " and Weight>55000  order by OverPercent desc";  
  60.     }  
  61.     if(below55t==1){  
  62.     condition = " and not Weight>=55000 order by Weight desc";  
  63.     }  
  64.     然后就是this.queryText =" ... .." + condition;  
  65.       
  66.       
  67.     当然有时候我们可能是一种情况就是选择一类,也可以选择全部,比如上面的站点,可能选择所有站点,那就在页面如果用户选择全部,就个特定值过来,我是指定如果是全部,就不加这个条件,1=1  
  68.     大概就这些,大家自己试试。  
  69.       
  70. 4、表格显示行号  
  71.     在表格明细行的一列,添加数据,然后写上 row.__rownum+1; 数据类型选整数。      
  72.       
  73. 5、birt中打印测试  
  74.     使用保存到文件的形式,代码如下:  
  75.       
  76.     importPackage( Packages.java.io );  
  77.     out = new PrintWriter( new FileWriter( "c:/test/info.txt"true ) );  
  78.     out.println( "println "+ 变量);  
  79.     out.close();  
  80.       
  81.     当然这里没有判断创建文件,先建立个文件便是,或者也可以判断文件存在否,不存在创建一下。  
  82.       
  83. 6、birt 中写入Java代码:  
  84.     importPackage( Packages.java.io );  
  85.     out = new PrintWriter( new FileWriter( "c:/test/info.txt"true ) );  
  86.     out.println( "println "+ 变量);  
  87.     out.close();  
  88.     这样可以在birt里面写入所有想要的Java代码  
  89.   
  90. 7、脚本里面的注释  
  91.     用 // 或者 /**/  
  92.       
  93. 8、自定义jar:  
  94.         在birt中可以加入自定义的jar  
  95.         右键点击项目 Properties -> Report Design -> Classpath -> 按钮[Add External JARs]  
  96.         然后加入自己的jar   
  97.         在birt的Script里面引入:  
  98.         importPackage( Packages.java.io );  
  99.         例子:我写了一个com.wanmei.birt.test.Birt.java 的类,如下  
  100.         public class Birt{  
  101.             public String getThreadName(){  
  102.                 return Thread.currentThread().getName() + "-thread";  
  103.             }  
  104.         }  
  105.         在birt的script中写入  
  106.         importPackage( Packages.java.io );  
  107.         importPackage( Packages.com.wanmei.birt.test );  
  108.         var birt = Birt();  
  109.         var threadName = birt.getThreadName();  
  110.           
  111.         out = new PrintWriter( new FileWriter('c:/info.txt'true ) );  
  112.         out.println('threadName: ' + threadName);  
  113.         out.close();  
  114.         这样就可以在文件 c:/info.txt 中看见打印的内容。  
  115.