blogger counters

Wednesday, June 30, 2010

Reporting Services, Web Service Data Source, and Parameters

I wasted an entire day trying to figure out why I couldn’t call a web service that takes parameters. The problem turned out to be very simple to fix, but not at all obvious. I found some documentation on MSDN: Defining Report Datasets for XML Data, and also Reporting Services: Using XML and Web Service Data Sources. Both of these use examples that use the Reporting Services web services. But I couldn’t get it to work with my web service that I created with Visual Studio 2008.

Calling the Web Method

Here is how I set things up (the test web method is called GetData and takes a single string parameter). First, define the data source:

  • Select XML in the Type field
  • Enter the URL to the ASMX file in the Connection string field:

 XML Data Source

  • Click Credentials and set it to Windows Authentication (that’s what I wanted, at least)
  • Click OK

This will give you a data source that knows how to connect to the web service. Next you need to add a data set that calls a single web method, and this is where things went wrong.

  • Create a new data set that uses the data source defined above
  • Click the Query Designer… button
  • Paste XML that defines what method to call, and what parameter values to use:

    <Method Name="GetData" Namespace="">
            <Parameter Name="value">
    <ElementPath IgnoreNamespaces="true">*</ElementPath>

I’ve highlighted in bold and red the two changes I had to make over what I found in the documentation. By default, a new web services uses the namespace “” that includes a trailing slash. So you have to add this in the Namespace attribute of the Method element. But when you do this, you get an extra slash in the default action: To get around that, you have to explicitly provide the soap action using the SoapAction attribute.

Once you have this defined, you can click on the ! button to call your web method. The * in ElementPath tells Reporting Services to look for the element it finds that repeats to define the rows, and the next-level children as the column values.


Now about the parameters. You define the set of parameters using Parameter elements inside a Parameters element, as shown above. The DefaultValue element provides the value to use when it’s not provided. This will be the value that RS uses when you click the ! button to run the “query” in the Query Designer window.

The default value will also be used if you haven’t defined a query parameter with the same name as the parameter value. For example, if the parameter for you web service is called “value,” you could define the parameter like this:


The report will now use this value, instead of the default value specified in the “query” XML, when you run the report.


At 10/30/12, 10:40 AM, Blogger Nitinyp said...

Very good article...

At 11/11/13, 10:35 PM, Anonymous Aaron said...

thanks sir for this post as i am computer science student i searching for Web Service Data Source and your post really useful my next project HeatherR . looking forward more about
Web Service Data Source

At 1/19/15, 2:28 AM, Blogger Ralahamy said...

I wanted to pass an object to web service ?eg: class search. which has properties. how do I do this in parameter section ?

At 7/14/15, 6:10 PM, Blogger Keviv said...

I did the same, wasted one and I found your article & here It saved me today.
Thanks for sharing the info.

At 6/24/17, 12:29 AM, Anonymous Anonymous said...

Thanks for the post as I was looking for exactly same solution I really appreciate this


Post a Comment

<< Home