【问题标题】:Generate a SSRS report in default browser from VB.NET从 VB.NET 在默认浏览器中生成 SSRS 报告
【发布时间】:2021-08-25 19:57:22
【问题描述】:

我有一个将数据存储到 SQL 数据库的 VB.NET 解决方案。我已经写了几份 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)

任何帮助将不胜感激。

【问题讨论】:

    标签: vb.net reporting-services


    【解决方案1】:

    使用参数时,路径需要使用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

    【讨论】:

    • 使用一门新语言肯定是令人谦卑的。这解决了它谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多