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

Generate a SSRS report in default browser from VB.NET

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

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

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

会。
我显然在传递参数时遇到问题。在一种情况下我不需要它们,但在其他情况下我想提供它们,这就是为什么我用可选的参数数组编写 GenerateReport 例程。这是我收到的错误消息,我从过去的经验中知道,当 MS 不“知道”如何对 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

您可以添加一个替换:

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

更多阅读,可以查看

MS Docs url-access-parameter-reference