如何将动态报表参数传递给SSRS报表的XML Web Service查询?
SSRS报表动态传递参数给SOAP XML Web Service的解决方案
核心解决步骤
直接将SOAP查询整合成表达式,把报表参数嵌入到XML请求中,具体操作如下:
- 打开数据集属性,切换到「查询」选项卡,点击查询框右上角的
fx按钮打开表达式编辑器。 - 在表达式编辑器中,将原本的SOAP XML字符串用双引号包裹,同时把硬编码的
ProjectId替换为报表参数引用,示例代码如下:
注意:XML中的双引号需要转义为两个连续双引号("<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:crm=""http://example.com/crm"">" & "<soapenv:Header/>" & "<soapenv:Body>" & "<crm:GetProjectData>" & "<crm:ProjectId>" & Parameters!ProjectId.Value & "</crm:ProjectId>" & "</crm:GetProjectData>" & "</soapenv:Body>" & "</soapenv:Envelope>"""),参数直接用Parameters!ProjectId.Value引用即可。 - 确认数据集的「数据源类型」为XML,且数据源已正确指向目标WSDL地址。
- 不要在数据集属性的「参数」页添加任何参数——这里的参数是给数据源级别的配置用的,SOAP请求的参数已经通过表达式嵌入到XML中了。
- 保存设置后预览报表,报表参数会自动传递到SOAP请求中,不会弹出手动输入参数的弹窗。
常见问题排查
- 若表达式中的XML格式错误,会导致服务调用失败。建议先在表达式中保留硬编码的
ProjectId测试,确认能正常获取数据后,再替换为参数引用。 - 确保报表参数
ProjectId的类型(如字符串、整数)与Web Service要求的类型完全一致,避免因类型不匹配导致请求失败。
内容的提问来源于stack exchange,提问作者FRropen
相关产品推荐
相关产品推荐

