收藏 分销(赏)

BIRT知识集锦(基础知识大全).docx

上传人:仙人****88 文档编号:12021157 上传时间:2025-08-28 格式:DOCX 页数:16 大小:125.76KB 下载积分:10 金币
下载 相关 举报
BIRT知识集锦(基础知识大全).docx_第1页
第1页 / 共16页
BIRT知识集锦(基础知识大全).docx_第2页
第2页 / 共16页


点击查看更多>>
资源描述
BIRT知识集锦(基础知识大全) 报表介绍 BIRT 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。BIRT 也提供了图标引擎让你能为应用增加图标。 当前发行的版本是 1.0.1。我们鼓励你下载、试用 BIRT,请通过 newsgroups and Bugzilla 向我们提意见。 有了 BIRT,你可以为应用程序构建丰富的报表。 列表 - 列表是最简单的报表。当列表变长时,你可以把相关数据增加到同一分组(基于客户的订单分组,基于供应商的产品分组)。如果数据是数字类型的,你可以轻松的添加到“总数”、“平均”、或其他汇总中。 图表 - 当需要图表表现时,数字型数据比较好理解。BIRT 也提供饼状、线状以及柱状图标等。 交叉表 - 交叉表(也叫做十字表格或矩阵)用两种维度展示数据:sales per quarter or hits per web page。(交叉表在 1.0.1 中没有提供,但计划在将来提供。) 信函和文档 - 通知、信件、以及其他文本文档都很容易通过 BIRT 方便建立。文档包括正文、格式、列表、图表等。 混合报表 - 很多报表需要联合以上所有的报表构成单一文档。例如,一份客户声明会列出客户所需要的信息,为当前促进(promotions)提供文本,以及提供并行的出帐和入帐列表。一份财政报表将包括声明、图表、表格,所有这些都将进行全方位的格式化,来匹配共有的配色方案。 剖析一份报表 BIRT 报表包含四个部分:数据、数据转换、业务逻辑、陈述。 数据 - 数据库、Web 服务、Java 对象,这些都可以作为 BIRT 报表源。1.0.1 版本提供 JDBC 支持,也支持利用编码来获取其他地方的数据。BIRT 的 ODA(Open Data Access) 框架允许任何人构建新的 UI 以及运行时支持任何类型的表格式数据。未来,单一报表可包含从任意多个数据源获取数据。 数据转换 - 报表通过对数据的分类、统计、过滤以及分组来适应用户需求。当然,数据库能实现这些功能,当遇到普通文件和 Java 对象时 BIRT 必须以 "simple" 数据源方式处理。BIRT 允许复杂的操作,比如总合分组、整体共计的百分比,等等。 业务逻辑 - 真实世界的数据很少提供你理想的结构良好的报表。许多报表要求用具体逻辑把原始数据转换成用户的有用信息。如果该逻辑仅仅用于该报表,你可以用 BIRT 的 JavaScript 脚本支持。如果你的程序中已包含这些逻辑,你可以调用已有的 Java 代码。 表现 - 一旦数据准备好了,你可以在很大的范围内选择表现形式。表格、图表、文字等等都可以。单一数据集可以有多种方式表现,而单一报表可以表现多个数据集。 J2EE 应用中的 BIRT BIRT 报表引擎以 JAR 文件方式打包,可以方便的添加到你的 J2EE 应用中。报表引擎是一系列的 POJO(Plain Old Java Objects),便于你可以在 JSP 页面集成报表。 BIRT 与你的应用有四个主要集成点: UI 参数 - 多数报表允许用户指定一些输入,这些数据叫做"报表参数"。例如,客户报表要求显示客户数据。你的参数页面可能是静态的:为每个报表进行用户定制设计。或者,可以使用参数元数据提供的动态页面,以便该单一页面为所有的报表提供服务。 运行报表 - 用户提交表单参数时,你的 web 应用通过这些参数向 BIRT 报表引擎说明读取哪个报表设计文件,并读取数据,再产生报表输出。当引擎运行报表时 BIRT 的术语称为"工厂"。 数据访问 - 报表如何从你的应用获得数据已在上面解释了。Java 程序通常利用 Java 对象为 BIRT 工厂提供数据。 显示 - 附加的 JSP 页面,叫做阅读器,允许用户查看报表输出。 一个报表应用程序包含一个参数页,你可以为每个报表创建自定义的 UI,或者使用 BIRT 带来的参数元数据提供单一报表来处理多种不同报表。 样品阅读器 BIRT 项目提供一个样品 "viewer" 来帮你起步。样品阅读器常被用于在 Eclipse 中预览报表:BIRT 内置一个 Apache Tomcat 服务器,每次预览报表时调用。阅读器也可被用于任何与 JSP 兼容的 J2EE 服务器。 BIRT 的 1.0.1 版本提供单一页面的 web 输出。计划在将来的版本中提供多页面输出,而且阅读器 UI 也将提供多页面之间的导航功能。 报表设计 BIRT 应用开发从报表设计开始。基于 Eclipse 插件提供多种快速构建报表工具。 数据浏览器 - 把你的数据源(连接)以及数据集(查询)组织起来。数据集编辑器允许你测试数据集,以确保报表接收数据的正确性。 布局视图 - 所见即所得编辑器为你的报表提供以拽方式来创建表现内容。包含一个标准报表条目调色板。 属性编辑器 - 以便利的格局表现大多数通用的用户属性使编辑更快速和容易。BIRT 也集成了标准 Eclipse 属性视图,为每个条目提供详细的属性列表。 报表预览 - 你可以在任何时间采用真实数据测试你的报表。预览窗口直接内嵌在 Eclipse 中。 代码编辑器 - 在访问数据以及报表生成或浏览时,脚本把业务逻辑添加给报表。在编辑脚本时代码编辑器提供标准的 Eclipse 特性:语法加色、自动完成等等。BIRT 用很简单的脚本来表达,expression builder 能更容易的创建这些表达。 略图 - BIRT 报表被组织为一个树型结构作为整体报表的根,并且为样式、报表内容、数据源、数据集、报表参数等分类。略图视图提供你整个报表结构紧凑的预览。 Cheat Sheets - 学习新工具永远是种挑战,但是 Eclipse 提供一种创新方案:cheat sheets。它们是一些帮助你完成新任务的文档。 数据定制 正如前面所提到的,报表通常为要表现的数据添加业务逻辑。BIRT 提供多个工具来完成这一操作: 栏位计算-数据库为存储组织数据,但这些数据通常为结合表现层而预先整理好。栏位计算让你能定义基于业务逻辑的附加数据集栏位。这种逻辑是一个简单的语法、脚本或调用一个已有的 Java 逻辑。 输入以及输出参数-许多数据源都支持参数:在查询时传入或传出数据的能力。比如,SQL Select 语句可包含输入参数。存储过程既有传入又有传出参数。 栏位元数据-当数据源提供的名字是 unintuitive 的,你可以提供栏位别名。 过滤 - 有些数据源,尤其是 SQL,提供良好的内置过滤特性。然而,有些数据源(单纯的文件,应用程序对象)却没有提供过滤特性。另外,过滤器条件是定义在脚本或 Java 代码中的。你可把过滤器定义为报表的一部分,BIRT 引擎会自动调用它们。 脚本化数据集 - 有些报表需要访问专门或不常用的数据。你可以在 Java 或脚本创建访问,利用脚本化数据集可在报表中集成这些逻辑。 条件格式化 有些报表有着固定的格式,其他的却需要条件格式化。例如,某报表列出了交易记录来表现不同的销售与利润之比。或者,一个客户服务报表要按照不同规则进行色彩显示。BIRT 提供多个条件格式化特性: 条件可见度 - 你可以根据数据隐藏报表元素。在上述的交易报表中,你可以创建销售和交易收入两部分,接着隐藏报表指定记录中不需要的部分。 值映射 - 数据库数据通常使用代码值:M/F 代表男性或女性,1/2 代表销售和收入,等等。值映射让你定义一个从数据库值到显示值的映射。例如,我们可把值“1”对应到“Sale”,把“2”对应到“Return”。 加强 - 简单的标识可让你对特定报表套用样式。例如,在客户服务报表中,我们可以使用绿色表示上一的计划,红色表示下一计划。 脚本 BIRT 提供基于 JavaScript(与知名的 ECMAScript 形式上相同)的脚本。JavaScript 经常作为客户端脚本语言,但是它也可以用于用于表达业务逻辑。特别的,JavaScript 能与你的现有 Java 逻辑进行良好集成,能非常轻松地从 BIRT 报表调用业务逻辑。 BIRT 提供从 JavaScript 对象访问报表对象模型(Report Object Model)的整套方案:同时表现报表设计和运行时的状况,允许报表的完全控制处理甚至最复杂的报表格式化工作。 项目管理 BIRT 集成了 Eclipse 项目管理特性来组织相关报表。BIRT 也可以与 Eclipse CVS 协作进行源码管理。BIRT 的 XML 报表设计格式让它能容易的比较两份报表,或者两个不同版本的相同报表,并跟踪变更。 样式 任何设计 web 页面的人都知道有时会反复使用相同的样式。CSS 允许 web 设计者从内容中提取样式信息,并复用样式。 BIRT 提供类似的特性。当然,BIRT 样式也是基于 CSS 的,这样使得网页应用开发人员能容易得设计 BIRT 表现形式。BIRT 样式可堆叠,允许你在一个地方设置样式后套用到所有报表或报表的一部分或单一报表中。 库 典型的应用中会包括许多有关联的报表。一个简单的客户应用将包括一个按照字母排序的客户列表、按照地理位置分类的客户群,为客户指定的销售代表,客户身份筛选等等。总之,用户不停的地变化报表以解决具体业务需要。 这样一来,最终的报表应用将包含多组相关报表。相同的数据源、样式、业务逻辑、报表条目。 将来的 BIRT 版本将包含组织这些共享资源的支持库。这些库可包含任何报表元素,比如样式、数据源、报表条目、脚本等等。 国际化 全世界都可以访问你的 web 应用程序。BIRT 为国际化和本地化提供良好的支持。 文本本地化 - 你可以建立一份把字符串自动变成用户本地语言显示的简单报表。所有的表单和报表文本都能以标准的 Java 本地化规则进行翻译。在运行时,BIRT 使用资源 key 找出文本的正确翻译。 本地化 - BIRT 提供 locale-aware 格式化数据,意味着对于美国用户的日期数据可以以 mm/dd/yy 的格式出现,而欧洲用户则是 dd-mm-yy 格式。 动态格式化 - 中文文本非常紧凑,德文有时又有点冗长,而英文正好是中等大小。BIRT 自动调整报表条目的大小来适合其中的内容,避免每次翻译都要进行报表测试。 扩展性 报表应用程序的范围是十分庞大的,BIRT 团队不能为每个应用提供很具体的特性。可利用 BIRT 脚本来扩展 BIRT,另外还可构建 BIRT 扩展插件到 BIRT 中。 数据访问 BIRT 提供 ODA(Open Data Access) 框架来支持自定义数据访问方法。数据访问的范围还包括一个获取数据的运行时组件。也包括构建自定义查询的自定义设计时 UI。例如,打包后的应用程序可以让 ODA 构建数据访问 UI 并运行在自己的数据模型中。 报表栏目 BIRT 为要表现的数据提供一致的报表栏目集。可以在应用程序中自定义附件报表栏目,并像 BIRT 自身的报表栏目一样运行在设计器和引擎中。例如,性能管理应用程序要添加报表栏目来高亮显示停止项、尺度表以及其他用来衡量性能的可视标志。 图表类型 BIRT 图表包提供了很多的图表类型。但是,一些行业需要很特殊的图表样式。开发者可以在 BIRT 图表引擎中创建图表插件来提供这些图表样式。 输出格式 BIRT 1.0.1 支持输出到 HTML 和 PDF。当然,也可能需要其他类型输出:Excel、RTF(Rich Text Format)、SVG(Scalable Vector Graphic)、图像、等等。BIRT 在今后会提供其中一些,除开这些的其他格式可能需要的用户就很少了。开发者可利用 BIRT 引擎接口添加转换器以达到目的。 BIRT知识集锦(基础知识大全) [b]BIRT技巧集锦(基础知识大全)[/b] 0. File - New - Project - BIRT - Report Project Report Project - New - Report --------------------------------- 1.Data Sources Driver Class:oracle.jdbc.driver.OracleDriver ( v1.0) Driver [url=jdbc:oracle:thin:@192.168.1.1:1521:ORA92]URL:jdbc:oracle:thin:@192.168.1.1:1521:ORA92[/url] --------------------------------- 2. 我现在用的birt是2.3.0的版本, GEF是3.5.0的 emf-xsd-Update是2.5.0的 emf-xsd-SDK是2.5.0的 请问有没有兼容问题? --------------------------------- 3. 请先安装Eclipse、GEF 、EMF 和BIRT 。 --------------------------------- 4. 在web工程里使用birt 下载birt的示例工程,将示例工程里的webcontent和web-inf下的东西拷到你的工程根目录下。 在jsp页面里访问报表使用url : frameset?__report=reportName&para;m=?paramValue 这里,frameset也可使用run,使用frameset支持ajax功能,支持报表的分页等 --------------------------------- 5. birt去除报表下面的日期 这个问题之前也有人问过,不过觉得很简单一直没在论坛里写出来,今天又有人问了,我就写一下吧 首先点击设计器主页 - 点击属性,- 取消“页眉”“页脚”。即取消显示页眉和页脚。 也可以在xml里设置: <page-setup>         <simple-master-page name="Simple MasterPage" id="2">             <property name="type">a4</property>             <property name="leftMargin">10px</property>             <property name="rightMargin">10px</property>             <property name="showHeaderOnFirst">false</property>             <property name="showFooterOnLast">false</property>  //是否显示页脚         </simple-master-page>     </page-setup> 说明: 打印报表会出现一些如网页地址的信息,那是在IE里设置的。和birt没有关系。 --------------------------------- 6. property editor table用法: properties可以设置整张表的属性,如边距、边框、字体等 binding可对任何报表指定数据集 sorting可以指定报表中数据决定排序顺序的列和排序方向 groups可以添加、删除和编辑分组字段 highlights格式化规则,规则可细分为两部分:条件部分和应用格式部分。如条件部分:成绩小于60分,格式部分就是:用红色字体标记成绩。 filters可对数据集的数据进行进一步的筛选 --------------------------------- 7. 请问如何将生成的.rptdesign文件内容不以文件形式存在,而是存入到数据表中的一个字段 那个字段应该使用blob大字段了。那个报表文件其实是个xml文件,你看一下xml如何保存为blob字段里吧。 --------------------------------- 8. (1)implements 实现接口 public class DebugProxy implements java.lang.reflect.InvocationHandler {...} java.lang.reflect.InvocationHandler为接口的名字 DebugProxy 为类名 (2)extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 比如 class A extends B implements C,D,E --------------------------------- 9. birt uil详细说明 __report: 指定要显示的报表名称 __title:定义报表标题 __parameterpage:是否弹出报表参数对话框 __format:指定输出报表的格式 __toolbar: 是否显示工具条 __navigationbar:是否显示导航条 __showtitle:是否显示标题 __locale:  指定语言 __rtl:文字显示顺序 __bookmark:设置书签名字 __page:指定报表页数 __pagerange:指定页数范围 __masterpage:是否显示页脚 __maxrows:设置数据最大行数 --------------------------------- 10. 隐藏与显示报表工具栏,导航栏 webcontent\birt\pages\layout\FramesetFragment.jsp里找到下面这句: Mask.setBaseElements( new Array( birtToolbar.__instance, navigationBar.__instance, birtReportDocument.__instance) ); birtToolbar.__instance报表工具栏,就是上面有打印,导出图片按钮的那行。 navigationBar.__instance导航栏,就是有下一页,多少页什么的。 在里只要new Array去除相应的就行了。 --------------------------------- 11. 报表与页面交互功能演示: 现在我们来看查看按钮的制作: 插入文本,选择html,然后 输入以下内容: <input type="button" style="background: #F1E1CD;border: 1px solid #435425;width: 80px;height: 20px;line-height: 20px;" id="<VALUE-OF>row["TRUNKGRADE"]</VALUE-OF>" name="carradio"  value="查看"> 注意:"<VALUE-OF>row["TRUNKGRADE"]</VALUE-OF>是取我们数据集的列数据。 parent.getCarInfo(this),这里当点击按钮时,调用父窗口的getCarInfo方法,把自己传过去。这个方法是我写在jsp页面里的。 我们来看看getCarInfo方法: carId = o.id; var url = "/report/preview?__report=/report/ahlz/"+ "carinfo.rptdesign&__parameterpage=false&carId=" + carId; window.open(url); --------------------------------- 12. 使用birt 制作报表,在jsp页面传中文参数到报表里显示会出现乱码情况。 应该把tomcat里编码设置为gbk,如下:   <Connector port="8080" protocol="HTTP/1.1" URIEncoding="GBK"                connectionTimeout="30000" /> jsp页面的编码方式也设置为gbk 在报表里以动态数据显示的中文字符,应该先编码中ascii码,再使用。 --------------------------------- 13. 在web工程里使用birt 下载birt的示例工程,将示例工程里的webcontent和web-inf下的东西拷到你的工程根目录下。 在jsp页面里访问报表使用url : frameset?__report=reportName&para;m=?paramValue 这里,frameset也可使用run,使用frameset支持ajax功能,支持报表的分页等 --------------------------------- 14. birt 动态显示列 使用birt默认数据库, sql:select * from CLASSICMODELS.OFFICES 只使用了officecode,city,phone三个列,将这三个列加到表格里。 添加参数p,设置为列表,可多选。 如下图: 然后在表格的各列选择列,属性,可见性,设置可见性表达式如下: officecode列: var v =  params["p"].value;                     //获得参数 var s; for(var i=0; i<v.length; i++){             //对参遍历     s+=v+";";             //加到一个变量里,因为我发现直接在这里判断是不行的。 } if(s.indexOf("officecode") != -1){            //判断是否含有officecode,如果有就显示,没有就不显示。     false; }else{ true; } --------------------------------- 15. 安讯百灵报表BIRT设计器专业版 对于扩展 Eclipse 的功能,首先当然就是去下载对应的 plugin,BIRT 也不能例外。BIRT 的下载地址:http://download.eclipse.org/birt/downloads/,当前版本是2.0。BIRT 依赖于 Eclipse 的其它几个 plugin(GEF 和 EMF),由于我使用的是 Eclipse WTP(这是 Eclipse 的 WEB 开发工具),在这个工具中那些 plugin 都已预装,因此直接下载 birt-report-framework-2_0_0.zip 就好了。如果没有这些 plugin,请下载。 下载之后,安装非常简单:只需解压然后将对应的features和plugins目录中的内容复制到Eclipse对应的目录下即可。且慢,这只是完成了对于BIRT的基本安装。下一步就是去下载BIRT需要的第三方软件包:   需要的jar文件 复制位置(都在plugins目录下) Apache Axis axis.jar axis-ant.jar commons-discovery-0.2.jar jaxrpc.jar saaj.jar wsdl4j-1.5.1.jar org.eclipse.birt.report.viewer_version/birt/WEB-INF/Lib iText 1.3 itext-1.3.jar org.eclipse.birt.report.engine.emitter.pdf_version/lib prototype.js v1.4.0 prototype.js v1.4.0 org.eclipse.birt.report.viewer_version/birt/ajax/lib 自此,BIRT的安装大功告成。启动Eclipse,在"project wizard"中会出现一个BIRT的项目类型。 回页首 典型使用 在使用之前,了解一些关于BIRT的基本概念,将会对使用非常有益: · 数据源:数据的来源,或提供者。如xml数据源、jdbc数据源等。 · 数据集:数据集合,它必须与数据源关联,可以理解为查询的结果。 · 报表以及报表项,报表可视为是针对一组数据集的表现形式,而报表项这是这个表现形式的某个具体的单元。它们之间的关系,与窗体和控件的关系非常类似。报表、数据集、数据源三者间的关系:数据源 --- 数据集 --- 报表。 · 报表参数:查询参数的表现形式,使用它可以构建更灵活的报表。 · 模板和库:主要用于复用报表设计,提高报表开发的效率。 本文中的例子都采用jdbc数据源,这是最常见的使用情形,其中涉及的数据关系是一个典型的多对多关系: 1. 简单报表 首先,让我们来看看一个"Hello World"级别的应用:"列出所有用户",以便可以快速的了解BIRT。为了完成这一任务,我们需要: A. 通过项目向导,创建BIRT工程。工程创建完毕之后,显示BIRT的"报表设计"视图。由于此时没有报表,其它几个视图,如"数据资源管理器",不可用。 B. 在项目上点鼠标右键,选择:"new -> 报表"。在报表类型中,选择"空白报表"。 C. 创建新报表后,数据视图可用。在"数据资源管理器"中创建报表所需要的jdbc数据源。根据向导,可以方便的添加jdbc驱动、数据库url、用户名和密码。 D. 在指定的数据源上,创建数据集,这一步完成产生数据集的查询。在BIRT中支持2种数据集:基于查询语句和基于存储过程。在本例中使用前者,对应的查询语句是:select user.userid, user.username, user.addr from user。 E. 选择刚刚创建的数据集,将它拖至空白报表页上。BIRT会自动为其创建一个报表项,此处是"表"。如下图: F. 选择预览,就可以看到报表运行的实际结果了。或在报表上点击鼠标右键,选择:"报表 -> 运行报表"。 非常简单,一个显示所有用户信息的报表就完成了。在此基础之上,让我们再来完成一些其它具有挑战性的任务: 1.格式化:这是一个内容广泛的主题,常见的需求: 需求 解决办法(以上为例) 显示报表列头为中文 如:将userid显示为"用户标识"。 选择"userid",输入"用户标识"。 设置报表外观 选择对应的报表项,通过"属性编辑器"调整。 对于报表数据列进行处理 如:将userid和username,显示成:userid:username。双击row["userid"],出现"表达式生成器",输入: row["userid"]+":"+ row["username"] 分页 选择"表":在"属性编辑器"中,选择"分页符",在"分页符间隔"中输入分页大小。 页眉和页脚 在报表设计页,选择"主页",在其中设置页眉和页脚。 2.排序:一种变通的做法是:将数据集排序之后,如在对应的SQL语句中使用order by,再显示。除此之外,也可以在报表设计时来完成: A. 选择表,此时属性编辑器下方会出现与表相关的选择页。 B. 选择"排序",在对应的页面中选择"添加"按钮之后,出现: C. 选择需要进行排序的列,以及排序方式。 3.计算列:通过"数据集编辑器"来完成。进入"数据集编辑器后",选择"计算列":输入对应的"列名称"、"数据类型"和"表达式"。 4.报表参数:它为报表的产生带来了极大的灵活性。报表参数一定是与含参数的查询对应的,否则失去了意义。现在,将以上需求改为列出"用户标识大于某一输入的所有用户": A. 编辑数据集,修改SQL:select user.userid,user.username,user.addr from user where user.userid>?。 B. 在数据集编辑窗体内选择"参数",然后输入对应的"名称"、"数据类型"、"方向"和"默认值"(必须给出默认值)。其中"方向"表示"输入"或"输出"。对于参数,一般选"输入"。完毕之后: C. 在"数据资源管理器"视图,创建报表参数:"用户标识"。 D. 选择"表",在"属性编辑器"中选择"绑定"。此时,会出现刚才在数据集中定义的参数"id"。在"值"列,选择报表参数"用户标识": E. 运行报表时,此时会出现报表参数的输入框,填写值后即出现报表结果。 本例虽然只定义了一个报表参数,但是BIRT并没有这样的限制。我们可以创建多个参数,做法很简单:首先,查询有多个参数;定义数据集的参数时,按照查询中参数出现的顺序定义;最后,添加需要的报表参数。 5.分组:以上为例:将用户按地址分组。 A. 选择"表",点击鼠标右键,选择"插入组"。这里有两个选择:"在上面"和"在下面"。 B. 选择任意一种,弹出分组资料窗体。填写其中的:"名称"和"分组依据"。在本例中,"分组依据"是addr列。 C. 选择预览,或运行报表,查看结果。 2. 子报表 子报表是另一种最常见的报表,以上为例:列出所有用户,并列出每个用户所购买的项目,以及项目数。为了完成这种父子关系的报表,需要: A. 创建新报表和数据源。 B. 创建数据集user,使用SQL:select user.userid,user.username,user.addr from user。 C. 创建数据集items,使用SQL: select item.itemid,item.itemdesc,item.price,user_item.count from item,user_item where item.itemid= user_item.itemid and user_item.userid= ? 同时在数据集items上创建参数user,它对应SQL中的参数。 D. 从"Palette"视图拖入"列表"到报表中,在"属性编辑器"的"绑定"页中,选择数据集为user。它用来显示主表的信息,在本例中是用户信息。 E. 从"Palette"视图拖入"网格"到"列表"的"明细数据"中,设置网格为1行2列,它用来存放"用户姓名"和"用户地址"。在"数据资源管理器"视图,选择数据集user,将username和addr分别拖入网格的2列中。 F. 在"数据资源管理器"视图,选择数据集items,将它拖入"列表"的"明细数据"中,位于刚刚插入的网格下方。此时,BIRT会生成数据集items对应的"表"。 G. 选择刚刚生成的"表",在"属性编辑器"的"绑定"页中,会出现在items中定义的参数。修改它的值:row["userid"]。于是,父子报表就发生了联系。 H. 选择预览,或运行报表,就可以看到结果了。 很遗憾,到目前为止,另一种最常见的报表"交叉表"还不被BIRT支持。但是,BIRT的官方网站已明确表示,将在未来的版本中支持它。 3. 统计图表 俗话说,"一图顶千言"。没有图的报表是枯燥,且缺乏表现力的。在本例中,我们将使用图表来表示:每个用户的消费总数。 A. 创建新报表和数据源。 B. 创建数据集chart,使用SQL: select user.username,round(sum(item.price*user_item.count),2) from item, user_item, user where item.itemid= user_item.itemid and user.userid= user_item.userid group by user.username C. 从"Palette"视图拖入"图表"到报表中,此时会弹出"编辑图表"窗体。 D. 在"选择图表类型"页,选择图表类型为"条形图"。在"选择数据"页,使用数据集chart,同时选中username列,将其拖入"类别x系列"。对于统计列,同样将其拖入"类别y系列"。在"图表格式"页,分别为x和y系列,填写相应的显示名称。 E. 选择预览,或运行报表,即可看到统计图表。 4. 使用脚本 可以使用脚本,是BIRT的一大特色。在BIRT中,数据源、数据集和报表项,都可以书写脚本。具体做法:选择数据源、数据集和报表项任意一种对象,然后选择"脚本"页面。如选择数据源user后,对应的脚本输入页面: 选择对应的事件,然后在下方的脚本输入框中输入脚本即可。如对于第一个例子,我们需要统计用户地址是"No.5 St."的用户数: A. 选择数据集,然后选择"脚本",进入数据集的脚本编辑窗口。 B. 选择事件"afterOpen",在脚本窗口内输入:count=0; C. 选择事件"onFetch",在脚本窗口内输入:if( row["addr"]== "No.5 St.") count++; D. 选择报表,在脚本窗口选择事件"onRender",输入:this.caption=count; E. 预览,或运行报表后,会在报表的标题输出count的数值。 另外,BIRT也支持使用java来作为报表项的事件处理程序。具体做法,请参见BIRT的帮助文档。 5. 库和模板 除了脚本使开发者可以自定义报表的行为外,BIRT还提供了库和模板机制来重
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服