birt教程之交互报表
- 格式:pdf
- 大小:1.08 MB
- 文档页数:12
Birt中的分页显示报表:方法如下:1、将鼠标停在表格上,选择明细数据行(Row Detail) 。
2、选择脚本(script)标签,在onPrepare方法中加入:count=0;在onCreate方法中加入:count++;if(count % 10==0){this.getStyle().pageBreakAfter="always";}然后放到服务器上运行,则实现分页显示。
Birt中报表参数的用法(一)Birt中有两种参数,一种是数据集参数,一种是报表参数。
数据集参数一般是用于select语句中的?所代表的参数的。
而报表参数一直则是整个报表的参数,定义它的目的一方面是和数据集参数绑定,一方面是在脚本中使用它。
例如:我想设计一个报表,通过参数传递一个数据库中的表名,显示相应表中的数据,所有的表的结构一样!做法如下:先定义数据源;然后定义数据集,查询选项中的语句写select * from [要传入的表名中的任意一个];然后定义一个报表参数table,设置一个默认值(默认表名);然后再数据集的脚本的beforeOpen方法中加入:this.queryText="select * from "+params["table"]; ;完成。
如何在Tomcat中配置使得能显示Birt Chart报表:今天看了一本关于Birt方面的书,提到了在Tomcat中成功部署Birt的方法。
我试了一下,果然可以,即可访问普通报表,又可访问chart报表,而且方法也比较简单。
现介绍如下:1、从网上下载birt-runtime-version.zip并解压(/birt/downloads/build.php?build=R-R1-2_1_3-200707051847)。
2、将解压后根目录中的WebViewerExample文件加复制到Tomcat根目录下的webapps下面,并更名为birt_viewer2.2(因为我下的是2.2版本)3、复制第三方软件:iText.jar(复制到birt_viewer2.2\WEB-INF\platform\plugins\com.lowagie.itext_1.5.2.v20070626\lib 下)axis.jar axis-ant.jarcommons-discovery-0.2.jar jaxrpc.jar saaj.jar wsdl4j-1.5.1.jar(复制到birt_viewer2.2\WEB-INF\lib)prototype.js(复制到birt_viewer2.2\webcontent\birt\ajax\lib下)birt2.1,2.2版本下载下来后就包含了以上所有第三方软件,你只需到相应目录下确认一下,有的话就不用管了!若没有的话就复制到相应目录下即可。
Birt报表动态切换数据源处理方案陈鸿编写(一)通过 library实现连接数据库管理1.理解library(库):可视化旳报表开发环境。
可以理解为,在使用创立报表旳时候有诸多旳报表资源都会反复旳使用,这样为了以便管理,可以将这些部分放在library文献里,这样其他报表只要是引用这些library文献即可。
同步也以便了管理,例如当修改数据源旳时候,只要修改包括数据源旳library文献就可以了,而不必去一种个修改其他旳报表文献。
这些库可包括任何报表元素,例如样式、数据源、报表条目、脚本等等。
2.创立library:增长到应用中用于运行报表,并可以把报表以多种形式导出,如Excel、HTML分页格式、PDF、RTF等。
A.选新建LibraryB.可以看到新类似于创立报表文献旳界面C.选择所需旳驱动,并添加合法旳数据源信息。
D.创立数据源完毕后,也可以继续创立数据集。
3.使用libraryA.下面进行报表文献旳制作,制作过程中会用到这个library文献。
新建一种报表文献。
在视图里选择Library Explorer,右击,添加刚刚新建好旳Library文献。
添加完毕后记得点上面旳刷新。
B.进行引用,首先保证Data Explorer和Library Explorer同步在界面里显示,之后便是将Library 里旳我们要用旳数据拖拽到Data Explorer 自己旳报表Datasources中。
便完毕了引用数据源。
假如Library中尚有其他我们要引用旳部分也是同样去操作。
4.在java中修改birt报表library旳数据源// 修改.rptlibrary内旳数据源信息public void setDataSource(String rptdesignPath) {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null;InputStream is = null;String datasource = null;Document doc = null;String EncodePsd = null;try {db = dbf.newDocumentBuilder();try {is = new FileInputStream(rptdesignPath);try {doc = db.parse(is);is.close();} catch (SAXException e) {toPrint("SAXException");return;} catch (IOException e) {toPrint("Can't read file [" + rptdesignPath + "]");return;}} catch (FileNotFoundException e) {toPrint("Can't found file [" + rptdesignPath + "]"); return;}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocktoPrint("ParserConfigurationException");return;}// 查找data-sources信息NodeList nodeList = doc.getElementsByTagName("data-sources");for (int i = 0; i < nodeList.getLength(); i++) {Element e = (Element) nodeList.item(i);NodeList properties = e.getChildNodes();if (properties != null) {// 得到oda-data-source部分信息Node property = properties.item(1);for (Node node = property.getFirstChild(); node != null; node = node .getNextSibling()) {// 得到driver、url、username、password四项旳值,并重新设置if (node.getNodeName().equals("property")|| node.getNodeName().equals("encrypted-property")) { String name = node.getAttributes().getNamedItem("name") .getNodeValue();if (name.equals("odaDriverClass")) {node.getFirstChild().setNodeValue(driver);} else if (name.equals("odaURL")) {node.getFirstChild().setNodeValue(url);} else if (name.equals("odaUser")) {node.getFirstChild().setNodeValue(username);} else if (name.equals("odaPassword")) {// 对密码进行base64编码EncodePsd = (new sun.misc.BASE64Encoder()).encode(password.getBytes());// System.out.println("********EncodePsd:// "+EncodePsd);node.getFirstChild().setNodeValue(EncodePsd);}}}}}// 写入指定旳文献中writeToXml(doc, rptdesignPath);}// write to xmlpublic void writeToXml(Document doc, String rptdesign) { try {OutputStream fileoutputStream = new FileOutputStream(rptdesign);TransformerFactory tFactory = TransformerFactory.newInstance();Transformer transformer = tFactory.newTransformer();DOMSource source = new DOMSource(doc);StreamResult result = new StreamResult(fileoutputStream);transformer.transform(source, result);fileoutputStream.close();} catch (Exception e) {toPrint("Can't write to file: " + rptdesign);return;}}(二)计划开发方案与环节第一步:建立library,实现连接数据库管理。
birt报表参数Birt报表参数是一种用于在Birt报表中传递数据和控制报表生成的方式。
通过使用Birt报表参数,用户可以在生成报表时输入参数值,从而实现对报表内容和显示方式的灵活控制。
本文将介绍Birt 报表参数的使用方法和注意事项。
Birt报表参数可以用于多种用途,比如用于过滤数据、控制报表显示方式或格式、动态生成报表标题等。
在使用Birt报表参数时,首先需要在报表设计中定义参数。
参数可以有多种类型,比如字符串、数字、日期等,具体类型根据需求而定。
定义参数时,可以设置参数的名称、默认值、是否可为空等属性。
在报表设计中使用参数时,可以通过参数名称引用参数的值。
在SQL查询中,可以使用参数名称作为查询条件,从而实现数据过滤。
在报表模板中,可以使用参数名称作为文本框、表格、图表等组件的属性值,从而实现动态显示和控制。
使用Birt报表参数时需要注意以下几点。
首先,确保参数的名称在整个报表中唯一,避免参数名称冲突。
其次,参数的默认值应该合理设置,以便在用户不输入参数值时有一个合理的默认行为。
另外,参数的类型和数据格式要与使用场景相匹配,避免出现数据类型不匹配或格式错误的问题。
在使用Birt报表参数时,可以通过给参数赋值的方式传递参数值。
参数值可以通过多种方式传递,比如URL参数、JavaScript脚本、数据集字段等。
在使用URL参数传递参数值时,可以通过在URL中添加参数名和参数值的方式实现。
需要注意的是,URL参数的值需要进行编码,以避免特殊字符引起的问题。
除了使用URL参数传递参数值外,还可以使用JavaScript脚本来动态设置参数值。
通过在报表模板中嵌入JavaScript脚本,可以根据需要计算参数值或从其他组件中获取参数值。
使用JavaScript脚本可以实现更加复杂和灵活的参数控制逻辑。
在报表生成时,Birt报表引擎会根据参数的定义和传递的参数值来生成报表。
报表生成过程中,Birt报表引擎会根据参数值对报表进行相应的数据过滤、显示控制或格式化处理。
BIRT 报告传统报告允许允许企业以图形形式显示其他人可读的数据。
BIRT 有助于自动化在部署好的J2EE 应用程序中创建报告的过程。
在本教程中,将学习如何创建一个将使用您的应用程序部署的报告。
示例应用程序当客户来到银行进行取款或汇款时,该事务通常由银行职员执行。
本教程的示例应用程序是一个用户界面(UI),该界面将接收事务细节信息,并将它们存储到一个Derby 数据库中。
记录的事务细节信息包括事务日期、事务标题、职员编号、事务类型、取款或汇款数量,等等。
分析数据当示例应用程序获取信息并将它们存储到数据库中时,数据处于其最原始的形式,没有能以某种有意义的方式进行查看的可靠组织形式。
您开发的BIRT 将用于分析此数据。
所介绍的每种类型的报告都允许您查看并随后分析数据库中包含的数据。
将BIRT 对象嵌如应用程序一旦已经完成BIRT 报告和示例应用程序,就可以将BIRT 对象嵌入应用程序中。
这将使您——银行管理人员——乐于查看发生在银行中的事务的趋势。
您将获得一些知识,这些知识使您作出向更好趋势更改的决定,并提高银行的生产效率和性能。
Derby:设置在这一节中,将创建并初始化具有BIRT 中要使用的测试数据的Derby 数据库。
您将通过Geronimo 的网络服务器使用Geronimo 中的内置Derby 数据库。
在Geronimo 上部署应用程序时,将使用此数据库,因此使用内置数据库是有一定道理的。
设置用于Derby 的Geronimo因为将在用于BIRT 的Geronimo 中使用内置Derby 数据库,所以需要正确的驱动程序。
有一些 .jars 需要添加到Geronimo 中:IBM DB2 JDBC Universal Drivers。
现在您应该已拥有这两个文件(请参阅前提条件)。
解压缩从IBM 获得的 .zip 文件。
从lib 目录中获得两个 .jar 文件:db2jcc.jar 和db2jar_license_c.jar,并将它们放置在Geronimo 安装的<geronimo-install-dir>/repository/org.apache.derby/jars 目录中。
Birt数据报表开发手册1. 创建模板双击BIRT应用程序以启动Birt报表设计环境,首次启动未加载任何报表开发资源。
主界面如下:根据报表设计的需要,Birt本身提供了一些常规的模板:当然,也可以根据实际需要,添加一些使用频率比较高的模板。
下面将以两张图形,一张列表,且图形在上横向排列的模板为例,创建新模板。
点击文件菜单中的新建,选择新建模板,根据实际情况修改模板名称和存储路径:为此模板添加一些附加属性,如该模板的描述信息和模板布局的预览图像等。
点击完成,开始编辑此模板的布局。
在组件按钮区域依次选取:一个标签,用于放置报表的标题,双击输入标题文本。
也可根据需要动态的文本。
一个网格:用于放置水平的两张图形,因此网格设置为2列1行。
可根据实际情况调整。
一张表:用于放置数据报表,明细数据列设置为8列1行。
可根据实际情况调整。
关于组件的使用,将在后面的章节中具体说明。
用鼠标右击网格中的其中一个空白处,依次选择插入,图表。
在弹出的对话框中选取需要的图形。
同样的方法处理另外网格的另外一个。
有关图形的制作,将在图形报表开发手册中详细说明。
设置每种组件的属性,在OutLine窗口中选中已经拖放的组件,根据需要对其相应的属性进行调整。
如字体大小,颜色,对齐方式,样式等设置完成后,模板样式如下:保存模板的配置信息,以便在以后的报表开发中可以直接读取该模板。
2. 新建共享资源库在Birt的资源管理器中添加一些共享资源,如共享库:在弹出的对话框中输入Library库文件的保存路径和名称:确定后,Library库的创建完成。
如果操作无误,可以在对应的目录下浏览到新建的库。
3. 新建数据源在共享库中新建一个制作报表需要的数据库连接,以Oracle9i数据库连接为例,需要先配置数据驱动(数据库的驱动程序配置方法已经在报表设计器的配置手册文档中体现)。
然后在新建的库中,用鼠标右击数据源,选择新建数据源:在弹出的对话框中选择对应数据源类型,并为该数据源命名:选择正确的数据库驱动和URL后,就可以进行数据库的连接测试:可以根据报表需要,创建一个或者多个数据源的配置:数据源创建完成后,可以通过选择选择资源管理器中共享资源,Library库下新建的数据源,右击鼠标选择添加到报表,将新建数据源添加值报表中供使用。
birt报表入门教程之报表设计器学习报表设计器数据浏览器-把你的数据源(连接)以及数据集(查询)组织起来。
数据集编辑器允许你测试数据集,以确保报表接收数据的正确性。
布局视图(Layout)-所见即所得编辑器为你的报表提供以拽方式来创建表现内容。
包含一个标准报表条目调色板。
属性编辑器(Property Editor)-以便利的格局表现大多数通用的用户属性使编辑更快速和容易。
BIRT也集成了标准Eclipse属性视图,为每个条目提供详细的属性列表。
报表预览(Preview)-你可以在任何时间采用真实数据测试你的报表。
预览窗口直接内嵌在Eclipse中。
代码编辑器(Script)-在访问数据以及报表生成或浏览时,脚本把业务逻辑添加给报表。
在编辑脚本时代码编辑器提供标准的Eclipse特性:语法加色、自动完成等等。
BIRT用很简单的脚本来表达,expression builder能更容易的创建这些表达。
略图(OutLine)-BIRT报表被组织为一个树型结构作为整体报表的根,并且为样式、报表内容、数据源、数据集、报表参数等分类。
略图视图提供你整个报表结构紧凑的预览。
Cheat Sheets-学习新工具永远是种挑战,但是Eclipse提供一种创新方案:cheat sheets。
它们是一些帮助你完成新任务的文档。
同为常用的报表工具,与BIRT对比,FineReport的设计器是什么样的呢?具体如下:设计器概览下图是FineReport报表软件设计器的整体示例图:1.1模板管理面板所有通过FineReport设计器设计出来的模板全部保存在reportlets文件夹下,并显示在模板面板中。
1.2数据集面板数据集面板中展示的是数据集,数据集是指通过SQL语句,将数据库中的数据获取出来,作为模板数据的直接来源,数据集包括模板数据集和服务器数据集。
1.3模板预览方式预览方式是指查看模板时以哪种方式查看,在设计器预览方式按钮处,有三种预览方式,分页预览,填报预览,数据分析,如下图:默认预览方式为分页预览。
birt报表参数BIRT报表参数是一种用于生成动态报表的工具,它可以根据用户的需求来动态地改变报表的内容和显示方式。
在本文中,我将介绍BIRT报表参数的一些基本概念和使用方法。
让我们来了解一下什么是BIRT报表参数。
BIRT报表参数是一种用于传递数据给报表的方式,它可以让用户在生成报表时输入一些参数值,从而影响报表的生成结果。
比如,我们可以通过报表参数来过滤数据、排序数据、设置报表的标题等等。
在BIRT中,报表参数的定义是在数据源上的,我们可以在数据源中定义一些参数,并在报表设计中使用这些参数。
当用户生成报表时,系统会提示用户输入参数值,并根据参数值来生成报表。
在使用BIRT报表参数时,首先需要在报表设计中定义参数。
定义参数的方式是在报表设计的参数视图中添加一个新的参数,并设置参数的名称、数据类型、默认值等属性。
参数的数据类型可以是字符串、整数、日期等,根据实际需求来设置。
定义好参数后,我们可以在报表设计的其他地方使用这个参数。
比如,我们可以将参数值作为过滤条件来过滤数据,或者将参数值作为标题的一部分来显示在报表上。
在使用BIRT报表参数时,我们可以通过多种方式来传递参数值。
一种常见的方式是通过URL传递参数值。
在URL中,我们可以使用参数名和参数值的键值对来传递参数值。
比如,我们可以使用以下URL来传递参数值:```http://localhost:8080/birtviewer/frameset?__report=report.rpt design¶m1=value1¶m2=value2```在上面的URL中,param1和param2是参数的名称,value1和value2是参数的值。
通过这种方式,我们可以在生成报表时动态地传递参数值。
除了通过URL传递参数值,我们还可以通过其他方式来传递参数值。
比如,我们可以在程序中使用API来设置参数值,或者在报表生成界面上手动输入参数值。
前言此文档作者是北京恒信启华职下员工肖林宝编写。
乃是本人不成熟作品,简单的介绍了birt报表的制作过程。
为的是给各位同事一个参考,文中若有不完善的地方,还请各位同事多多包涵,多提宝贵意见。
根据各个项目上的实际情况,此文档主要介绍birt报表在公共数据源链接下的制作过程。
下面开始进入制作过程。
Birt报表制作过程在这里我用发票表invoice 简单的制作一个根据日期查询并且统计TOTALCOST 的报表。
Sql语句如下:select INVOICENUM,DESCRIPTION,ENTERDATE,TOTALCOST from invoice whereto_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')>=to_date('2 011-08-01','yyyy-MM-dd')andto_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')<=to_date('2 011-09-01','yyyy-MM-dd') order by INVOICENUM一.打开birt,选择一个报表文件夹,右键—新建—报表。
如图:给报表取个名字。
如下图:名字取完,点finish(完成),该报表文件夹下就会出现此报表文件,如下图:二.开始对报表进行编辑,双击报表文件,打开报表编辑窗口。
选择script标签,在initialize 下写引入包文件代码,如下图:代码如下:importPackage(.ibm.tivoli.maximo.report.script);importPackage(Packages.java.io);//引入包文件importPackage(Packages.java.util);importPackage(Packages.java.text);mxReportScriptContext = MXReportScriptContext.initialize(reportContext);mxReportScriptContext.setDefaultLogLevel("DEBUG");三、开始给报表添加公用数据源,右键maximoDataSuorce—Add To Report,如下图:你会看到新建的数据源已经出现之后在新建一个数据集,右键Data Sets—New Data Set,如下图:双击Data Set,选择Output Columns,添加字段,如下图:单击选中Data Set,选择script标签,open选项,对sql语句进行编辑,如下图:具体内容如下:maximoDataSet=MXReportDataSetProvider.create(this.getDataSource() .getName(), this.getName());maximoDataSet.open();var sqlText = new String();// Add query to sqlText variable.sqlText = "select INVOICENUM,DESCRIPTION,ENTERDATE,TOTALCOST from invoice where "+ " to_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')>= to_date('"+params["startdate"]+"','yyyy-MM-dd') "+ " and to_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd') <= to_date('"+params["enddate"]+"','yyyy-MM-dd') order by invoicenum " // Include the Maximo where clause;maximoDataSet.setQuery(sqlText)Sql语句编辑完之后,选择fetch选项,编辑字段,如下图:具体内容如下:if (!maximoDataSet.fetch())return (false);// Add a line for each output column// The specific get method should match the data type of the output column.row["INVOICENUM"] = maximoDataSet.getString("INVOICENUM");row["DESCRIPTION"] = maximoDataSet.getString("DESCRIPTION");row["ENTERDATE"] = maximoDataSet.getString("ENTERDATE");row["TOTALCOST"] = maximoDataSet.getString("TOTALCOST");return (true);以上编辑完之后,开始建立参数,右键report parameter—new parameters,如下图:对参数进行设置,如下图:三.开始绘制报表,选择master page,对纸张进行设置,如下图:选择layout标签,右键空白区域,insert—table,如下图:根据实际情况设置表格行列,这里我根据需要设置成一行四列,如下图:表格如下将数据集中的字段拖到表格上,将数据集与表格进行绑定。
birt报表例子BIRT(Business Intelligence and Reporting Tools)是一种开源的报表设计工具,它能够在Java环境下生成高度交互式的报表。
BIRT报表设计工具提供了简单易用的界面,使用户能够方便地创建和自定义各种类型的报表。
在本篇文章中,我们将介绍几个BIRT报表的例子,以帮助读者更好地理解和使用BIRT报表工具。
例子一:销售报表假设我们正在使用一个电商平台来销售商品,并且我们想要分析销售数据以了解最受欢迎的产品和销售业绩。
我们可以使用BIRT报表工具来设计一个销售报表。
该报表可以显示每个产品的销售数量、销售额和销售额占总销售额的比例。
此外,我们可以根据时间过滤数据,比如选择一个特定的月份或者一个特定的时间段。
通过这个报表,我们可以轻松地分析销售数据,以便做出更好的商业决策。
例子二:库存报表假设我们在一个仓库管理系统中,我们想要生成一个库存报表,以了解每个产品的库存情况。
我们可以使用BIRT报表工具来设计一个库存报表。
该报表可以显示每个产品的库存数量、已销售数量和剩余数量。
我们还可以根据产品类别进行分组,并在报表中显示每个类别的总库存数量。
通过这个报表,我们可以很方便地查看和比较不同产品的库存情况,从而更好地管理库存。
例子三:员工绩效报表假设我们是人力资源部门的负责人,我们想要评估员工的绩效以便做出合适的奖励和提升决策。
我们可以使用BIRT报表工具来设计一个员工绩效报表。
该报表可以显示每个员工的绩效评分、销售额和完成的项目数量。
我们还可以在报表中显示各个部门的平均绩效评分和总销售额。
通过这个报表,我们可以更准确地评估员工的表现,并制定相应的奖励和晋升策略。
例子四:学生考试成绩报表假设我们是一所学校的教务处老师,我们想要生成一个学生考试成绩报表,以便分析学生的表现和制定有针对性的教学计划。
我们可以使用BIRT报表工具来设计一个学生考试成绩报表。
该报表可以显示每个学生的各科成绩和总成绩,并可以根据性别、年级或班级进行分组。
birt教程之交叉报表交叉报表构建数据源方法同上。
构建数据集1.在定义好数据集的基本信息之后,进入SQL SELECT语句查询界面,输入如下SQL语句,进行数据集的创建:select EBANK.CUSTOMER.CUSTOMER_NAME,EBANK.PRODUCT.PRODUCT_NAME,EBANK.CONTRACTSUM.*from EBANK.CUSTOMER,EBANK.PRODUCT,EBANK.CONTRACTSUM where EBANK.CONTRACTSUM.CUSTOMER= EBANK.CUSTOMER.CUSTOMER_IDand EBANK.CONTRACTSUM.PRODUCT= EBANK.PRODUCT.PRODUCT_ID2.如果创建正确,在结果预览窗口“Preview Relusts”中将看到一下信息:点击“Ok”完成数据集的创建。
在报表中加入交叉报表1.同上例,先在布局编辑器中建立一个1列2行的Grid。
2.从选用板“Palette”视图中拖拽一个“Cross Tab”至第二行的网格中。
在布局编辑器中可以看到我们创建的Cross Tab的样式。
数据准备1.选择数据资源管理器“Data Explorer”。
右键单击“Data Cubes”,选择“New Data Cube”,进入如下交叉表数据编辑界面:2.默认选择的是“Dayaset”,Name:为Cube命名,Customer Cube Primery dataset:选择相关的数据集。
打开下拉菜单选择之前建立的数据集contract3.在左边的主菜单中选择第二项“Groups and Summeries”,出现如下窗口(),在将Available Fields中的CUSTOMER_NAME拖拽到右边Groups (Dimensions)中标有“(Drop a field here to create a group)”的地方,如下图。
birt教程之交互报表
交互报表
交互式报表就是存在与用户交互的通道,在查询交互式报表的结果时,需要用户输入一定的参数,输出结果就会显示出参数所对应的结果。
在本例中,我们将客户信息做成交互式报表,在用户输入客户的编号之后,我们就会看到对应客户的信息。
创建报表、数据源
方法同上,报表名我们定位:PeportOfAlternant.rptdesign
创建数据集
本例我们需要建立3个数据集:
1.建立数据集CustomerId,所用SQL语句:
select
EBANK.CUSTOMER.CUSTOMER_ID,
EBANK.CUSTOMER.CUSTOMER_NAME
from EBANK.CUSTOMER
where
EXISTS
(SELECT EBANK.CONTRACTSUM.CUSTOMER
FROM EBANK.CONTRACTSUM
WHERE EBANK.CUSTOMER.CUSTOMER_ID=
EBANK.CONTRACTSUM.CUSTOMER)
2.建立数据集CustomerInfo:所用SQL语句:
select EBANK.CUSTOMER.CUSTOMER_NAME,
EBANK.CUSTOMER.TEL,
EBANK.CUSTOMER.FAX,
EBANK.CUSTOMERTYPE.TYPENAME
from EBANK.CUSTOMER,EBANK.CUSTOMERTYPE
where
EBANK.CUSTOMER.CUSTOMERTYPE=EBANK.CUSTOMERTYPE.TYPEI D
and EBANK.CUSTOMER.CUSTOMER_ID=?
输入SQL语句后,还要在数据集编辑窗口选择Parameters选项。
双击默认参数Pram1或者选择“Edit”,弹出如下窗口:
输入:
Name:CustID;
Default Value:’1’;
其它默认
完成后,在Preview Result选项中就可看见结果预览:
建立数据集Contract:所用SQL语句:
select EBANK.CONTRACTSUM.AMOUNT,
EBANK.PRODUCT.PRODUCT_NAME
from EBANK.CONTRACTSUM,EBANK.PRODUCT
where
EBANK.CONTRACTSUM.PRODUCT=
EBANK.PRODUCT.PRODUCT_ID
and EBANK.CONTRACTSUM.CUSTOMER=?
同上一步一样,还需对参数设置默认值,方法同上。
加入响应参数
1.建立好数据集之后,展开选择数据资源管理器“Data Explorer”,右键点击“Report Parameters”选择“New Parameter”,弹出如下窗口:
输入:
Name:CustId
Prompt:请输入用户编号
Data Type:选择默认String
Display Type:从下拉菜单中选择Combo Box
2.将Display Type值选为Combo Box后,下方的“List of Value”的两个选择按钮变亮,选择“Dynamic”,窗口变为如下:
输入数据:
Data Set:从下拉框中选择CustomerId;
Select Value Column:从下拉框中选择CUSTOMER_ID;
Select Display text:从下拉框中选择CUSTOMER_ID;
Default Value:选择<select value…>之后在弹出的窗口中选择任意一个即可,这里选1
点击“OK”完成
布局报表
1、先在布局编辑器中建立一个1列2行的Grid;
2、在所建立的Grid的第二格中再加入一个3列2行的Grid;
3、选中3列2行的Grid的第一列,在属性编辑器Property Edit,将默认菜
单下的General项中的“Width”设定为20%,其中“%”符号从下拉框
中选择;选中第二列,同样方法设定其宽为60%;
4、从选用板中向选中3列2行的Grid的第二列第一行的空格拖拽一个2列
4行的Table,选中这个Table的第一列,用第3步中的方法设定其宽为
50%,选中这个Table的第一行“Header Row”,右键点击选择“Merge Cells”
将此行合并,并从选用板中拖拽一个“Lable”,输入“客户基本信息”,使其居左;
5、再在这个3列2行的Grid的第二列第二行的空格中加入一个2列1行的
Table,对此Table作与第4步同样的处理,在合并“Header Row”之前
先选中“Header Row”,右键点击选择“insert”,插入一行新的Header
Row。
然后将第一个“Header Row”合并,在合并后的“Header Row”
中加入的“Lable”中输入“客户订单信息”使其居左
布局后的视图:
插入报表数据
1、参数绑定:
选中我们在3.5.4中第3步加入的第一个Table,下方出现Table的属性编
辑器Property Edit,选中标题栏的Binding栏,在“Data Set”的下拉框中中选择数据集“CustomerID”;然后点击其后的按钮“Dataset Parameter Binding”,进入后双击默认的变量进入进行设置,点击“Value”标签后的函数符号“”,进入参数设定界面:
从下方的设定窗口依次选择:Report Paramrters——All——{}CustID,双击{}CustID将其加入。
依次点击各个窗口的“OK”,完成参数绑定。
2、将数据集CustomerInfo中的数据项一一拖拽至第一个Table的第二列的
“Detail Row”中,在第一列中加入“Lable”并输入标题信息。
3、对第二个Table也做与第一步的相同操作:注意在Table的属性编辑器中
进行参数绑定之前在“Data Set”中选择的数据集应该是Contract。
做好参数绑定之后,将数据集Contract中的数据项一一拖拽到Table的“Detail Row”的两个空格中,然后将“Header Row”中自动生成的标题Lable更改。
这样,我们就完成了交互报表的基本工作。
格式化与预览
格式化报表:
点击View Report In Web Viewer结果预览图表,此时弹出对话框,需要我们选择输入客户编号:
选择“1”,结果如下:
通过点击左上方第二个图标“”可以重新进行参数选择。
同为比较常用的报表工具,FineReport对交互报表的解决方案和实现方法
与BIRT有所不同,在FineReport中没有交互报表的概念,但是对参数的利用却渗透的FineReport的所有报表制作过程中,FineReport中交互报表的具体实现思路和步骤如下,供BIRT使用者借鉴:
1.概述
在数据集查询中,数据表,数据列以及条件都可以是动态的,下面我们来介绍动态数据表和动态条件,动态数据列实现方式有两种,下面有章节专门介绍。
2.动态数据表
若数据库中存在两张表结构相同,只是数据量不同,如何实现不同的人根据需要选择不同的表进行查看,从而提高查询效率呢?
2.1实现思路
在定义数据集时,通过if函数来判断参数的值从而来实现调用不同的数据表,如直接将SQL语句定义成:SELECT*FROM${if(aa=1,'订单','订单1')},即若参数aa=1时,查询的是订单表,若aa!=1时,查询的是订单1表。
3.动态条件
若您对表中的数据进行过滤时,查询条件是不确定的,有时候想用A列进行过滤,有时候想用B列进行过滤,此时要如何实现呢?
3.1实现思路
在定义数据集时,将条件定义为参数,如SQL语句定义成:SELECT*FROM TableName${Condition}。
3.2示例
∙打开模板
打开模
板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\D ynamicSQL\DynamicSQL.cpt。
∙修改数据集
将数据集修改为:SELECT*FROM订单${Condition}。
∙修改参数界面
将参数界面的控件名称修改为Condition即可。
∙效果查看
保存模板点击分页预览,输入动态的查询条件如:where货主地区='西南',便可以获取货主地区为西南的数据了,效果如下图:。