Reportviewer c как добавить в visual studio 2019
Перейти к содержимому

Reportviewer c как добавить в visual studio 2019

  • автор:

Поддержка версий средства просмотра отчетов Сurrent Branch

Элемент управления Microsoft Report Viewer совместим со службами SQL Server Reporting Services и сервером отчетов Power BI, к которым применяется современная политика жизненного цикла поддержки Майкрософт. Эти сведения относятся как к версиям ASP.NET, так и к версиям WinForms, распространяемым посредством NuGet. Все выпущенные версии доступны через NuGet. Исправления, компоненты и прочие обновления предоставляются для последней версии. Для получения обновлений требуются последние версии. Для средства просмотра отчетов продолжают выпускаться обновления для системы безопасности и критические обновления. Мы уведомляем о любых изменениях в политике поддержки не позднее чем за один год до их внесения.

Журнал версий для элемента управления «Средство просмотра отчетов» доступен по следующим ссылкам:

Сочетание сервера приложений и сервера отчетов

Некоторые функции элемента управления «Средство просмотра отчетов» зависят от поведения операционной системы по умолчанию. Таким образом, им может потребоваться выполнение одной и той же версии для клиента (сервер приложений, на котором выполняется элемент управления «Средство просмотра отчетов») и сервер (запущенные службы Reporting Services). Поддерживаются следующие сочетания сервера приложений и сервера отчетов:

Сервер приложений Сервер отчетов
Windows Server 2012 Windows Server 2012
Windows Server 2012 Windows Server 2012 R2
Windows Server 2012 R2 Windows Server 2012 R2
Windows Server 2012 R2 Windows Server 2012
Windows Server 2016 и более поздних версий Windows Server 2016 и более поздних версий

Занятие 6. Добавление элемента управления ReportViewer в приложение

После завершения проектирования дочернего отчета с помощью мастера отчетов далее необходимо добавить в приложение веб-сайта элемент управления ReportViewer. Если вы используете веб-сайт отчетов ASP.NET, он добавляет элемент управления ReportViewer на страницу default.aspx.

Добавление элемента управления ReportViewer в приложение

  1. В Обозреватель решений щелкните правой кнопкой мыши Default.aspx и выберите конструктор представлений.
  2. Если на странице default.aspx уже есть элемент управления ReportViewer, перейдите к шагу 4. В противном случае из группы Расширения AJAX в окне Панель элементов перетащите элемент управления ScriptManager в область конструктора.
  3. Из группы Отчетность перетащите элемент управления ReportViewer в область конструктора, расположив его ниже элемента управления ScriptManager .
  4. Откройте окно задач ReportViewer, выбрав стрелку в правом верхнем углу элемента управления ReportViewer.
  5. В поле Выбор отчета выберите созданный родительский отчет. После выбора отчета экземпляры источников данных, используемых в отчете, будут созданы автоматически. Будет сформирован код для создания экземпляра каждого объекта DataTable (и его контейнера DataSet ). В область конструктора будут добавлены элементы управления ObjectDataSource , соответствующие каждому источнику данных, который используется в отчете. Настройка этих элементов управления источником данных осуществляется автоматически.
  6. В меню «Сборка» выберите «Создать веб-сайт». Отчет компилируется, и все ошибки, такие как синтаксические ошибки в выражениях отчета, появляются в области Список ошибок . Выберите список ошибок в нижней части окна Visual Studio, чтобы отобразить область списка ошибок.

Следующий шаг

Вы успешно добавили элемент управления ReportViewer в приложение веб-сайта. Затем вы добавите действие детализации в родительском отчете. См . урок 7. Добавление действия детализации в родительском отчете.

Обратная связь

Были ли сведения на этой странице полезными?

Использование элемента управления WebForms ReportViewer

Для просмотра отчетов, развернутых на сервере отчетов, и отчетов, существующих в локальной файловой системе, можно использовать элемент управления WebForms ReportViewer для подготовки отчетов к просмотру в веб-приложении.

Использование элемента управления ReportViewer в веб-приложении

  1. Создайте веб-сайт Microsoft ASP.NET с помощью Microsoft C# или Microsoft Visual Basic. -или- Откройте существующий веб-сайт ASP.NET и добавьте новую веб-форму.
  2. Найдите элемент управления ScriptManager в группе AJAX-расширения в окне Панель элементов и перетащите его в область конструктора веб-формы. Если панель элементов не отображается, вы можете получить доступ к ней из меню «Вид«, выбрав панель элементов.
  3. Найдите элемент управления ReportViewer в окне Панель элементов и перетащите его в область конструктора под элементом управления ScriptManager. В форму будет добавлен элемент управления ReportViewer с именем reportViewer1.

