Page tree
Skip to end of metadata
Go to start of metadata

本章就为大家讲解中国式复杂报表入门第一课—如何使用矩表(Tablix )控件实现类Excel 单维度交叉表,即行列决定数据显示。

 

一、报表结构分析

在创建报表之前,我们不着急实现,先要冷静分析报表的结构,选择最适合的报表模板和数据控件,以及具体的实现框架,这样才能保证报表模板的顺利创建,提高开发效率。

由上图可获取信息:

1. 交叉报表,由行和列共同决定显示的数据,左上角使用斜线划分。

2. 行以月份分组,行数不固定,是根据月份动态生成的;

3. 列是以“类别”分组,列数是不固定的,根据类别的个数动态生成的。

4. 具体数据显示“销售额”;

5. 在最后一行,合计全年的商品的销售额,最后一列合计每月的总销售额。

综上分析,采用矩表控件快速实现交叉报表。

二、实现报表

1.新建RDL 报表模板

2. 添加数据源和数据集

绑定数据源,选择Nwind_CHS.mdb数据库

image

添加数据集:


输入SQL 语句:

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 订购年,订购月

image

3. 添加页眉, 右键单击报表资源管理器中的“报表”节点,选择页眉;

在页眉区域,添加TextBox,输入报表标题“产品销售数据分析表”


4.  在报表中添加矩表(Tablix )控件

添加Tablix后,会发现有类似[ 符号,表示分组,即可根据具体数据动态生成行。会发现设计器下面的矩表分组管理器;

注:分组管理器,需要在VS中手动调用显示,调用完成之后,需要重启VS,才能让矩表分组管理器显示分组详情哟: 本章就为大家讲解中国式复杂报表入门第一课—如何使用矩表(Tablix )控件实现类Excel 单维度交叉表,即行列决定数据显示。
选择“视图”——> 其他���口——> 矩表分组管理器V10



image


image

5. 绑定数据字段

将“订购月”直接拖拽到行分组单元格(一定要记得拖拽,拖拽,拖拽)

将“类别名称”直接拖拽到列分组单元格(一定要记得拖拽,拖拽,拖拽)

在选中TextBox4 中可以,将Value属性设为“=Sum(Fields!数量.Value *Fields!单价.Value * (1-Fields!折扣.Value))”;设置Format属性为Decimal,小数位数 2;

image

右键点击“行分组”单元格,选择“添加合计”—>”分组后面”,会自动生成合计行,注意合计行,会自动根据TextBox4 的值添加Sum 表达式,因此为了避免错误,需要手动删除合计行里面的第一个Sum表达式;将=Sum(Sum(Fields!数量.Value *Fields!单价.Value * (1-Fields!折扣.Value))) 修改为:=Sum(Fields!数量.Value *Fields!单价.Value * (1-Fields!折扣.Value))

当然,合计不仅限于Sum表达式,任何表达式都支持,如First,AVG等。

image

右键点击“列分组”单元格,选择“添加合计”—>”分组后面”,会自动生成合计列

image

6. 添加斜线分隔线

拖拽Container控件到TexBox1,在Container中添加Line控件,添加两个Textbox,并输入文本“月份”,“类别”


效果图:

到这里,交叉报表就基本的已经实现了,接下来需要做的就是调整样式。

7. 添加警戒色

可以看到报表模板中,销售额低于2000的呈绿色标识,大于10000背景色呈淡黄色,分两步实现:

1. “脚本”标签中添加以下代码:

      Function SetColor(ByVal v As Double) As String
          If(v < 2000) Then
    Return "#50c48f"
        ElseIf(v > 10000) Then
   Return "#f7b13f"

   End If
   End Function


2. 选中销售数据单元格,设置 BackgroundColor 属性: =Code.SetColor (Sum(Fields!数量.Value *Fields!单价.Value * (1-Fields!折扣.Value)))


8.预览结果

 


相关资源:


注意

如需寻求在线帮助,请访问 ActiveReports 求助中心

如需了解更多ActiveReports产品特性,请访问 ActiveReports 官方网站

ActiveReports 官方技术交流群:109783140

下载产品体验产品功能:http://www.gcpowertools.com.cn/products/download.aspx?pid=16

  • No labels