登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hurt0759的个人主页

人生常态--跋涉.人生暂态--歇息.

 
 
 

日志

 
 

在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用  

2009-11-11 15:50:40|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用

原著:Jeffrey Hasan、Kenneth Tu

翻译:sages

原文出处:MSDN Magazine Oct 2003 (OLAP)

 

本文假设读者熟悉 ASP.NET 和 SQL Server。


在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 摘要

  许多机构都使用在线分析处理(OLAP)技术分析其关键业务数据。基于 OLAP 的数据钻取为查询多维数据集以及通过钻取数据来获得模式提供了一种途径。ASP.NET 和 Microsoft Office Web Components (OWC)使能基于 Web 的 OLAP 报表。OWC 控件包含可以嵌入到 Web 页面以及程序员可编写脚本的 PivotTable 和 Chart 组件。本文作者使用 ASP.NET、OWC 和 SQL Server 2000 Analysis Services 构建了一个基于 Web 的 OLAP 报表应用来举例说明了 PivotTable 和 Chart 组件的使用。


  越来越多的公司使用在线分析处理(OLAP)和数据钻取技术来处理它们复杂的数据。OLAP是专门用于处理多维数据集的技术,这些数据间的模式和关系并不清晰。Microsoft® SQL Server 2000 Analysis Services 因其与 SQL SERVER 2000 的紧密集成并且与 SQL Server 后续版本的更紧密的集成,正在成为一种被广泛采纳的 OLAP 处理和数据钻取的选择。

  由于 OLAP 技术的广泛应用,开发人员需要依赖基于OLAP的多维数据源来设计开发报表设计方案。这是一项复杂的工程,因为基于 OLAP 的报表设计或者数据钻取技术,需要更多的灵活性和更高的交互性。数据钻取技术,按照其定义,不是静态的,而是用户可以根据其需要,在构建的多维数据集 立体空间范围内来创建自己所需要的视图。这与传统的基于关系数据库系统(RDBMS)的查询形成鲜明的对比,后者受制于定义好的表间的关系。RDBMS查询无疑是有创造性 的,但有一定的局限性。借助基于OLAP的数据结构,你可以更灵活地进行查询,而传统的静态报表设计对于查询和理解基于OLAP的数据毫无帮助。

  软件开发人员在设计一项基于OLAP的报表设计方案时面临四个方面的问题:

第一、这项方案必须可以连接并查询多维数据源;第二、 这项方案必须保证用户灵活便利地使用数据;

第三、由于不能预测那些是用户认为重要的数据视图,因此这项方案必须允许用户存储定制的报表设计;第四、这项方案必须提供一个包含图表的可读取的接口,因为包含图表的报表设计在视觉上更有效果。

  请允许我增加第五条:这项方案应该是基于 Web 的,即它应是一个基于服务器的 Web 应用程序,可以通过浏览器进行访问(通过 Internet 或者 Intranet),有了上述五条苛刻的要求,开发者该如何做呢?

  事实上,微软公司提供了一组称为 Office Web Components (OWC) 的组件可以帮助我们构建基于Web 的复杂的、界面友好的基于 OLAP 的方案。 OWC 是一组 COM 控件集,用于在 Web 上发布电子表格(spreadsheets)、数据透视表(pivot tables)和图表(charts),它为用户提供了和 EXCEL 一样丰富的交互体验。同时,它还为开发人员提供了丰富的编程接口,借助于这些功能强大且灵活的接口,开发人员可以设计专业的方案。Figure 1 显示的是 OWC PivotTable 组件,它可以连接到OLAP数据源并借助便利的接口拖放来实现查询操作。

在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页

Figure 1 OWC PivotTable Component

  本文的目的旨在解决开发人员的要求,假设他们正在使用 ASP.NET 和 Office Web Components(OWC)开发一个用于Web上的基于 OLAP 的定制 的报表设计方案。我们将提供一个基于 XML 的 Web Services 的一体化应用程序架构,并展示如何建立该应用程序架构并配置OLAP数据源以便通过HTTP协议 来访问。此外,我们还将描述如何向用户部署这个解决方案。大多数Web应用程序完全安装在Web服务器上并且在应用部署时不需要用户的交互操作,但OLAP 和 OWC对想使用你的定制方案的用户提出了一定的要求。

