birt交叉报表报表开发,打印问题,有多余东西打印出来。打印也把birt交叉报表报表和时间,还有项目路径也打印出来的

6353人阅读
原文:http://xulianglly./blog/static//
00:06:42| 分类: 技术 |字号 订阅
这是我自己在学birt的时候做的记录,版本是birt2.5.2,文字功底有限,表达的很不严谨,在这里仅供大家参孝学习:
如果在这里找到有用的信息,请留下您的痕迹,如果对相同的问题有更好的解决方法,欢迎留言提示!
&&1.说明,访问数据列有三种方式,如上面的row.id,或者可以使用row[&id&],或者可以使用row[1],得到的都是数据列id.
&&2.在标题title,x轴,y轴上相应位置上设置字体为:Simsun(Founder Extended)(Simsun即为宋体),乱码问题便可得到解决。
&&3.分组chart乱码,解决方法:
Advanced-&Font-&Font family-&&Arail Unicode MS&
如果没有选择项,可直接写上去
&&4.要得到多系列的柱形图主要在于数据,要这样的数据才能形成多系列的柱形图:
name-数目-年份:
这样x轴设置成name,y轴设置成数目,分组设置成年份
&&5.怎样在柱形图上显示数字?怎样使数字显示在柱形图的顶端?
方法:在Format Chart选项下,选中Series-&Value(Y)Series-&把下方的Show Series Labels选项按钮选中即可
要想使数字显示在柱形图的顶端,则还要点击同一页面的Labels按钮,然后在Position下拉框下选择Outside就行了
&&6.why not 说明:
为什么没有使用 birt report viewer
BIRT Report Viewer 貌似做得很周到,提供如浏览,打印,export to CSV ,过滤参数的传入等一系列的快速操作.
然而细心思考过,这个viewer还是存在不少问题:
如不适用的报表传入参数方式(无输入验证,无日期控件);代码复杂,可扩展性差......
发现不少功能形同虚设,所以决心抛弃.
为什么不在.rptdesign里写sql
往往实际项目的业务总是复杂的,不希望将复杂的逻辑通过几个简单的参数传入拼凑sql来实现,再说这样调试sql也是一件麻烦的事情,也不利于SQL管理
所以我们提倡 将查询的商业逻辑放回java Manager类,然后designer负责设计数据如何排列。这样子更适合实际项目.
&&7.运行报表
我理解为编译报表文件。BIRT在渲染报表之前,要将报表编译为.rptdocument,再根据这个文件将报表渲染为HTML格式或PDF格式。
&&8.如何把java代码中参数传递给报表?在报表中又怎样获取这个参数?
答:通过这种方式给报表传参:
HashMap paramMap = new HashMap();
paramMap.put(&birtparam1&, 1);
paramMap.put(&birtparam2&, 5);
task.setParameterValues(paramMap);
设置报表参数与传递的参数同名,这样就关联起来了
数据集参数与报表参数绑定
sql语句中的“?”号对应数据集参数
&&9.做交互时在js中获取点击对象的属性值:
Action选择Invoke Script,添写下面的Script代码时,对象的属性要这样查找,不能直接写:
点击fx表达式-&在Category里面点击Chart Variables-&然后在Sub-Category里面点击Data Points-&最后在Double Click to insert里面选择对象的属性,双击它就可以加到上面的表达式中
alert(&服务名:& + categoryData + & 值:& + valueData)
&&10.第一次查询时速度特别慢
&&11.关于查询某一时间段的服务的处理试例:
private String getPageSQL(String startDate, String endDate, String serviceName) {
String queryString = & from TaskLog taskLog where taskLog.serviceInstance = & + serviceN
if((!StringUtil.isEmpty(startDate))&&(!StringUtil.isEmpty(endDate))){
queryString +=& and ((taskLog.startTime&'& +
startDate + &' and taskLog.startTime&'& +
endDate + &') or (taskLog.endTime&'& +
startDate + &' and taskLog.endTime&'& +
endDate + &')) & ;
}else if(!StringUtil.isEmpty(startDate)){
queryString += & and taskLog.startTime&'&+ startDate +&'&;
}else if(!StringUtil.isEmpty(endDate)){
queryString += & and taskLog.endTime&'&+ endDate +&'&;
queryString += & order by taskLog.taskId desc &;
return queryS
&&12.在beforeopen方法中故意拼错某一查询语句,它会在页面上把该查询语句打印出来,自己故意写的错误自己知道,此外还可以看一下其他的错误,不失为一种调试的方法。
&&13.执行成功的时间参数案例:
在data set的beforeopen方法中写下如下代码(注意SQL的拼接):
var startTime = params[&startTime&];
var endTime = params[&endTime&];
this.queryText += & where testbirt.startTime&='& + startTime + &' and testbirt.startTime&='& + endTime + &'&;
数据集中的参数设置成datatime格式,不设默认值
报表参数设置成String格式,默认值为空,非必需
然后把数据集中参数跟报表参数绑定,注意这地方数据类型不匹配,但却能正常运行,这个问题还有待研究。
&&14.Birt的JavaScript脚本简单调试
博客分类: birt
脚本JavaScriptTomcatJava应用服务器
Birt的JavaScript脚本简单调试
Birt中的js脚本不能用alert直接弹出提示,也没法用断点跟踪(至少我没发现)。用一个简单方法可以打印,在脚本里写上(有脚本的地方就可以加上这条语句,比方说dataset的beforeopen方法中)
importPackage(Packages.java.lang);
System.out.println(&test===&);
就可以再控制台里打印出来,进行简单的调试了。
需要注意的是,必须要把报表部署在tomcat下才能打印,用Preview预览模式不能打印。
调试样例:
importPackage(Packages.java.lang);
System.out.println(&test===*********************************&);
var startTime = params[&startTime&];
var endTime = params[&endTime&];
System.out.println(&startTime: & + startTime);
System.out.println(&endTime: & + endTime);
if(startTime != null && (!&&.equals(startTime)) && endTime != null && (!&&.equals(endTime))) {
this.queryText += & where tasklog_2011_8.startTime&='& + startTime + &' and tasklog_2011_8.startTime&='& + endTime + &' or tasklog_2011_8.endTime&='& + startTime + &' and tasklog_2011_8.endTime&='& + endTime + &' group by serviceInstance,status&;
} else if(startTime != null && (!&&.equals(startTime))) {
this.queryText += & where tasklog_2011_8.startTime&='& + startTime + &' group by serviceInstance,status&;
} else if(endTime != null && (!&&.equals(endTime))) {
this.queryText += & where tasklog_2011_8.endTime&='& + endTime + &' group by serviceInstance,status&;
this.queryText += & group by serviceInstance,status&;
System.out.println(this.queryText);
注意Packages
在应用服务器下运行
最新调试方法:
新建一个报表,并加入一个元素,在其onPrepare中写如下代码
importPackage ( Packages.java.io);
importPackage(Packages.java.lang);
System.setOut(new PrintStream(new java.io.FileOutputStream(&c:\\logFile3.txt&)));
System.out.print(&1&);
&&15.设置数据集参数时,有时候默认值老是出错,这时候可以不设默认值,如果还有问题就把报表参数改成非必须的。
&&16.把数据库中的true和false通过计算列的形式转化成:成功和失败
在数据集中新增计算列,表达式写法:
row[&status&].equals(&true&)?&成功&:&失败&;
也可以这样写:
var temp = row[&status&];
var result = &&;
if(temp.equals(&true&)) {
result = &成功&;
result = &失败&;
注意最后不要有这条语句,否则会报错
&&17.Birt中使用计算列获得星期几的方法
var day=row[&DiaryDate&].getDay();
var day1=&&;
switch(day){
case 1:day1=&&星期一&&;
case 2:day1=&&星期二&&;
case 3:day1=&&星期三&&;
case 4:day1=&&星期四&&;
case 5:day1=&&星期五&&;
case 6:day1=&&星期六&&;
default 7: day1=&&星期日&&;
内部机制自动会把day1返回给对应变量,不用专门写return语句
&&18.实现交互的时候可以用Invoke Script
里面直接写这样的代码就可以实现给jsp页面上对应的id赋值
document.getElementById(&idName&).value=Category Data
而且在这里面可以直接调用jsp页面里面定义的js方法,以此来实现交互。
&&19.birt中如果自己接接sql的话,不需要再在dataset里面设置参数了,在动态拼接sql里面可以直接取到,唉,这个知识点很重要啊,解决了我的大问题。
&&20.数据源,数据集,参数,在不同的报表之间都是可以复制的
&&21.报表不显示和报表只显示一部分:
报表不显示是因为生成图片格式不能设置成SVG格式的,改成BMP或JPG都行
报表只显示一部分,根据打印outstream,可知是报表本身属性的设置问题,一步一步深入,最后得到结论:
Properties-&Report Design-&Layout preference-&设置成Auto Layout,之前不能完全显示就是因为这个值设置成了Fixed Layout
注意这个属性是加载报表的面板的属性,也就是通常的面板布局,要点击报表以外的部分才能选中这个面板,然后就可以修改属性值了。
注意,在birt2.5中,新建面板时,Layout属性默认为Fixed,要把它改为Auto
&&22.怎样设置时间格式为:yyyy-MM-dd hh:mm:ss
注意custom是自定义的意思
最近在研究Birt报表时遇到内存溢出的问题,PermGen Space区域的溢出,最后通过百度和谷歌两位大哥的帮助,把问题算是解决了,但是却引发了在项目中使用Birt的性能问题。
众所周知,PermGen Space区溢出是系统加载的class和meta信息过多引起的,经常发生在jsp编译的时候,因为PermGen Space大小固定,且GC不在系统运行期间回收垃圾,所以PermGen Space设置再大,也有用完的一天,唯有换JDK才能彻底根治。
但是合理的设计,是可以减少对PermGen Space的占用的,所以想听听高手们在使用Birt的时候,哪些注意事项或方法可以提高Birt的性能、减少其对内存的侵占,毕竟要换JDK也是要付出一定代价的。
&&24.乱码问题:
1 服务器配置
2 加过滤器
3 页面jsp配置utf_8
&&25.关于Birt报表中文传值乱码的处理[转]
通过url传参遇到中文出现乱码的解决办法
1.使用eclipse提供的runtime viewer.
2.使用超链方式查看报表.
3.使用tomcat.
具体解决办法:
修改tomcat的server.xml文件,在Connector元素中增加属性useBodyEncodingForURI=&true&
并且,url中的中文参数必须事先转码.
String param=java.net.URLEncoder.encode(&公用信息表&,&UTF-8&);
&a href=&../birt/frameset?__report=privilegerpt.rptdesign?m=&%=param%&&&查看&/a&
&&26.两次请求同一个方法要注意缓存问题,比方说上次发送的请求获得的serviceInstance和status,它们的值会放到session中,在下次再次请求时本来serviceInstance和status都应该为空的,由于上次的请求,它们的值还在session中放着,所以导致这次它们仍不为空,这就存在潜在的问题。
&&27.两个困扰我很久的问题:
第一个问题是:
怎样把时间格式定义成这样:
我用自定义的形式定义的,后面总要带着上午或下午,怎么能把上午、下午去掉,显示24小时制的时间格式
第二个问题是:
表头和表里面的数据中文乱码
预览的时候正常,但在展示的时候显示乱码,这到底是怎么回事?
解答:第一个问题可以说是不影响程序的问题,只是显示的一种形式,跟查询没有关系,因为查询条件是从jsp页面传进去的(24小时时间制),数据库中也是24小时时间制,报表上的形式只是一种显示形式,无关紧要。
想解决也简单:
自定义格式:yyyy-MM-dd HH:mm:ss
注意HH是大写,大写表示24小时制,小写表示12小时制
第二个问题,是因为得到的outstream编码格式不对,只要对它编码就行了,调用ByteArrayOutPutStream的toString(&UTF-8&)方法,然后把返回的值放到html框架里面就不会乱码了。
&&28.birt运行时报出警告
警告: handle type: org.eclipse.birt.report.model.api.OdaDataSetHandle
20:58:44 org.eclipse.birt.report.data.adapter.impl.ModelAdapter adaptDataSet
警告: handle type: org.eclipse.birt.report.model.api.OdaDataSetHandle
20:58:44 org.eclipse.birt.report.data.adapter.impl.ModelAdapter adaptDataSet
警告: handle type: org.eclipse.birt.report.model.api.OdaDataSetHandle
在birt运行时后台总是报出警告 但是页面显示正常,不知大家有没有遇到过这种情况
把birt 的日志级别改高一些,在示例工程的web.xml里有配置。
在web.xml中将BIRT_VIEWER_LOG_LEVEL级别调成 SEVERE后 后台就没有了
上面是birt viewer的方式,若是birt api的方式只要在birtengin里加一句代码就可以了:
config.setLogConfig(sc.getRealPath(&/logs&), Level.SEVERE);
&&29.//保存信息到Session中
private void saveSessionInfo(HttpServletRequest request, HttpServletResponse response, List&String& timearray) {
CacheManager cacheManager = CacheManager.getInstance();
if (cacheManager.cacheExists(&activeLists&)) {
Cache cache = cacheManager.getCache(&activeLists&);
cache.put(new Element(request.getSession().getId(), timearray));
request.getSession().setAttribute(&timearray&, timearray);
&&30.迭代器的使用:
List&String& timearray = new ArrayList&String&();
System.out.println(timearray);
//输出ArrayList中的数据
Iterator&String& it = timearray.iterator();
for(;it.hasNext();) {
Object objstr = it.next();
System.out.println(&****& + objstr);
&&31.[birt2.5]如何利用日志和控制台调试报表
1)输出文件的方式
l 在报表的initialize脚本方法中,添加如下代码:
importPackage( Packages.java.io );
fos = new java.io.FileOutputStream( &c:\\logFile123.txt& );
printWriter = new java.io.PrintWriter( fos );
l 在afterRender脚本方法中,添加如下代码:
printWriter.println( &afterRender:&);
printWriter.close( );
l 在其它脚本方法中,通过调用printWriter来记录日志。
printWriter.println(&helloworld&);
2)打印控制台信息
Packages.java.lang.System.out.println(&print&+record.get(&NAME&));
&&32.要把生成的图片定期删掉,可以把图片专门放在一个目录下,然后在程序中控制让它每隔一段时间清理掉图片目录下的所有文件
&&33.应用程序中导出图片的路径必须这样写:
&img src=\&http://localhost:8081/webmonitor/custom1beaa8e1.bmp\&/&
用localhost:8081模式
&&34.应用程序即main类型程序,用文件系统FileOutputStream
web程序用ServletOutputStream
&&35.遇到版本不兼容的问题,一般是遇到高版本的报表文件,可以把高版本的头信息改成当前版本的,
低版本的报表文件可以直接打开(修改后重新保存才能生效)
&&36.可以调整报表的宽度和高度以适应导出pdf文件的要求,也可以设整单元格的宽度以实现显示全部内容
&&37.birt中的居中显示:
选中整个表格或某个单元格-&然后选择中间下方的Properties选项卡-&依次展开:Table-&Text-&Text alignment(左右居中)-&打开下拉框,选择Center即可。
Vertical alignment(上下居中)原理相同
&&38.隐藏与显示报表工具栏,导航栏
webcontent\birt\pages\layout\FramesetFragment.jsp里找到下面这句:
Mask.setBaseElements( new Array( birtToolbar.__instance, navigationBar.__instance, birtReportDocument.__instance) );
birtToolbar.__instance报表工具栏,就是上面有打印,导出图片按钮的那行。
navigationBar.__instance导航栏,就是有下一页,多少页什么的。
在里只要new Array去除相应的就行了。
如果只是要去掉导出按钮和打印按钮,直接在url后面加参数__toolbar=false就可以了
http://localhost:8081/birtserver2.5/frameset?__report=pagebreak.rptdesign&__toolbar=false
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:27872次
排名:千里之外
原创:14篇
转载:21篇
(1)(22)(13)访问量 - 4696
303112345678910111213141516171819202122232425262728293012345678910
哈哈哈--报表爱好者
阅读排行榜
评论排行榜
本文标签: &&
报表深度解析BIRT报表算是比较常用的报表开发工具,但是近年来,BIRT报表在企业中的使用率却远远低于FineReport(以下简称FR),那么这是出于什么原因呢?通过对BIRT的学习途径、报表功能和技术支持等方面的各项熟悉,我们来一起探索这个问题的答案。BIRT百度百科对BIRT上对BIRT的解释如下:BIRT报表是一款非常流行的开源报表开发工具。拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,生成图片,导出word,html分页样样齐全,样式和script设置简单。BIRT的安装birt project的安装分为两种,一种是下载已经安装好birt的eclipseIDE环境,配置环境变量之后使用;&另外一种是插件安装方法,需要配置环境变量,下载eclipse环境以及下载birt所需要的插件,将插件安装到eclipse中使用。安装相对负责,相对而言,FR的安装包是一个exe【Mac系统为dmg格式安装包】,无需配置环境,双击即可安装。如何学习BIRT一般企业级用户比较多的产品都有相对丰富的产品学习资源和学习途径,反观报表工具FR、商业智能工具FineBI都是如此,有非常详细的帮助文档、教学视频,活跃度很高的技术交流论坛、以及及时响应用户需求的在线技术支持人员。反观BIRT,在学习资源、学习途径和技术交流平台上的表现却很差强人意:谷歌搜索BIRT的学习资源,发现供国内BIRT使用者使用的资源很少,比较容易获得的资源是一个网友自己翻译成中文的BIRT开发手册【各种错漏就不必说了,关键是资料不齐全】;视频资料更少,官方视频是老外录的Flash格式的视频【由于英语不太好,又没有字幕,基本上听不懂在说什么】。国内没有BIRT的官方技术交流平台和技术支持人员,仅有的几个网友自发组件平台上,问题的更新还停留在2012年以前,活跃度很低。BIRT具体功能解析数据源以FR为例,看看企业需要的数据源支持:数据库数据集:以JDBC或者JNDI的方式来连接数据库,FR中内置了主流数据库的JDBC驱动,包括oracle,mysql,sqlserver,sybase等等。EXCEL数据集:Excel数据集。文本数据集:存储在文件中的数据XML数据集:数据源是一系列的XML文件。程序数据集:因为FR是通过AB/StractTableData接口来读取数据源的,而上述所有的数据来源都实现了该接口,因此用户只要实现了AB/StractTableData接口,也就可以用自定义类型的数据源(程序数据集),FR报表引擎就能够读取自定义的数据源作为报表数据源使用。内置数据集:FR内置数据集SAP数据集:通过JCO方式连接SAP系统,通过调用BAPI FUNCTION来直接取数。多维数据库:多维数据库BIRT支持数据源:Classic Models Inc.Sample DataBase ———BIRT样本数据库。Flat File Data Source ———从CSV、SSV、TSV、PSV四种格式的文件获取数据源,不支持XLS格式文件JDBC Data Source ——— 通过配置jdbc连接数据库,连接时需要添加驱动Script Data Source ——— 通过编写脚本获取数据源。Web Services Data Source ——— 通过web service方式获取数据源。XML Data Source ——— 从xml文件获取数据源。通过以上对比可知,BIRT对很多数据源支持度不够,而随着企业对于信息化的要求提高,系统中所存储的数据格式复杂度也会更加增高,对报表工具的数据源支持度要求会越来越高,BIRT在这方面远远达不到很多企业的要求。报表具体布局对比企业在选择报表解决方案时,不仅要考虑报表工具的功能和服务,还要考虑它是否易学、易用。国内用户都非常熟悉Excel,也经常用它做些简单的报表。FR的报表设计如下:FR报表的设计风格和Excel相似(当然二者本质并不一样),整个设计窗口是格子式的可视化编辑界面。用户可以借助这个界面所见即所得的设计出任意复杂的表样,免去了传统条带式设计数据对齐的繁琐。BIRT的报表设计界面如下:BIRT的报表设计界面是传统的条带式界面,在设计报表样式,需要的行和列需要画出;对表头比较复杂的中国式报表来说,各种行列对齐也比较复杂;不支持excel的行列无限扩展,表现之一是不支持XLS,这对习惯了excel的用户不甚友好。权限功能模块BIRT没有权限方面的辅助功能,想要实现权限,需要费力气自己写实现语句。一般对企业级用户来讲,出于文件机密性的考虑,在企业员工访问企业平台时,需要通过角色对员工的权限进行限制。在BIRT中,这个功能实现起来比较困难。移动端苹果Ipad、iphone、 Android的流行加速了移动互联网时代的到来,人们用在移动端的时间越来越多,触摸式手机、平板电脑,使用手机、平板电脑进行商务处理已经成为了一种不可阻挡的趋势,报表的移动化也成了一个必然的企业用户需求。FR基于此提出了的概念,并取得了一些不俗的成果,使得报表可以在手机上进行展示,方便快捷:FR移动端采用原生渲染技术,专为移动处理器加速优化,相比传统的HTML报表,渲染的速度、交互操作的流畅度均有大幅提升。支持IOS、Android,可以进行设备管理。移动端动态效果好,美观度高,可根据不同屏幕分辨率、不同类型的设备自适应布局显示,支持数据填报和校验,支持缩放、联动、钻取、翻页等交互效果。支持二维码扫描添加服务器。相对于FR成熟的移动端,BIRT至今为止未开发出移动端平台。填报FR作为国内企业最亲睐报表产品,对填报的支持度则非常高:FR支持表单补录、回填、导入自匹配、行式添加删除、非行式添加删除、批量增加删除、综合报表增删改、数据补录汇总(即时计算)等样式,支持Excel导入、数据批量导入、在线录入、离线录入。可以进行及时校验、提交校验、强制提交和js校验。BIRT作为国外报表产品,更多的侧重点在数据的展示上面,没有填报功能。而在国内,在国内的企业级用户汇总,没有填报功能的报表产品基本上无法使用。打印众所周知,多数报表展现浏览之后是需要打印出来的,打印报表需要调整比例、水平对齐方式、分栏数、打印页和打印缩放等等功能。FR提供了直接打印的功能,很好的解决了各种打印的可视化配置,让用户可以随心所欲的打印出需要的纸面报表。FR的打印功能是相当强大的,独创Flash打印,并且支持PDF、Applet、Activex等多种打印方式。其中由于目前几乎所有的网页都安装了flash插件,所以几种打印方式中,Flash显得尤为便捷。BIRT做为开源报表工具,出于工作量等等考虑,只提供间接的pdf方式打印。这样的问题是客户端还要安装pdf软件,而且用户定制、自由配置打印的需求基本不太可能实现了,让BIRT的易用性大打折扣。中文支持对于报表工具,对于中文的支持不仅表现在支持中文数据库和中文报表,也表现在设计器对于中文的支持。FR是国内厂商的产品,对中文数据、报表的支持没有任何问题,设计器对中文的支持也很完美。而BIRT做为国外开发的开源报表工具,虽然提供了中文插件的补丁包,还是难免会有细节上的瑕疵。比如说,BIRT报表和快逸报表都提供了表达式编辑器,但是BIRT报表表达式编辑器对中文的支持却有些问题。当我们输入concat(”订单状态”,dataSetRow[“STATUS”])这样的表达式,保存之后再打开表达式编辑器的时候,却变成了乱码,如下图:这样的细节会给报表用户带来很大的不便:简单的表达式还好,复杂的表达式有上百上千个字符,面对一堆乱码如何是好?技术服务支持FR厂商为帆软软件有限公司,总部在南京,服务网络遍及全国,设有如下服务网点:京津区:北京、天津;东北区:沈阳、长春、哈尔滨;苏皖区:南京、无锡、苏州、合肥;华北区:济南、青岛、太原、郑州、石家庄;上海区:上海;华中区:武汉、长沙;西北区:西安、乌鲁木齐、银川;闽浙区:杭州、福州;西南区:成都、昆明、贵州;华南区:深圳、广州、南宁。线下定期还会有免费培训。线上则有免费腾讯课堂培训、QQ技术支持、技术论坛【即帆软论坛】、报表交流群【I群,Ⅱ群,Ⅲ群,在线培训群】。BIRT由于是国外开源产品,国内只有代理,无直接技术支持服务。产品下载BIRT下载地址:http://download.eclipse.org/birt/downloads/FR下载地址:
作者该类其他博文:> birt动态sql传递参数Birt参数在IN中的传递我们在用Birt做报表开发时,有时需要给In传
birt动态sql传递参数Birt参数在IN中的传递我们在用Birt做报表开发时,有时需要给In传
ugvtadp & &
发布时间: & &
浏览:5 & &
回复:0 & &
悬赏:0.0希赛币
birt动态sql 传递参数
Birt参数在IN中的传递我们在用Birt做报表开发时,有时需要给In传递参数,此时我们就不能用普通的参数传递方法,而需要做一定的处理。如有下面的SQL select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score from score s,subject sub where s.subject_code = sub.subject_code and s.stu_code in ('','') and s.subject_code in (002) 需要把stu_code 和subject_code 作为参数从外面(页面)传递进来。其方法有: 第一种方法: 数据源的建立就省略了。重点是我们在建立数据集时直接在"Property Binding"中进行SQL拼装,即为: this.queryText = "select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score from score s,subject sub"+ " where s.subject_code = sub.subject_code and s.stu_code in (" + params["stu_code"].value + ") and s.subject_code in ( "+params["subject_code"].value+ ")" ,如下图: Birt参数IN中数据集.jpg其中参数stu_code,subject_code和以前一样的建法。最后我们在浏览输入参数时如下图: Birt参数结果.jpg第二种方法,其实与第一种是大同小异,总体思路就是拼SQL, 最后只需要对SQL进行拼装,点中相应的DataSet,在Script中写相应的脚本,如:this.queryText = this.queryText + " ("+ params["stu_code"].value +")" + " and s.subject_code in ("+params["subject_code"].value + ")",预览与上面的一样,就不重复了,到此,在In中传递参数就结束了。希望对大家有所帮助。
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 birt交叉报表 的文章

 

随机推荐