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

在葡萄城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

3、 添加数据集

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

常规-名称:SaleDetails

查询-查询:

SELECT

t.*, 类别.类别名称

FROM

(

SELECT

DATEPART("yyyy",订单.订购日期)

AS

订购年, DATEPART("m",订单.订购日期)

AS

订购月,类别.类别ID,产品.产品名称,订单明细.数量, 订单明细.单价, 订单明细.折扣

FROM

(( 订单

INNERJOIN

订单明细

ON

订单.订单ID = 订单明细.订单ID)

INNERJOIN

产品

ON

订单明细.产品ID = 产品.产品ID)

INNERJOIN

类别

ON

产品.类别ID = 类别.类别ID )

as

t

INNERJOIN

类别

ON

t.类别ID = 类别.类别ID

ORDERBY

订购年,订购月

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设置为白色。

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

5、运行程序

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

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

http://www.gcpowertools.com.cn/products/activereports_demo.htm

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据存储

硬盘IO性能估算入门

IO是输入输出指令,操作系统向存储控制器下发一个读或者写数据的操作指令,控制器下发地址和数据给存储设备,并返回结果给存储控制器,最后到达操作系统。操作系统的一个...

1K130
来自专栏人工智能头条

一边吃瓜看球,一边完成AI应用实践——手写体识别入门

23420
来自专栏极客猴

使用 Python 生成二维码

新时代,人们有人信新的追求,自然而然会有新发明的诞生。去年,在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁、扫码支付、...

36100
来自专栏数据小魔方

R语言可视化——REmap动态地图

今天开始,要跟着大家学习一个新的可视化R包——REmap包。 说起来,这个包要归功于百度的可视化开源项目——echarts,它是国内为数不多的高水平开源可视化j...

91860
来自专栏理论坞

【教程】C4D制作Lowpoly风格

按键盘m键,再按c键,调出笔刷工具,将衰减值改成50%,模式改成表面,笔刷强度50%,半径60cm。然后开始在平面上绘制地形。

13320
来自专栏程序你好

JavaScript图表的数据可视化:比较D3和Kendo UI

D3和Kendo UI只是在web应用程序中创建图表的两种方式,选项范围从简单地在屏幕上绘制图形到使用复杂的图表组件。D3和Kendo UI都很受欢迎,两者都能...

11030
来自专栏学习圈

移动端通用优化方案

手机屏幕帧率一般为60 FPS,也就是说一帧的渲染时间为16.7ms,所以如果页面渲染时间超过16.7ms 容易出现卡顿现象。提高页面渲染效率可以考虑如下方法:

260110
来自专栏ATYUN订阅号

深度学习图像识别项目(下):如何将训练好的Kreas模型布置到手机中

今天,我们将这种经过训练的Keras模型部署到iPhone手机或者说iOS的APP中,在这里我们使用CoreML,这 是一种易于使用的Apple应用程序机器的学...

30140
来自专栏技术小黑屋

两分钟理解Android中SP与DP的区别

因此通常情况下,我们还是建议使用sp作为字体的单位,除非一些特殊的情况,不想跟随系统字体变化的,可以使用dp.

15220
来自专栏IMWeb前端团队

LaTex数理化公式展示方案简介

本文作者:IMWeb jerytang 原文出处:IMWeb社区 未经同意,禁止转载 LaTex 是什么 LaTex 是基于 Tex 的排版系统,常用...

95260

扫码关注云+社区

领取腾讯云代金券