在上讲中《ActiveReports 9实战教程(1): 手把手搭建好开发环境Visual Studio 2013 社区版》,我们已经结合Visual Studio 2013搭建好了ActiveReports9的开发环境,并完毕了一个Hello World的RDL报表。 在本文,我们通过配置数据源进行报表实战。做过报表开发的报表达人知道,报表中的数据源分设计时数据源和执行时数据源。 怎样理解呢?

这2类数据源,表结构是一样的,用途不一样:

1 设计时数据源。用于研发内部、报表小组进行配置、測试报表用。

2 执行时数据源,用于系统割接后在局方现场执行报表系统。如改动链接数据库的字符串。

从上面2点可看出。设计时数据源的执行比較广:配置报表、測试、执行报表。而执行时数据库切换数据库链接字符串就可以无缝实现数据源在用户现场部署,相对照较easy。

以下用NWind_CHS.mdb数据源进行实战(AR9安装后。自带的数据源‪C:\Users\rogerwang\Documents\ComponentOne Samples\ActiveReports 9\Data\NWIND.mdb)。

设计时数据源

通过“视图--其它窗体--报表资源管理器 V9”,然后基于上讲的RdlReport1.rdlx文件,双击rdlx文件。

右键,加入数据源

在新创建的数据源DataSource1。右键加入数据集。

在弹出的加入数据集中,有2种办法加入数据。

方法一: 直接写SQL。

这样的方式适合程序猿、SQL比較强的人。 效率高。

方法二: 通过AR9新提供的VQD进行(可视化查询设计器)。这样的方法适合产品经理、需求分析师等对技术不细究的人。灵活。

这里重点说一下方法二:VQD。

可视化查询设计器(VQD)包括以下关键特性:

  • 过滤数据
  • 使用自己定义表达式
  • 从数据库选择字段
  • 分组和合计函数
  • 使用内连接。左外连接和右外连接
  • 设置已选字段和数据表的别名
  • 数据排序和很多其它特性

生成的SQL语句:

select Products.*, Categories.* from Products inner join Categories on Products.CategoryID = Categories.CategoryID

如分别拖动Description、ProductID到报表,预览结果:

至此,完毕了执行时数据源的加入,AR提供的配置数据源功能,很灵活和方便,可有效的提高报表开发效率。

执行时数据源

我们在设计时配置的数据源,假设要迁移到用户现场,则须要能够动态改动数据源以适配用户的数据源环境。

可通过代码实现数据源切换(备注:数据库表结构是一模一样的)

private void 执行时数据源区域报表ToolStripMenuItem_Click(object sender, EventArgs e)
{
SectionReport_DataSource_RunTime sReport1 = new SectionReport_DataSource_RunTime();
sReport1.DataSource = GetDataSource();
sReport1.Run();
viewer1.Document = sReport1.Document;
} private DataTable GetDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("产品编号");
dt.Columns.Add("产品名称");
dt.Columns.Add("单位价格");
dt.Columns.Add("库存量");
dt.Rows.Add("A10002", "苹果", 20, 50);
dt.Rows.Add("A15681", "香蕉", 20, 50);
dt.Rows.Add("A15681", "菠萝", 20, 50);
return dt;
}

在执行时通过 DataSource 属性设置数据源

private void 执行时数据源页面报表ToolStripMenuItem_Click(object sender, EventArgs e)
{
GrapeCity.ActiveReports.PageReport pReport1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport_DataSource_RunTime.rdlx"));
viewer1.LoadDocument(pReport1.Document);
}
private void Form1_Load(object sender, EventArgs e)
{
viewer1.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(viewer1_LocateDataSource);
}
void viewer1_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
{
if (args.DataSourceName == "DataSource1")
{
if (args.DataSetName == "DataSet1")
{
args.Data = GetDataSource();
}
}
}
private DataTable GetDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("产品编号");
dt.Columns.Add("产品名称");
dt.Columns.Add("单位价格");
dt.Columns.Add("库存量");
dt.Rows.Add("A10002", "苹果", 20, 50);
dt.Rows.Add("A15681", "香蕉", 20, 50);
dt.Rows.Add("A15681", "菠萝", 20, 50);
return dt;
}

在执行时通过 LocateDataSource 事件载入数据源。

最后,顺便说一下:ActiveReport 能够和多种数据源交互,包括OLEDB, SQL, XML,Oracle、Sybase、Informix、SQL Server等。

參考的官方博客:

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

ActiveReports 9实战教程文件夹:



ActiveReports 9实战教程(2): 准备数据源(设计时、执行时)的更多相关文章

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

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

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

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

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

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

  4. RibbitMQ 实战教程

    # RabbitMQ 实战教程 ## 1.MQ引言 ### 1.1 什么是MQ `MQ`(Message Quene) : 翻译为 `消息队列`,通过典型的 `生产者`和`消费者`模型,生产者不断向消 ...

  5. BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

    上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...

  6. 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步

    第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...

  7. BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

    上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我 ...

  8. BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

    前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ...

  9. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

    上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...

随机推荐

  1. [JZOJ3382] [NOIP2013模拟] 七夕祭 解题报告

    Description 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. ...

  2. Find and counter

    Find: In a sense, find is the opposite of the [] operator. Instead of taking an index and extracting ...

  3. 实时监控Cat之旅~对Get和Post进行封装,支持分布式消息树

    对第三方接口的调用我们需要对GET和POST进行监控,看一些请求的执行是否成功,如A调用B,B调用C,C调用D,这一连串的东西需要我们使用cat进行记录,进行记录之后,我们可以很容易的发现请求响应的时 ...

  4. C#后台请求其它网站页面

    /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name="url&qu ...

  5. 【C#Windows 服务】 《三》Timer设置

    一.工具: VS2015+NET Framework4.5. 二.操作: 1.计时器设置: 2.日志代码: 三.代码: 1.日志代码: 1 /// <summary> 2 /// Wind ...

  6. hdu 3292 No more tricks, Mr Nanguo

    No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Jav ...

  7. [TJOI2013]单词 AC 自动机

    题目描述: 小张最近在忙毕设,所以一直在读论文. 一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次. 题解: AC 自动机裸题,将所有字符串读入 ...

  8. java 基于 bootstrap_datagrid 分页

    1.首先引入datagrid  js ,css $("#datagrid").bootstrap_datagrid({ url : "<%=path%>/us ...

  9. Linux权限管理(用户、组、文件管理)

    一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : l ...

  10. 隐马尔科夫模型(HMM)

    基本概念 1Markov Models 2Hidden Markov Models 3概率计算算法前向后向算法 1-3-1直接计算 1-3-2前向算法 1-3-3后向算法 4学习问题Baum-Welc ...