在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页  重要的概念和术语

  OLAP 技术中充斥的专业术语是理解其真正好处的障碍。本文假设读者熟悉 OLAP,尤其是熟悉SQL Server 2000 Analysis Services。即使如此,在继续讨论之前,我们应该首先阐明本文中涉及的以及在广阔的OLAP和数据钻取领域应用的重要术语和概念。

  首先,区分 OLAP 和数据钻取技术是很重要的。基于 OLAP 的数据源或者数据仓库可被细分为一个或多个多维数据集,该多维数据集是一个可以用 MDX 进行查询的多维数据结构。多维数据集 包含一组被称为维度的属性,维度可以大致理解为数据表中的字段,与数据表中的字段不同的是维度中还包含一组级别(level)组成的等级(hierarchy)。例如,一个年历维度可被分为季度级别、月级别、周级别。一个多维数据集中包含一组度量值(measure)。度量值是实际的数值,一般是数值型。例如,你可以通过”零售”多维数据集按时间(维度)和地点(维度)浏览各商品销售情况(度量值)。

  SQL Server 2000 Analysis Services 使你能通过被称作 Analysis Manager 的 MMC 管理单元完成 OLAP 处理。 这只不过是一个被集成到 Analysis Services 的数据透视表接口,基于 OLAP 的数据常常是通过数据透视表来浏览,它允许你 将多个维度和度量值拖放到类似 spreadsheet 的布局中。PivotTable 控件将拖放操作转换为 MDX 查询,然后再由 MDX 查询传送给 OLAP 数据源, 最后返回结果集。

  Analysis Manager 在数据库服务器上安装一个 PivotTable 服务,该服务包含一个允许连接到OLAP 数据源的 OLE DB 提供者(provider)。该提供者被取名为 Microsoft OLE DB Provider for OLAP Services 8.0 ,没有它,你是不可能连接到 OLAP 数据源上的。用于该提供者的连接字符串包括 用于数据仓库的 DataSource 属性和表示拟进行连接的多维数据集名的 DataMember 属性。PivotTable 服务还必须安装在客户机上,否则,客户机上的 PivotTable 控件 将不能与 OLAP 数据源通讯。

