基于上面2节内容,我们搭建了AR9的开发环境,配置好了数据源。在本节,我们以官方提供的3个中文图文并茂的报表来展示AR9的功能,并通过实战的方式一一分享。

以往做报表相关的工作时,最害怕的是报表的UI设计工作,当遇到一个布局非常复杂的报表,往往会花上两、三时间才能完成报表的UI设计工作。造成这一问题的原因除了报表本身比较复杂之外,其中一个主要原因就是报表设计器没有提供足够多的功能来辅助报表的UI设计工作。
      ActiveReports 是一个非常容易使用控件,可有一些功能却经常被遗忘---例如AR报表的配置菜单。

当我们打开ActiveReports报表设计画面时(如双击*.rdl、*.rpx、*.rdlx),我们最关心的可能是工具箱和属性窗口,而没有注意到VS菜单栏上面的 报表菜单选项,报表菜单总共有6个菜单项,保存报表报表报表到服务器加载报表从服务器加载报表数据源设置等。接下来就主要谈一谈设置菜单项。

1、可选的标尺单位

ActiveReports提供了Inches(英寸)和Centimeters(厘米)两种标尺单位,我们可以根据自己的需要来选择适合于自己的标尺单位,从而省去了繁琐的长度换算工作。(备注:默认单位是英寸)

2、可选的对齐方式

ActiveReports 提供了SnapLines(按边线对齐)和Snap to Grid(按表格对齐)两种对齐方式。当选择SnapLines时,可以根据对齐辅助线来判断控件之间的相对位置关系;当选择Snap to Grid时,通过鼠标移动控件的最小单位是一个单元格的距离,而且可以根据单元格的数量来判断控件的正确位置。

3、可选的网格间距

当选择Show Grid(显示网格)时,在报表的设计视图中会显示网格,而且网格数量是可以调整的。选择合适的标尺单位和网格数量能为我们判断空间的位置带来便利,比如:标尺单位选择Centimeters(厘米),网格数量设置为10*10,此时相邻网格之间的距离恰好是1mm。

了解报表布局后,下面我们通过3个官方提供的demo进行实战操练。

报表实战1:常规报表--数据清单--客户清单

本实例,通过组合使用AR报表的Lable、TextBox控件,来实现表格展现客户数据。

Step 1: 新建一个 rptCustomerList.rpx 报表文件

Step 2: 新建数据源

Step 3:设计PageHeader(报表头)

依次拖入AR9的Label控件,修改显示的文字、并调整背景色。

在Pageheader左上角,添加TextBox,按照下面截图修改汇总算法--可实现对当前页面用户信息进行汇总。

 

Step 4 设计Detail(报表数据区域)

设计Detail区域,可通过Step 3的办法,从AR9工具箱拖入TextBox控件,修改DataField字段内容。

这里我们使用一个AR报表设计的小技巧直接从报表资源管理器中选择字段拖入Detail区域

Step 5 设计PageFooter区域

至此,我们通过上面的实战步骤,完成了客户清单报表。

小技巧:通过报表设计器下面的设计器、脚本、预览可方便的实现报表设计、预览效果,效率非常高。

快速验证一下效果吧:

怎么和官网的不一样呢?

呵呵,请在脚本中添加如下脚本,用于修改行变色:

int RowNo = ;
public void detail_Format()
{
if ((RowNo % ) == )
{
this.detail.BackColor = Color.Gainsboro;
}
else
{
this.detail.BackColor = Color.Transparent;
} RowNo++;
} public void ActiveReport_ReportStart()
{
rpt.Document.Printer.PrinterName = "";
}

报表实战2:常规报表--图表报表--常规图表

本实例中,通过用报表控件Chart展示图表数据,更直观。

Step 1:新建rptSalesByRegion.rdlx报表

Step 2:新建数据源

Step 3:添加Chart报表控件

选择显示为柱形图--堆积图,通过选中Chart后再单击属性对话框。

Step 4: 填充Chart数据

还可以通过选择Chart后,单击图表数据进行修改:序列(系列)、类别分组、序列分组数据填充操作。

在这个例子中,我们分别按照如下数据进行操作:

  • 拖动“销售量”到序列数据区域
  • 拖动“类别名称”到X轴数据区域
  • 拖动“货主地区”到序列分组区域

Step 5: 预览运行效果

报表实战3:常规报表--条形码--国航机票

在这个实例中,我们通过条形码和AR9新出的圆角设计进行一个类似国航机票的报表实战。

Step 1:新建 rptFlightBarcode.rdlx 报表和数据源

添加报表、数据源,请参加本文的第1个例子,用到的数据源SQL:

select 航班信息.* from 航班信息 order by ID;

Step 2:设计报表的背景图

添加一个嵌入式的图像

添加Image报表控件,并设置国航机票的背景图片。

Step 3:添加条形码

上面添加了Image控件后,我们来添加条形码控件。

