Birt中实现字段拆分为表的另一种方法

来源:     http://developer.actuate.com/community/forum/index.php?/topic/36204-split-data-row/

将字段拆分为多条记录,可以用存储过程或报表脚本来实现,但代码比较复杂,这种情况下可以用集算器来辅助报表工具,下面用例子来说明。

库表data有两个字段,需要将ANOMOALIES字段按空格拆分为多个字符串,每个字符串和原ID字段形成新的记录。源数据如下:

集算器代码:

A1:查询数据库。

A2:拆分ANOMALIES字段,形成新二维表。函数conj可对A1中每个成员的计算结果进行合并。“~”表示集合中的当前成员。结果如下:

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

下面用BIRT设计简单的list表:

预览:

报表调用集算器的方法和调用存储过程一样,比如将本脚本保存为BIRTsplitrow.dfx,则在BIRT的存储过程设计器中可以用callBIRTsplitrow()来调用并输入参数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 12:53:17

Birt中实现字段拆分为表的另一种方法的相关文章

关于SQLServer数据库中字段值为NULL,取出来该字段放在DataTable中,判断datatable中该字段值是否为NULL的三种方法

1. DataTable dt;                               //假设字段为name, dt已经保存了数据dt.rows[0]["name"] == System.DBNull.Value;  //判断第一行数据的name字段是否为空 2. DataTable dt;                          //假设字段为name, dt已经保存了数据   dt.rows[0]["name"].ToString() == &

表单验证--几种方法总结

表单验证--几种方法总结 HTML5中custom data-*特性与asp.net mvc 3 表单验证:http://www.2cto.com/kf/201204/127526.htmljQuery html5Validate基于HTML5表单验证插件:http://www.zhangxinxu.com/wordpress/2012/12/jquery-html5validate-html5-form-validate-plugin/基于Bootstrap+jQuery.validate F

利用JS提交表单的几种方法和验证(必看篇)

第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <script type="text/javascript">    function validate(obj) {     if (confirm("提交表单?")) {       alert(obj.value);       return true;     }

Struts学习笔记(三)struts2中获得request、response和session的三种方法

struts2中获得request.response和session的三种方法   (1)非IoC方式 方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象. ActionContext ctx = ActionContext.getContext(); ctx.put("liuwei", "andy"); //request.setAttribute("l

C语言K&R习题系列——句子中一个空格代替多个空格的四种方法

原题: Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank. 第一种: 这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外 #include <stdio.h>   int main(void) {   int c;   int inspace=0;     while((c = getcha

js日期/时间比较函数,以及js校验表单后提交表单的三种方法,表单验证,以及三种结合

<pre class="html" name="code"> js日期比较(yyyy-mm-dd) function duibi(a, b) { var arr = a.split("-"); var starttime = new Date(arr[0], arr[1], arr[2]); var starttimes = starttime.getTime(); var arrs = b.split("-");

Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法

虚拟机是每个程序员必备的工具.本文根据最新版VirtualBox用户手册的提示,通过自己的亲自实践,给出了Win7系统与运行在其中的VirtualBox 5.0.2中的Ubuntu 14.04共享信息的三种方法,而不仅仅是建立二者的共享文件夹. 在学习新的技术时,或者做不同的测试时,为了节省硬件的目的,我们常常安装虚拟机,并在其中安装不同的操作系统.我们把运行在硬件的本来的那个操作系统称为主操作系统 (host OS),而把运行在虚拟机上面的操作系统称为客操作系统 (guest OS).这时,在

兔子IP教你解决日常使用过程中ip被封锁IP被限制的几种方法

兔子IP解决日常使用过程中ip被封锁IP被限制的几种方法 方法1使用多IP:1.IP必须需要,比如ADSL.如果有条件,其实可以跟机房多申请外网IP.2.在有外网IP的机器上,部署代理服务器.3.你的程序,使用轮训替换代理服务器来访问想要采集的网站.好处:1.程序逻辑变化小,只需要代理功能.2.根据对方网站屏蔽规则不同,你只需要添加更多的代理就行了.3.就算具体IP被屏蔽了,你可以直接把代理服务器下线就OK,程序逻辑不需要变化. 方法2.有小部分网站的防范措施比较弱,可以伪装下IP,修改X-Fo

oracle开发系列(五) 取左表不在右表记录的3种方法-引申到db2

引: 我们在做数据库开发用 pl sql 加工数据时,经常会遇到取a表不在b表中的记录 或者 左表不在右表中的记录 的情况,所以特地对此做个简单的总结,以便以后用到回顾. 解决: 取a表某字段不在b表 我们自然的逻辑会想到用 a not in b ,这是第一种方法 1 not in 如下图 ,数据库为不跑业务的测试数据库,两张表的数据量一样, 用not in 可以找出a表中prd_inst_id不在t表中的记录 如下图,为生产库的表  l 和t表数据量相同,数据量900w左右 2 not exs