Теперь можно рассмотреть, как используется технология XML Web Services в Crystal Reports for Visual Studio .NET. Значительным достижением в этой области является удачная разработка достаточно сложных функций с легко реализуемыми преимуществами; например, отчеты могут публиковаться как Web-службы и использоваться в качестве ReportSource для элемента управления CrystalReportViewer.
Чтобы создать Web-службу для XML-отчетов из файла CustomersBasic.rpt, откройте Visual Studio .NET и создайте новый проект ASP.NET Web Service под именем MSDNCrystalWebService. Удалите файл Service1.asmx, который добавляется к проекту по умолчанию, и вместо него добавьте CustomersBasic.rpt. Затем щелкните правой кнопкой мыши по CustomersBasic.rpt в Solution Explorer и выберите в контекстном меню пункт Publish as Web Service (см. Рисунок 10).
Рис. 10.
В результате в проект будет добавлен файл Web-службы, CustomersBasicService.asmx. Теперь будем компоновать проект. Вернитесь в приложение Windows Forms и установите для cvwMain.ReportSource URL-адрес Report Web Service согласно следующей строке текста программы:
cvwMain.ReportSource = "http://localhost/MSDNCrystalWebService/" _
& "CustomersBasicService.asmx"
В качестве альтернативы вы можете добавить веб-ссылку для этого asmx-файла в проекте и затем указать cvwMain.ReportSource в экземпляре класса Web Service.
cvwMain.ReportSource = New localhost.stomersBasicService()
Можно ли создать интерфейс XML Web Services в Crystal Reports так же легко, как и Web-службу? Внимательно изучите программу файла класса, который расположен с небольшим отступом под файлом CustomersBasic.rpt (чтобы увидеть файл, щелкните по кнопке Show All Files в Solution Explorer). В программе этого файла содержатся два класса: CustomersBasic и CachedCustomersBasic.
CustomersBasic является первичным классом, который необходим для реализации строго типизированного отчета; если вы посмотрите на процедуры атрибутов этого отчета, то увидите его со всеми разделами, которые наследуются из ReportClass и охватывают элементы коллекции ReportDefinition.Sections.