Reporting Service 读取 web service数据
用户希望通过Reporting Builder来访问系统的部分数据,想通过一个有读写某个视图的帐号来进行读取数据,考虑了一下,数据库名字是我们设计的,对于用户来说可能并不是友好的,于是寻找另一种方法可以将某些数据共享给用户,第一个想法就是Reporting builder是否可以访问web service.
看了一下连接方式,里面有XML,觉得有戏,于是查找资料
首先定义一个web serivce
[WebService(Namespace = http://ABB.ContractManagement.org/)]
[WebMethod]
public XmlDataDocument GetContractDataByContractType(string unit, string password, string contractType)
{
}
在方法中只要将DataSet转换为XmlDataDocument就可以了
然后在Reporting Builder里新建DataSoucre,连接类型选为XML,并在连接字符串中填写web service地址,
点击OK。新建DataSets,选择先前创建的Data Source,关键在于Query如何去写,特别是带参数的查询,这个我折腾了半天才弄明白,quey语句如下:
<Query>
<SoapAction>http://ABB.ContractManagement.org/GetContractDataByContractType</SoapAction>
<Method Namespace="http://ABB.ContractManagement.org/" Name="GetContractDataByContractType">
<Parameters>
<Parameter Name="unit" Type="String">
<DefaultValue>CNABB</DefaultValue>
</Parameter>
<Parameter Name="password" Type="String">
<DefaultValue>654321</DefaultValue>
</Parameter>
<Parameter Name="contractType" Type="String">
<DefaultValue>Fixed Asset Contract</DefaultValue>
</Parameter>
</Parameters>
</Method>
</Query>
然后测试查询,有正确的返回值,查询等都没有问题了。
留着做个备份,省得忘记了。