Я занимаюсь обновлением решения Access. Он имеет большое количество VBA, множество запросов, небольшое количество таблиц и несколько форм для ввода данных и генерации отчетов. Это идеальный кандидат на доступ.
Я хочу внести изменения в дизайн таблицы, VBA, запросы и формы. Как я могу отслеживать свои изменения с помощью контроля версий? (мы используем Subversion, но это подходит для любого варианта) Я могу вставить всю mdb в Subversion, но это будет хранение двоичного файла, и я не смогу сказать, что я только что изменил одну строку кода VBA.
Я думал о том, чтобы скопировать код VBA в отдельные файлы и сохранить их, но я видел, как они быстро не синхронизируются с тем, что находится в базе данных.
ms-access
version-control
Натан Девитт
источник
источник
Ответы:
Мы написали наш собственный скрипт на VBScript, который использует недокументированный Application.SaveAsText () в Access для экспорта всех модулей кода, форм, макросов и отчетов. Вот оно, оно должно дать вам несколько советов. (Осторожно: некоторые сообщения на немецком языке, но вы можете легко это изменить.)
РЕДАКТИРОВАТЬ: резюмировать различные комментарии ниже:
Наш проект предполагает .adp-файл. Чтобы получить эту работу с .mdb / .accdb, вы должны изменить OpenAccessProject () на OpenCurrentDatabase (), (Обновлен для использования,OpenAccessProject()
если он видит расширение .adp, иначе используйтеOpenCurrentDatabase()
.)decompose.vbs:
Если вам нужна интерактивная команда, а не командная строка, создайте файл с именем «degpose.cmd» с
По умолчанию все экспортируемые файлы помещаются в подпапку «Сценарии» вашего Access-приложения. Файл .adp / mdb также копируется в это место (с суффиксом «заглушка») и удаляется из всех экспортируемых модулей, что делает его действительно маленьким.
Вы ДОЛЖНЫ проверить эту заглушку с исходными файлами, потому что большинство настроек доступа и пользовательских строк меню не могут быть экспортированы другим способом. Обязательно внесите изменения только в этот файл, если вы действительно изменили какой-либо параметр или меню.
Примечание. Если в вашем Приложении определен Autoexec-Makros, возможно, вам придется удерживать клавишу Shift при вызове декомпозиции, чтобы предотвратить выполнение и вмешательство в экспорт!
Конечно, есть и обратный скрипт для сборки приложения из «Source» -Directory:
compose.vbs:
Опять же, это идет с компаньоном "compose.cmd", содержащим:
Он попросит вас подтвердить перезапись вашего текущего приложения и сначала создаст резервную копию, если вы это сделаете. Затем он собирает все исходные файлы в Source-Directory и повторно вставляет их в заглушку.
Радоваться, веселиться!
источник
Похоже, что-то вполне доступно в Access:
Эта ссылка из msdn объясняет, как установить надстройку контроля версий для Microsoft Access. Он поставляется бесплатно как часть расширений Access Developer для Access 2007 и как отдельная бесплатная надстройка для Access 2003.
Я рад, что вы задали этот вопрос, и я нашел время, чтобы найти его, так как мне бы тоже понравилась эта возможность. Ссылка выше содержит больше информации об этом и ссылки на надстройки.
Обновить:
я установил надстройку для Access 2003. Она будет работать только с VSS, но она позволяет мне помещать объекты Access (формы, запросы, таблицы, модули и т. Д.) В репозиторий. Когда вы идете редактировать любой предмет в репо, вас просят проверить его, но вам это не нужно. Далее я собираюсь проверить, как он обрабатывает открытие и изменение в системах без надстройки. Я не фанат VSS, но мне действительно нравится мысль о хранении объектов доступа в репозитории.
Обновление 2.
Машины без надстройки не могут вносить какие-либо изменения в структуру базы данных (добавлять поля таблицы, параметры запроса и т. Д.). Сначала я подумал, что это может быть проблемой, если кому-то нужно, поскольку не было никакого очевидного способа удалить базу данных Access из системы контроля версий, если в Access не была загружена надстройка.
Я обнаружил, что при запуске базы данных «Сжатие и восстановление» вам будет предложено удалить базу данных из системы контроля версий. Я выбрал «да» и смог редактировать базу данных без надстройки. В статье по ссылке выше также приведены инструкции по настройке Access 2003 и 2007 для использования Team System. Если вы можете найти поставщика MSSCCI для SVN, есть большая вероятность, что вы сможете заставить его работать.
источник
Решение по компоновке / декомпозиции, опубликованное Оливером, великолепно, но у него есть некоторые проблемы:
Я планировал исправить это сам, но обнаружил, что уже есть хорошее решение: timabell / msaccess-vcs-интеграции на GitHub. Я проверил msaccess-vcs-интеграции, и он отлично работает.
Обновлено 3 марта 2015 года : проект изначально поддерживался / принадлежал bkidwell на Github, но был переведен в timabell - ссылка выше на проект обновлена соответствующим образом. Есть несколько форков из оригинального проекта bkidwell, например , ArminBra и matonb , которые не следует использовать AFAICT.
Недостаток использования msaccess-vcs-интеграции по сравнению с разложенным решением Оливера:
В любом случае, моя четкая рекомендация - msaccess-vcs-интеграции. Это решило все проблемы с использованием Git для экспортированных файлов.
источник
Оливерс отвечает на вопросы, но
CurrentProject
ссылка не работает для меня. Я закончил тем, что вырвал кишки из середины его экспорта и заменил его этим, основываясь на аналогичном решении Арвина Мейера . Имеет преимущество экспорта запросов, если вы используете mdb вместо adp.источник
Мы разработали наш собственный внутренний инструмент, где:
Вся система достаточно умна, чтобы позволить нам создавать «исполняемые» версии нашего приложения Access, автоматически генерируемые из txt-файлов (модули и формы, воссозданные с помощью команды undocument application.loadFromText) и mdb-файлов (таблиц).
Это может звучать странно, но это работает.
источник
Основываясь на идеях этого поста и похожих записях в некоторых блогах, я написал приложение, которое работает с форматами файлов mdb и adp. Он импортирует / экспортирует все объекты базы данных (включая таблицы, ссылки, отношения и свойства базы данных) в текстовые файлы. С этими файлами вы можете работать с любым источником контроля версий. Следующая версия позволит импортировать обратно текстовые файлы в базу данных. Там будет также инструмент командной строки
Вы можете скачать приложение или исходный код с: http://accesssvn.codeplex.com/
С уважением
источник
Воскрешение старого потока, но это хороший. Я реализовал два сценария (compose.vbs / degpose.vbs) для моего собственного проекта и столкнулся с проблемой со старыми файлами .mdb:
Он останавливается, когда попадает в форму, содержащую код:
Access говорит, что у него есть проблема, и это конец истории. Я провел несколько тестов и попытался обойти эту проблему и нашел эту ветку с обходом в конце:
Не могу создать базу данных
В основном (в случае, если поток не работает), вы берете .mdb и делаете «Сохранить как» в новый формат .accdb. Тогда исходный код будет безопасным или составить / разложить материал. Мне также пришлось потратить 10 минут, чтобы получить правильный синтаксис командной строки, чтобы скрипты (de) compose работали правильно, поэтому вот эта информация:
Чтобы создать (скажем, ваши материалы находятся в C: \ SControl (создайте подпапку с именем Source для хранения извлеченных файлов):
Это оно!
Версии Access, в которых я столкнулся с вышеуказанной проблемой, включают базы данных Access. 2000-2003 ".mdb" и исправляют проблему, сохраняя их в форматах ".accdb" 2007-2010 до запуска сценариев составления / разложения. После конвертации скрипты работают просто отлично!
источник
Решение только для текстовых файлов (включая запросы, таблицы и отношения)
Я изменил пару сценариев Оливера, чтобы они экспортировали / импортировали отношения, таблицы и запросы в дополнение к модулям, классам, формам и макросам. Все сохраняется в виде текстовых файлов , поэтому не создается файл базы данных для хранения вместе с текстовыми файлами в системе управления версиями.
Экспорт в текстовые файлы (degpose.vbs)
Вы можете выполнить этот скрипт, позвонив
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Если вы пропустите второй параметр, он создаст папку «Source», в которой находится база данных. Обратите внимание, что папка назначения будет удалена, если она уже существует.Включить данные в экспортируемые таблицы
Заменить строку 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
с линией
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Импорт вфайл Создать базу данных (compose.vbs)Вы можете выполнить этот скрипт, позвонив
cscript compose.vbs <path to file which should be created> <folder with text files>
. Если вы пропустите второй параметр, он заглянет в папку «Source», в которой должна быть создана база данных.Импортировать данные из текстового файла
Заменить строку 14:
const acStructureOnly = 0
сconst acStructureOnly = 1
. Это будет работать, только если вы включили данные в экспортированную таблицу.Вещи, которые не покрыты
Одним из моих других ресурсов при работе над этим сценарием был этот ответ , который помог мне понять, как экспортировать отношения.
источник
Есть недочёт - VSS 6.0 может принимать MDB только с помощью надстройки под определенным количеством объектов, которое включает все локальные таблицы, запросы, модули и формы. Не знаю точного ограничения объекта.
Чтобы создать наше огромное 10-летнее приложение Prod Floor, мы вынуждены объединить 3 или 4 отдельных MDB из SS в одну MDB, что усложняет автоматизированные сборки до такой степени, что мы не тратим время на это.
Я думаю, что я попробую скрипт выше, чтобы выложить этот MDb в SVN и упростить сборки для всех.
источник
Для тех, кто использует Access 2010, SaveAsText не является видимым методом в Intellisense, но, по-видимому, он является допустимым методом, так как упомянутый ранее сценарий Арвина Майера хорошо работал для меня.
Интересно отметить, что SaveAsAXL является новой версией 2010 года и имеет ту же подпись, что и SaveAsText, хотя, похоже, он будет работать только с веб-базами данных, для которых требуется SharePoint Server 2010.
источник
У нас была такая же проблема некоторое время назад.
Нашей первой попыткой был сторонний инструмент, который предлагает прокси-сервер API-интерфейса SourceSafe для Subversion для использования с MS Access и VB 6. Инструмент можно найти здесь .
Поскольку мы не были удовлетворены этим инструментом, мы переключились на Visual SourceSafe и плагин VSS Acces.
источник
Я использую Oasis-Svn http://dev2dev.de/
Я просто могу сказать, что это спасло меня хотя бы один раз. Мой mdb рос больше 2 ГБ, и это сломало его. Я мог бы вернуться к старой версии и импортировать формы и просто потерял день или около того работы.
источник
Я нашел этот инструмент на SourceForge: http://sourceforge.net/projects/avc/
Я не использовал его, но это может быть началом для вас. Могут быть и другие сторонние инструменты, которые интегрируются с VSS или SVN и выполняют то, что вам нужно.
Лично я просто держу простой текстовый файл под рукой, чтобы вести журнал изменений. Когда я фиксирую двоичный MDB, я использую записи в журнале изменений в качестве комментария к коммиту.
источник
Для полноты ...
Всегда есть «Инструменты Visual Studio [YEAR] для системы Microsoft Office» ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ), но для этого требуется VSS. Для меня VSS (авторазрушение) хуже, чем мои 347 точек сохранения на моем сетевом ресурсе с резервным копированием uber.
источник
я использую надстройку Access 2003: контроль исходного кода . Работает нормально. Одной из проблем являются недопустимые символы, такие как «:».
Я вхожу и выхожу. Внутренне надстройка делает то же самое, что и код там, но с большей поддержкой инструментов. Я могу видеть, если объект извлечен и обновить объекты.
источник
Вы также можете подключить свой MS Access к Team Foundation Server. Существует также бесплатный экспресс-вариант для до 5 разработчиков. Работает действительно хорошо!
Редактировать: фиксированная ссылка
источник
Ответ от Оливера прекрасно работает. Ниже приведена расширенная версия, в которой добавлена поддержка запросов Access.
( см. ответ от Оливера для получения дополнительной информации / использования)
decompose.vbs:
compose.vbs:
источник
Я попытался внести свой вклад в его ответ, добавив опцию экспорта запросов в базу данных доступа. (С достаточной помощью от других ответов SO )
Не смогу вернуть это обратно в функцию «сочинения», но это не то, что мне нужно, чтобы сделать это прямо сейчас.
Примечание. Я также добавил «.txt» к каждому из имен экспортируемых файлов в файле degpose.vbs. чтобы система управления исходным кодом немедленно показывала мне различия в файлах.
Надеюсь, это поможет!
источник
Эта запись описывает совершенно другой подход, чем другие записи, и может не соответствовать тому, что вы ищете. Так что я не буду обижаться, если вы проигнорируете это. Но, по крайней мере, это пища для размышлений.
В некоторых профессиональных коммерческих средах разработки программного обеспечения управление конфигурацией (CM) результатов поставки программного обеспечения обычно не выполняется в пределах самом программном приложении или самом программном проекте. CM накладывается на конечный продукт, который поставляется, сохраняя программное обеспечение в специальной папке CM, где и файл, и его папка помечены идентификацией версии. Например, Clearcase позволяет менеджеру данных «регистрировать» файл программного обеспечения, назначать ему «ветвь», назначать ему «пузырь» и применять «метки». Если вы хотите просмотреть и загрузить файл, вам необходимо настроить свою «конфигурационную спецификацию» так, чтобы она указывала на нужную версию, затем перейдите в папку cd и там она есть.
Просто идея.
источник
Для тех, кто застрял в Access 97, я не смог заставить другие ответы работать. Используя комбинацию превосходных ответов Оливера и ДэйвПарилло и внеся некоторые изменения, я смог заставить сценарии работать с нашими базами данных Access 97. Это также немного более удобно для пользователя, поскольку спрашивает, в какую папку помещать файлы.
AccessExport.vbs:
А для импорта файлов в базу данных, если вам нужно восстановить базу данных с нуля или по каким-то причинам вы хотите изменить файлы за пределами Access.
AccessImport.vbs:
источник