После добавления элемента управления в форму появится смарт-тег «Задачи ReportViewer» с запросом на выбор отчета. Если отчет, который вы хотите просмотреть, развертывается на сервере отчетов, выберите параметр «Отчет сервера>» в раскрывающемся списке «Выбор отчета«.< После выбора параметра "Отчет> сервера» появится еще два свойства, URL-адрес сервера отчетов и путь к отчету. Свойство URL-адрес сервера отчетов определяет адрес сервера отчетов, а свойство Путь к отчету — полный путь к подлежащему отрисовке отчету.

Если вы хотите просмотреть отчет в локальном режиме, выберите параметр «Конструктор нового отчета», чтобы запустить конструктор отчетов или выбрать отчет, который уже является частью существующего проекта. После выбора отчета обязательно введите имя файла RDLC отчета в свойстве ReportPath элемента управления ReportViewer. Это свойство находится в узле LocalReport в области Свойства.

При подготовке отчета к просмотру есть возможность скрыть один или несколько элементов на панели инструментов ReportViewer. Например, можно скрыть кнопку печати. Для скрытия элементов панели инструментов присвойте значение False указанным ниже свойствам в области Свойства.

Просмотр отчетов в режиме удаленной обработки

В следующем примере показано, как отобразить отчет, развернутый на сервере отчетов. В этом примере используется отчет Sales Order Detail, который включен в проект с образцами отчетов AdventureWorks2022 .

В этом примере используется встроенная проверка подлинности Windows, поэтому сначала необходимо включить олицетворение. Для этого в файл web.config необходимо вставить следующую строку:

По умолчанию олицетворение отключено.

C#

protected void Page_Init(object sender, EventArgs e) < if (!Page.IsPostBack) < // Set the processing mode for the ReportViewer to Remote reportViewer.ProcessingMode = ProcessingMode.Remote; ServerReport serverReport = reportViewer.ServerReport; // Set the report server URL and report path serverReport.ReportServerUrl = new Uri("https:///reportserver"); serverReport.ReportPath = "/AdventureWorks Sample Reports/Sales Order Detail"; // Create the sales order number report parameter ReportParameter salesOrderNumber = new ReportParameter(); salesOrderNumber.Name = "SalesOrderNumber"; salesOrderNumber.Values.Add("SO43661"); // Set the report parameters for the report reportViewer.ServerReport.SetParameters( new ReportParameter[] < salesOrderNumber >); > > 

VB.NET

