Шаг 51 - Элемент ActiveX Crystal Report Control - Основные свойства и методы

Страница свойств позволяет установить параметры только в design time. Если свойствами контрола надо управлять динамически, надо писать код. Давайте посмотрим основные шаги, необходимые для вывода отчета.

1. Указываем имя отчета

CrystalReport1.ReportFileName = App.Path + "\rptcm.rpt"

В свойстве ReportFileName указывается полный путь выбранного файла отчета.

2. Указываем таблицы, используемые в отчете. Crystal Reports хранит имена таблиц в виде массива. При использовании таблиц dbf каждая таблица – это отдельный файл.

CrystalReport1.DataFiles(0)=C:\work\seles1.dbf
CrystalReport1.DataFiles(1)=C:\work\seles2.dbf

В базах данных Access и базах данных SQL таблицы не ассоциированы с файлами. Поэтому, например для базы данных Access необходимо для всех таблиц установить один и тот же файл:

CrystalReport1.DataFiles(0)=C:\work\paper.mdb
CrystalReport1.DataFiles(1)=C:\work\paper.mdb

Если таблицы размещены в нескольких mdb – файлах, важно соблюдать порядок таблиц в массиве. Если Crystal Reports не обнаружит в указанном файле требуемой таблицы, будет сгенерирована ошибка. База данных Access может быть закрыта паролем. В этом случае при выводе отчета появится окно-приглашение на его ввод. Пароль можно ввести и непосредственно в коде:

CrystalReport1.Password=”Fr442Gub”

При использовании баз данных SQL порядок подключения несколько другой:

- подключаемся к БД

CrystalReport1.Connect=[строка подключения]

- передаем базе данных запрос

CrystalReport1.SQLQuery=[строка SQL]

Если запрос базируется на хранимой процедуре, и ей требуется передать параметр, это делается так:

CrystalReport1.StoredProcParam(индекс_параметра)=”значение”

Значения всегда передаются в хранимую процедуру в виде строки, даже если для параметра ожидается другой тип. Заботу о приведении типа параметра берет на себя процессор Crystal Reports.

Crystal Reports поддерживает только хранимые процедуры выборки (основанные на ключевом слове SELECT), инструменты для работы с процедурами действия отсутствуют.

Кроме непосредственного подключения к БД Crystal Report Control в качестве источника данных может использовать связанные с данными контролы Data и ADOData.

CrystalReport1.DataSourse=Data1

3. Если в отчете имеются параметрические поля, передаем им значения параметров

Параметрические поля также хранятся в виде массива с нумерацией элементов от нуля. Crystal Report Control позволяет передавать в параметрические поля только одно значение. Множественный выбор и диапазоны значений здесь не поддерживаются

CrystalReport1.ParameterField(индекс)=Имя параметра;Новое значение;Установить текущее значение

Установка свойства осуществляется тремя операторами, разделенными точкой с запятой. Интерес представляет оператор Установить текущее значение . Он может принимать значение TRUE или FALSE. Если он установлен в TRUE, будет использоваться новое значение параметра, если FALSE – значение по умолчанию (зачем тогда вообще нужен параметр).

Если какой-то параметр не указан, будет выведено стандартное приглашение к его вводу.

4. Обновляем данные в отчете

CrystalReport1.RetrieveDataFiles

Эта команда заставляет Crystal Report прочитать данные и заново сформировать отчет (пока только в памяти компьютера)

5. Указываем, куда следует вывести готовый отчет

CrystalReport1.Destination = crptToWindow

Эта команда выводит отчет в окно предварительного просмотра.

Возможные значения направления вывода:

- crptExchange
- crptMapi
- crptToFile
- crptToPrinter
- crptToWindow

Смысл направлений вывода ясен из их названия. Дальнейшие наши действия зависят от выбранного направления вывода отчета.

Заканчивается вывод отчета (независимо от направления) одной из команд

CrystalReport1.Action = 1

либо

ret=CrystalReport1.PrintReport  

здесь ret – переменная числового типа

Метод PrintReport в случае неудачи возвращает код ошибки (20ХХХ), или 0 в случае успеха. Установка значения 1 для свойства Action также приводит к немедленному выводу отчета. Здесь, однако, отсутствует возможность перехвата ошибок.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Юрий Гвоздев - 26.02.2003