Как экспортировать макросы данных Access 2010 - PullRequest
7 голосов
/ 09 февраля 2012

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

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

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

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

Ответы [ 5 ]

8 голосов
/ 28 октября 2012

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

Для экспорта:

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

Для импорта:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
5 голосов
/ 27 апреля 2013

Чтобы расширить ответ 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 в Data .accdb. Также следует передать макрос для запуска функции / саба. Я попытался заставить мой апдейтер выполнить макрос, чтобы загрузить макросы данных, но безопасность доступа помешала этому. поэтому вам может потребоваться, чтобы ваш пользователь открыл базу данных и включил ее, а затем запустил макрос. Это более запутанно, чем если бы мы могли редактировать макросы данных напрямую, но обеспечивает обходной путь, который решает проблему.

3 голосов
/ 09 февраля 2012

У меня нет хорошего ответа здесь.

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

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

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

enter image description here

Если вы отключите вышеперечисленное (ctrl-a, ctrl-cc), то вы можете вставить это в блокнот. На самом деле вы можете даже вставить / открыть его в Visual Studio или любом XML-редакторе, и вы увидите это:

enter image description here

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 голосов
/ 19 ноября 2016

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

0 голосов
/ 07 июля 2015

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

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

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

...