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

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


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

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

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


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

     Кроме копирования файла данных нужно позаботиться и о копировании файла приложения, что опять же связано с особенностями Access. Дело в том, что Access создает приложения, требующие обязательного наличия Access на клиенте или минимального набора его компонентов (Access RunTime) – то есть он не позволяет создавать исполняемых файлов, работающих под управлением операционной системы (например Windows). При компиляции (преобразовании в mde/accde) происходит преобразование VBA-кода не в машинный код, а в так называемый p-код. Р-код близок к машинному, но программа в Р-коде не может быть непосредственно выполнена процессором. Преобразование (трансляция) в двоичный код происходит во время выполнения программы.

     Однако и при запуске не скомпилированного приложения (mdb/accdb) так же происходит создание временного Р-кода, который при закрытии приложения удаляется. Это сделано для отладки приложений. Без временного p-кода невозможно было бы прерывать выполнение приложений, редактировать тексты программ и снова продолжать выполнение. То есть идет как бы «сборка проекта на лету» – и судя по всему это не всегда происходит удачно и не всегда временный код полностью удаляется. Видимо это связано с тем, что если вы начнете прогонять в пошаговом режиме ваши процедуры и править их, то созданный при старте временный Р-код перестанет соответствовать тому, который вы отредактировали. Эта проблема давно известна Microsofr, с ней постоянно борются, но понятно дело, не афишируют результаты. Иногда правда проскальзывает информация, что например Acсess содержит 11 уровней компиляции, что видимо не что иное, как попытка избежать неизбежных граблей при редактировании запушенного на исполнение кода.

     Другая трабла с кодом VBA может возникнуть, если вы скопируете готовый модуль или объект а потом начнете его редактировать. Или например удалили модуль объекта (формы или отчета) и тут же открыли сам объект – Access может глюкнуть и при создании нового пустого модуля присвоить ему какие то свойства только что удаленного, что вызовет конфликты. Правда обычно такие сбои проявляются довольно редко и почти всегда пропадают при повторном открытии проекта (видимо при очередной «сборке на лету» косяки подчищаются).

     То есть имеет место факт, что при активном редактировании объектов они потом могут оказаться поврежденными, о чем говорит сообщение типа: «объект… не найден ядром базы данных» или «нераспознаваемый формат базы данных» (хотя он виден в окне проекта). Бывает и наоборот: объект удалили – а его модуль остался. И вероятность таких сбоев тем выше, чем активнее вы модифицируете свое приложение, чем больше в нем объектов, чем чаще вы правите код во время прогонов своих процедур.

     Подобные проблемы называют «накоплением мусора», под которым подразумевают «обрывки кода», помеченные на удаления записи (в Access при удалении записи она не удаляется сразу же физически, а только помечается на удаление и в дальнейшем происходит запись «поверх помеченной» – только при сжатии все такие записи стираются, то есть сжатие подобно дефрагментации в Windows). Наличие такого мусора может привести к нестабильной работе приложения а то и полному его падению.

     Бороться с этим явлением можно следующими способами:

  • Резервное копирование – самое главное правило. Делайте ежедневные копии файла приложения (про обязательное копирование файла данных говорилось в предыдущей статье). Я например перед каждым серьезным модифицированием какого то объекта всегда делаю копию приложения. У меня всегда есть 10 копий предыдущих рабочих версий, сохраненных ранее перед редактированием проекта – и всегда есть возможность отката, если какой то объект приложения повредится. Его легко можно импортировать из одной из копий.
  • Установить бесперебойники – во многом решит проблему с отключением питания.
  • Желательно, чтобы на всех машинах стоял офис одинаковых версий и с тем же количеством сервис паков. Перенос проекта с одной машины на другую так же может быть чреват накоплением мусора от переопределения ссылок
  • Периодически делать импорт всего в новую базу с последующим сжатием. Особенно это касается проектов, которые активно изменяются (в стадии проектирования, модернизации и т. д.)

     Но что делать, если база или ее объект все таки повредились? Увы, решений не так уж много:

  • Сервис – Служебные программы – Сжать и восстановить базу данных. Помогает только в самых легких случаях.
  • Импорт всего в новую базу. Если при этом «спотыкается» на каком либо модуле, форме, отчете – тогда нужно сначала импортировать все, что получается, а затем, например, через буфер скопировать текст поврежденных модулей.
  • Есть программы (в основном коммерческие), которые во многих случаях восстанавливают базы: Advanced Access Repair, OfficeRecovery, JetComp, AccessFix, EasyRecovery и др. Ссылки и описание можно посмотреть здесь

     Поэтому, чтобы не доводить проблему до фатальной, лучше все таки приучить себя постоянно делать копии проекта и файла данных, и периодически импортировать весь проект в новый с последующим сжатием.

     В следующей статье я расскажу о подготовке объектов приложения к регистрации в системе ARS


Ответы на вопросы
Вопрос 7. Здравствуйте. Отличная система! Из пожеланий: хотелось бы иметь возможность работать с группами пользователей. У меня их больше ста и не очень удобно каждому назначать права. Хотя, может я плохо искал?

Ответ. Спасибо. Мы на ней сами делаем проекты. Точнее, раньше это были просто отдельные компоненты, теперь все сведено до кучи. Группы пользователей просятся таки, так же как и дерево в настройки. Думаем ввести это в новых версиях.

Вопрос 8. Скажите, а есть ли готовые примеры проектов на ARS? Кто то уже чего то пытался сделать? Получилось?
  Ответ. ARS родился не вдруг - постепенно собирались компоненты, отрабатывались решения. Поэтому сказать вот так: такого то числа была создана система ARS - вряд ли будет коректно. Мы создаем проекты на отдельных этих компонентах уже давно, и весьма успешно. Теперь просто свели их до кучи оформив в виде конструктора. Вот например Учет инструмента - он хоть и не создан непосредственно в ARS, но все основные компоненты, которые затем вошли в конструктор, в нем присутствуют.
Вопрос 9. Скажите, а можно будет делать ADP проекты при помощи ARS? Сейчас он только для mdb предназначен?
  Ответ. Это станет возможным в версии Professional, которая будет работать через ADO. С ее помощью можно будет делать ADP-проекты или mdb + ADO. Она готовится.

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

Архив файлов на Microsoft Access
В данном архиве файлов собраны лучшие решения на языке Visual Basic для Microsoft Access. Весь архив удачно разбит на разделы. Необходим для разработчиков, кто начинает или занимается профессиональной разработкой баз данных на Microsoft Access

Проектная документация
До начала разработки базы данных необходимо согласовать следующие документы: договор, предварительное техническое задание и оценить объем и стоимость выполняемых работ (калькуляция). Только после этого можно приступить к работам по созданию базы данных, ее макета или подробного технического задания

В избранное