Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как можно открыть отчёт (в режиме Print Preview а также Print Direct) в MS Access

Delphi , Базы данных , Access

Как можно открыть отчёт (в режиме Print Preview а также Print Direct) в MS Access



От: Святой Петр
Кому: Всем на Земле
Дата Октябрь, 1999 от рождества Христова
Тема: Не помирать!
Для ускорения регистрационного процесса у врат Рая, мы стали использовать Microsoft Access, после чего у нас начались серьeзные проблемы. А посему, пожалуйста, не помирайте пока!


var
  Access: Variant;
begin
  // Открываем Access
  try
    Access := GetActiveOleObject('Access.Application');
  except
    Access := CreateOleObject('Access.Application');
  end;
  Access.Visible := True;

  // Открываем базу данных
  // Второй параметр указывает - будет ли база открыта в Exclusive режиме
  Access.OpenCurrentDatabase('C:\My Documents\Books.mdb', True);

  // открываем отч¸т
  {Значение второго пораметра может быть одним из следующих
  acViewDesign, acViewNormal, or acViewPreview. acViewNormal,
  которые устанавливаются по умолчанию, для печати отч¸та.
  Если Вы не используете библиотеку типов, то можете определить
  эти значения следующими:

  const
  acViewNormal = $00000000;
  acViewDesign = $00000001;
  acViewPreview = $00000002;

  Третий параметр - это имя очереди для текущей базы данных.
  Четв¸ртый параметр - это строка для SQL-евского WHERE -
  то есть строка SQL, минус WHERE.}

  Access.DoCmd.OpenReport('Titles by Author', acViewPreview, EmptyParam,
    EmptyParam);

  < ... >

  // Закрываем базу данных
  Access.CloseCurrentDatabase;

  // Закрываем Access
  {const
  acQuitPrompt = $00000000;
  acQuitSaveAll = $00000001;
  acQuitSaveNone = $00000002;}
  Access.Quit(acQuitSaveAll);
end;

Перевод контента на русский язык:

Код, который я предоставил, написан на Delphi и используется для открытия отчета в Microsoft Access с помощью метода DoCmd.OpenReport. Вот шаг за шагом, как он работает:

  1. Сначала код пытается получить активную инстанцию Access с помощью метода GetActiveOleObject, а если это не удается, то создает новую инстанцию с помощью метода CreateOleObject.
  2. Затем код устанавливает видимость приложения Access в True, что делает его видимым на экране.
  3. Код открывает файл базы данных, расположенный по адресу C:\My Documents\Books.mdb, в исключительном режиме (то есть другой пользователь не может открыть базу данных, пока она не будет открыта этим кодом).
  4. Затем код открывает отчет с именем "Titles by Author" в режиме просмотра с помощью метода DoCmd.OpenReport.
  5. Первый параметр метода OpenReport - имя отчета, второй параметр - режим просмотра (в этом случае acViewPreview для просмотра на печать), третий и четвертый параметры - пустые строки (EmptyParam), которые могут использоваться для указания дополнительных опций или WHERE-условия SQL.

Код также закрывает файл базы данных и выходит из Access после выполнения отчета.

Также стоит отметить, что для открытия отчета в режиме прямой печати нужно использовать acViewNormal вместо acViewPreview, как показано ниже:

Access.DoCmd.OpenReport('Titles by Author', acViewNormal, EmptyParam, EmptyParam);

Это откроет отчет напрямую для печати без просмотра в режиме просмотра.

Надо отметить, что этот код довольно старый (от октября 1999 года) и может не работать так, как ожидалось, с современными версиями Access. Кроме того, использование поздней привязки (Variant) может привести к ошибкам времени выполнения, если объект не был должным образом инициализирован или не поддерживает ожидаемые свойства или методы. Рекомендуется использовать раннюю привязку (TAccessApplication интерфейс) для лучшей совместимости и обработки ошибок.

Вот обновленная версия кода, которая использует раннюю привязку:

uses Access;

procedure OpenReport;
var
  AccessApp: TAccessApplication;
begin
   // Получение активной инстанции Access
  try
    AccessApp := AccessApp.Active;
  except
     // Создание новой инстанции, если она не активна
    AccessApp := CreateOleObject(TAccessApplication) as TAccessApplication;
  end;

  AccessApp.Visible := True;

   // Открытие файла базы данных
  AccessApp.OpenCurrentDatabase('C:\My Documents\Books.mdb', True);

   // Открытие отчета в режиме просмотра на печать
  AccessApp.DoCmd.OpenReport('Titles by Author', acViewPreview, '', '');

   // Закрытие файла базы данных и выход из Access
  AccessApp.CloseCurrentDatabase;
  AccessApp.Quit(0);
end;

В этом коде используется интерфейс TAccessApplication для взаимодействия с Access, что обеспечивает лучшую типизацию и обработку ошибок. Метод OpenReport также вызывается с более явными параметрами, чтобы избежать любых потенциальных проблем.

Открывать отчёт в MS Access можно с помощью команды DoCmd.OpenReport, указав имя отчёта и режим отображения (например, acViewPreview для просмотра отчёта в режиме Print Preview).


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Access ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 18:01:00/0.0066680908203125/1