我正在开发一个SSIS 2012软件包,该软件包使用脚本任务通过使用SOAP的Web服务从SSRS服务器加载和呈现SSRS 2012报告。我的问题在于设置参数值的代码。当下面的代码运行时,我在尝试执行 rs.SetExecutionParameters 方法时收到以下SOAP错误消息:
Microsoft.ReportingServices.Diagnostics.Utilities.UnknownReportParameterException:尝试设置报告参数' prmDomainID'未在此报告中定义。
然而,如果我在设计模式下打开报告,那么参数显然就在那里。并在运行时检查execInfo变量,也显示参数在那里。我尝试删除服务器上的报告并重新部署它,但这不起作用。我尝试更改参数名称以包含前导" @"符号,但也没有工作。我已经确定参数数据类型(整数)与我传入的值的类型相匹配。我已经谷歌搜索了几个小时,似乎没有任何东西让它识别参数I' m传入。(注意prmDomainID参数设置为Visible。不确定是否重要。)
我在这里缺少什么?
Dim rs As New ReportExecutionService
Dim format As String = "HTML4.0"
Dim mimeType As String = Nothing
Dim historyID As String = Nothing
Dim deviceInfo As String = Nothing
Dim extension As String = Nothing
Dim encoding As String = Nothing
Dim warnings() As Warning = Nothing
Dim streamIDs() As String = Nothing
Dim results() As Byte
Dim execInfo As New ExecutionInfo
Dim parameters(1) As ParameterValue
parameters(0) = New ParameterValue()
parameters(0).Name = "prmDomainID"
parameters(0).Value = "15"
With rs
.Credentials = System.Net.CredentialCache.DefaultCredentials
execInfo = .LoadReport(ReportPath, historyID)
.SetExecutionParameters(parameters, "en-us")
results = .Render(format, deviceInfo, extension, mimeType, encoding, warnings, streamIDs)
End With
Return System.Text.Encoding.Default.GetString(results)
答案 0 :(得分:0)
你有这个工作吗?我看了看这个 - 我看到的唯一的事情是我不知道你的ReportPath设置在哪里 - 但我认为这是因为你在execInfo中得到了数据......所以我看到的唯一的其他东西是你没有设置ExecutionHeaderValue ......
所以添加此代码并尝试一下......
Dim execHeader as New ExecutionHeader()
rs.ExecutionHeaderValue = execHeader
确保将其放在execInfo = .LoadReport(ReportPath, historyID)
我尝试将我的c#代码转换为VB - 因此您可能需要验证语法!