Позднее я расскажу о дополнительных возможностях разработчика компонентов ServerFileReport, а сейчас нам нужно рассмотреть следующий шаг, который заключается в модифицировании отчета с целью получения данных посредством поставщика DB OLE из ADO.NET DataSet, а не из физической базы данных. Сначала создадим строго типизированный набор DataSet на основе таблицы Customers базы данных Northwind. Для этого используем наиболее простой способ, добавим в проект пустой набор DataSet и присвоим ему имя DataSet dsNorthwind.xsd, открыв диалоговое окно Add New Item (см. рис.4).
Рис.4. Добавление DataSet
Откройте дизайнер компонентов DataSet, дважды щелкнув по соответствующему узлу в Solution Explorer. Перетащите таблицу Customers из Server Explorer на плоскость разработки DataSet и сохраните файл. Затем откройте отчет, щелкните правой кнопкой мыши по его плоскости разработки, чтобы открыть контекстное меню, и выберите Database и Set Location. В диалоговом окне Set Location разверните узлы Project Data, ADO.NET DataSets и узел для вашего набора DataSet, затем выберите таблицу Customers. Наконец, в раскрывающемся списке Current Data Source выберите Customers и щелкните по кнопке Replace. После этого отчет будет обращаться к вашему строго типизированному набору DataSet для получения метаданных и будет запускаться при привязке к экземпляру этого набора. Для продолжения щелкните по кнопке Close.
Теперь, когда я модифицировал отчет для работы с экземпляром dsNorthwind, нужно создать его в моей форме и задать в атрибуте ReportSource объекта CrystalReportViewer. Для этого перетащите таблицу Customers из Server Explorer на плоскость разработки формы, тем самым добавив в нее объекты SQLConnection и SQLDataAdapter, указывающих на базу данных Northwind и на таблицу Customers этой базы данных соответственно. Переименуйте эти объекты в scnNorthwind и sdaCustomers и измените атрибут ConnectionString объекта scnNorthwind, включив в него идентификатор пользователя и пароль. Затем щелкните правой кнопкой мыши по sdaCustomers и выберите Generate Dataset.
В разделе "Choose a dataset" выберите радиокнопку Existing, а в правом от нее раскрывающемся списке имя класса вашего строго типизированного набора DataSet (такой выбор наиболее соответствует настройкам по умолчанию). На рисунке 5 это показано достаточно ясно.