В дополнение к тому, что я уже сказал здесь , я должен добавить, что вся система работает очень хорошо. Процесс сравнения занимает менее 30 минут в неделю для команды из 3 программистов. Итак, давайте опишем это немного.
У нас есть в основном 2 версии нашей программы доступа:
«Версия разработчика», со всеми вещами в ней.
Каждый из нас начинает работать с идентичной версией нашего издания для разработчиков. Поскольку каждый из них модифицирует или добавляет части кода, мы должны регулярно выполнять некоторые процедуры сравнения. Для этого у нас есть подпрограмма экспорта объекта в общую папку «сравнения». Объект (например, модуль) экспортируется как текстовый файл (команда saveAsText, не работает с таблицами, см. Ниже), он будет сравниваться с существующими эквивалентными текстовыми файлами в папке. Если файлы идентичны, файл не экспортируется. Если файлы отличаются, новый модуль экспортируется с именем разработчика в качестве дополнения к имени файла (если существует modQueries.txt, то создается modQueries_philippe.txt ...). Конечно, если в папке нет эквивалентного файла .txt, он будет создан при первом экспорте.
В конце периода мы получим в нашу папку следующие файлы
- modQueries.txt, являющийся первой «оригинальной», последней распространенной версией модуля
- modQueries_Philippe.txt, с изменениями Филиппа
- modQueries_Denise.txt, с модификациями Дениз
- Поскольку модуль не был изменен другими разработчиками, их экспорт не привел к созданию специального файла modQueries_developersName.txt
- Если по каким-либо причинам Дениз много раз экспортировала свой модуль, в папке сравнения будет только последняя версия.
Затем мы можем сравнить (с помощью «текстового файла») различные версии и создать «обновленную» версию модуля. У нас есть экран, показывающий количество объектов в папке сравнения, номер версии для каждого объекта, и даже можно открыть средство сравнения файлов непосредственно из интерфейса разработчика (мы используем «Инструмент сравнения файлов», который имеет команду режим линии и может быть запущен непосредственно из Access).
Проблема сравнения форм довольно специфична, так как одно из наших правил заключается в том, чтобы в наших формах не было конкретного кода (, пожалуйста, см. Здесь для более подробной информации ) Формы тогда только для отображения, поэтому обычно мы даже не сравниваем их. Мы просто следим за тем, чтобы каждый из них обновлялся только одним человеком (что вполне логично).
Проблема сравнения таблиц (у нас есть локальные таблицы) может возникнуть только между файлами mdb. Поскольку мы экспортируем один текстовый файл на модуль, мы также экспортируем один файл MDB на таблицу. У нас есть небольшая подпрограмма, позволяющая выявлять различия в таблицах на уровне структуры или на уровне записи.
После каждой процедуры сравнения подпрограмма будет использовать все объекты, доступные в папке сравнения, и создаст совершенно новый чистый файл MDB с нуля . Это новая версия разработчика. Каждый разработчик может затем скопировать его на свой компьютер и продолжить работу.
Версии разработчика не имеют номеров, но содержат номер последней версии клиента.
Клиентская версия, с ограниченными возможностями, автоматически распространяемая среди пользователей
Каждый разработчик имеет возможность создать «клиентскую» базу данных для конечных пользователей. Этот mdb создается с нуля, очень похоже на версию нашего разработчика, но не все объекты экспортируются. Некоторые конкретные переключатели отключены (специальные клавиши, доступ к коду и т. Д.). Этот mdb содержит номер версии как свойство. Номер версии используется для построения имени файла mdb.
Во время производства этот файл mdb архивируется и помещается в определенную папку «распространения». Каждый раз, когда пользователь запускает приложение, оно автоматически проверяет эту папку, чтобы увидеть, доступна ли новая версия. Если да, файл mdb клиента обновляется из папки распространения и приложение перезапускается.
Эта папка дистрибутива копируется в ночное время с нашими зарубежными агентствами. Пользователи за рубежом смогут установить новую версию на следующий день.