`
datamachine
  • 浏览: 164088 次
社区版块
存档分类
最新评论

多数据源主子报表的处理(Jasper为例)

    博客分类:
  • DB
阅读更多

   主报表和子报表(或Table表)使用不同的数据库时。JasperReport/Birt等报表工具从功能上可以处理,但在子报表中无法直接使用数据源名,需要使用显式的数据库账号、口令。可以看到这种方式存在一定的安全隐患,而且实施过程比较复杂。

  集算器具有结构化强计算引擎,支持多样性数据源,集成简单,可以协助报表工具方便地实现此类需求,下面通过一个例子来说明主子报表多数据源的实现过程。

  表emp在MySQL数据库中,存储员工信息,主键是EId。表sales在MSSQL中,存储员工的订单信息,字段SellerId是逻辑外键,对应emp表的EId字段。现在需要制作一张主子报表,按薪酬范围显示每位员工的订单信息,主报表数据来自表emp,子报表数据来自表sales。部分源数据如下:

  表emp



 

   表sales



 

   集算器代码:

  empEsProc.dfx(该脚本文件用于主报表)



 

   A1:按薪酬范围查询MYSQL数据库的表emp。

  myDB1是数据源名,指向MYSQL。函数query执行SQL查询,可以接收参数,low和high分别是来自报表的参数,表示薪酬范围。当low=1000,high=3000时,A1的计算结果如下:



 

   A2:将A1返回给报表工具。集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库,集成方案请参考相关文档。

  salesEsProc.dfx(该脚本文件用于子报表)



 

   A1:按员工ID从MSSQL的sales表查找相应的订单。

  myDB1是数据源名,指向MSSQL。eid是报表参数,表示员工ID,用来建立主子报表的关联关系。如果eid=1,则A1的计算结果如下:



 

   A2:将A1返回给报表工具。

  接下来以JasperReport为例设计简单的主子报表,主表模板如下:

 

 

   需要定义两个报表参数pLow、pHigh,分别对应empEsProc.dfx中的两个参数。

  报表调用集算器的方法和调用存储过程一样。首先要定义JDBC数据源,比如esProcConn,如下图:



 

   之后就可以在JasperReport的SQL设计器中调用empEsProc.dfx,表达式是:empEsProc $P{pLow},$P{pHigh}。

  下面设计子报表,模板如下:



 

   对于报表来说,empEsProc.dfx和salesEsProc.dfx来自于同一个数据源esProcConn,因此子报表的数据源选择“Use same connection used to fill the master report”,如下图:



 

   类似的,在子报表中调用集算器的SQL写作:salesEsProc $P{pEId}

  主子报表的关系请按照Jasper的规范设定,本案例用主表中的字段$F{EId}映射子报表的参数pEId。最终的表样如下:



 

 Table表相当于格式简单的子报表,Jasper对两者采取了相同的处理结构,因此Table表也会遇到多数据源的问题。此类问题同样可以用集算器解决,比如把本案例的子报表改为Table表。

  报表模版:



 

   报表预览:



 

  • 大小: 43 KB
  • 大小: 29.4 KB
  • 大小: 17.4 KB
  • 大小: 24 KB
  • 大小: 15.5 KB
  • 大小: 59 KB
  • 大小: 42.1 KB
  • 大小: 37.8 KB
  • 大小: 21.9 KB
  • 大小: 36.1 KB
  • 大小: 54 KB
  • 大小: 51.1 KB
  • 大小: 53 KB
分享到:
评论

相关推荐

    jasperreport+ireport创建javaBean多数据源报表

    jasperreport允许使用多个数据源,这对于处理复杂报表场景非常有用。例如,一个报表可能需要合并来自不同数据库或不同JavaBean的数据。jasperreport通过定义多个JRDataSource和在报表设计中分别引用它们来实现这一...

    ireport简单主子报表

    本文将深入探讨如何使用IReport来创建一个简单的主子报表,并通过JavaDataSource作为数据源。 主子报表是一种报表布局,它在一个报表中展示多个层次的数据,通常包含一个主报告(parent report)和一个或多个子报告...

    JasperReport中使用多个数据源的方法

    - **概念**:多数据源是指在一个报表设计中同时使用多个数据源进行数据填充的技术。这些数据源可以是不同的数据库连接、XML文件、JavaBean对象等。 - **应用场景**:例如,一个报表中需要同时展示来自不同数据库的...

    jasperReport自定义javabean数据源实例

    5. **编译和运行报表**: 使用`JasperFillManager.fillReport()`方法,传入报表模板文件、数据源和参数,生成报表。在数据源参数中,传入你之前创建的返回JavaBean集合的类实例。 在提供的压缩包文件中,包含了实现...

    JasperReport 中交叉报表指南

    JasperReport 中交叉报表的生成需要遵循一定的步骤,包括设置 subDataSets 数据源、填写数据源名称和 SQL 语句、创建交叉报表、设置行字段和列字段、设置详细信息、设置参数、设置数据源和连接、设置 Crosstab 参数...

    jasper之Json数据源演示.rar

    【标题】"jasper之Json数据源演示"指的是在JasperSoft报表工具中使用Json数据源进行数据展示的示例。JasperSoft是一款强大的商业智能(BI)平台,它允许用户创建、部署和管理各种报表、仪表板以及分析应用。 【描述】...

    jasperreport创建多个List数据源报表 通多个detail实现多个table效果

    jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷

    jasper怎么构建报表的详细例子

    JasperReport的基础在于JRXML文件,这是一种XML格式的文件,用于定义报表的布局和数据源。你可以使用iReport或Jaspersoft Studio这样的可视化设计工具来创建JRXML文件。报表的基本元素包括字段、文本框、表格、图片...

    spring MVC Web应用中集成Jasper报表工具

    在Spring MVC Web应用程序中集成Jasper报表工具是一个常见的...在整个过程中,关键在于理解报表数据源的构建、报表的填充和渲染,以及报表模板的设计。通过实践和调试,可以逐步完善报表功能,提升Web应用的用户体验。

    Jasper报表官方文档

    此外,它可能还会讨论数据源的连接,如 JDBC、CSV 或 XML,以及如何使用脚本语言(如JavaScript)增强报表的功能。 总的来说,这些文档为全面理解和掌握Jasper报表提供了坚实的基础,无论你是初学者还是经验丰富的...

    jasper ireport 生成 报表

    总的来说,Jasper IReport为开发人员和非开发人员提供了一种强大的报表解决方案,它允许快速设计和生成各种复杂的报表,而无需深入了解底层的报表引擎。通过熟练掌握Jasper IReport,你可以轻松地处理数据可视化任务...

    教你怎么利用ireport软件制作jasper报表文件,是报表模版软件

    jasper报表文件通常以jrxml格式存储,它是基于XML的,用于描述报表的布局和数据源。 1. **安装ireport** 要开始使用ireport,首先需要从官方或开源社区网站下载安装程序,如jasperforge.org。执行安装向导,按照...

    Jasper报表制作小技巧

    2. 使用Json作为数据源:在Jasper报表中,可以使用Json作为数据源。首先需要添加数据源,然后新建报表页,关联数据源,添加数据字段,添加并修改字段标签,属性设置,分组,预览,编译等。 3. 中文字段问题解决:在...

    Dynamic+Jasper+Mysql连接生成报表示例

    Dynamic Jasper是iBatis公司开发的一个强大且灵活的Java报表库,它允许用户在运行时构建报表,这在处理不确定数据结构或频繁变动的数据需求时非常有用。 首先,我们需要理解Dynamic Jasper的基本概念。Dynamic ...

    jasperreport 生成pdf,html,xml,csv,xls报表,myeclipse源码

    - 示例数据:可能有CSV或XML文件,用于测试报表数据绑定。 - 其他资源文件:如图片、字体等,用于报表设计中的特殊效果。 总的来说,这个源码项目为开发者提供了一个学习和实践jasperreport的起点,通过分析和运行...

    ireport 制作jasper报表文件

    (4)**添加字段和表达式**:通过“Fields”和“Expressions”窗口,你可以将数据源中的字段引入到报表模板中,并创建复杂的计算和逻辑表达式。 (5)**预览和测试**:在设计过程中,可以实时预览报表效果,确保...

    springboot整合JasperReport实现报表功能

    3. **填充报表**:使用`JasperFillManager`类,结合数据源和`.jasper`文件,填充报表。你可以传入参数来动态改变报表内容。 4. **导出报表**:最后,使用`JasperExportManager`将填充好的报表导出为PDF、HTML或其他...

    Jasper报表简单示例源码

    博文“Java开源报表Jasper入门(2) -- 使用JasperSoft Studio创建一个简单报表”对应工程的源码,原文地址见:http://blog.csdn.net/neareast/article/details/12030475

    jsp上使用jasper做报表

    实际操作时,你可能需要处理更多细节,如错误处理、参数传递、动态数据源等。通过学习和实践,你可以灵活地构建复杂的报表系统,满足各种业务需求。对于压缩包中的"reportTest",这可能是包含测试报表设计文件或相关...

Global site tag (gtag.js) - Google Analytics