ActiveReports实现报表批量打印

本文介绍如何通过SQL查询筛选特定时间段内的审批单数据,并利用报表工具实现按时间分组及批量打印的功能。涉及到SQL联表查询、数据筛选及报表设计等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:将一段时间内的审批单按照时间筛选并批量打印

数据准备:根据需求要求筛选出所需数据,并将页面分组字段和排序字段暴露在数据集的列字段列表中!

SELECT
	o.ID_, o.ACTIVITY_, o.CODE_, w.NAME_ AS MATERIAL_WAREHOUSE_, t.NAME_ AS MATERIAL_TYPE_,
	i.MATERIAL_, i.OUT_NUMBER_, da.NAME_ AS PURPOSE_, db.NAME_ AS OUT_TYPE_,
	org.NAME_ AS RECEIVE_ORG_, u.NAME_ AS USER_, o.REASON_, o.OUT_DATE_,
	s.YSW_, s.WAY_, IF ( ( o.OUT_DATE_ >= '2019-03-4 00:00:00' ), s.JXN_, s.WQJ_ ) AS WQJ_
FROM
	(SELECT a.*, 1 AS NUM_ FROM T_MATERIAL_MATERIAL_OUT a ) o
LEFT JOIN T_MATERIAL_MATERIAL_WAREHOUSE w ON w.STATUS_ > -1 AND o.MATERIAL_WAREHOUSE_=w.ID_
LEFT JOIN T_MATERIAL_MATERIAL_TYPE t ON t.STATUS_ > -1 AND o.MATERIAL_TYPE_=t.ID_
LEFT JOIN t_comm_dictionary da ON da.STATUS_> -1 AND o.PURPOSE_=da.ID_
LEFT JOIN t_comm_dictionary db ON db.STATUS_> -1 AND o.OUT_TYPE_=db.ID_
LEFT JOIN t_comm_organization org ON org.STATUS_ > -1 AND o.RECEIVE_ORG_=org.ID_
LEFT JOIN t_comm_user u ON u.STATUS_ > -1 AND o.USER_=u.ID_
LEFT JOIN (
	SELECT s.MATERIAL_, SUM(s.OUT_NUMBER_) AS OUT_NUMBER_, s.CODE_
	FROM v_material_inventory_detail_sum s 
	LEFT JOIN t_material_material_warehouse w ON s.MATERIAL_WAREHOUSE_=w.ID_
	WHERE
	s.TYPE_ = '出库' AND w.WARE_HOUSE_TYPE_ = 9701127
	GROUP BY s.CODE_,s.MATERIAL_) i ON i.CODE_=o.CODE_
LEFT JOIN (
	SELECT a.YSW_, b.WAY_, c.WQJ_,d.JXN_, 1 AS NUM_
FROM 
	(SELECT s.USER_ID_ AS YSW_ID_,s.IMGS_ as YSW_, 1 AS NUM_YSW_ FROM t_comm_sign s WHERE s.STATUS_ > 0 AND s.USER_ID_=2689) a,
	(SELECT s.USER_ID_ AS WAY_ID_,s.IMGS_ as WAY_, 1 AS NUM_WAY_ FROM t_comm_sign s WHERE s.STATUS_ > 0 AND s.USER_ID_=2690) b,
	(SELECT s.USER_ID_ AS WQJ_ID_,s.IMGS_ as WQJ_, 1 AS NUM_WQJ_ FROM t_comm_sign s WHERE s.STATUS_ > 0 AND s.USER_ID_=2692) c ,
	(SELECT s.USER_ID_ AS JXN_ID_,s.IMGS_ as JXN_, 1 AS NUM_JXN_ FROM t_comm_sign s WHERE s.STATUS_ > 0 AND s.USER_ID_=2693) d
WHERE a.NUM_YSW_=b.NUM_WAY_=c.NUM_WQJ_=d.NUM_JXN_) s ON s.NUM_=o.NUM_ 
WHERE o.STATUS_ = 3 AND t.APPROVAL_TYPE_= 9701124;

本例中页面分组字段为“code”排序字段为“outDate”

新建报表报表类型选择为“页面报表”,以页面进行布局

创建基于页面布局的报表

使用Table控件,将table拖入页面区域后可以看到控件周围会有两种控件大小调整的按钮,白色的为控制报表表格实际占用的页面大小,灰色为控制报表生成明细数据后可以占用的页面大小调整控件占用的页面大小

修改“固定页面布局设置”,选中页面的灰色空白区域,页面左下角会出现“固定页面布局设置”按钮,选择分组添加添加分组表达式和排序表达式,在字段列表中选择code插入

添加分组表达式选择分组字段
添加排序表达式
选择排序字段

设计报表主体,字段添加完成后预览会发现报表已经按照“code”进行分组并按照“outDate”倒叙排列显示明细列表了

效果预览

注意:尽量将前文所说的灰色“报表明细生成后可占用的页面大小”调整为与页面大小保持一致,否则报表是无法占整个页面,影响打印效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值