在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(?)来调用。


birt 交叉报表动态列实例

  • 2014年11月17日 11:26
  • 36KB
  • 下载

(5)birt笔记 - table表相关-利用Java Script&Java动态添加table表的列数

在利用birt报表制作table表格时,我们经常会遇到所要制作的表格列数不固定的情况,比如第一列是科目名,后面的列是各个学生的情况(当然实际中一般都是第一列为学生,后面每列是科目,这里只是举个例子),...
  • yeyinglingfeng
  • yeyinglingfeng
  • 2017年07月20日 11:57
  • 631

Birt API 实现动态参数列报表

使用BIRT API 拓展 ReportEventAdapter 类,实现报表动态列展现。 传入参数columnNames字串,解析包含列,动态插入birt报表table列,实现动态参数报表展现。...
  • hob007
  • hob007
  • 2011年06月01日 18:26
  • 8457

birt报表中原来可以这样交互

之前一直都有用birt,但居然今天知道可以这样交互,在DW上看到的,http://www.ibm.com/developerworks/cn/edu/os-dw-os-eclipse-birt-adv...
  • jackyrongvip
  • jackyrongvip
  • 2013年07月01日 16:19
  • 1199

BIRT常用操作

1. 动态修改chart/report的title      选中并打开一个xxx.rptdesign,先点"Layout"标签,再点"Script"标签,这个时候就能进入整个report的sc...
  • qbg19881206
  • qbg19881206
  • 2013年07月22日 10:43
  • 2643

使用Birt创建含有子报表的报表

1、  前面创建主子数据集的的步骤省略注意  这里不用定义报表参数,只有选择“paramaters”->add一个就行了2、  拖一个list到报表中间将主数据集的字段,拖到detail中。同时,把子...
  • pengchua
  • pengchua
  • 2008年04月22日 16:30
  • 3426

birt api 实现动态列参数报表

  • 2011年06月01日 19:26
  • 4KB
  • 下载

birt分组小计和自动增加序列号实现方法

  • 2009年07月09日 23:48
  • 27KB
  • 下载

动态处理BIRT中的图片

 动态处理BIRT中的图片如果数据库中的图片是经过压缩后以CLOB的形式存放的,该如何将数据库中的图片放到BIRT中?直接在BIRT中使用数据集是无法显示图片的。所以必须先将数据库中的图片数据取出,解...
  • mlitsn
  • mlitsn
  • 2008年01月25日 15:06
  • 2182

在BIRT中使用动态图片

 在BIRT中使用动态图片   BIRT中插入图片的方式有4种:使用图片的URI,使用BIRT shared resources 下面的图片,直接把图片文件嵌入BIRT Template中,还要就是从...
  • mlitsn
  • mlitsn
  • 2008年01月16日 14:51
  • 3247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Birt中动态插入子表字段
举报原因:
原因补充:

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