报表制作2(传入一个sql主键 含子报表)

转自:http://www.cnblogs.com/ms-grf/p/6756243.html

报表js

$scope.printCpTempletMasterDetail = function (cpId) {
        var parameters = {
            reportFileName: "reports/doctorstation/CpTempletMasterDetail.jasper",
            parameters: {
                ‘cpId‘: cpId
            }
        };
        var printInfoObject = {
            type: "report",
            appletParameters: {
                is_direct_print: true,
                is_display: false,
                printer_name: null,
                report_url: "api/jasper-prints/doctor-station/cp-order-detail"
            },
            reportParameter: parameters
        };
        HrUtils.postMessageToBaseFrame(printInfoObject, "*");
    };

报表DoctorstationPrintResource.java

package com.heren.his.report.api;

import com.heren.his.report.facade.DoctorstationPrintFacade;
import com.heren.his.report.vo.JasperPrintParamsVo;
import net.sf.jasperreports.engine.JasperPrint;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("doctor-station")
public class DoctorstationPrintResource {
    @javax.inject.Inject
    private DoctorstationPrintFacade doctorstationPrintFacade;

    /**
     * 打印路径明细
     * @param parameters
     * @return
     */
    @GET
    @Path("cp-order-detail")
    @Produces({MediaType.APPLICATION_OCTET_STREAM})
    public JasperPrint fillCpTempletMasterDetailReport(@QueryParam("parameter") JasperPrintParamsVo parameters){
        return doctorstationPrintFacade.fillCpTempletMasterDetailReport(parameters);
    }
}

报表DoctorstationPrintFacade.java

package com.heren.his.report.facade;

import com.google.common.base.Strings;
import com.heren.his.report.common.HrResultSet;
import com.heren.his.report.vo.JasperPrintParamsVo;
import com.heren.his.report.vo.doctorstation.ErOutpBloodDetail;
import com.heren.his.report.vo.doctorstation.ErOutpBloodVO;
import com.heren.his.report.vo.doctorstation.MedicalRecordInfoVO;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static com.heren.his.report.util.ReportUtils.obtainJasperReportByFileName;

public class DoctorstationPrintFacade extends BaseJasperFillFacade {

    private static final Logger LOGGER = LoggerFactory.getLogger(DoctorstationPrintFacade.class);

    @Inject
    private MedicalInfoDataFacade medicalInfoDataFacade;

    /**
     * 打印路径医嘱明细
     *
     * @param jasperPrintParamsVo
     * @return
     */
    public JasperPrint fillCpTempletMasterDetailReport(JasperPrintParamsVo jasperPrintParamsVo) {
        LOGGER.debug("填充报表[{}];填充时使用参数:[{}]。", jasperPrintParamsVo.getReportFileName(), jasperPrintParamsVo.getParameters());
        Map reportParam = jasperPrintParamsVo.getParameters();//js里面的cpId
        reportParam.put("SUBREPORT_DIR", "reports/doctorstation/");
        return hrFillReportWithConnection(obtainJasperReportByFileName(jasperPrintParamsVo.getReportFileName()), reportParam);
    }
}

报表

1:创建主报表master.jrxml

先在master.jrxml新建两个parameters,名字是上面代码中红色标注的 如下图

cpId是用来写sql的主键,而SUBREPORT_DIR是用来连接子报表的一个地址

开始写master.jrxml的sql语句如下图

  写完sql点击Read Fields就可以把master.jrxml里用到的参数放置在Fields里面了

完善master.jrxml

2:建立子报表 nurse.jrxml

  下面这个STAGE_ID是从父报表传到子报表的参数(因为子报表也需要写sql也需要查询条件)

  子报表建立完成

最主要的一点配置子报表如下

然后把连接子报表的SUBREPORT_DIR变量设置一下如下

生成.jasper文件如下

做测试如下

时间: 2024-08-12 05:06:37

报表制作2(传入一个sql主键 含子报表)的相关文章

SQL主键&外键

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学

SQL 主键 自动编号 主键自增

1.新建一数据表,里面有字段id,将id设为为主键 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create table tb(i

通过SQL创建一个有主键自动递增有默认值不为空有注释的表

-- create database db_std_mgr_sys; use db_std_mgr_sys; create table student( std_id bigint not null auto_increment, std_name varchar(10) not null default '', std_code varchar(20) not null default '' comment '学号,值唯一', std_sex varchar(8) not null defau

SQL 主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄.身份证号是唯一能确

SQL主键,外键,范式,查询,运算符

主键和外键主键:是一个索引,帮我们快速的查找,在数据库里拿出一列来作为主键,数据是唯一的不可重复的数据不能为空的数据,减慢新增的数据右键点表,点设计,右击列,设为主键primary key设为主键的关键词外键是一个约束,约束来源与另一个表里面的一列数据,这一列要求是唯一标示的一列unique(把一列的数据弄成唯一的) 删除主键里面的数据之前要先删除外键里面的引用identity(1,1)标识规范(是标识)标识种子(设置int型) 范式第一范式:每一列数据内容要单一,统一第二范式:尽量与主键直接相

SQL 主键与外键

两个表建完后,建立关联 1.右击需要关联的表,选择设计 2.选择需要建立关联的列名,单击右键,选择关系 3.出现下边对话框,单击左下方的添加键,选择右方 表和列归还 打击后边的省略号选择 4.在下边对话框中,主键表选择设置主键的bumen 表,下方选择一开始设置的主键,即部门的编号bcode, 外键表,选择ren 表,需要设置关联的外键是 bumen ,即将ren表中的bumen 那一列和bumen 表中的主键 bcode 关联起来 查询两个表情况如下:

主键,子外键查询

主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值.由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列. 主键的作用 主键的主要作用如下: (1)保证实体的完整性: (2)加快数据库的操作速度: (3) 在表中添加新记录时,数据库会自

linux之SQL语句简明教程---主键,外来键

主键 (Primary Key) 中的每一笔资料都是表格中的唯一值.换言之,它是用来独一无二地确认一个表格中的每一行资料.主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位).主键可以包含一或多个栏位.当主键包含多个栏位时,称为组合键 (Composite Key). 主键可以在建置新表格时设定 (运用 CREATE TABLE 语句),或是以改变现有的表格架构方式设定 (运用 ALTER TABLE). 以下举几个在建置新表格时设定主键的方式: MySQL: CREA

SQL反模式学习笔记4 需要ID,建立主键规范

2014-10-11 10:23:31 目标:建立主键规范 反模式:每个数据库中的表都需要一个伪主键Id 在表中,需要引入一个对于表的域模型无意义的新列来存储一个伪值,这一列被用作这张表的主键, 从而通过它来确定表中的一条记录,即便其他的列允许出现适当的重复项.这种类型的主键列我们通常称其为“伪主键”或者“代理键”. 1.冗余键值:如果存在一个逻辑上更为自然的主键并且也满足unique约束,那么id就多余了: 2.允许重复项:伪主键本身确保了表的数据不会存在重复项,所以也就无法避免表中的其它数据