Как ссылаться на параметр отчета SSRS по имени

У меня есть следующий код, который я пытаюсь программно создать отчет XML с помощью ReportViewer.

Dim outputPath As String = "C:\backup\test.xml"
Dim reportViewer As New ReportViewer()
Dim serverReport As ServerReport = reportViewer.ServerReport()

reportViewer.ServerReport.ReportPath = "/<path>/<report>"
reportViewer.ServerReport.ReportServerUrl = New Uri("http://<ip>/reportserver")
reportViewer.ProcessingMode = ProcessingMode.Local

reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = New System.Net.NetworkCredential("<user>", "<pwd>")

Dim parameters As New List(Of ReportParameter)

parameters.Add(New ReportParameter("LocationLocationParent", "[Location].[Location Parent].&[2]"))
parameters.Add(New ReportParameter("CalendarYear", "[Calendar].[Year].&[2014-01-01T00:00:00]"))
parameters.Add(New ReportParameter("StaffStaffName", "[Staff].[Staff Name].&[Bob Smith]"))

Try
    serverReport.SetParameters(parameters)

    Dim mimeType As String = ""
    Dim encoding As String = ""
    Dim extension As String = ""
    Dim streams As String() = Nothing
    Dim warnings As Warning() = Nothing

    Dim xmlBytes As Byte() = serverReport.Render("XML", String.Empty, mimeType, encoding, extension, streams, warnings)

    Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
        fs.Write(xmlBytes, 0, xmlBytes.Length)
        fs.Close()
    End Using

Catch reportEx As ReportServerException
    Debug.Print(reportEx.Message)
End Try

где я устанавливаю параметр для LocationLocationParent, он не позволяет мне устанавливать значение по имени, только по некоторому типу индекса, который имеет каждое значение в списке. Раскрывающийся список самого отчета SSRS имеет древовидную структуру, примерно такую:

Parent1
    Parent2
        Parent4
            Child1
            Child2
        Parent5
            Child3
            Child4
        Child5
    Parent3
        Child5
        Child6

Этот список не является истинным деревом, а просто просматривается как один. Это список с несколькими вариантами флажков. Например, я не могу установить для параметра значение "Child3" - только по его индексу, но в окне отчета в списке есть сотни значений. Если я установлю это так: "[Location].[Location Parent].&[Child3]" я получу следующее исключение

Для этого отчета требуется значение по умолчанию или пользовательское значение параметра отчета "LocationLocationParent". Чтобы запустить или подписаться на этот отчет, необходимо указать значение параметра. (RsReportParameterValueNotSet)

Обратите внимание, что параметр StaffStaffName сформирован не в древовидной структуре, а в виде списка, поэтому я могу правильно установить этот параметр.

Как я могу установить имя значения, которое я хочу для LocationLocationParent?

0 ответов

Другие вопросы по тегам