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:

<Query>
    <Method Name="GetData" Namespace="http://tempuri.org/">
        <Parameters>
            <Parameter Name="value">
                <DefaultValue>test</DefaultValue>
            </Parameter>
        </Parameters>
    </Method>
    <SoapAction>http://tempuri.org/GetData</SoapAction>
    <ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

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 “http://tempuri.org/” 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: http://tempuri.org//GetData. 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.

Parameters

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:

DatasetParameters

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

7 Comments:

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

Very good article...
Thanks!

 
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

 
At 6/6/26, 1:44 AM, Blogger de said...

The article provides a practical explanation of using Reporting Services web service data sources to access and integrate reporting information across applications. By demonstrating how web services can be leveraged for report generation and data retrieval, it highlights the importance of efficient data access mechanisms in enterprise reporting environments.

The discussion on report data management, data integration, and extracting meaningful information from reporting systems makes this topic highly relevant to Data Science Projects for Final Year. The article effectively shows how structured data can be collected and utilized to support analysis, reporting, and business decision-making.

 
At 6/6/26, 1:44 AM, Blogger de said...

Another valuable takeaway is the emphasis on processing and presenting data through automated reporting workflows that improve accessibility and operational efficiency. These concepts provide useful insights for students interested in Python Projects For Final Year, where data handling, reporting automation, and analytics are frequently applied to real-world applications.

 

Post a Comment

<< Home