|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
16.2 Интеграция отчетов Crystal Reports средствами Report Designer ComponentВстраивание отчетов Crystal Reports 11.5 в приложения средствами Report Designer Component и Crystal ActiveX Report Viewer, добавление ссылок в проект, программное назначение значений параметрам в отчете, настройка внешнего вида отчета на форме Часто возникают ситуации, когда воспользоваться самым простым способом интеграции отчетов в приложения — при помощи Designer — не получается. Проблемы могут быть следующими:
В этой ситуации придется работать с отчетом Crystal Reports программным способом. Первое, что необходимо сделать — добавить ссылки на необходимые программные компоненты. Их две:
Затем можно приступать к работе с объектами. Первый объект, который находится на вершине иерархии объектной модели Crystal Reports — объект Application. Обычно он нужен только для одной цели: открытия отчета из файла на диске. Предположим, что ссылка на craxdrt.dll у нас добавлена, а на форму помещен элемент управления Crystal Report Viewer с именем по умолчанию CrystalActiveXReportViewer1. Тогда применение объекта Application может выглядеть так: Private Sub Form_Load() Dim crapp As New CRAXDRT.Application Dim CrReport As New CRAXDRT.Report Set CrReport = crapp.OpenReport("C:\Reports\Lab3-1.rpt") CrystalActiveXReportViewer1.ReportSource = CrReport CrystalActiveXReportViewer1.ViewReport End Sub Конечно же, мы можем и сформировать объект отчета "с нуля" при помощи кода программы, но это — намного более трудоемкий способ. Дальше в нашем распоряжении — две ветви. Первая ветвь идет через объект Report и к секциям, полям и другим элементам нашего отчета. Вся работа при этом происходит через стандартные коллекции. Например, чтобы открыть отчет, присвоить параметру "Country" значение "USA", можно использовать следующий код: Dim crapp As New CRAXDRT.Application Dim CrReport As CRAXDRT.Report Set CrReport = crapp.OpenReport("C:\Reports\Lab3-1.rpt ") Dim oPFD As CRAXDRT.ParameterFieldDefinition For Each oPFD In CrReport.ParameterFields If oPFD.Name = "{?Country}" Then Exit For Next oPFD.SetCurrentValue "USA" Вторая ветвь — это объект Crystal Report Viewer, который можно использовать для настройки параметров отображения отчета. У него множество предопределенных свойств и методов. Полный вариант нашего кода может выглядеть, например, так: Private Sub UserForm_Initialize() CRActiveXReportViewer1.Visible = False End Sub Private Sub CommandButton1_Click() Dim crapp As New CRAXDRT.Application Dim CrReport As CRAXDRT.Report Set CrReport = crapp.OpenReport("D:\Report1.rpt") Dim oPFD As CRAXDRT.ParameterFieldDefinition For Each oPFD In CrReport.ParameterFields If oPFD.Name = "{?Country}" Then Exit For Next oPFD.SetCurrentValue "USA" CRActiveXReportViewer1.ReportSource = CrReport CRActiveXReportViewer1.Width = 400 CRActiveXReportViewer1.Height = 300 CRActiveXReportViewer1.ViewReport CRActiveXReportViewer1.Visible = True End Sub Для того, чтобы для показа отчета на другом компьютере появились необходимые модули DLL, необходимо создать дистрибутив приложения с отчетом Crystal Reports и включить него модули из каталога C:\Program Files\Common Files\Merge Modules\ (только для нужной версии вашего компьютера - X86 для 32-разрядных систем и X64 для 64-разрядных). Если Crystal Reports уже установлены в системе, то все необходимые модули есть гарантированно.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||