Добавление отчетов профессионального качества в приложение пользователя в Visual Studio (2)



             

Создание отчетов из хранимых процедур


Чтобы проиллюстрировать эту тему, сначала создадим параметризованную хранимую процедуру для работы с таблицей базы данных Customers, имеющей имя spCustomers. Эта хранимая процедура забирает параметр строки, который должен использоваться в операторе WHERE для ограничения количества возвращаемых записей. После этого в тексте программы я построю объект набора данных DataSet для этой процедуры и свяжу отчет с этим набором данных. Вот текст хранимой процедуры.

CREATE PROCEDURE dbo.spCustomers
(
@CustPattern nVarChar(40)
)
AS
select * from Customers Where CompanyName Like @CustPattern + '%'
RETURN

Вы можете создать хранимую процедуру любым удобным способом; например, с помощью Visual Studio .NET, как это показано на рисунке 6.

Рис. 6. Создание хранимой процедуры с помощью Visual Studio .NET

Чтобы создать отчет из хранимой процедуры (присвоив параметру @CustPattern произвольное значение "A"), я изменил текст события формы Load (см. пример на рисунке 7).

Private Sub frmViewReport_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles MyBase.Load

Dim scmCustomersSP As New SqlClient.SqlCommand("spCustomers", _
scnNorthwind)
scmCustomersSP.CommandType = CommandType.StoredProcedure
scmCustomersSP.Parameters.Add("@CustPattern", "A")

Dim sdaCustomersSP As New SqlClient.SqlDataAdapter(scmCustomersSP)
Dim dsReport As New DataSet()
sdaCustomersSP.Fill(dsReport, "Customers")

cbsMain.SetDataSource(dsReport)
cvwMain.ReportSource = cbsMain

End Sub

Рис. 7. Модифицированный OnLoad Event

В этой программе не используется ни один из тех объектов, которые были созданы на этапе разработки, за исключением объекта scnNorthwind. Существенно и то, что в этой программе также не используется экземпляр dsNorthwind строго типизированного набора DataSet в качестве источника данных для отчета. Вместо него я применил объект ADO.NET DataSet без контроля типов и с именем dsReport. Это чрезвычайно важно несмотря на то, что этот отчет разработан для строго типизированного набора DataSet.


Содержание  Назад  Вперед