Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Microsoft Access - программирование и готовые решения


Выпуск 25. Access Rapid Start - конструктор приложений в Access

Подписка: "Access 2003/2010 - программирование и готовые решения"
Дата: 22.10.2012
Автор: Парусников Алексей
Сайт: http://www.accessoft.ru под редакцией с http://www.leadersoft.ru
Загрузка: ARS 2007 ARS 2010
Получить ключ: Key_ARS

В данном цикле статей рассказывается о работе с конструктором приложений Access - Access Rapid Start. Дополнительные вопросы по этой теме Вы можете задать на форуме. Вы так же можете заказать персональную консультацию или перенос вашего проекта в ARS, связаться с автором для решения вопросов о создании программы на базе ARS - в последнем случае вы кроме готового продукта получите возможность самостоятельно его развивать.


    Данная статья ориентирована на начинающих разработчиков Access, желающих более углубленно изучить возможности программирования в Access и сделать свои приложения более профессиональными.
Совместимость версий проектов Access

Иногда возникают ситуации, когда стабильно работающий проект не хочет запускаться на другой машине, где установлена та же версия Office, выдавая сообщение:

Class does not support Automation or does not support expected interface

Причина – в разных версиях библиотек офисов на машине, где был скомпилирован проект и на той, где он запускается.

Microsoft периодически выпускает обновления для своих продуктов, так называемые SP («сервис-паки») предназначенные в основном для исправления найденных багов и уязвимостей в защите. Подразумевается, что такие обновления не должны влиять на совместимость версий с обновлением и без, но иногда все же случается, что влияют. Очередной конфуз случился в начале 2011 года, когда вышел SP1 для Windows 7. В нем были изменены GUID библиотек ADO, в итоге проекты, скомпилированные на Win XP перестали запускаться на Win 7, выдавая сообщение, приведенное в начале статьи. Спохватившись, Microsoft предложило в качестве временного решения проблемы использовать специальную библиотеку ADO msado60_Backcompat_i386.tlb, которую необходимо было регистрировать в своих проектах вместо привычноq ADO 2.5/6. И лишь через год было наконец выпущено обновление, устранившее проблему. Изменения коснулись всех библиотек DAO, ADO и некоторых OCX.

Стало быть, чтобы у клиента запускалось ваше приложение Access, необходимо убедиться, что у него установлены все самые свежие обновления. Например, для MS Office это (в зависимости от установленной у вас версии):

2007: http://www.microsoft.com/ru-ru/download/details.aspx?id=5

2010: http://www.microsoft.com/ru-ru/download/details.aspx?id=30622
http://www.microsoft.com/ru-ru/download/details.aspx?id=26617

Но можно пойти другим, более сложным путем – использовать позднее связывание (вместо указание ссылок в Tools – References). Принцип «избавления» от офисных ссылок простой: вместо имени параметра объекта указываете его код , а сам объект объявляете как Object. Например, в случае с Excel объявляем объектные переменные так:

Dim xlApp As Object 'Excel.Application
Dim xlBook As Object 'Excel.Workbook
Dim xlSheet As Object 'Excel.Worksheet

 Инициализируем так:

Set xlApp = CreateObject("Excel.Application")

А вместо имени свойств пишем так:

xlApp.Selection.SpecialCells(11).Select 'xlCellTypeLastCell = 11

Посмотреть код свойства можно в окне Immediate (вызывается Ctrl + G). В данном случае, при включенной ссылке на библиотеку Excel пишем:

?xlCellTypeLastCell

Жмем Enter и смотрим код, который и подставляем. Заменив кодами все обращения к свойствам объекта Excel можем отключить ссылку. В результате, при выполнении кода, будет подхвачена самая свежая версия библиотеки, что избавит от проблемы совместимости разных версий (коды свойств объектов не изменяются – это константы).
Аналогичным образом можно «отключить» ссылки на Word. Так же можно было поступить и с ADO:

Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")

Но в случае с ADO есть пара недостатков, которые надо учитывать

  • Программный код с ADO используется довольно часто и составлять команды, постоянно подсматривая в справочник какой код параметра чему соответствует, будет очень не удобно
  • Позднее связывание не позволит использовать ARS - модуль логирования действий пользователей, основанный (для SQL проектов) на свойстве ADO-рекордсета, позволяющем получать информацию об изменениях записи
От leadersoft.ru
Можно в проектах использовать пре-компилятор #IF LINK_DLL=1 #ELSE ... где можно прописать 2 варианта обработки программы со сcылкой на конкретную DLL библиотеку и на вариант CreateObject, таким образом когда надо создать проект без ссылок пишем LINK_DLL=0 и получаем готовое решение для программы, которая не зависит от версии DLL

Полезные ссылки

Интернет магазин от Leadersoft.ru
В этом магазине Вы можете купить не только готовое программное обеспечение для бизнеса, а также найти компактные решения для самостоятельного проектирования на Microsoft Access, SQL Server или ASP.NET

В избранное