首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

运用wabacus框架实现不同数据源的控制数据记录集做法

2012-06-28 
使用wabacus框架实现不同数据源的控制数据记录集做法前段时间写了一篇《使用wabacus框架实现多个数据源集合

使用wabacus框架实现不同数据源的控制数据记录集做法
   前段时间写了一篇《使用wabacus框架实现多个数据源集合到一个报表上中的做法》小文章,在这篇文章中主要做法是:怎么在把不同数据源的数据栏位集合到一个报表中,其中主要是在拦截器中使用 wabacus的ReportDataAssistant.getInstance().setColValue 方法来实现的,有需要深入了解的朋友可以看我前一篇文章。
    随着需求的不断加深,使用此方法还不能满足需求,因为如果你要在报表中查询第二数据源的数据的时候,使用此方法是不能满足要求的,所以我们要使用控制数据记录集的做法来自己构造集合,实现报表的展示。
   [size=large]首先我们的report头部应该这些写:[/size]
   
  
   其次我们在拦截器中应该这些写:
   
     1,这个是接受报表查询的条件值
    2,这里在如果sql=sql.replaceAll 这样写,那么第一次循环的时候,就把"%mycondition%替换掉了,第二次循环时,已经没有这个占位,所以我们这样写 String  sqltemp=sql.replaceAll就可以了。
    3,在这里一般"count(*)">0的,但是如果你的sql里面有count(*)的话就会出问题。因为如果有count(*),框架就会执行lstResults.add(rs.getInt(1));两遍。
    4,如果是空值就会抛出未刷卡的人员名单。(这个地方是个集合)
    5,这里就开始构造自己的数据集合了。
    最后如果你要想传值到报表就可以用: rrequest.setAttribute来传值,但是一般在format中接受值的时候,你会发现根本接受不到拦截器中的值,为什么呢?是因为我这是在加载数据前置运作中自己构造结果集,而不是由框架来执行你的SQL语句构造结果集,并且我自己开发了存放报表数据的POJO类work1,不是由框架自动生成,所以pojo.format(rrequest,rbean);
不会调用<format/>标签中的格式化方法,而是调用我的类work1 自己的format()方法。
所以你只要将代码:
String wafer=        (String)rrequest.getAttribute("name");                                   
写到work1的format()方法中即可。
其中POLO对象代码如下:
package com.wabacusdemo;

import com.wabacus.config.component.application.report.ReportBean;
import com.wabacus.system.ReportRequest;
import com.wabacus.system.format.IFormat;

public class work1 implements IFormat
{  

private String ssn;
    private String name;
    private String checktime;
    private String sensorid;
    private String dpnm;
    private String number;
    public String getDpnm() {
return dpnm;
}
public void setDpnm(String dpnm) {
this.dpnm = dpnm;
}
public String getSsn() {
return ssn;
}

public void setSsn(String ssn) {
this.ssn = ssn;
}

public String getChecktime() {
return checktime;
}


public void setChecktime(String checktime) {
this.checktime = checktime;
}

public String getSensorid() {
return sensorid;
}
    public void setSensorid(String sensorid) {
this.sensorid = sensorid;
}

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void format(ReportRequest rrequest,ReportBean rbean){
//String bumen =  (String)rrequest.getStringAttribute("bumen","");
//String wafer=(String)rrequest.getAttribute("namescj");

    }



}


     这样我们不仅可以查询分类第一数据源数据栏位,而且也可以查询第二数据源数据栏位。

热点排行