Published on

January 30, 2022

Передача параметров отчета в SQL Server Reporting Services

Проблема: У меня есть веб-приложение ASP.NET, которое должно представлять отчеты SQL Server Reporting Services. Однако, интерфейс параметров по умолчанию, предоставленный элементом управления ReportViewer, не соответствует цветам сайта. Есть ли способ передать параметры отчета в экземпляр Reporting Services без использования подсказок параметров?

Решение: К счастью, есть простой способ передачи параметров отчета в экземпляр Reporting Services. Допустим, у нас есть веб-сайт, который отслеживает ежечасные метеорологические наблюдения для нескольких аэропортов в районе. Мы можем предложить отчет с использованием Reporting Services, который позволяет пользователям выбирать местоположение, дату начала и дату окончания для отображения желаемых наблюдений.

Сначала откройте Visual Studio и страницу, на которой вы хотите добавить отчет. Во вкладке “Data” панели инструментов вы найдете элемент управления ReportViewer. Если вы еще не установили его, вы можете сделать это из панели инструментов. После установки элемента управления вы можете начать создание страницы.

Для этого примера создадим простую страницу с тремя текстовыми полями, двумя кнопками изображений для календарей и кнопкой ссылки, которая будет передавать параметры и отображать отчет. Перетащите элемент управления ReportViewer на страницу в режиме “Design”. Это автоматически добавит ссылку на пространство имен Microsoft.Reporting.WebForms на страницу.

Одна из настроек, которую можно добавить к элементу управления ReportViewer, это режим обработки. Этот элемент управления может отображать отчеты из локального источника (RDLC) или удаленного источника (экземпляр SQL Server Reporting Services). В данном случае у нас есть доступный экземпляр Reporting Services, поэтому мы будем использовать удаленный режим обработки.

Теперь давайте напишем код, который будет выполняться при нажатии кнопки “Просмотреть отчет”. Сначала объявим обобщенный список параметров отчета, используя пространства имен System.Collections.Generic и Microsoft.Reporting.WebForms. В отчете SQL Server Reporting Services есть три параметра: SiteID, StartDate и EndDate. В коде используйте фактический URL-адрес сервера отчетов (например, “http://www.example.com/reportserver”) и добавьте параметр отчета для каждого из них в обобщенный список параметров. Укажите путь к отчету и используйте функцию ServerReport.SetParameters для применения параметров отчета к фактическим параметрам отчета в отчете Reporting Services.


Protected Sub cmdGetReport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGetReport.Click 
    Dim colRP As New System.Collections.Generic.List(Of Microsoft.Reporting.WebForms.ReportParameter) 
    colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("SiteID", UCase(txtSiteID.Text.Trim))) 
    If IsDate(txtStartDate.Text.Trim) Then 
        Dim dteStart As Date = txtStartDate.Text.Trim 
        colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("StartDate", Right("0" & dteStart.Month, 2) & "/" & _ 
        Right("0" & dteStart.Day, 2) & "/" & dteStart.Year)) 
    End If 
    If IsDate(txtEndDate.Text.Trim) Then 
        Dim dteEnd As Date = txtEndDate.Text.Trim 
        colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("EndDate", Right("0" & dteEnd.Month, 2) & "/" & _ 
        Right("0" & dteEnd.Day, 2) & "/" & dteEnd.Year)) 
    End If 
    rvWeather.ServerReport.ReportServerUrl = New Uri("http://www.example.com/reportserver") 
    rvWeather.ServerReport.ReportPath = "/Weather/Site Report" 
    rvWeather.ServerReport.SetParameters(colRP) 
    rvWeather.ServerReport.Refresh() 
    rvWeather.Visible = True 
End Sub 

Когда пользователь достигает страницы, он может ввести необходимые параметры и нажать кнопку “Просмотреть отчет”. Отчет будет отображен с указанными параметрами.

Используя этот метод, вы можете настроить интерфейс параметров, чтобы он соответствовал цветам и дизайну вашего сайта, обеспечивая единый пользовательский опыт.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.