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

1、创建报表文件

在应用程序中创建一个名为 rptMonthlySalesByCategory.cs 的 ActiveReports 报表文件,ActiveReports 区域报表(基于代码)。

2、创建报表数据源

点击该图标以创建报表数据源,我们使用的数据源是源代码工程中 Data 目录下的 NWind_CHS.mdb,在打开的报表数据源对话框中,选择”提供程序”选项卡,点击建立连接按钮以打开“数据链接属性”对话框,并选择 “Microsoft Jet 4.0 OLE DB Provider”数据提供器,点击“下一步”按钮切换到 “连接”选项卡,点击“…”按钮定位到 NWind_CHS.mdb 文件,然后点击“确定”按钮以完成创建据源的操作。

回到“OLE DB”选项卡之后在查询区域输入一下 SQL 语句:

SELECT

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

AS

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

AS

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

FROM

(( 订单

INNERJOIN

订单明细

ON

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

INNERJOIN

产品

ON

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

INNERJOIN

类别

ON

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

WHERE

DATEDIFF("yyyy",订单.订购日期,'2012-01-01') = 0

ORDERBY

DATEPART("yyyy",订单.订购日期), DATEPART("m",订单.订购日期), 类别.类别ID, 订单明细.产品ID

3、设计报表界面

3.1、在报表设计界面中点击鼠标右键,并选择插入->组头/组尾,此报表中需要插入三级分组,然后设置以下属性:

groupHeader1 DataField=订购月
GroupKeepTogether=FirstDetail

RepeatStyle=OnPage

groupHeader2 DataField=类别名称

GroupKeepTogether=FirstDetail

RepeatStyle=OnPage

groupHeader3 DataField=产品名称

GroupKeepTogether=FirstDetail

RepeatStyle=OnPage

3.2、在报表后台代码中添加以下代码,用于设置报表目录:

private void groupHeader1_Format(object sender, EventArgs e)
{
this.groupHeader1.AddBookmark(txt订购月1.Text);
}


private void groupHeader2_Format(object sender, EventArgs e) { this.groupHeader2.AddBookmark(txt订购月1.Text + "\\" + txt类别1.Text); }

4、运行程序

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

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

相关阅读:

【报表福利大放送】100余套报表模板免费下载

矩表 - 现代数据分析中必不可少的报表工具

ActiveReports 报表应用教程 (11)---交互式报表之文档目录的更多相关文章

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

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

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

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

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

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

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

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

  5. AppleWatch开发教程之调试程序使用帮助文档

    AppleWatch开发教程之调试程序使用帮助文档 AppleWatch开发教程之调试程序 调试又被称为排错,是发现和减少程序错误的一个过程.在Xcode中进行调试的需要实现以下几个步骤: 1.添加断 ...

  6. WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心

    原文:WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心 流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具备了HTML的绝大多数优势,并提供了更 ...

  7. Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1)

    Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1) This document is intended for DBA' ...

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

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

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

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

随机推荐

  1. Matlab中常见的神经网络训练函数和学习函数

    一.训练函数 1.traingd Name:Gradient descent backpropagation (梯度下降反向传播算法 ) Description:triangd is a networ ...

  2. CentOS 6.7 下 MYSQL 5.7 的安装与配置

    安装 #yum源 http://dev.mysql.com/downloads/repo/yum/ #安装 rpm -Uvh http://dev.mysql.com/get/mysql57-comm ...

  3. oc中的枚举

    如果一个变量只有几种可能的值,比如星期有几天,一年有几个季节等.这个时候可以用枚举变量. 先定义类型再定义变量,如:enum siji{chun,xia,qiu,dong} 也可以定义匿名:enum{ ...

  4. Disruptor多个消费者不重复处理生产者发送过来的消息

    1.定义事件事件(Event)就是通过 Disruptor 进行交换的数据类型. package com.ljq.disruptor; import java.io.Serializable; /** ...

  5. FormData序列化及file文件上传

    表单数据上传 情况一: 一.当表单文件处于无任何处理状态时,用submit提交直接上传; 但这种方式上传,数据无任何处理:(极少使用): 但是传统的表单提交会导致页面刷新,但是有些情况下,我们并不希望 ...

  6. python3.X出现关于模块(i18n)的不能使用的解决方法

    今天在看python编程从入门到实践的时候,遇到了    如下问题 ModuleNotFoundError: No module named 'pygal.i18n' 然后查找文献找到一个网友 的解决 ...

  7. Java设计模式学习记录-抽象工厂模式

    前言 上篇博客介绍了简单工厂模式和工厂方法模式,这次介绍抽象工厂模式,抽象工厂模式和工厂方法模式的区别在于需要创建对象的复杂程度上. 抽象工厂模式 抽象工厂模式是围绕着一个超级工厂创建其他工厂.这个超 ...

  8. 并发编程之 SynchronousQueue 核心源码分析

    前言 SynchronousQueue 是一个普通用户不怎么常用的队列,通常在创建无界线程池(Executors.newCachedThreadPool())的时候使用,也就是那个非常危险的线程池 ^ ...

  9. [转]DevOps实战:百度持续交付体系与最佳实践大解密!

    本文转自:http://dbaplus.cn/news-21-471-1.html “互联网+”时代,软件产品要想满足快速增长的用户需求,高效.快速的迭代转型必不可少,面对时刻发生改变的互联网及业务模 ...

  10. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...