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 中看见打印的内容。
		
 

你可能感兴趣的:(birt)