参数未传递到 ssrs ServerReport - 使用 ServerReport.Render 将报告渲染为 pdf

Rya*_*yan 2 vb.net asp.net reporting-services

我的代码在 Web 表单页面上设置 ServerReport 对象,然后将报告从 SSRS 呈现为 pdf。参数和报告名称通过 URL 传递。

Private Sub Page_Load(sender As Object, e As EventArgs)

    Dim reportname As String
    'Dim parameter(0) As ReportParameter
    reportname = Request("reportname").ToString

    Dim v As New ReportViewer
    v.ProcessingMode = ProcessingMode.Remote
    Dim serverreport As New ServerReport
    serverreport = v.ServerReport
    serverreport.ReportServerUrl = New Uri("http://xxxxxx:80/ReportServer")
    serverreport.ReportPath = "/Reports/Aramid/Sheeter/" & reportname

    Select Case reportname

        Case Is = "NomexBlockCard" 'Or "NomexBlockLabel" Or "NomexInternalLabel"
            Dim paramList As New Generic.List(Of ReportParameter)
            paramList.Add(New ReportParameter("paramBlock", Request("paramBlock").ToString, False))
            serverreport.SetParameters(paramList)

        Case Is = "NomexRoutingData"
            Dim paramList As New Generic.List(Of ReportParameter)
            paramList.Add(New ReportParameter("paramWO", Request("paramWO").ToString, False))
            serverreport.SetParameters(paramList)

    End Select

    serverreport.ReportServerCredentials = New ReportViewerCredentials(user name here, password here, "CORE")
    Save(serverreport, "C:\WebReports\" & reportname & ".pdf")

    'now print
    Response.Redirect("reports.ashx?fileName=" & reportname)

End Sub


Public Sub Save(ByVal sr As ServerReport, ByVal savePath As String)
    Try
        Dim warnings As Warning() = Nothing
        Dim streamids As String() = Nothing
        Dim mimeType As String = Nothing
        Dim encoding As String = Nothing
        Dim extension As String = Nothing
        Dim deviceInfo As String
        Dim bytes As Byte()

        deviceInfo = "True" '<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>"
        bytes = sr.Render("PDF", Nothing, mimeType, _
        encoding, extension, streamids, warnings)
        Using Stream As New FileStream(savePath, FileMode.Create)
            Stream.Write(Bytes, 0, Bytes.Length)
            Stream.Close()
        End Using

    Catch ex As Exception


    End Try
End Sub
Run Code Online (Sandbox Code Playgroud)

报告呈现并保存为 pdf,但参数值似乎并未在报告中使用。

我已经一遍又一遍地确认 paramBlock 中有一个值。

我不知道我做错了什么。

我是不是漏掉了一个步骤或者什么?

瑞安

Sti*_*ijn 5

当您的报告正在呈现和保存时,我假设凭据已正确设置。

您可以在保存报表之前使用ServerReport.GetParameters函数来检查参数(及其值/属性)的实际内容。

另外,请确保您设置了报告所需的每个参数(即使是隐藏的或内部的参数),并且每个参数值都在参数允许的值范围内(如果设置了限制)。

如果问题不在于传递参数,您可能需要查看报表本身以及它如何处理其参数。