ActiveReports 的图表控件支持绝大多数常用的二维和三维图表类型,包括XY图表和财务图表。通过使用图表控件的定制功能,如修改坐标轴、图注、图例等,用户可以创建任何其所需要的图表效果。用户还可以通过代码把定义好的图表输出为多种图像格式。 本文将演示如何在 ActivReports 中实现图文混淆报表。
我们将要实现的是2011年度各类产品销量统计报表,其中图表按照产品类别统计销量,表格按照类别和月份统计销售量。
1、创建报表文件
在 ASP.ENT 应用程序中添加一个名为 rptSalesByCategory.rdlx 的页面报表文件,使用的报表模板为“ActiveReports RDL报表”。
2、为 rptSalesByCategory 报表添加数据源
通过 VS2010 “菜单” –> “其他窗口” –> “报表资源管理器 ” 打开 ActiveReports 报表资源管理器,在数据源节点上鼠标右键,并选择“添加数据源”。在出现的报表数据源对话框中,输入下图所示的信息:
2.1、在新创建的 NWind_CHS 数据源节点上鼠标右键,并选择添加数据集,在出现的数据集对话框中输入一下信息:
常规选项卡 –> 名称:Sales
查询选项卡 –> 查询:
SELECT 类别.类别名称,t.* FROM (SELECT 类别.类别ID,SUM(订单明细.数量) AS 销售量 FROM (( 订单INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID)INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID)INNER JOIN 类别 ON 产品.类别ID = 类别.类别IDWHERE DATEDIFF("yyyy",订单.订购日期,'2011-01-01') = 0GROUP BY 类别.类别ID, 类别.类别名称ORDER BY 类别.类别ID, 类别.类别名称 ) as tINNER JOIN 类别 ON t.类别ID = 类别.类别ID
2.2、在 NWind_CHS 数据源节点上鼠标右键,并选择添加数据集,在出现的数据集对话框中输入一下信息:
常规选项卡 –> 名称:SaleDetails
查询选项卡 –> 查询:
SELECT 类别.类别名称,t.* FROM (SELECT DATEPART("m",订单.订购日期) AS 订购月,类别.类别ID,SUM(订单明细.数量) AS 销售量 FROM (( 订单INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID)INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID)INNER JOIN 类别 ON 产品.类别ID = 类别.类别IDWHERE DATEDIFF("yyyy",订单.订购日期,'2011-01-01') = 0GROUP BY DATEPART("m",订单.订购日期),类别.类别ID, 类别.类别名称ORDER BY DATEPART("m",订单.订购日期),类别.类别ID, 类别.类别名称 ) as tINNER JOIN 类别 ON t.类别ID = 类别.类别ID
3、创建图表对象
从 VS 工具箱中将 Chart 控件添加到报表设计界面,选中 Chart 后在属性窗口中的命令区域会显示 Chart 相关的操作命令,我们点击【图表数据…】命链接,此时会显示图表数据对话框,按照以下截图完成 Chart 的设置:
3.1 图表数据-常规设置
名称: | Chart1 |
工具提示: | 2011年度各类产品销售量统计表 |
数据集名称: | Sales |
3.2、图表数据-系列值
系列标签: | 销售量 |
值: | =Sum([销售量]) |
3.3、图表数据-类别分组
分组-表达式: | =[类别名称] |
标签: | =[类别名称] |
4、创建数据明细表
我们将使用矩阵控件 Matrix 来显示每月,每类产品的销售量,从 VS 工具箱中将矩阵控件 Matrix 添加到报表设计界面,并选择矩阵控件,此时在属性窗口中的命令区域会显示【属性对话框…】命令链接,点击该链接。
4.1、矩阵-常规设置
数据集名称: | SaleDetails |
4.2、矩阵-行分组
常规-分组-表达式: | =[订购月] |
排序-表达式: | =[订购月] |
4.3、矩阵-列分组
常规-分组-表达式: | =[类别名称] |
4.4、我们得到的最终设计效果和运行效果如下图所示:
5、运行程序
示例下载:
源码下载地址: /developer/activereports/demo