ActiveReports 报表应用教程 (7)---交叉报表及数据透视图实现方案

本文介绍如何使用ActiveReports中的矩阵控件创建交叉报表,包括设置数据分组、排序、过滤等,实现智能数据分析。通过具体实例展示如何创建报表文件、添加数据集、设计报表界面并运行程序。

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

在 ActiveReports 中可以通过矩阵控件非常方便的实现交叉报表,同时还可以设置数据的分组、排序、过滤、小计、合计等操作,可以满足您报表的智能数据分析等需求。在矩阵控件中组的行数和列数由每个行分组和列分组中的唯一值的个数确定。同时,您可以按行组和列组中的多个字段或表达式对数据进行分组。在运行时,当组合报表数据和数据区域时,随着为列组添加列和为行组添加行,矩阵将在页面上水平和垂直增长。

在矩阵控件中,也可以包括最初隐藏详细信息数据的明细切换,然后用户便可单击该切换以根据需要显示更多或更少的详细信息,以此实现数据向下钻取功能。

我们这里将要演示的是产品销售数据分析表,列分组按照产品类别和产品名称进行分组;行分组按照年和月进行分组,并对销量大于2000的数据进行高亮显示,以下是详细实现步骤:

1、创建报表文件

在应用程序中创建一个名为 rptCrossTable1.rdlx 的 ActiveReports 报表文件,使用的项目模板为 ActiveReports 页面报表,创建完成之后从 VS 的报表菜单项中选择转换为连续页面布局(CPL)报表,将固定页面报表转换为连续页面报表。

2、打开报表资源管理器,并按照以下信息创建报表数据源

名称: 
NWind_CHS

类型: 
Micorsoft OleDb Provider

OLE DB 提供程序: 
Microsoft.Jet.OLEDB.4.0

服务器或文件名称: 
Data\NWind_CHS.mdb

ActiveReports 报表功能展示 页面报表数据源

3、 添加数据集

在新建的 NWind_CHS 数据源上鼠标右键并选择添加数据集菜单项,数据集信息如下:

常规-名称:SaleDetails

查询-查询:

SELECT t.*, 类别.类别名称 FROM (
SELECT DATEPART("yyyy",订单.订购日期) AS 订购年, DATEPART("m",订单.订购日期) AS 订购月,类别.类别ID,产品.产品名称,订单明细.数量, 订单明细.单价, 订单明细.折扣 FROM (( 订单 
 INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID)
 INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID)
 INNER JOIN 类别 ON 产品.类别ID = 类别.类别ID ) as t
 INNER JOIN 类别 ON t.类别ID = 类别.类别ID
 ORDER BY 订购年,订购月


4、设计报表界面

从 Visual Studio 工具箱中将 ActiveReports 7 页面布局报表分类下的 Matrix 控件添加到报表设计界面,然后从属性窗口的命令区域选择属性对话框命令,以打开矩阵控件 Matrix 的属性设置对话框,然后按照以下表格设置矩阵控件 Matrix 的属性:

矩阵-常规-数据集名称: 
SaleDetails

行分组-常规-添加分组: 
名称:Matrix1_订购年 
分组:=[订购年] 
表达式:=[订购年]

行分组-常规-添加分组: 
名称:Matrix1_订购月 
分组:=[订购月] 
表达式:=[订购月]

列分组-常规-添加分组: 
名称:Matrix1_类别名称 
分组:=[类别名称] 
表达式:=[类别名称]

列分组-常规-添加分组: 
名称:Matrix1_产品名称 
分组:=[产品名称] 
表达式:=[产品名称]

完成以上设置之后回到报表设计界面,选中数据单元格 TextBox4 ,在属性窗口的命令区域中点击属性对话框命令,并按照以下表格设置数据单元格的属性:

常规-值: 
=Sum([数量] *[单价] * (1-[折扣]))

外观-背景色-颜色: 
=IIf( (Sum( [数量] *  [单价]  * (1-  [折扣]  )) > 2000) And ( Sum( [数量] *  [单价]  * (1-  [折扣]  )) <> ""  , "#c21952", "White" )

需要注意的是,我们将外观-背景色-颜色属性通过表达式的方式来完成对数据的高亮显示,如果销售量大于2000单元格背景色设置为高亮,小于等于2000设置为白色。

最终完成的设计界面如下:

ActiveReports 报表功能展示 交叉报表

5、运行程序

通过 F5 键运行程序,得到以下效果:

ActiveReports 报表功能展示 交叉报表

在线演示及源码下载地址:

http://www.gcpowertools.com.cn/products/activereports_demo.htm 
ActiveReports 报表功能展示

第8课 JRXML报表模板元素讲解3 继续上节课的内容,讲解jrxml文件的元素 • filterExpression是用来过滤数据源的记录的,用法很简单。如果在filterExpression中的表达式是 Boolean.TRUE,则当前记录会显示在报表上,否则,filterExpression中的表达式是 Boolean.FALSE 或者 null,则当前记录不会显示。 注意:一般情况下我们是不会使用此元素的,因为没有必要啊,直接在sql中写上条件就可以了。 只有当我们无法通过简单的方式来过滤数据的时候,才会用到这个元素,比如 CSV 文件数据源。 一个模板文件最多只能包括一个此元素。 例子: <![CDATA[$F{status}.equals("active") ? Boolean.TRUE :Boolean.FALSE]]> • • group 元素被用来将数据源中的一些连续的记录根据一些共同的属性来进行分组。 例子: <![CDATA[$F{FieldName}]]> • background 元素被用来定义报表中所有页面的背景。可以展现图像和文本。 注意:此元素在一个jrxml模块中最多只能使用一次。 例子: "image.gif" 第9课 JRXML报表模板元素讲解4 继续上节课的内容,讲解jrxml文件的元素 • <title> 顾名思义:title就是报表的标题了。它只在报表的开始出现一次。 例子: <title> <![CDATA[myTitle]]> </title> • • pageHeader定义报表页的面头信息,它显示在每个页的开始位置。 每个jrxml模板文件可以包括0个或者1个pageHeader元素。 例子: <![CDATA[Page Header]]> • columnHeader定义每列数据的列标题。 注意:如果是报表中只有一列数据,则会忽略列标题。如果你指定了列标题(pageHeader),那么,列标题的个数必须与列数相同。 第10课……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值