как экспортировать макросы данных Access 2010

Мне нужно перенести макросы данных доступа из моей тестовой БД в мою производственную БД. Кто-нибудь знает, как это сделать?

Я знаю, что передача таблиц из одного accdb в другой также будет передавать макросы данных, но это не вариант в моем случае. Я также знаю, что могу воссоздать их вручную в производственной accdb, но это оставляет меня открытым для ошибок и требует удаления производственной базы данных в течение более длительного времени, чем сценарий передачи по сценарию.

Если Я нужно было сделать это только один раз, это не было бы такой большой проблемой, но мне нужно будет сделать это много раз в течение проекта развития.

Я попытался экспортировать таблицы в xml, но макросы данных не включены.

обратите внимание, что я спрашиваю о Access 2010 данные макросы здесь, не регулярные макросы доступа.

5 ответов


Я не имею большой ответ.

однако в прошлом я часто делал "журнал" изменений в таблицах, а затем просто использовал это на сайте.

обратите внимание, что вы можете вырезать + вставить код макроса. И код сохраняется как XML.

например, этот триггер после обновления таблицы выглядит так в Access:

enter image description here

Если вы вырежете выше (ctrl-a, ctrl-cc), то вы можете вставить это в блокнот. На самом деле вы можете даже вставьте/откройте его в visual studio или любом редакторе xml, и вы увидите следующее:

enter image description here

Так что вы можете вырезать + вставить из этих макросов.

Как уже отмечалось, таким образом, в прошлом я часто вел "журнал" изменений.

поэтому, если я работал вне сайта и я изменил 2 модуля кода, 4 формы и 2 отчета, то у меня был небольшой журнал изменений. Я бы ввел в этот лист, какой объект был изменен.

когда я попадаю на сайт, то я быстро смотрю на этот лист и Я знаю, чтобы импортировать 3-5 объектов, и такой импорт составляет всего несколько минут.

однако с триггерами таблиц и процедурами хранения у вас может быть больше, чем просто несколько для копирования.

Я бы сделал одну из двух вещей:

используйте идею журнала и

a) Un-опубликуйте версию разработки и принесите ее со мной на свой рабочий сайт. Затем вы импортируете новые формы, отчеты и т. д. Для кода триггера вы вырезаете + вставляете между ними приложения.

b) Когда вы вносите изменения в триггер, затем вырежьте + вставьте в документ блокнота и поместите их в каталог. Когда на месте, просто возьмите каждый Блокнот, вырезать + вставить в производство, а затем переместить или скопировать элемент блокнота в папку" готово".

выше, конечно, меньше, чем идеально. Опять же, в прошлом у меня не всегда был код для сценария изменения таблицы, и использование небольшого листа журнала работало довольно хорошо.

Так что в прошлом я часто просто записал, что такая-то таблица была изменена и я должен добавить такой-то столбец.

Так что это действительно ваш выбор, если вы хотите вырезать + вставить макрокод как xml в отдельные маленькие документы, или вырезать + вставить прямо из разработки в производство.

Я думаю, что если вы работаете в другом месте, то я думаю, что лучше всего опубликовать версию разработки и принести ее с собой (я предполагаю, что вы знаете/realaize, что вы можете сделать un-published копия веб-приложения).

таким образом, формы, модули кода, макросы и т. д. могут быть импортированы довольно легко (вы удаляете формы и т. д. и просто импортируете из этой не опубликованной копии).

однако, для кода таблицы? Вы должны вырезать + вставить из этой не опубликованной копии по одному в некоторую промежуточную область или, как отмечено, вырезать + вставить между приложениями.

существует вероятность того, что save - as text может работать здесь, но у меня еще не было времени приготовить наилучший выход.

изменить: Кстати, выше я предполагал базу данных веб-служб, но совет по-прежнему применяется к базам данных без веб-доступа.


вы можете попробовать пару недокументированных функций VBA

экспортировать:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

импортировать:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

чтобы расширить ответ Martijn Pieters / Lanik (спасибо Martijn и Lanik), мне нужно было создать практически те же макросы данных на 28 разных таблицах, с AfterInsert, AfterUpdate, AfterDelete и именованным макросом данных на каждом. Итак, я использовал команду SaveAsText

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro - ... XML-код"

чтобы создать шаблон, затем использовал этот шаблон для создания 28 xml-файлов с помощью небольшого кода vba, подставляя имена таблиц, первичные ключи и т. д. Я также создал 28 команд LoadFromText. Затем я мог бы использовать команды LoadFromText для загрузки всех макросов сразу, с повторяемым процессом. Теперь, когда я закончил тестирование, я могу быстро обновить производственную базу данных таким образом или легко добавить те же макросы данных в другие таблицы.

Так что другие знают, LoadFromText перезаписывает любые предыдущие макросы, что потрясающе, так как у меня не было правильного шаблона на первом пытаться.

Учитывая вышеизложенное, следующим шагом является использование приложением базы данных "updater" DoCmd.Команда TransferDatabase для передачи модуля с функцией / sub со всеми командами LoadFromText в данные .accdb файл. Он также должен передать макрос для запуска функции / sub. Я попытался выполнить обновление макроса для загрузки макросов данных, но безопасность доступа предотвратила это. таким образом, вам может потребоваться заставить пользователя открыть базу данных и включить ее, а затем запустить макрос. Этот более запутанным, чем если бы мы могли редактировать макросы данных напрямую, но предоставляет обходной путь, который решает проблему.


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

однако я хотел, чтобы он запускался с кнопки, и я нашел простой способ сделать это без написания кода vba.

сначала вам нужно экспортировать таблицу или запрос вручную, щелкнув правой кнопкой мыши на таблице или запросе и выбрав экспорт и выберите xml в качестве файла тип. В конце вы получите, чтобы сохранить шаги экспорта, просто установите флажок, чтобы сохранить шаги и дать шагам экспорта соответствующее имя. После этого можно выполнить шаги экспорта через макрос с помощью действия RunSavedImportExport. Просто выберите имя сохраненного экспорта, созданного при экспорте вручную. Дело сделано. Надеюсь, это поможет другим.


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