Imports Microsoft.Reporting.WebForms Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Init(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Init If Not Page.IsPostBack Then 'Set the processing mode for the ReportViewer to Remote reportViewer.ProcessingMode = ProcessingMode.Remote Dim serverReport As ServerReport serverReport = reportViewer.ServerReport 'Set the report server URL and report path serverReport.ReportServerUrl = _ New Uri("https:///reportserver") serverReport.ReportPath = _ "/AdventureWorks Sample Reports/Sales Order Detail" 'Create the sales order number report parameter Dim salesOrderNumber As New ReportParameter() salesOrderNumber.Name = "SalesOrderNumber" salesOrderNumber.Values.Add("SO43661") 'Set the report parameters for the report Dim parameters() As ReportParameter = serverReport.SetParameters(parameters) End If End Sub End Class 

Просмотр отчетов в локальном режиме обработки

В следующем примере показано, как отобразить отчет, который является частью приложения Windows и не развертывается на сервере отчетов.

Добавление отчета «Сведения о заказе на продажу» на веб-сайт
  1. Откройте веб-сайт, на который должен быть добавлен отчет.
  2. В меню Веб-сайт выберите пункт Добавить существующий элемент.
  3. Перейдите в папку, в которой были установлены проекты образцов отчетов AdventureWorks. Ее местонахождением по умолчанию является C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports.
  4. Выберите файл Detail.rdl заказа на продажу и нажмите кнопку «Добавить «. Файл «Сведения о заказе на продажу.rdl» теперь станет частью проекта.
  5. Щелкните правой кнопкой мыши файл Sales Order Detail.rdl в обозревателе решений и выберите команду Переименовать. Переименуйте отчет в Сведения о заказах на продажу.rdlc и нажмите клавишу ВВОД. Если Обозреватель решений не отображается, его можно открыть в меню «Вид«, выбрав Обозреватель решений.

В следующем примере кода создается набор данных для данных заказа на продажу, а затем отображается отчет «Сведения о заказах на продажу» в локальном режиме.

C#

protected void Page_Init(object sender, EventArgs e) < if (!Page.IsPostBack) < // Set the processing mode for the ReportViewer to Local reportViewer.ProcessingMode = ProcessingMode.Local; LocalReport localReport = reportViewer.LocalReport; localReport.ReportPath = "Sales Order Detail.rdlc"; DataSet dataset = new DataSet("Sales Order Detail"); string salesOrderNumber = "SO43661"; GetSalesOrderData(salesOrderNumber, ref dataset); ReportDataSource dsSalesOrder = new ReportDataSource(); dsSalesOrder.Name = "SalesOrder"; dsSalesOrder.Value = dataset.Tables["SalesOrder"]; localReport.DataSources.Add(dsSalesOrder); GetSalesOrderDetailData(salesOrderNumber, ref dataset); ReportDataSource dsSalesOrderDetail = new ReportDataSource(); dsSalesOrderDetail.Name = "SalesOrderDetail"; dsSalesOrderDetail.Value = dataset.Tables["SalesOrderDetail"]; localReport.DataSources.Add(dsSalesOrderDetail); // Create the sales order number report parameter ReportParameter rpSalesOrderNumber = new ReportParameter(); rpSalesOrderNumber.Name = "SalesOrderNumber"; rpSalesOrderNumber.Values.Add("SO43661"); // Set the report parameters for the report localReport.SetParameters( new ReportParameter[] < rpSalesOrderNumber >); > > private void GetSalesOrderData(string salesOrderNumber, ref DataSet dsSalesOrder) < string sqlSalesOrder = "SELECT SOH.SalesOrderNumber, S.Name AS Store, " + " SOH.OrderDate, C.FirstName AS SalesFirstName, " + " C.LastName AS SalesLastName, E.Title AS " + " SalesTitle, SOH.PurchaseOrderNumber, " + " SM.Name AS ShipMethod, BA.AddressLine1 " + " AS BillAddress1, BA.AddressLine2 AS " + " BillAddress2, BA.City AS BillCity, " + " BA.PostalCode AS BillPostalCode, BSP.Name " + " AS BillStateProvince, BCR.Name AS " + " BillCountryRegion, SA.AddressLine1 AS " + " ShipAddress1, SA.AddressLine2 AS " + " ShipAddress2, SA.City AS ShipCity, " + " SA.PostalCode AS ShipPostalCode, SSP.Name " + " AS ShipStateProvince, SCR.Name AS " + " ShipCountryRegion, CC.Phone AS CustPhone, " + " CC.FirstName AS CustFirstName, CC.LastName " + " AS CustLastName " + "FROM Person.Address SA INNER JOIN " + " Person.StateProvince SSP ON " + " SA.StateProvinceID = SSP.StateProvinceID " + " INNER JOIN Person.CountryRegion SCR ON " + " SSP.CountryRegionCode = SCR.CountryRegionCode " + " RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " + " LEFT OUTER JOIN Person.Contact CC ON " + " SOH.ContactID = CC.ContactID LEFT OUTER JOIN" + " Person.Address BA INNER JOIN " + " Person.StateProvince BSP ON " + " BA.StateProvinceID = BSP.StateProvinceID " + " INNER JOIN Person.CountryRegion BCR ON " + " BSP.CountryRegionCode = " + " BCR.CountryRegionCode ON SOH.BillToAddressID " + " = BA.AddressID ON SA.AddressID = " + " SOH.ShipToAddressID LEFT OUTER JOIN " + " Person.Contact C RIGHT OUTER JOIN " + " HumanResources.Employee E ON C.ContactID = " + " E.ContactID ON SOH.SalesPersonID = " + " E.EmployeeID LEFT OUTER JOIN " + " Purchasing.ShipMethod SM ON SOH.ShipMethodID " + " = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" + " S ON SOH.CustomerID = S.CustomerID " + "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)"; SqlConnection connection = new SqlConnection("Data Source=(local); " + "Initial Catalog=AdventureWorks; " + "Integrated Security=SSPI"); SqlCommand command = new SqlCommand(sqlSalesOrder, connection); command.Parameters.Add( new SqlParameter("SalesOrderNumber", salesOrderNumber)); SqlDataAdapter salesOrderAdapter = new SqlDataAdapter(command); salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder"); >private void GetSalesOrderDetailData(string salesOrderNumber, ref DataSet dsSalesOrder) < string sqlSalesOrderDetail = "SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " + " SOD.UnitPrice, CASE WHEN " + " SOD.UnitPriceDiscount IS NULL THEN 0 " + " ELSE SOD.UnitPriceDiscount END AS " + " UnitPriceDiscount, SOD.LineTotal, " + " SOD.CarrierTrackingNumber, " + " SOD.SalesOrderID, P.Name, P.ProductNumber " + "FROM Sales.SalesOrderDetail SOD INNER JOIN " + " Production.Product P ON SOD.ProductID = " + " P.ProductID INNER JOIN " + " Sales.SalesOrderHeader SOH ON " + " SOD.SalesOrderID = SOH.SalesOrderID " + "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " + "ORDER BY SOD.SalesOrderDetailID"; using (SqlConnection connection = new SqlConnection("Data Source=(local); " + "Initial Catalog=AdventureWorks; " + "Integrated Security=SSPI")) < SqlCommand command = new SqlCommand(sqlSalesOrderDetail, connection); command.Parameters.Add( new SqlParameter("SalesOrderNumber", salesOrderNumber)); SqlDataAdapter salesOrderDetailAdapter = new SqlDataAdapter(command); salesOrderDetailAdapter.Fill(dsSalesOrder, "SalesOrderDetail"); >> 

VB.NET

Imports System.Data Imports System.Data.SqlClient Imports Microsoft.Reporting.WebForms Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Init(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Init If Not Page.IsPostBack Then 'Set the processing mode for the ReportViewer to Local reportViewer.ProcessingMode = ProcessingMode.Local Dim localReport As LocalReport localReport = reportViewer.LocalReport localReport.ReportPath = "Sales Order Detail.rdlc" Dim dataset As New DataSet("Sales Order Detail") Dim salesOrderNumber As String = "SO43661" 'Get the sales order data GetSalesOrderData(salesOrderNumber, dataset) 'Create a report data source for the sales order data Dim dsSalesOrder As New ReportDataSource() dsSalesOrder.Name = "SalesOrder" dsSalesOrder.Value = dataset.Tables("SalesOrder") localReport.DataSources.Add(dsSalesOrder) 'Get the sales order detail data GetSalesOrderDetailData(salesOrderNumber, dataset) 'Create a report data source for the sales 'order detail data Dim dsSalesOrderDetail As New ReportDataSource() dsSalesOrderDetail.Name = "SalesOrderDetail" dsSalesOrderDetail.Value = _ dataset.Tables("SalesOrderDetail") localReport.DataSources.Add(dsSalesOrderDetail) 'Create a report parameter for the sales order number Dim rpSalesOrderNumber As New ReportParameter() rpSalesOrderNumber.Name = "SalesOrderNumber" rpSalesOrderNumber.Values.Add("SO43661") 'Set the report parameters for the report Dim parameters() As ReportParameter = localReport.SetParameters(parameters) End If End Sub Private Sub GetSalesOrderData(ByVal salesOrderNumber As String, _ ByRef dsSalesOrder As DataSet) Dim sqlSalesOrder As String = _ "SELECT SOH.SalesOrderNumber, S.Name AS Store, " & _ " SOH.OrderDate, C.FirstName AS SalesFirstName, " & _ " C.LastName AS SalesLastName, E.Title AS " & _ " SalesTitle, SOH.PurchaseOrderNumber, " & _ " SM.Name AS ShipMethod, BA.AddressLine1 " & _ " AS BillAddress1, BA.AddressLine2 AS " & _ " BillAddress2, BA.City AS BillCity, " & _ " BA.PostalCode AS BillPostalCode, BSP.Name " & _ " AS BillStateProvince, BCR.Name AS " & _ " BillCountryRegion, SA.AddressLine1 AS " & _ " ShipAddress1, SA.AddressLine2 AS " & _ " ShipAddress2, SA.City AS ShipCity, " & _ " SA.PostalCode AS ShipPostalCode, SSP.Name " & _ " AS ShipStateProvince, SCR.Name AS " & _ " ShipCountryRegion, CC.Phone AS CustPhone, " & _ " CC.FirstName AS CustFirstName, CC.LastName " & _ " AS CustLastName " & _ "FROM Person.Address SA INNER JOIN " & _ " Person.StateProvince SSP ON " & _ " SA.StateProvinceID = SSP.StateProvinceID " & _ " INNER JOIN Person.CountryRegion SCR ON " & _ " SSP.CountryRegionCode = SCR.CountryRegionCode " & _ " RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " & _ " LEFT OUTER JOIN Person.Contact CC ON " & _ " SOH.ContactID = CC.ContactID LEFT OUTER JOIN" & _ " Person.Address BA INNER JOIN " & _ " Person.StateProvince BSP ON " & _ " BA.StateProvinceID = BSP.StateProvinceID " & _ " INNER JOIN Person.CountryRegion BCR ON " & _ " BSP.CountryRegionCode = " & _ " BCR.CountryRegionCode ON SOH.BillToAddressID " & _ " = BA.AddressID ON SA.AddressID = " & _ " SOH.ShipToAddressID LEFT OUTER JOIN " & _ " Person.Contact C RIGHT OUTER JOIN " & _ " HumanResources.Employee E ON C.ContactID = " & _ " E.ContactID ON SOH.SalesPersonID = " & _ " E.EmployeeID LEFT OUTER JOIN " & _ " Purchasing.ShipMethod SM ON SOH.ShipMethodID " & _ " = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" & _ " S ON SOH.CustomerID = S.CustomerID " & _ "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)" Using connection As New SqlConnection( _ "Data Source=(local); " & _ "Initial Catalog=AdventureWorks; " & _ "Integrated Security=SSPI") Dim command As New SqlCommand(sqlSalesOrder, connection) Dim parameter As New SqlParameter("SalesOrderNumber", _ salesOrderNumber) command.Parameters.Add(parameter) Dim salesOrderAdapter As New SqlDataAdapter(command) salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder") End Using End Sub Private Sub GetSalesOrderDetailData( _ ByVal salesOrderNumber As String, _ ByRef dsSalesOrder As DataSet) Dim sqlSalesOrderDetail As String = _ "SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " & _ " SOD.UnitPrice, CASE WHEN " & _ " SOD.UnitPriceDiscount IS NULL THEN 0 " & _ " ELSE SOD.UnitPriceDiscount END AS " & _ " UnitPriceDiscount, SOD.LineTotal, " & _ " SOD.CarrierTrackingNumber, " & _ " SOD.SalesOrderID, P.Name, P.ProductNumber " & _ "FROM Sales.SalesOrderDetail SOD INNER JOIN " & _ " Production.Product P ON SOD.ProductID = " & _ " P.ProductID INNER JOIN " & _ " Sales.SalesOrderHeader SOH ON " & _ " SOD.SalesOrderID = SOH.SalesOrderID " & _ "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " & _ "ORDER BY SOD.SalesOrderDetailID" Using connection As New SqlConnection( _ "Data Source=(local); " & _ "Initial Catalog=AdventureWorks; " & _ "Integrated Security=SSPI") Dim command As New SqlCommand(sqlSalesOrderDetail, _ connection) Dim parameter As New SqlParameter("SalesOrderNumber", _ salesOrderNumber) command.Parameters.Add(parameter) Dim salesOrderDetailAdapter As New SqlDataAdapter(command) salesOrderDetailAdapter.Fill(dsSalesOrder, _ "SalesOrderDetail") End Using End Sub End Class 

Использование элемента управления WinForms ReportViewer

Чтобы просмотреть отчеты, развернутые на сервере отчетов или отчетах, которые существуют в локальной файловой системе, используйте элемент управления WinForms ReportViewer, чтобы отобразить их в приложении Windows.

Добавление элемента управления ReportViewer в приложение Windows

Screenshot of the Toolbox, highlighting ReportViewer control.

  1. Создайте новое приложение Windows с помощью Microsoft C# или Microsoft Visual Basic. -или- Открыть существующий проект приложения Windows и добавить новую форму.
  2. Укажите элемент управления ReportViewer в окне Панель элементов. Если панель элементов не отображается, вы можете получить доступ к ней из меню «Вид«, выбрав панель элементов.
  3. Перетащите элемент управления ReportViewer в область конструктора Windows Form. В форму будет добавлен элемент управления ReportViewer с именем reportViewer1.

После добавления элемента управления в форму появляется смарт-тег Задачи ReportViewer и выводится приглашение выбрать отчет.

Если отчет, который вы хотите просмотреть, развертывается на сервере отчетов, выберите параметр «Отчет сервера>» в раскрывающемся списке «Выбор отчета«.< После выбора параметра "Отчет> сервера» появится еще два свойства: URL-адрес сервера отчетов и путь к отчету.< Свойство URL-адрес сервера отчетов задает адрес сервера отчетов, а свойство Путь к отчету задает полный путь к подготавливаемому к просмотру отчету.

Screenshot of the ReportViewer Tasks smart tag, highlighting the server report.

Если просматриваемый отчет является отчетом в локальном режиме, выберите параметр Создать новый отчет для запуска конструктора отчетов или отчет, который уже является частью существующего проекта.

Screenshot of the ReportViewer Tasks smart tag, highlighting the local report.

Просмотр отчетов в режиме удаленной обработки

В следующем примере показано, как отобразить отчет, развернутый на сервере отчетов с помощью элемента управления WinForms ReportViewer. В этом примере используется отчет Sales Order Detail, который включен в проект с образцами отчетов AdventureWorks2022 .

C#

public partial class Form1 : Form < private void Form1_Load(object sender, EventArgs e) < // Set the processing mode for the ReportViewer to Remote reportViewer1.ProcessingMode = ProcessingMode.Remote; ServerReport serverReport = reportViewer1.ServerReport; // Get a reference to the default credentials System.Net.ICredentials credentials = System.Net.CredentialCache.DefaultCredentials; // Get a reference to the report server credentials ReportServerCredentials rsCredentials = serverReport.ReportServerCredentials; // Set the credentials for the server report rsCredentials.NetworkCredentials = credentials; // Set the report server URL and report path serverReport.ReportServerUrl = new Uri("https:// /reportserver"); serverReport.ReportPath = "/AdventureWorks Sample Reports/Sales Order Detail"; // Create the sales order number report parameter ReportParameter salesOrderNumber = new ReportParameter(); salesOrderNumber.Name = "SalesOrderNumber"; salesOrderNumber.Values.Add("SO43661"); // Set the report parameters for the report reportViewer1.ServerReport.SetParameters( new ReportParameter[] < salesOrderNumber >); // Refresh the report reportViewer1.RefreshReport(); > > 

VB.NET

Imports Microsoft.Reporting.WinForms Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load 'Set the processing mode for the ReportViewer to Remote reportViewer1.ProcessingMode = ProcessingMode.Remote Dim serverReport As ServerReport serverReport = reportViewer1.ServerReport 'Get a reference to the default credentials Dim credentials As System.Net.ICredentials credentials = System.Net.CredentialCache.DefaultCredentials 'Get a reference to the report server credentials Dim rsCredentials As ReportServerCredentials rsCredentials = serverReport.ReportServerCredentials 'Set the credentials for the server report rsCredentials.NetworkCredentials = credentials 'Set the report server URL and report path serverReport.ReportServerUrl = _ New Uri("https:///reportserver") serverReport.ReportPath = _ "/AdventureWorks Sample Reports/Sales Order Detail" 'Create the sales order number report parameter Dim salesOrderNumber As New ReportParameter() salesOrderNumber.Name = "SalesOrderNumber" salesOrderNumber.Values.Add("SO43661") 'Set the report parameters for the report Dim parameters() As ReportParameter = serverReport.SetParameters(parameters) 'Refresh the report reportViewer1.RefreshReport() End Sub End Class 

Просмотр отчетов в локальном режиме обработки

В следующем примере показано, как отобразить отчет, который является частью приложения Windows и не развертывается на сервере отчетов.

Добавление отчета «Сведения о заказе на продажу» в приложение Windows

Screenshot of the Solution Explorer, highlighting the Sales Order Detail Report.

  1. Открыть проект Windows, в который будет добавлен отчет.
  2. В меню Проект выберите пункт Добавить существующий элемент.
  3. Перейти в папку, в которой были установлены проекты образцов отчетов AdventureWorks2022 . Скачивание примеров отчета перейдите в примеры отчетов AdventureWorks
  4. Выберите файл Detail.rdl заказа на продажу и нажмите кнопку «Добавить «. Файл «Сведения о заказе на продажу.rdl» теперь станет частью проекта.
  5. Щелкните правой кнопкой мыши файл Sales Order Detail.rdl в обозревателе решений и выберите команду Переименовать. Переименуйте отчет в Сведения о заказах на продажу.rdlc и нажмите клавишу ВВОД. Если Обозреватель решений не отображается, его можно открыть в меню «Вид«, выбрав Обозреватель решений.

Примечание. Переименование расширения файла из RDL в RDLC позволит редактировать отчет с помощью конструктора отчетов для Microsoft Visual Studio 2005.

Screenshot of the Properties window, highlighting the Copy To Output setting.

  • После переименования отчета выберите файл и найдите окно свойств. Для свойства Копировать в выходной каталог задайте значение Копировать более новые. Если окно «Свойства» не отображается, его можно открыть в меню «Вид«, выбрав окно «Свойства».
  • В следующем примере кода создается набор данных для данных заказа на продажу, а затем отображается отчет «Сведения о заказах на продажу» в локальном режиме.

    C#

    public partial class Form1 : Form < private void Form1_Load(object sender, EventArgs e) < // Set the processing mode for the ReportViewer to Local reportViewer1.ProcessingMode = ProcessingMode.Local; LocalReport localReport = reportViewer1.LocalReport; localReport.ReportPath = "Sales Order Detail.rdlc"; DataSet dataset = new DataSet("Sales Order Detail"); string salesOrderNumber = "SO43661"; // Get the sales order data GetSalesOrderData(salesOrderNumber, ref dataset); // Create a report data source for the sales order data ReportDataSource dsSalesOrder = new ReportDataSource(); dsSalesOrder.Name = "SalesOrder"; dsSalesOrder.Value = dataset.Tables["SalesOrder"]; localReport.DataSources.Add(dsSalesOrder); // Get the sales order detail data GetSalesOrderDetailData(salesOrderNumber, ref dataset); // Create a report data source for the sales order detail // data ReportDataSource dsSalesOrderDetail = new ReportDataSource(); dsSalesOrderDetail.Name = "SalesOrderDetail"; dsSalesOrderDetail.Value = dataset.Tables["SalesOrderDetail"]; localReport.DataSources.Add(dsSalesOrderDetail); // Create a report parameter for the sales order number ReportParameter rpSalesOrderNumber = new ReportParameter(); rpSalesOrderNumber.Name = "SalesOrderNumber"; rpSalesOrderNumber.Values.Add("SO43661"); // Set the report parameters for the report localReport.SetParameters( new ReportParameter[] < rpSalesOrderNumber >); // Refresh the report reportViewer1.RefreshReport(); > private void GetSalesOrderData(string salesOrderNumber, ref DataSet dsSalesOrder) < string sqlSalesOrder = "SELECT SOH.SalesOrderNumber, S.Name AS Store, " + " SOH.OrderDate, C.FirstName AS SalesFirstName, " + " C.LastName AS SalesLastName, E.Title AS " + " SalesTitle, SOH.PurchaseOrderNumber, " + " SM.Name AS ShipMethod, BA.AddressLine1 " + " AS BillAddress1, BA.AddressLine2 AS " + " BillAddress2, BA.City AS BillCity, " + " BA.PostalCode AS BillPostalCode, BSP.Name " + " AS BillStateProvince, BCR.Name AS " + " BillCountryRegion, SA.AddressLine1 AS " + " ShipAddress1, SA.AddressLine2 AS " + " ShipAddress2, SA.City AS ShipCity, " + " SA.PostalCode AS ShipPostalCode, SSP.Name " + " AS ShipStateProvince, SCR.Name AS " + " ShipCountryRegion, CC.Phone AS CustPhone, " + " CC.FirstName AS CustFirstName, CC.LastName " + " AS CustLastName " + "FROM Person.Address SA INNER JOIN " + " Person.StateProvince SSP ON " + " SA.StateProvinceID = SSP.StateProvinceID " + " INNER JOIN Person.CountryRegion SCR ON " + " SSP.CountryRegionCode = SCR.CountryRegionCode " + " RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " + " LEFT OUTER JOIN Person.Contact CC ON " + " SOH.ContactID = CC.ContactID LEFT OUTER JOIN" + " Person.Address BA INNER JOIN " + " Person.StateProvince BSP ON " + " BA.StateProvinceID = BSP.StateProvinceID " + " INNER JOIN Person.CountryRegion BCR ON " + " BSP.CountryRegionCode = " + " BCR.CountryRegionCode ON SOH.BillToAddressID " + " = BA.AddressID ON SA.AddressID = " + " SOH.ShipToAddressID LEFT OUTER JOIN " + " Person.Contact C RIGHT OUTER JOIN " + " HumanResources.Employee E ON C.ContactID = " + " E.ContactID ON SOH.SalesPersonID = " + " E.EmployeeID LEFT OUTER JOIN " + " Purchasing.ShipMethod SM ON SOH.ShipMethodID " + " = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" + " S ON SOH.CustomerID = S.CustomerID " + "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)"; SqlConnection connection = new SqlConnection("Data Source=(local); " + "Initial Catalog=AdventureWorks; " + "Integrated Security=SSPI"); SqlCommand command = new SqlCommand(sqlSalesOrder, connection); command.Parameters.Add( new SqlParameter("SalesOrderNumber", salesOrderNumber)); SqlDataAdapter salesOrderAdapter = new SqlDataAdapter(command); salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder"); >private void GetSalesOrderDetailData(string salesOrderNumber, ref DataSet dsSalesOrder) < string sqlSalesOrderDetail = "SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " + " SOD.UnitPrice, CASE WHEN " + " SOD.UnitPriceDiscount IS NULL THEN 0 " + " ELSE SOD.UnitPriceDiscount END AS " + " UnitPriceDiscount, SOD.LineTotal, " + " SOD.CarrierTrackingNumber, " + " SOD.SalesOrderID, P.Name, P.ProductNumber " + "FROM Sales.SalesOrderDetail SOD INNER JOIN " + " Production.Product P ON SOD.ProductID = " + " P.ProductID INNER JOIN " + " Sales.SalesOrderHeader SOH ON " + " SOD.SalesOrderID = SOH.SalesOrderID " + "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " + "ORDER BY SOD.SalesOrderDetailID"; using (SqlConnection connection = new SqlConnection("Data Source=(local); " + "Initial Catalog=AdventureWorks; " + "Integrated Security=SSPI")) < SqlCommand command = new SqlCommand(sqlSalesOrderDetail, connection); command.Parameters.Add( new SqlParameter("SalesOrderNumber", salesOrderNumber)); SqlDataAdapter salesOrderDetailAdapter = new SqlDataAdapter(command); salesOrderDetailAdapter.Fill(dsSalesOrder, "SalesOrderDetail"); >> > 

    VB.NET

    Imports System.Data.SqlClient Imports Microsoft.Reporting.WinForms Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load 'Set the processing mode for the ReportViewer to Local reportViewer1.ProcessingMode = ProcessingMode.Local Dim localReport As LocalReport localReport = reportViewer1.LocalReport localReport.ReportEmbeddedResource = _ "ReportViewerIntro.Sales Order Detail.rdlc" Dim dataset As New DataSet("Sales Order Detail") Dim salesOrderNumber As String = "SO43661" 'Get the sales order data GetSalesOrderData(salesOrderNumber, dataset) 'Create a report data source for the sales order data Dim dsSalesOrder As New ReportDataSource() dsSalesOrder.Name = "SalesOrder" dsSalesOrder.Value = dataset.Tables("SalesOrder") localReport.DataSources.Add(dsSalesOrder) 'Get the sales order detail data GetSalesOrderDetailData(salesOrderNumber, dataset) 'Create a report data source for the sales 'order detail data Dim dsSalesOrderDetail As New ReportDataSource() dsSalesOrderDetail.Name = "SalesOrderDetail" dsSalesOrderDetail.Value = _ dataset.Tables("SalesOrderDetail") localReport.DataSources.Add(dsSalesOrderDetail) 'Create a report parameter for the sales order number Dim rpSalesOrderNumber As New ReportParameter() rpSalesOrderNumber.Name = "SalesOrderNumber" rpSalesOrderNumber.Values.Add("SO43661") 'Set the report parameters for the report Dim parameters() As ReportParameter = localReport.SetParameters(parameters) 'Refresh the report reportViewer1.RefreshReport() End Sub Private Sub GetSalesOrderData(ByVal salesOrderNumber As String, _ ByRef dsSalesOrder As DataSet) Dim sqlSalesOrder As String = _ "SELECT SOH.SalesOrderNumber, S.Name AS Store, " & _ " SOH.OrderDate, C.FirstName AS SalesFirstName, " & _ " C.LastName AS SalesLastName, E.Title AS " & _ " SalesTitle, SOH.PurchaseOrderNumber, " & _ " SM.Name AS ShipMethod, BA.AddressLine1 " & _ " AS BillAddress1, BA.AddressLine2 AS " & _ " BillAddress2, BA.City AS BillCity, " & _ " BA.PostalCode AS BillPostalCode, BSP.Name " & _ " AS BillStateProvince, BCR.Name AS " & _ " BillCountryRegion, SA.AddressLine1 AS " & _ " ShipAddress1, SA.AddressLine2 AS " & _ " ShipAddress2, SA.City AS ShipCity, " & _ " SA.PostalCode AS ShipPostalCode, SSP.Name " & _ " AS ShipStateProvince, SCR.Name AS " & _ " ShipCountryRegion, CC.Phone AS CustPhone, " & _ " CC.FirstName AS CustFirstName, CC.LastName " & _ " AS CustLastName " & _ "FROM Person.Address SA INNER JOIN " & _ " Person.StateProvince SSP ON " & _ " SA.StateProvinceID = SSP.StateProvinceID " & _ " INNER JOIN Person.CountryRegion SCR ON " & _ " SSP.CountryRegionCode = SCR.CountryRegionCode " & _ " RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " & _ " LEFT OUTER JOIN Person.Contact CC ON " & _ " SOH.ContactID = CC.ContactID LEFT OUTER JOIN" & _ " Person.Address BA INNER JOIN " & _ " Person.StateProvince BSP ON " & _ " BA.StateProvinceID = BSP.StateProvinceID " & _ " INNER JOIN Person.CountryRegion BCR ON " & _ " BSP.CountryRegionCode = " & _ " BCR.CountryRegionCode ON SOH.BillToAddressID " & _ " = BA.AddressID ON SA.AddressID = " & _ " SOH.ShipToAddressID LEFT OUTER JOIN " & _ " Person.Contact C RIGHT OUTER JOIN " & _ " HumanResources.Employee E ON C.ContactID = " & _ " E.ContactID ON SOH.SalesPersonID = " & _ " E.EmployeeID LEFT OUTER JOIN " & _ " Purchasing.ShipMethod SM ON SOH.ShipMethodID " & _ " = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" & _ " S ON SOH.CustomerID = S.CustomerID " & _ "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber)" Using connection As New SqlConnection( _ "Data Source=(local); " & _ "Initial Catalog=AdventureWorks; " & _ "Integrated Security=SSPI") Dim command As New SqlCommand(sqlSalesOrder, connection) Dim parameter As New SqlParameter("SalesOrderNumber", _ salesOrderNumber) command.Parameters.Add(parameter) Dim salesOrderAdapter As New SqlDataAdapter(command) salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder") End Using End Sub Private Sub GetSalesOrderDetailData( _ ByVal salesOrderNumber As String, _ ByRef dsSalesOrder As DataSet) Dim sqlSalesOrderDetail As String = _ "SELECT SOD.SalesOrderDetailID, SOD.OrderQty, " & _ " SOD.UnitPrice, CASE WHEN " & _ " SOD.UnitPriceDiscount IS NULL THEN 0 " & _ " ELSE SOD.UnitPriceDiscount END AS " & _ " UnitPriceDiscount, SOD.LineTotal, " & _ " SOD.CarrierTrackingNumber, " & _ " SOD.SalesOrderID, P.Name, P.ProductNumber " & _ "FROM Sales.SalesOrderDetail SOD INNER JOIN " & _ " Production.Product P ON SOD.ProductID = " & _ " P.ProductID INNER JOIN " & _ " Sales.SalesOrderHeader SOH ON " & _ " SOD.SalesOrderID = SOH.SalesOrderID " & _ "WHERE (SOH.SalesOrderNumber = @SalesOrderNumber) " & _ "ORDER BY SOD.SalesOrderDetailID" Using connection As New SqlConnection( _ "Data Source=(local); " & _ "Initial Catalog=AdventureWorks; " & _ "Integrated Security=SSPI") Dim command As New SqlCommand(sqlSalesOrderDetail, _ connection) Dim parameter As New SqlParameter("SalesOrderNumber", _ salesOrderNumber) command.Parameters.Add(parameter) Dim salesOrderDetailAdapter As New SqlDataAdapter(command) salesOrderDetailAdapter.Fill(dsSalesOrder, _ "SalesOrderDetail") End Using End Sub End Class 

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *