C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 CAccessReports - Класс для печати и просмотра отчётов MS Access / Печать / Visual C++

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