Об’єкт cation і запуск access з зовнішнього застосування

Об'єкт Access.Application, запуск Access з зовнішнього застосування, властивості і методи об'єкта Access.Application

Об'єктна модель Access за своєю архітектурою сильно відрізняється від об'єктних моделей Word і Excel. Можливо, це пояснюється тим, що Access - не "рідний", як Word і Excel, а набутий продукт третьої фірми.

Один з небагатьох моментів, в якому програмування в Access схоже на програмування в Word і Excel - це наявність об'єкта Application, який знаходиться на вершині ієрархії об'єктної моделі Access. Він точно так само може використовуватися для програмного запуску Access з інших додатків, і його властивості та методи доступні з будь-якої частини коду. Запуск Access з іншої програми може виглядати так:

Dim appAccess As Object

Set appAccess = CreateObject ( "Access.Application")

Якщо не поставити властивість Visible в True, то за замовчуванням Access відкриється в невидимому вікні (побачити його можна буде тільки в списку процесів в Task Manager). Якщо запустити такий код з процедури Word або Excel, то за замовчуванням по завершенні роботи цієї процедури об'єкт буде видалений з оперативної пам'яті (тому тут і поставлено вікно повідомлення, щоб цей процес затримати).

Можна програмно запускати Access ще безліччю різних способів - через об'єктну модель Windows Explorer, через командний інтерпретатор операційної системи (в цьому випадку можна використовувати цікаві параметри командного рядка Access - см. Доп. Матеріали на компакт-диску), через текстовий ярлик * .mad, через API і т.п.

На практиці програмним чином запускати Access доводиться досить рідко - оскільки зазвичай найзручніше оболонку додатки, що запускає Word, Excel і т.п. робити саме в Access. Відкривати Access для доступу до даних бази даних у файлі MDB не рекомендується - для цієї мети краще використовувати об'єкти ADO, більш прості і зручні і менш ресурсомісткі.

Тепер - про властивості і методи об'єкта Application. Як можна переконатися, їх набір в Access мало схожий на відповідний набір в Word і Excel. Спочатку - про найбільш важливі властивості:

  • AutomationSecurity - дозволяє визначити рівень безпеки при відкритті бази даних. За замовчуванням використовується значення msoAutomationSecurityByUI - використовувати те, що налаштований на графічному екрані через меню Макрос -> Безпека. Можна взагалі заборонити відкриття файлів баз даних з макросами (msoAutomationSecurityForceDisable), але частіше використовується значення msoAutomationSecurityLow, яке дозволяє відкрити файл даних без зайвих питань;
  • BrokenReference - можливість перевірити, чи є розірвані посилання (коли ваш додаток не може знайти модуль dll або іншу базу даних). Наявність конкретної посилання можна перевірити за допомогою об'єкта Reference;
  • CodeContextObject - дуже корисна властивість, яке дозволяє визначити, з якого об'єкта бази даних (форми, звіту і т.п.) був запущений модуль / макрос. Це властивість можна, наприклад, використовувати для виявлення джерела помилок;
  • CodeData - ще один дуже важливий властивість. Воно дозволяє отримати доступ до колекцій AllDatabaseDiagrams, AllFunctions, AllQueries, AllStoredProcedures, AllTables і AllViews. Правда, в цих колекціях знаходяться одні і ті ж об'єкти AccessObject. Можливостей у них на перший погляд не так багато, але насправді за допомогою цього об'єкта ми отримуємо можливість налаштовувати десятки властивостей для таблиць, запитів, діаграм і інших об'єктів бази даних Excel. Приклад застосування властивості CodeData для отримання інформації про всі таблицях в базі даних може виглядати так:

For Each oTable In CodeData.AllTables

Application.DoCmd.RunSQL "Delete from table1"

Методів у об'єкта Application також дуже багато (плюс частина методів досить штучно перенесена в об'єкт DoCmd). Нижче представлені найважливіші з них:

поверне те, що повертає ця функція. Eval () дуже зручно використовувати, щоб уникнути громіздких перевірок і перетворень типів, наприклад, коли ми приймаємо різні значення, що вводяться користувачем.

  • методи ExportXML () і ImportXML () дозволяють експортувати і імпортувати набори таблиць з даними (включаючи інформацію про ключах, індексах, кодуваннях і т.п.) в XML-сумісний текстовий файл. При цьому експорт і імпорт з Access за допомогою цих методів можна проводити не тільки для баз даних Access, а й баз даних SQL Server починаючи з версії 6.5.
  • методи GetOptions () і SetOptions () дозволяють отримати інформацію / встановити ті десятки налаштувань, які доступні через меню Сервіс -> Параметри. Наприклад, щоб після натиснення клавіші в таблиці проводився перехід не вправо (за замовчуванням), а вниз, можна використовувати код

Application.SetOption "Move After Enter", 2

  • hWndAccessApp () - дуже потрібний метод для тих, хто працює з Windows API. дозволяє повернути покажчик на вікно Access.
  • метод NewCurrentDatabase () дозволяє створити і відразу відкрити нову базу даних Access. Для відкриття існуючої бази даних можна використовувати метод OpenCurrentDatabase ().
  • Nz () - виключно зручна функція для практичної роботи. Дозволяє повертати порожній рядок або інше значення, якщо значення в даному стовпці таблиці не визначене (Null). Досвідчені розробники дуже часто використовують цю функцію, щоб уникнути помилок при зверненні до порожніх значень (будь-яким, включаючи Memo), наприклад, при пошуку по таблиці.
  • Quit () - зрозуміло. Може нічого не зберігати, зберігати всі або питати у користувача.
  • RefreshDatabaseWindow () - можливість оновити вікно бази даних. Зазвичай застосовується після програмного створення форм, звітів і т.п.
  • метод Run () дозволяє викликати процедуру або функцію VBA з коду і передати їй до 30 параметрів. Може використовуватися для виклику призначених для користувача або вбудованих функцій, але, оскільки їх можна викликати і стандартними способами. найчастіше використовується при виклику процедури Access із зовнішнього скомпільованій, наприклад, DLL або EXE.
  • RunCommand () - можливість виконати одну з десятків вбудованих команд Access (практично всі, що є в панелях управління та вбудованих меню). Наприклад, щоб максимізувати вікно Access, можна скористатися командою
  • SysCmd () - можливість виконати безліч службових операцій: отримати інформацію про домашньому каталозі, про версії Access, про стан зазначеного вами об'єкта бази даних, запустити градусник в рядку стану і т.п.