在Birt中动态插入子表字段

原创 2015年07月10日 08:57:53

         库表dColThread是主表,主键是tID。dColQuestion是子表,外键是tID,如下:

         dColThread


         dColQuestion

        报表需要根据ApplicationName查询主表并以列表的形式展现数据。主表每条记录对应的status字段值有多个,但不超过5个,需要横向插入主表的Phone、Decline字段之间,依次命名为QuestionNo1、QuestionNo2…QuestionNo5。如果某列数据都为空,则这一列不显示。表样形如:


         用集算器准备数据,代码如下:


         A1:执行SQL,取出主子表关联数据。arg1是来自报表参数。假如arg1=”mfc”,则A1的计算结果如下:



         A2:按照tID分组,每组是一条主表记录及其对应的子表记录,如下图:

         A3:按照报表中列表的结构新建空二维表。

         A4:循环A2中的组,每次向A3插入一条记录。循环体中可用A4引用循环变量,用#A4来引用循环计数。

         B4:取当前组中status的字段值,并补足至少5条记录。

         B5:向A3追加新记录。循环结束后A3如下:

         A6:返回结果给报表。集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库。

 

         然后用BIRT设计list表,模板如下:

         如果QuestionNo列为空则应当隐藏。动态隐藏的方法有很多,这里介绍其中一种。对于QuestionNo5(其他列类似),可以先在dataSet的onFetch方法中使用如下脚本:

if(reportContext.getGlobalVariable("t5")==null){
    reportContext.setGlobalVariable("t5",row.QuestionNo5)
}else{
    reportContext.setGlobalVariable("t5",reportContext.getGlobalVariable("t5")+row.QuestionNo5)

         再在QustionNo5列的Visibility属性中使用如下表达式:BirtStr.trim(reportContext.getGlobalVariable("t5"))==""

         预览后可以看到报表结果:

         报表调用集算器的方法和调用存储过程一样,比如将本脚本保存为dColMiddle.dfx,则在BIRT的存储过程设计器中可以用call dColMiddle.dfx(?)来调用。


将一个表的查询结果作为另一查询的字段(动态查询列)

接着上面IP地址字段查询问题,那就是统计结果的展示格式。朋友要的格式是:                城市1  城市2   城市3   城市42010-06      0      1       ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

BIRT开发心得

Birt 小结一、报表模板设计环境1.使用如下URL下载报表的设计环境:http://download.eclipse.org/birt/downloads/       下载birt-report-...
  • mlitsn
  • mlitsn
  • 2007年11月30日 14:55
  • 5924

birt学习笔记-动态配置数据源

1      动态配置数据源 1.1    可以使用公用library 1)       新建一个公共的rptlibrary 2)       新建一个公共的数据库(也可以从已有的报表中导出 expo...
  • clbhii
  • clbhii
  • 2013年09月27日 11:01
  • 710

birt学习笔记(连载)

一、去掉Birt表格下自动生成的日期时间 在报表下点击Xml Source标签,打开xml,找到                                      ...

Birt学习笔记——birt开发过程中常见的问题

原文:http://xulianglly.blog.163.com/blog/static/4361742220111020642884/ 非常实用 2011-11-02 00:06:42...

BIRT学习小结

 自己写的birt学习笔记,由于是根据英文教材学习的,可能在理解上会出现一些偏差,见谅……,如需要示例,可以联系我BIRT概述 BIRT (Business Intelligence and Repo...

第五章 BIRT文本类报表 .

5.1 基本的文本报表 我们构建一个报表ProductLinesAfter.rptdesign,使用示例数据库,空白模板,sql选择查询作为数据源,新建数据集Data Set: selec...

报表工具的动态数据源实现

有时候我们需要用参数动态指定数据源,或将多数据源连接为单数据源,或向子报表、table控件动态传入数据源名。对于此类需求,报表工具经常要借助高级语言实现或牺牲安全性以降低复杂度,尤其是BIRT、Jas...

Birt API 实现动态参数列报表

使用BIRT API 拓展 ReportEventAdapter 类,实现报表动态列展现。 传入参数columnNames字串,解析包含列,动态插入birt报表table列,实现动态参数报表展现。...
  • hob007
  • hob007
  • 2011年06月01日 18:26
  • 8271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Birt中动态插入子表字段
举报原因:
原因补充:

(最多只允许输入30个字)