CAccessReports - Класс для печати
и просмотра отчётов MS Access
Автор: Tom Archer.
Компилятор: Visual C++ 6.
Этот класс (CAccessReports ) был создан для тех, у
кого есть потребность в использовании 1) движка
базы данных MS Access и 2) движка MS Access из под Visual C++
приложений. Класс CAccessReports использует
объекты Access Automation для открытия специфической
базы, запуска отчёта (в пределах Access), печати
отчёта и сохранения базы Access в HTML формате, чтобы
её можно было просматривать в приложении Visual C++.
Инициализация объекта CAccessReports
Как инициализировать объект CAccessReports ,
зависит от того, как Вы планируете использовать
его в Вашем приложении. Первый аргумент CAccessReports
- это полное имя файла базы данных. Второй
аргумент указывает - хотите ли вы, чтобы класс CAccessReports
предварительно подгружал все имена отчётов. В
примере подразумевается, что Вам нужны все имена
отчётов, и приложение отобразит весь список
отчётов. Иначе, если Вам понадобятся для запуска,
печати или отображения определённые, то второй
аргумент надо поставить в FALSE .
// Объект CAccessReports загружает все имена отчётов
CAccessReports accessReports(YOUR_ACCESS_DATABASE, TRUE);
// Простое присоединение к указанной базе Access
CAccessReports accessReports(YOUR_ACCESS_DATABASE, FALSE);
Получение списка отчётов из базы данных Access
Если Вы указываете в качестве второго
аргумента TRUE в конструкторе CAcessReport ,
то Вам необходимо получить список отчётов для
данной базы данных Access. Вот пример простого цикла
для получения и отображения всех имён отчётов.
CAccessReports accessReports(YOUR_ACCESS_DATABASE, TRUE);
for (int i = 0; i < accessReports.m_reports.GetSize(); i++)
{
AfxMessageBox(accessReports.m_reports[i]);
}
Запуск отчёта
Для этого используется функция-член RunReport .
CAccessReports accessReports(YOUR_ACCESS_DATABASE, FALSE);
accessReports.RunReport(YOUR_REPORT_NAME);
Печать отчёта
Функция PrintReport содержит только один аргумент -
имя отчёта. Эта функция вызывает RunReport и затем
использует Automation для печати отчёта.
CAccessReports accessReports(YOUR_ACCESS_DATABASE, FALSE);
accessReports.PrintReport(YOUR_REPORT_NAME);
Отображение отчёта (Visual C++ 6.0)
Access Automation не даёт возможности выводить отчёт
данное окно. Однако она позволяет запустить, а
затем сохранить отчёт в HTML формате. В
нижеприведённом примере, CAccessReportView
наследуется от класса CHtmlView .
void CAccessReportView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
CAccessReports accessReports(YOUR_ACCESS_DATABASE, FALSE);
accessReports.SaveAsHtml(YOUR_REPORT_NAME, DESTINATION_FOLDER);
Navigate2(FULLY_QUALIFIED_FILE_NAME, NULL, NULL);
}
Замечание
- 1. Access Automation не может использоваться для
получения всего списка отчётов для базы данных
Access. Следовательно, если Вы указываете во втором
аргументе
TRUE конструктора CAccessReports
, то класс пытается использовать классы MFC DAO для
доступа к таблице msysobjects указанной базы
данных. Чтобы разрешить это, Вы должны дать
пользователю Admin права "чтения" таблицы
msysobjects указанной базы. Если нет необходимости в
получении списка отчётов, то данное ограничение
не нужно принимать во внимание.
Скачать исходник - 38 KB
Скачать демонстрационный
проект - 60 KB
|