RDLC中读取Analysis Services中Cube的数据.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RDLC中读取Analysis Services中Cube的数据

RDLC中读取Analysis Services中Cube的数据 在微软的Report Services的rdl中,默认是支持从分许服务的Cube中查询数据的,但是rdlc中就需要间接的方式来对Cube的数据进行访问。 相对rdl和rdlc两者完全就是不同的套路。两者的差别绝对不是名字上只差个c那么简单,从设计的部分细节和部署的方式都有很大的区别。而实际项目中往往根据不同的情况来具体决定才用哪一种方案。 这里推荐用两种方式来访问。 第一种方式是用链接的形式将分析服务数据库链接到数据引擎服务,然后mdx查询的逻辑写到存储过程里,最后顶层应用通过调用存储过程的方式来间接达到访问分析服务数据库的目的。 ? 另外一种方案就是将数据源用方法封装起来。由于rdlc本身是在一个c#或者项目中的,所以在rdlc中是支持把项目的一个方法作为数据源,这样可以在方法里对 进行调用,然后将mdx结果以List的方式返回给rdlc。 第一种方法的具体实现可以参考sqlserver链接服务器的操作,这里主要描述第二种方法。 安装SQLServer。 这里推荐安装2012版本。不考虑2012里的新特性的话,基本上你不用太担心先前版本能否迁移过来。 下载示例数据文件。 从codeplex下载。 DW文件: /downloads/get/165405 SSAS脚本文件: /downloads/get/258486 由于本文用到的Cube取自微软官方SQLServer示例中的Adventure Works示例库,而SSAS数据库只提供项目文件,所以需要同时下载DW文件以供SSAS去处理。 需要留意一下的是下载的是DW数据库,而不是OLTP数据库,这两个库在结构上有很大的差别,不要下载错。 首先将下载下来的数据库文件附加进数据引擎服务。 ? 打开SSAS脚本文件。 ? 可以看到VS2010设计器被打开。(话说等这个等了好久。。。) 如果你有装VS2012,这里需要右键选择用VS2010来打开。 ? 右键项目,处理一下SSAS数据库。 ? 处理过程跟先前的版本没什么大的区别。 ? 接下来,假如我们要在rdlc中显示如下的mdx语句的查询结果。 RDLC中读取Analysis Services中Cube的数据 ? 新建一个 webapplication项目。 项目中加入一个页面来承载report viewer控件,再加入一个类,里面封装方法供rdlc报表使用,此外还需要加入一个rdlc报表定义文件。 ? 特别说明一下,无论是rdl或者rdlc在和winform程序中都可以通过report viewer控件集成进来的。 还需要填加一个引用,,一个类似的类,不同的sqlserver有不同的版本,针对sqlserver2012,版本为11。如果是默认安装的话那么可以在如下目录中找到这个要引用的dll。 C:\Program Files\Microsoft.NET\ADOMD.NET\110 ? 首先定义一个类,这个类跟MDX的返回结果是对应的,针对前面提到的mdx语句,定义如下类。 public class DataItem { public string RowTitle { get; set; } public double Value1 { get; set; } public double Value2 { get; set; } } 然后编写方法,这个方法将作为后面rdlc报表的数据源。 public static ListDataItem GetData() { ListDataItem result = new ListDataItem(); AdomdConnection conn = new AdomdConnection(); conn.ConnectionString = Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=AdventureWorksDW2012Multidimensional-EE;Data Source=.; conn.Open(); StringBuilder sbMDX = new StringBuilder(); sbMDX.AppendLine(WITH ); sbMDX.AppendLine(MEMBER [Measures].[Sale Amount Ratio] AS [Measures].[Internet Sales Amount]/([Measures].[Internet Sales Amount], [Product].[Product Categories].[All]) , FORMAT_STRING = 0.00% )

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档