Этот класс (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 указанной базы. Если нет необходимости в получении списка отчётов, то данное ограничение не нужно принимать во внимание.
|