从VB.NET在默认浏览器中生成SSRS报告



我有一个VB。NET解决方案,将数据存储到SQL数据库。我已经写了几份SSRS报告中的第一份。现在我想从我的VB生成报告。网络解决方案。

我有一个生成报告的子程序,

Public Shared Sub GenerateReport(ByVal RptName As String, ByVal ParamArray Params() As Object)
Dim strPath As String = sqlSSRS + Replace(RptName, " ", "%20")
Dim _class As cParameters
'strPath += "&rc:Parameters=false&rs:Command=Render"
'strPath += "&rs:Command=Render"
For i As Integer = 0 To UBound(Params)
_class = DirectCast(Params(i), cParameters)
strPath += "&" & _class.ParamName & "=" & _class.Value
Next
System.Diagnostics.Process.Start(strPath)
End Sub

如果我生成一个没有参数的路径,报告将在默认浏览器中打开。所以这是有效的…

http://sqlServerName:80/Reports/report/ToolCrib/Toolbox%20by%20Installer

http://sqlServerName:80/Reports/report/ToolCrib/Toolbox%20by%20Installer&@UserID=7&@ProjectID=20026&@ToolboxID=10&@ToolStatus=2
or this
http://sqlServerName:80/Reports/report/ToolCrib/Toolbox%20by%20Installer&UserID=7&ProjectID=20026&ToolboxID=10&ToolStatus=2


传递参数显然有问题。在一种情况下,我不需要它们,但在其他情况下,我想提供它们,这就是为什么我用可选的Parameter数组编写GenerateReport例程。这是我得到的错误信息,我从过去的经验中知道,当微软不"知道"时,这是一种"捕获"。如何分类SSRS错误。

项目'/ToolCrib/Toolbox by Installer&UserID=7&ProjectID=20026&ToolboxID=10&ToolStatus=2'的路径无效。完整路径长度必须小于260个字符;其他限制也适用。如果报表服务器处于本机模式,则路径必须以斜杠开头。(rsInvalidItemPath)

任何帮助都将非常感激。

您的路径在使用参数时需要使用reportserver?而不是Reports/report

http://sqlServerName:80/reportserver?/ToolCrib/Toolbox%20by%20Installer&UserID=7&ProjectID=20026&ToolboxID=10&ToolStatus=2

你可以添加一个REPLACE:

strPath = Replace(strPath, "/Reports/report/", "/reportserver?/")

更多阅读,请查看

MS Docs url-access-parameter-reference