Чтобы проиллюстрировать эту тему, сначала создадим параметризованную хранимую процедуру для работы с таблицей базы данных 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 _ Dim scmCustomersSP As New SqlClient.SqlCommand("spCustomers", _ Dim sdaCustomersSP As New SqlClient.SqlDataAdapter(scmCustomersSP) cbsMain.SetDataSource(dsReport) End Sub |
Рис. 7. Модифицированный OnLoad Event
В этой программе не используется ни один из тех объектов, которые были созданы на этапе разработки, за исключением объекта scnNorthwind. Существенно и то, что в этой программе также не используется экземпляр dsNorthwind строго типизированного набора DataSet в качестве источника данных для отчета. Вместо него я применил объект ADO.NET DataSet без контроля типов и с именем dsReport. Это чрезвычайно важно несмотря на то, что этот отчет разработан для строго типизированного набора DataSet.