Отчет на основе DataSet
До этого примера мы создавали отчеты, которые “вытягивали” данные из таблиц базы данных. В этом же примере мы будем использовать объект DataSet, который работает по принципу “втягивания” в себя данных. Мы создадим строго типизированный DataSet, который послужит источником для отчета.
Для начала добавим в проект страницу cdDS.aspx. добавим в нее объекты SqlDataConnection, SqlDataAdapter для подключения к базе данных NorthWind. Наиболее простой путь для этого – открыть Server Explorer, выбрать таблицу Customers базы NorthWind вашего сервера и перетащить ее на рабочую область вашей страницы. Среда создаст два объекта SqlDataConnection1 и SqlDataAdapter1, которые обеспечивают возможность подключения и выборки из базы данных. Переименуем их в connNorthWind и daNorthWind.
Так же с панели Data на поле формы разместим объект типа ReportDocument и дадим ему имя cbsMain. Впоследствии его будем использовать в качестве источника документа отчета.
Для создания набора данных обратимся к конструктору набора данных ADO.NET. Для этого выберем в Solution Explorer и щелкнем правой клавишей на узле проекта и выберем Add – Add New Item. В поле Categories выберем Data и создадим новый набор DataSet с именем dsNorthWind.xsd. Результат этих действий представлен ниже
Теперь в странице connect_ds.aspx сгенерируем строго типизированный DataSet. Для этого щелкнем на объекте daCustomers и нажмем Generate Datase на панели Properties. В диалоге создания DataSet выберите уже созданный нами crexamples.dsNorthWind.
Переименуйте полученный DataSet в dsMain.
Убедитесь, что адаптер dsCustomers загружает все поля таблицы Customers при помощи функции Preview Data.
Теперь создадим отчет на основе созданного объекта DataSet. Для этого добавим файл отчета cdDS.rpt в наш проект и откроем его в окне редактора. Далее в качестве источника данных укажем созданный нами DataSet. Для этого через функцию Database -> Add/Remove DataBase вызовем DataBase Explorer и укажем в нем в разделе ADO.NET DataSets созданный ранее dsNorthWind. Перенесем таблицу Customers в блок Selected Tables. Теперь в отчете через объект dsNorhtWind будут доступны все поля таблицы Customers.
Далее, как и в предыдущих примерах, при помощи Report Expert задайте поля, отображаемые в отчете. Теперь наш отчет готов к выполнению.
На странице connect_ds.aspx в качестве отклика на событие Load в метод Page_Load введем следующие изменения
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
daCustomers.Fill(dsMain) cbsMain.SetDataSource(dsMain) crDS.ReportSource = cbsMain crDS.DataBind()
End Sub
В этом коде в объект dsMain загружается данные, после чего в объекте cbsMain типа ReportDocument в качестве источника данных указывается DataSet dsMain. Далее объект cbsMain подключается к объекту типа CrystalReportViewer и отображается на форме.