`
yanhuanwang
  • 浏览: 55597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[翻译]如何使用webservice作为数据源去生成Microsoft Reporting Services 2005的报表

阅读更多
原文地址:http://www.codeproject.com/sqlrs/WebAndReportingServices.asp
[原文源码下载]


[翻译]如何使用webservice作为数据源去生成Microsoft Reporting Services 2005的报表


原文发布日期:2006.05.18
作者:Dimitar Madjarov
翻译:webabcd




介绍
好几个月的时间了,我一直在学习Microsoft Reporting Services 2005的一些新的功能。其中之一就是如何使用webservice作数据源。但是很不幸,我无法在MSDN和SQL Server 2005的相关书籍中找到详细的帮助信息。所以我花了好长时间来搞定这个问题。希望通过分享我的Microsoft Reporting Services 2005的相关知识能够节省你的开发时间。


新建一个webservice
第一步是新建一个webservice,稍后我将用这个webservice作为我的报表的数据源。这是非常重要的一步,因为我们要将数据转换成一个XmlDataDocument。如果没有这步转换,我们将不能得到使用webservice的web方法取得数据的结果。实现这个转换的C#代码如下:
[WebMethod]
public XmlDataDocument GetPersonAddress(string cityNameID)
{
   
//
   
// 定义一些变量
   
//   
   StringBuilder   myQuery           = new StringBuilder();
   XmlDataDocument resultXMLDocument 
= new XmlDataDocument();
   SqlConnection   myConnection      
= new SqlConnection();
   SqlCommand      myCommand         
= new SqlCommand();
   SqlDataAdapter  myDA              
= new SqlDataAdapter();
   DataSet         myDS              
= new DataSet();

   
   
//
   
// 根据参数的不同准备不同的查询语句
   
//   
   if ((cityNameID != null&& (cityNameID.Trim() != ""))
   
{
    myQuery.Append(
"Select City as City, " + 
                   
"AddressLine1 as Address, " + 
                   
"PostalCode From Address ");
    myQuery.Append(
"Where City Like '" + 
                   cityNameID.Trim().Replace(
"%"""+ 
                   
"%' Order By City");
   }

   
else
   
{
    myQuery.Append(
"Select City as City, AddressLine1" + 
                   
" as Address, PostalCode From Address" + 
                   
" Order By City");
   }


   
   
//
   
// 得到连接字符串并建立到服务器的连接
   
//   
   myConnection.ConnectionString = ReadSetting("ConnectionString""");
   myCommand.Connection          
= myConnection;
   myCommand.CommandText         
= myQuery.ToString();
   myCommand.CommandType         
= CommandType.Text;
   myDA.SelectCommand            
= myCommand;

   
   
//
   
// 返回一个DataSet数据
   
//   
   try
   
{
      myDA.Fill(myDS, 
"Address");
      
      
//
      
// 转换我们的DataSet到XmlDataDocument
      
//
      XmlDataDocument temporaryXMLDoc = new XmlDataDocument(myDS);
      resultXMLDocument 
= temporaryXMLDoc;
      temporaryXMLDoc 
= null;
    }

    
catch
    
{
       resultXMLDocument 
= null;
    }

    
finally
    
{
       myDS.Dispose();
       myDA.Dispose();
       myCommand.Dispose();
       myConnection.Dispose();
       myQuery 
= null;
    }


   
return resultXMLDocument;
}

最后我们在IIS中发布这个webservice,因为我们是使用VS2005开发的,如果你的电脑里还装了VS2003,那么你应该检查一下你的虚拟目录关联的服务是否是.net 2.0


使用这个webservice作为数据源创建和部署报表
我们的下一步就是用Microsoft Reporting Services 2005创建一个报表,其使用的数据源就是我们第一步所创建的那个webservice。要完成这个任务,你的电脑里需要安装Microsoft SQL Server 2005的Microsoft Reporting Services。我们先新建一个名为“TestReport”的报表服务器项目。之后,我们添加一个共享数据源,将其类型设置为XML,连接字符串就是我们的webservice的地址。然后添加一个新报表,本例中webservice的命名空间是“http://madjarov_d_n_demo.org”,方法是“GetPersonAddress”
图1


图2


最后,你选择下一步并生成报表。这样报表就可以在SQL Server 2005和VS2005 Studio中设计了,图例如下:
图3


我们如何给webservice中的方法GetPersonAddress(string cityNameID)传参数呢?微软为开发人员提供了一个强大的报表引擎。我们可在Microsoft Reporting Services 2005中非常容易的设置它。首先我们要在设计模式中选择报表参数,然后增加一个数据类型为“string”,名为“cityNameID”的参数,图例如下:
图4


最后一步就是把这个报表参数和DataSet关联起来。为了达到这个目的,我们需要在设计模式中编辑数据源,首先新建一个DataSet,参数名为“cityNameID”,它的值为“Parameters!cityNameID.Value”,图例如下:
图5


现在我们就可以在报表服务器中部署报表了。在部署之前你要确保你的“TargetReport Folder”和“TargetReport Server”被设置成了正确的值。你可以在报表属性中设置它们,图例如下:
图6


现在你就可以把它部署到报表服务器了。


给我们的报表创建一个简单的视图
我们最后的任务就是创建一个视图程序,它负责从报表中获取结果然后展现给我们。为了在这里传送一个参数到报表里,我们在VS2005(C#)中创建了一个名为“TestReportWebViewer”的web站点,并把“Default.aspx”做我们web站点的默认页,然后从工具箱里把“ReportView”控件拖拽到我们的页上。最后给它设置一个合适的大小并如下图设置该控件其它的属性。
图7


请注意一定要把“ReportPath”和“ReportServerUrl”设置成我们之前部署报表时的相同的值,否则我们的“ReportView”控件将不会显示我们的报表。下面是“ReportView”控件的“Init”事件的源代码:
protected void rptViewer_Init(object sender, EventArgs e)

 
//
 
// 创建一个报表参数,并初始化它的值为“Al”
 
//   
 ReportParameter cityID   = new ReportParameter();
 cityID.Name              
= "cityNameID";
 cityID.Values.Add(
"Al"); 
 
 
//
 
// 设置“ReportView”控件的处理模式为“Remote”
 
//   
 rptViewer.ProcessingMode = ProcessingMode.Remote;
    
 
//
 
// 传送参数并初始化“ReportView”控件
 
//   
 rptViewer.ServerReport.SetParameters(new ReportParameter[] { cityID });
}

最后,谢谢你能看到这里。希望当你尝试在Microsoft Reporting Services 2005项目中使用webservice作数据源的时候本文能给你带来一些帮助。你可以下载本文提供的源码仔细看其实现的过程。

感谢我的同事Mr. Svilen Donev给我提供了很多有价值的信息。

webabcd 2007-03-26 08:47 发表评论
分享到:
评论

相关推荐

    WebService接口生成工具

    WebService接口生成工具是一种用于自动化创建Web服务客户端代码的实用程序,极大地简化了开发人员与远程Web服务交互的过程。Web服务通常基于SOAP(简单对象访问协议)标准,通过XML(可扩展标记语言)来交换数据,...

    java版WebService生成客户端和服务端的实例

    本实例将详细讲解如何使用Apache Axis1.4工具来生成Java版的WebService服务端和客户端。 首先,让我们理解WebService的基本概念。WebService是一种基于HTTP协议的网络服务,它通过SOAP(Simple Object Access ...

    webservice 客户端自动生成工具

    Web服务(WebService)是一种基于开放标准的互联网协议,它允许不同系统之间进行数据交换和互操作。WebService客户端是调用这些服务的应用程序部分,而"WebService客户端自动生成工具"则是帮助开发者快速创建与...

    WebService代理类生成工具

    WebService代理类生成工具是一种实用的开发辅助工具,主要用于简化C#开发者在处理ASMX类型的Web服务时的工作流程。它能够自动生成与给定WebService接口对应的客户端代理类,使得调用远程服务如同调用本地方法一样...

    珍藏WebService生成Dll一步一步教你,可供winform调用

    一直珍藏的,今天有时间拿出来大家分享。WebService生成Dll一步一步教你,完成后的dll可供winform直接调用,灰常方便

    根据wsdl生成webservice服务端(3种方式)

    ### 生成WebService服务端的方法详解 #### 前言 在日常开发中,通常是由开发团队构建WebService服务端,客户端则通过服务端提供的WS-Definition Language (WSDL) 文件生成客户端代理并进行交互。但有时也会遇到特殊...

    WebService代码生成插件

    WebService代码生成插件是一种工具,它能够自动化地创建与Web服务相关的源代码,极大地简化了开发者的工作流程。在本文中,我们将深入探讨WebService的核心概念、 Axis框架以及如何使用指定的插件来提升开发效率。 ...

    SAP Webservice日志查询报表 V3

    "SAP Webservice日志查询报表 V3"增加了对这些数据的可视化展示,使问题定位和故障排除更为高效。 版本V3的升级点主要体现在两个方面:更详细的注释和关键字搜索功能。 1. **更详细的注释**:在日志查询结果中加入...

    soapui生成webservice客户端代码

    soapui生成webservice客户端代码,比较详细的讲解了配置,以及生成客户端代码的步骤

    SAP Webservice日志查询报表2.0

    SAP Webservice日志查询报表2.0是一款强大的工具,专为监控和分析SAP Web服务交互数据而设计。在企业信息化环境中,Web服务作为系统间通信的重要桥梁,其稳定性和效率直接影响到业务流程的顺畅性。此报表系统通过...

    java webservice 客户端、服务端生成工具

    Java WebService客户端和服务端生成工具是用于简化Java开发者在创建和调用Web服务时工作的实用程序。这些工具自动生成所需的代码框架,使开发者能够快速地与WebService进行交互,而无需手动编写大量的XML Schema...

    webservice接口自动生成工具

    这个工具的主要功能是根据定义的接口描述文件(如WSDL,Web Services Description Language),自动生成对应的Java源代码。WSDL文件是一种XML格式的文档,用于描述Web服务及其接口的细节,包括服务的位置、提供的...

    java生成二维码webservice

    Java生成二维码Webservice是一个强大的服务接口,允许外部应用程序通过网络调用来生成二维码图像。这个服务主要依赖于两个流行且功能丰富的库:ZXing(Zebra Crossing)和qrcode.js。ZXing是一个开源Java库,支持...

    webservice远程调用,返回数据生成xml文件,并通过SAX解析出来

    webservice远程调用,返回String数据并生成xml文件到本地工程,在通过SAX解析器把数据解析出来。这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为...

    webservice接口代码生成工具

    在本场景中,我们讨论的是一个名为"webservice接口代码生成工具"的工具,该工具的主要功能是根据WSDL(Web Services Description Language)文件自动生成对应的Web Service客户端代码。WSDL文件是一种XML格式的文档...

    使用wsimport命令生成webService客户端代码实例(查询手机号码)(源码Demo)

    本文将深入探讨如何使用`wsimport`命令生成WebService客户端代码,并通过一个查询手机号码的实际示例来演示整个过程。这个实例提供了一个完整的源码Demo,您可以在下载的`phone_cline`项目中直接运行。 `wsimport`...

    利用wsdl.exe生成webservice代理类

    利用wsdl.exe生成webservice代理类: 根据提供的wsdl生成webservice代理类 1、开始->程序->Visual Studio 2005 命令提示 2、输入如下红色标记部分 D:\Program Files\Microsoft Visual Studio 8\VC>wsdl /...

    myeclipse根据wsdl文件生成webservice服务端

    在IT行业中,Web服务是一种广泛使用的通信协议,它允许不同应用程序之间进行数据交换。MyEclipse作为一款强大的Java集成开发环境,提供了根据WSDL(Web Service Description Language)文件生成Web服务端的功能。...

    WebService的WSDL文件生成Java代码工具

    它通过SOAP(Simple Object Access Protocol)协议进行数据交换,使用WSDL(Web Services Description Language)来描述服务接口,而UDDI(Universal Description, Discovery, and Integration)则用于服务的发布和...

Global site tag (gtag.js) - Google Analytics