在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页  基于 Web 的 OLAP 报表应用的框架

  Figure 2 显示了基于Web的OLAP报表应用的大致框架,它包括三个途径,依次编号以展示程序的工作流。他们共同提供了下述的特性:

  • 客户端 PivotTable 控件和 OLAP 数据源之间的 HTTP 连接,通过 XML Web Service
  • 直接来自客户端 PivotTable 控件的 OLAP 数据源动态查询(没有任何中间组件)
  • 借助 XML Web Service 从关系型数据库结构存取定制的 PivotTable 报表数据
  • 在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页

    Figure 2 OLAP 框架

      在程序中 XML 扮演了一个中心角色。OWC PivotTable 控件在本地将其内容序列化为XML格式。你不仅可以写XML格式的数据,而且可以用XML数据来加载PivotTable控件,只要这些XML数据匹配XML Schema。因此ASP.NET开发人员可以创建基于XML的Web Services实现与OWC PivotTable控件的交互访问。一个Web方法产生格式化的XML给PivotTable 控件(Pathway 1), 同时另外一个方法接受来自PivotTable 控件的序列化的输出并保存到永久媒介譬如数据库或文件中。

      一旦在 PivotTable 和 OLAP 数据源间建立好联结,用户就可以借助PivotTable控件中的拖拉UI进行定制的数据查询工作。控件一被更新,它动态产生一个多维表达式(MDX)并通过HTTP网关将请求发送给OLAP数据源(Pathway 2)。这种通讯独立于Web服务器,Web也直接访问数据库。在此结构中,Web服务器的作用是建立在PivotTable和OLAP数据源间的初始化连接,确保定制的PivotTable报表的保存和检索。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页  Office Web 组件

      OWC10.0 提供的功能不仅强大而且为用户所熟知。因此,你定制的解决方案能很快得到熟悉并用惯了 Excel 的用户的认可。Figure 3 是随同Office XP一起交付的 OWC 控件 (version 10) 的一个概述 ,注意 随 Office 2000 发布的是 OWC 的前一个版本(version 9),其提供的编程接口和用户接口要逊色得多。虽然我们所讨论的特性并不都支持以前的版本,但大多数 OWC (version 10)的特性都适用于 OWC (version 9)。

      在 Web 项目中使用 OWC 控件时,ASP.NET 开发人员所能使用的资源很少。大多数网上的例子代码都假设你使用客户端的脚本语言(如 VBScript )与 OWC 控件交互。虽然这是一个可行的方法,但它忽略了使用 ASP.NET 更强大的功能的可能性。即创建一个服务器端的 OWC 实例,建立一个连接,设置属性,然后使用这个实例为单独的 PivotTable 控件客户端实例产生 XML 数据。编程逻辑被包含在OLAP Data Access Objects 之中,部分架构示意图参见 Figure 2 中的 Pathway 1。接着,XML 数据通过基于 XML 的 Web Service 传送给客户端组件。见 Pathway 1。

      Figure 4 中列出了我们将在本文中使用的 OWC 控件——即 PivotTable 和 Chart 控件。Spreadsheet 和 DataSourc 控件不在此列,因为它不涉及我们在这里所讨论的体系架构。Figure 5Figure 6 分别概要介绍了 PivotTable 和 Chart 控件各自的编程接口。

      PivotTable 有一个复杂的接口,但其最重要的是 XMLData 属性。这个属性是整个 PivotTable 内容的 XML 表示形式,包括与 OLAP 数据源的连接信息。XMLData 同时还保存有当前视图的维度和量度值以及应用的格式化信息。XMLData 可以被设置和获取,它是动态定制 PivotTable 控件的重要手段。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 为 HTTP 访问配置 OLAP 数据源

      在我们开始着手构建我们的基于 Web 的 OLAP 报表设计程序前,我们必须配置 Analysis Services 数据源以便 IIS 可以访问它。IIS Web站点必须和 Analysis Services 安装在同一服务器上,并且确保在IIS Web站点中包含一个名为 msolap.asp 文件。此文件 提供了 HTTP 端口请求和Analysis Services数据源间沟通的桥梁。Msolap.asp存放在\Program Files\Microsoft Analysis Services\bin目录下。我们建议使用安全套接字层(SSL)认证机制配置一个安全连接(HTTPS)来存取数据源。为此你必须购买用于 Analysis Services 服务器的 SSL 认证。当然,我们也可以使用非安全(HTTP)连接方式来存取数据源,不过我们不建议这样做。

      一旦IIS在 Analysis Services 服务器上安装完毕,配置一个用于 HTTPS 存取的新 Web 站点。首先,在默认的Web根目录(\Inetpub\wwwroot\)外新建一个Web站点目录。为了安全的目的,我们建议停 到默认 Web 站点。除此之外,如果你安装了SSL认证,需要关闭防火墙上的80端口,打开443端口。

    其次,将 msolap.asp 文件从\Program Files\Microsoft Analysis Services\bin 目录拷贝到新建的Web站点目录,使用 IIS 管理器将新建的 Web 站点目录配置为一个 Web 应用,为 Web 站点添加 Host Header Name (例如,olap.mycompany.com)。

      第三,购买并在服务器上安装 SSL 认证。在购买认证过程中确保 Web 站点可以通过 80 端口访问。认证安装完毕后,在防火墙上关闭80端口并打开443端口。使用 IIS 管理器设置 Web 目录的安全以禁止匿名访问,允许 Basic Authentication。最后,重置 IIS 以接受更改。

      HTTPS 创建完毕后,必须更新指向 OLAP 数据源的连接字符串。连接字符串格式如下:

    Provider=MSOLAP;user id=Domain\Username;password=Password;Data Source=https://ServerName;Initial Catalog=OLAPDataSourceName

      更详细的信息参见知识库文章(Knowledge Base )Q279489:“How to Connect to Analysis Server 2000 By Using HTTP Connection”.

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 安全访问OLAP

      一旦 OLAP 数据源可以通过 HTTPS 来访问,那么安全信任是不可或缺的。因为现在任何一个可以浏览网站的人都有可能访问网站上的数据源。譬如,一个远程用户 只要知道 Analysis Server 的 URL以及 Initial Catalog 的名称,就可以打开 Excel 并将 PivotTable 联接到 OLAP 数据源。

      Analysis Services 实现了基于 Windows NT 用户帐号的多维数据集安全规则。基本思路是在服务器上创建一个或多个本地 Windows NT 用户帐号,赋予它们 SQL Server 数据库角色。然后将该数据库角色赋予给某个多维数据集角色,并绑定该数据库角色到特定的多维数据集。多维数据集角色继承了 Windows NT 用户 ID 和密码,你将用户 ID 和密码添加到 OLAP 数据源连接字符串中即可。

      值得注意的是:一个 OLAP 数据源中也许包含多个多维数据集。通过设置 OWC PivotTable 控件中的 <DataMember> XML 标签值为一个有效的多维数据集名(在下一部分解释),你可以连接到特定的多维数据集。这个多维数据集必须被赋予一个角色,该角色与 OLAP 数据源连接字符串中的信任对应。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 建立应用程序

      现在是我们用 ASP.NET 和 OWC 10 建立应用程序的时候了。该应用程序的用户界面包含在一个名为 owc10.aspx 的 Web Form 中, 如 Figure 7 所示。界面中包含一个内嵌的客户端的 OWC PivotTable 控件和一组按钮,分别用于激活 OLAP 数据源连接、保存和获取定制的报表。 这些功能由 wsOLAP.asmx 中的 XML Web Service 通过一组 Web 方法直接提供。olap.js 脚本文件中是一组客户端的 JavaScript 函数,用户接口使用 这些函数与上述 Web 方法挂钩。这些 JavaScript 函数通过在客户端调用这些方法将大多数请求委托给 Web Service。在一个DHTML 行为文件Webservice.htc中,实现了上述 上述功能。在olap.js文件中,用户接口使用一组客户端的JavaScript函数调用了上面的Web 方法。实现对Web Service的访问。这些都是在一个 DHTML 行为文件 Webservice.htc 中完成的。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页

    Figure 7 Web-based OLAP 报表设计程序

      本文例子程序被称为 OLAPReport,使用 Visual Studio.NET 1.1 版本开发,使用 Foodmart 2000 数据仓库作为 其 OLAP 数据源,并且以 Sales 多维数据集作为其数据成员。 Foodmart 2000 是和 SQL Server 2000 Analysis Services 一起安装的例子数据库。

      如果你已经下载并安装了例子工程文件,你必须完成以下几步以便保证其正常工作。首先,更改OLE DB 连接字符串,应用程序会用他访问 OLAP 数据源。 该连接字符串被存储在 Web.config 文件中作为应用程序的自定义设置。

    <appSettings> <add key="OLAPConnectionString" value="Provider=MSOLAP.2"; Data Source=https://ServerName;Initial Catalog=Foodmart 2000></appSettings>  注意这个连接串没有包含安全信任(如 User ID 和 password),只有在 Analysis Server 中实现了安全规则时才需要这些信任, 如前所述,我们鼓励你添加安全规则。一旦你准备就绪,只要简单地将此信任加到连接串的尾部即可。

      为了让该连接串工作,不要忘了配置用 HTTP 可以存取 Analysis Server。配置步骤在本文前面也有描述。项目初始设置使用  http://localhost/olap 作为其数据源,因此,你需要在默认的 Web 站点下 创建一个名为 olap 的虚拟目录,并将 msolap.asp 文件拷贝到该虚拟目录下。简单一点,你可以用你的机器名替代 Data Source 的值,省略前导 https:// 部分。这将允许到标准 OLAP 数据源的连接,而不是 HTTP 连接。如果出于示范目的,这样做是可以的。 但是如果你不启用 HTTP 存取,你就无法将 Analysis Server 暴露给网络域外的用户。

      最后,在你继续网下做之前,需要在 OLAPReport 项目中设置到 OWC10 COM 组件的引用(通常,Setup 项目会负责此事,但知道这个步骤总是很有用的)。其设置步骤如下:打开 Solution Explorer,鼠标右键点击项目图标,从弹出菜单中选择 Add Reference。出现对话框后,切换到 COM 标签,查找名为 Microsoft Office XP Web Components (OWC10.DLL) 的组件。点击 Select 按钮,然后 OK 按钮。Visual Studio .NET 自动产生一系列该组件的包装文件并添加 OWC10 的项目引用。

     在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 连接控件和数据源

      现在依次实现应用程序的三个特性。第一,讨论 Pathway 1 —— 如何在客户端的 OWC 控件和OLAP 数据源间建立连接。使用用户界面上的 Set Connection 按钮实现本功能。此按钮调用JavaScript 函数 initializePivotTable 并使用多维数据集名作为参数。本例中使用 Sales 多维数据集。

      JavaScript 继而调用 InitializePivotTableXML Web 方法(在名为 InitializePivotTableXML Web 的 DHTML 行为中实现,参见本文前述内容)。此 Web 方法连接到 OLAP 数据源并且产生PivotTable 控件的 XMLData,其输出由一个 JavaScript 函数 onInitializePivotTableResult 处理。Figure 8 是 JavaScript 的代码,而 Figure 9 是 Web方法的代码。这两个例子中的代码好就好在不仅很简单,而且还可以重用。通过简单的步骤,我们就可以使用这些函数在 Web 服务器上产生定制的 XMLData 并将其传到客户端的 PivotTable 去。

      第二,在建立连接的过程中,我们有效地使用 Sales 多维数据集的空白报表初始化 OWC 控件。空白报表使用多维数据集中的字段信息和度量值填充 Field List,通过拖放字段进 Row 和 Column域,将 Measures 拖拽到 Totals 域,用户可以在 PivotTable 中创建定制的报表。每次用户拖放字段到 PivotTable 去,后者向数据源发送查询请求,然后得到数据源的更多的查询结果。数据交换 是由 Web Service 单独管理的,只有在控件与数据源建立初始化连接时才使用它。Figure 2 中显示了数据交换的通道 Pathway 2。

     在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 动态产生定制的 PivotTable 报表

      现在让我们通过编程实现一个定制的报表来深入 PivotTable 对象模型。我们想要新建的定制报表允许用户选择两个城市,并且比较 Drinks Product Family 的 Store Sales。我们使用和 Pathway 1 一样的方法,这意味着我们调用 Web 方法以便产生描述报表的 XMLData。然后我们将 Web 方法返回的 XMLData 赋值给控件的 XMLData 属性。界面提供了两个下拉式的城市列表和一个 Load Custom Report 按钮(参见 Figure 7)。此按钮激活一个名为 LoadCustomReport 的 JavaScript函数,该函数接受来自 Web 表单的两个城市作为输入参数,继而调用 LoadCustomPivotTableReport Web 方法,该方法为定制报表产生 XMLData。最后,一个 JavaScript 处理函数从 Web 方法中接受 XMLData 并赋值给内嵌的 PivotControl 的 XMLData 属性。Figure 10 是 Web 方法的代码。

      LoadCustomPivotTableReport 方法使用了大量的 PivotTable 的属性(参见 Figure 5)。请务必牢记以下几点:

  • 使用 InsertFieldSet 方法在行和列的轴中插入合适的 PivotFieldSet
  • 使用 IncludedMembers 属性以区分表中不同的 PivotField。IncludedMembers 属性的值为一个变量数组,对应于 .NET 中的 Object 数组
  • IsIncluded 属性允许或禁止 PivotFieldSet 中特定的 PivotField
  • InsertTotal 方法在 totals 网格中插入合适的度量值
  • NumberFormat 属性定义了度量值的格式。此属性接受格式代码(如"0.###")或者预定义的格式,如 "Currency" 或 "Percent"
  •  在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 保存和获取定制的报表

      既然我们已经将报表的产生过程经历了一遍,我们不希望每次产生新报表时都重复这项工作。可喜的是,用于复制报表的数据保存在 XMLData 属性中。因此,保存报表的工作变得很简单,只需将XMLData 属性保存在可永久存放的介质,如关系数据库中即可。加载报表的工作同样简单,只需获得保存的 XMLData 并 将它重新绑定到 PivotTable 上即可。这个特点如 Figure 2 中的 Pathway 3 所示。

      应用程序的 Web Service 中有两个方法,分别用于保存和获取定制报表的 XMLData。在例子中,我们将 XMLData 保存在名为 OLAPReport1.xml 的文本文件中。程序界面提供了两个按钮:Save Report 和 Load Saved Report。Save Report 按钮调用一个 JavaScript 将 PivotTable 控件的 XMLData 发送到下面的 Web方法中:

    function SaveReport() { // Purpose: Call Web Service method to save the report var strReportXMLData = frm1.PivotTable1.XMLData; var iCallID = service.svcOLAP.callService(onSaveReportResult, ''SaveReport'', strReportXMLData, ''OLAPReport1.xml}

      此 Web 方法紧接着将 XMLData 写入一个文件。Load Saved Report 按钮则调用一个 JavaScript函数完成反向的工作,如 Figure 11 所示。此函数调用一个 Web 方法打开文本文件,获取 XMLData,然后回传用以绑定 PivotTable 控件。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 使用 OWC 事件

      OWC 10 提供了几个有用的事件供我们在客户端事件处理中使用。可以用 VBScript 或 JavaScript 来写事件处理程序。VBScript 中事件处理格式如下:

    Sub <ObjectName>_<EventName>JavaScript 中的语法如下:

    <script language="javascript" event="EventName" for="ObjectName">   例子程序中演示了如何捕捉 Query 和 CommandExecute 事件。事件处理代码参见 Figure 12。当Query 事件被激活时,程序在 Web 页的左边文本框中填写事件日志。CommandExecute 事件被激活后,我们首先检查是否它是个刷新命令。如是,程序在文本框中填写事件的日期和事件日志。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 绑定图表到 PivotTable 控件

      在多数情况下,图形化的数据表示对用户试非常有价值的。幸运的是,OWC 提供了 ChartSpace 控件,后者提供了图形化的函数。为了改进定制报表,我们使用条形图来表示数据。虽然这似乎是项艰巨的工作,但 ChartSpace 控件可极大地帮助我们解决这个难题。ChartSpace 控件有用的特征之一是它能将另外控件, 如 PivotTable 绑定为它的数据源,其还可以以图形格式显示当前的 PivotTable 视图。最终的结果是 PivotTable 视图的变化会自动地显示在 ChartSpace 控件中。

      在例子中,当产生了定制的 PivotTable 报表后,我们只需将 PivotTable 赋值到 ChartSpace 控件的 DataSource 属性去即可。

    frm1.ChartSpace1.Clear();frm1.ChartSpace1.DataSource = frm1.PivotTable1;// Set the chart type to 3DBar。frm1.ChartSpace1.Charts(0).Type = 50;   在为 DataSource 属性赋值前需要调用 Clear 方法以清除以前图表的实例。ChartSpace 控件提供了许多定制的属性,包括Type属性,其接受一个 ChartChartTypeEnum 值以定义图表的格式。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 创建定制分组

      最后,让我们一起去看一下 OWC 10 最重要的新特性——新建定制分组的功能。当前我们的报表按照 Time 字段来分组 sales 度量值。在此例子中,时间依照年/月/日顺序分组。如果我们在定制的报表中不想使用多维数据集中定义好的分组模式,我们可以使用 OWC 10 控件中的定制分组功能。Apply Custom Grouping 按钮调用一个 JavaScript 函数,后者调用 ApplyCustomGrouping Web方法。输入参数为当前加载的项目的 XMLData。此 Web 方法将加载一个 PivotTable 控件并调用AddCustomGroupField 方法定义定制分组,例子中使用半年时间来分组。代码见 Figure 13。

      注意我们添加一个有两个成员("1stHalf" 和 "2ndHalf")的定制分组("CustomGroup1")以涵盖整年。调用 AddCustomGroupMember 方法以添加上述的定制成员。当 Web 页面上的函数执行时,ChartSpace 控件可以自动将定制分组功能反映到条形图表中——这也是使用 Office Web Components 10 的优点。

      还有一个与定制分组有关的问题。XMLData 不保存与定制分组名相关的数据。如果保存 XMLData (如前面 Save Report 函数所执行的)后,再将保存的 XMLData 加载到 PivotTable,定制分组的标题栏("1stHalf", "2ndHalf")以 GUIDs 形式显示。尽管如此,OWC 10 组件与以前版本相比,有了大的改进,并因此成为基于 Web 的 OLAP 报表设计的非常有效的工具。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 对 HTTP 客户端要求

      既然我们已经构建了我们基于 Web 的 OLAP 报表设计程序,为了使用该程序,每个 Web 用户必须进行如下配置。第一、每个 Web 用户须安装 Office XP 到自己计算机上。或者,他必须有权访问一个服务器上授权的 Office XP,因为 OWC 组件是与 Office XP一起发行的。

      第二、每个 Web 用户必须使用 Internet Explorer 5.0 或更高版本。因为 Web 程序使用了 Web Service DHTML 行为,需要 Internet Explorer 5.0 或更高版本的支持。此外,客户端的 OWC 组件是 Microsoft COM 组件,只能在微软的浏览器下运行。(我们也知道其它一些浏览器也提供了支持客户端 COM 控件的插件,但我们没有在这些浏览器下测试过 OWC)。

      第三、每个 Web 用户必须正确安装了 OLE DB 供应者,尤其是 Microsoft OLE DB Provider for OLAP Services 8.0 或更高版本。该供应者与分布式的 PivotTable Services 一起安装,后者包括一组 DLL 文件并且需要 Microsoft Data Access Components (MDAC)的支持。PivotTable Service 可以从 SQL Server 2000 CD-ROM 的\Msolap\Install\Pts 目录下安装。可以选择安装 PtsLite.exe 或 PtsFull.exe,后者安装 PivotTable Service 和 MDAC,而前者仅安装 PivotTable Service。如果你不能确定你需要哪种版本,安装 PtsFull.exe 即可。因为只有 Microsoft Analysis Services 能自动安装服务,所以你还需在每个 Web 客户机上安装 PivotTable Service。你可以使用 Excel PivotTable 向导去检测 Web客户机上是否已经安装了 PivotTable Service。

      第四、每个 Web 客户必须将应用程序的 Web 域添加到其 IE 的受信站点清单中去。因为应用程序驻留在不同于客户机的域上,因此 OWC PivotTable 控件每次必须跨域去访问 OLAP 数据源。所以,程序的 Web 域必须置于客户机受信任的站点内。具体配置方法如下:打开IE——点击 Tools| Options——选择 Security 标签——点击 Trusted 图标——点击 Sites 按钮。

      你也可以采取另外一种办法:为客户提供一个注册文件以自动更新客户的受信站点。以下是一个注册键的例子:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\ZoneMap\Domains\mycompany.com] "https"=dword:00000002   注意,注册文件对同一客户机上的不同用户必须分别运行,因为其只更新 HKEY_CURRENT_USER下的注册键值。例如,如果两个域用户共享同一机子,那末他们必须以各自的账号登陆后分别运行注册文件。

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 结论

      基于 Web 的 OLAP 报表解决方案提供了诱人的技术挑战,因为其设计多项复杂的技术,包括 SQL Server 2000 Analysis Services、Office Web Components、XML和 ASP.NET。在本文中搭建的体系是为了最大限度地发挥各项技术的特点。相信将来 肯定会有更多此类体系架构以解决不同的问题。

     

    在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 - michael - hurt0759的个人主页 作者简介

    Jeffrey Hasan 是专门使用微软技术进行企业应用开发的技术架构师和软件开发者。他是数本书籍和文章的合著者。更多的信息请访问:http://www.asptechnology.net。

    Jeff 的 E-mail:jeff@asptechnology.net

    Kenneth Tu 是专攻微软技术的软件开发者,在 Windows 和 基于 Web 的企业应用方面有着广泛的经验。他和 Jeffrey 合著有《Performance Tuning and Optimizing ASP.NET Applications》(APress, 2003)。

    E-mail:ken@asptechnology.net

      评论这张
     
    阅读(744)| 评论(0)

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2018