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

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

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

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

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

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

5 ответов

Решение

У меня нет отличного ответа здесь.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете попробовать пару недокументированных функций 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 перезаписывает все предыдущие макросы, что просто потрясающе, поскольку у меня не было правильного шаблона с первой попытки.

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

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

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

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

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

Другие вопросы по тегам