配置条形码属性

  • LayerName:设置为Layer1。我们为了方便管理,数据控件统一放在Layer1层。
  • Symbology:设置为Ansi39类型条形码。
  • Value:         设置条形码数据,可指定当前机票的ID号。

备注: ActiveReports 提供的Barcode控件支持37种条码格式,其中包括:Code39码、Code25码、ITF25码、Matrix25码、UPC-A码、UPC-E码、EAN-13码、EAN-8码等一维条码和PDF417等二维条码。

Step 4:添加数据区域

添加完背景图片、条形码后,开始拖动数据字段填充乘客、出发点等数据信息。

有时候设计报表,在多个层之间控制非常不方便,明明选中了,但是报表就是无法编辑数据。

这里给大家分享一个AR9新增的小技巧:在AR报表中,多个图层直接切换可见性、是否选中,请通过在VS工具栏空白处单击右键,选择ActiveReports 9:

然后激活图层管理---层列表 V9:

Step 5: 运行完整的demo效果:

官方提供的完整demo和中文数据库文件下载地址

为了方便共享和交流,还可通过Git@OSC进行Watch。

----------------------------------------------------------------------------------------------------------

ActiveReports 9实战教程目录:

相关阅读:

【推荐】中铁、中石油等大型企业的复杂报表解决方案

ActiveReports11 SP1 新特性

ActiveReports11 新特性

ActiveReports 9实战教程(3): 图文并茂的报表形式的更多相关文章

  1. ActiveReports 9实战教程(2): 准备数据源(设计时、执行时)

    在上讲中<ActiveReports 9实战教程(1): 手把手搭建好开发环境Visual Studio 2013 社区版>,我们已经结合Visual Studio 2013搭建好了Act ...

  2. ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)

    原文:ActiveReports 9实战教程(2): 准备数据源(设计时.运行时) 在上讲中<ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 ...

  3. ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版

    原文:ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio ...

  4. BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介

    文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发.管理和客户端) 总结 一.商业智能 ...

  5. 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合

    [ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...

  6. 【转】mybatis实战教程(mybatis in action),mybatis入门到精通

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...

  7. NDK-JNI实战教程(二) JNI官方中文资料

    声明 设计概述 JNI接口函数和指针 加载和链接本地方法 解析本地方法名 本地方法的参数 引用Java对象 全局和局部引用 实现局部引用 访问Java对象 访问基本类型数组 访问域和方法 报告编程错误 ...

  8. mybatis实战教程(mybatis in action),mybatis入门到精通

    转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过hibernate了那这个就非常的简单) (再加 ...

  9. 《软件性能测试与LoadRunner实战教程》新书上市

    作者前三本书<软件性能测试与LoadRunner实战>.<精通软件性能测试与LoadRunner实战>和<精通软件性能测试与LoadRunner最佳实战>面市后,受 ...

随机推荐

  1. 如何实现能像windows 窗体一样改变大小的控件 Silverlight

    众所周知,我们可以将鼠标放在windows窗体的边框上,按住鼠标左键改变窗体大小.那么,在silverlight上如何实现呢? 1. 需要将改控件放置在canvas上. 2. 判断鼠标位置,然后将Ar ...

  2. vi 文字处理器

    vi 的使用 基本上 vi 共分为三种模式,分别是『一般模式』. 『编辑模式』与『指令列命令模式』三种! 这三种模式的作用是: 一般模式: 以 vi 处理一个档案的时后,一进入该档案就是一般模式了.在 ...

  3. 2014 ACM/ICPC 北京邀请赛 部分 题解

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem.php?search=2014+ACM-ICPC+Beijing+Invitational+Programming+C ...

  4. iOS /* */多个嵌套解决

    解决办法 #if 0 /* */ #endif

  5. mybatis(三)懒加载

    懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为 ...

  6. 1.Java内存区域

    Java虚拟机在执行java程序的过程中会把他管理的内存划分为若干个不同的数据区域各自用途.创建以及销毁时间各不相同.有的随着虚拟机进行的启动而存在,有的区域依赖于线程的启动和结束而建立以及销毁.如图 ...

  7. ascii文件转为utf-8格式

    import codecs import os #格式转换 fhanzi1 = codecs.open(os.path.join(outputpath,"hanzi1.txt"), ...

  8. [转]初探 PhoneGap 框架在 Android 上的表现

    原文地址:http://topmanopensource.iteye.com/blog/1486929 phonegap是由温哥华的一家小公司研发的多平台的移动开发框架,支持流行的大多数移动设备(iP ...

  9. protoc-gen-php --php_out: protoc-gen-php: Plugin output is unparseable.

    背景 业务需要用protobuffer 进行通讯. client: php server: c++ 在github 上找到 Protobuf-PHP (https://github.com/drslu ...

  10. Daily Scrum 12.3

    今日完成任务: 与安卓组进行商量对数据库修改的方案.现在在等他们最终确认,确认之后进行整理以及源代码的调试. 对资源功能的代码进行阅读. 遇到困难: 关于整合,爬虫组爬到的内容和网站定位有所不符,所以 ...