ActiveReports 的图表控件支持绝大多数常用的二维和三维图表类型,包括XY图表和财务图表。通过使用图表控件的定制功能,如修改坐标轴、图注、图例等,用户可以创建任何其所需要的图表效果。用户还可以通过代码把定义好的图表输出为多种图像格式。 本文将演示如何在 ActivReports 中实现图文混淆报表。

我们将要实现的是2011年度各类产品销量统计报表,其中图表按照产品类别统计销量,表格按照类别和月份统计销售量。

 

1、创建报表文件

在 ASP.ENT 应用程序中添加一个名为 rptSalesByCategory.rdlx 的页面报表(PageReport)文件,使用的报表模板为“ActiveReports 7 页面报表”,创建完成之后通过 VS 的以下菜单完成报表转换操作:

 

2、为 rptSalesByCategory 报表添加数据源

通过 VS2010 “菜单” –> “其他窗口” –> “报表资源管理器 V7 ” 打开 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 = 类别.类别ID
 WHERE DATEDIFF("yyyy",订单.订购日期,'2011-01-01') = 0
 GROUP BY 类别.类别ID, 类别.类别名称
 ORDER BY 类别.类别ID, 类别.类别名称 ) as t
INNER 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 = 类别.类别ID
 WHERE DATEDIFF("yyyy",订单.订购日期,'2011-01-01') = 0
 GROUP BY DATEPART("m",订单.订购日期),类别.类别ID, 类别.类别名称
 ORDER BY DATEPART("m",订单.订购日期),类别.类别ID, 类别.类别名称 ) as t
INNER 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、运行程序

 

源码下载地址: http://www.gcpowertools.com.cn/products/activereports_demo.htm

ActiveReports 报表应用教程 (3)---图表报表的更多相关文章

  1. ActiveReports 报表应用教程 (9)---交互式报表之动态排序

    在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取.过滤等功能可以让用户更方便地分析报表数据 ...

  2. ActiveReports 报表应用教程 (8)---交互式报表之动态过滤

    用户可以使用ActiveReports参数 (Parameters)集合把数据提供给报表中的文本框或图表,也可以选择数据的一个子集显示到报表的特定区域,或者是把数据从主报表象子报表传递.用户可以通过三 ...

  3. ActiveReports 报表应用教程 (12)---交互式报表之贯穿钻取

    在葡萄城ActiveReports报表中提供强大的数据分析能力,您可以通过图表.表格.图片.列表.波形图等控件来实现数据的贯穿钻取,在一级报表中可以通过鼠标点击来钻取更为详细的数据. 本文展示的是20 ...

  4. ActiveReports 报表应用教程 (10)---交互式报表之向下钻取(详细数据按需显示解决方案)

    在葡萄城ActiveReports报表中可以动态的显示或者隐藏某区域的数据,通过该功能用户可以根据需要显示或者隐藏所关心的数据,结合数据排序.过滤等功能可以让用户更方便地分析报表数据. 本文中展示的是 ...

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

    在 ActiveReports 中可以通过矩阵控件非常方便的实现交叉报表,同时还可以设置数据的分组.排序.过滤.小计.合计等操作,可以满足您报表的智能数据分析等需求.在矩阵控件中组的行数和列数由每个行 ...

  6. ActiveReports 报表应用教程 (6)---分组报表

    在 ActiveReports 中可以设置单级分组.嵌套分组,同时,还可以使用表格.列表以及矩阵等数据区域控件对数据源进行分组操作.分组报表在商业报表系统中应用不胜枚举,客户信息归类统计表.商品分类统 ...

  7. ActiveReports 报表应用教程 (11)---交互式报表之文档目录

    通过文档目录,用户可以非常清晰的查看报表数据结构,并能方便地跳转到指定的章节,最终还可以将报表导出为PDF等格式的文件.本文以2012年各月产品销售分类汇总报表为例,演示如何在葡萄城ActiveRep ...

  8. ActiveReports 9实战教程(3): 图文并茂的报表形式

    基于上面2节内容,我们搭建了AR9的开发环境,配置好了数据源.在本节,我们以官方提供的3个中文图文并茂的报表来展示AR9的功能,并通过实战的方式一一分享. 以往做报表相关的工作时,最害怕的是报表的UI ...

  9. ActiveReports 报表应用教程 (1)---Hello ActiveReports

    在开始专题内容之前,我们还是了解一下 ActiveReports 是一款什么产品:ActiveReports是一款在全球范围内应用非常广泛的报表控件,以提供.NET报表所需的全部报表设计功能领先于同类 ...

随机推荐

  1. 2016年象行中国(上海站)圆满结束,会议PPT分享

    2016年象行中国(上海站)已于5-21日圆满结束,所有技术交流的文档和PPT经整理后,现集中存放在云盘中,相关议题如下:     DeepGreen-LLVM-Intro.pptx ... 1.1M ...

  2. 如何通过XShell传输文件

    转载孟光孟叔的博客:  https://learndevops.cn/index.php/2016/06/14/how-to-transfer-file-using-xshell xshell目前最好 ...

  3. 延迟渲染 deferred Shading

    流程: 1.先渲染一遍物体的位置,法线  和颜色  到三张纹理 2.在根据这三张纹理渲染一遍灯光 3.合成颜色图和灯光图  (ssao图) 看上去好像灯光不多,其实我在这里加了200个灯, 每个球代表 ...

  4. php读取csv文件,在linux上出现中文读取不到的情况 解决方法

    今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...

  5. jquery $.proxy使用

    在某些情况下,我们调用Javascript函数时候,this指针并不一定是我们所期望的那个.例如: //正常的this使用 $('#myElement').click(function() { // ...

  6. 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇

      1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...

  7. ios 同步Get请求的实现

    //第一步,创建URL NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/search?term=微信&enti ...

  8. python 字符串替换

    字符串替换可以用内置的方法和正则表达式完成.1用字符串本身的replace方法: a = 'hello word'b = a.replace('word','python')print b 2用正则表 ...

  9. php生成随机密码(php自定义函数)转自先锋教程网

    php生成随机密码(php自定义函数) 时间:2015-12-16 20:43:49来源:网络 导读:php随机密码的生成代码,使用php自定义函数生成指定长度的随机密码,密码规则为小写字母与数字的随 ...

  10. Mesh Wifi

    best idea ever Submitted by ozzy (not verified) on Mon, 2009-09-21 09:39. I thought of doing this on ...