ActiveX DataReport
Имеется еще одна важная операция, выполняемая при создании приложений для работы с базами данных - генерация отчетов. Генерация иерархических отчетов с вычислением итогов (например, отчетов для данных, возвращаемых иерархией объектов Command, созданных в предыдущем параграфе) и их распечатка - одна из основных задач разработчика. Понятно, что хотелось бы работать с утилитой, которая генерирует для нас отчеты только с помощью мыши и позволяет корректно их распечатывать. Второй конструктор ActiveX в Visual Basic 6 — DataReport Designer — предназначен именно для этого. Посмотрим, как конструктор DataReport создает отчет, основанный на иерархии объектов Command. Выполните следующие действия.
1. Сделайте активным проект Report и дважды щелкните на DataReport Designer в окне проводника проекта, чтобы открыть его. На экране появится шаблон отчета, который не соответствует созданной структуре иерархии объектов Command.
2. Откройте окно DataReport, чтобы подключить объект DataReport к объекту Command 1.
3. В окне Properties найдите свойства DataSource и DataMember и установите их в DataEnvironment 1 и Command-1 соответственно.
4. Щелкните правой кнопкой на объекте DataReport 1 и из контекстного меню выберите команду Retrieve Structure.
Структура иерархии объектов Command отобразится на объекте DataReport (рис. 18.11).
Рис. 18.11. Объект DataReport после чтения структуры объектов Commandl
Полученный шаблон содержит отчет и заголовок страницы. Затем следуют заголовки двух групп для объектов Command 1 и Command2. Как видно, деталями отчета являются поля объекта Commands. После секции Detail следуют соответствующие нижние колонтитулы.
Оставьте заголовок отчета (Report header) пустым (позже можно поместить в него любые строки) и выполните следующие действия.
1. Чтобы удалить место, в котором обычно размещается Report header (даже если он пуст), щелкните на серой панели под секцией Report header (панель Page header), чтобы выделить ее.
2. Перемещайте указатель у верхней части панели, пока он не примет форму двойной стрелки.