2012-02-09 27 views
7

Necesito transferir macros de acceso de datos desde mi prueba db a mi producción db. ¿Alguien sabe cómo hacer eso?cómo exportar macros de datos de Access 2010

Sé que la transferencia de tablas de un accdb a otro también transferirá las macros de datos, pero esa no es una opción en mi caso. También sé que puedo recrearlos manualmente en el acdb de producción, pero eso me deja abierto a errores y requiere tomar la base de datos de producción por un tiempo más prolongado que un escenario de transferencia con guiones.

Si tuviera que hacer esto una vez, no sería tan importante, pero tendré que hacerlo muchas veces en el transcurso de un proyecto de desarrollo.

He intentado exportar las tablas a xml, pero las macros de datos no están incluidas.

Tenga en cuenta que estoy preguntando sobre las macros de datos de Access 2010 aquí, macros de acceso no regulares.

Respuesta

3

No tengo una gran respuesta aquí.

Sin embargo, en el pasado solía hacer un "libro de registro" de cambios en las tablas y luego simplemente lo usaba en el sitio.

Tenga en cuenta que puede cortar + pegar código de macro. Y el código se guarda como XML.

Por ejemplo, después de esta tabla de actualización de disparo es la siguiente con acceso:

enter image description here

Si se corta a cabo lo anterior (Ctrl-A, Ctrl-cc) ,, entonces se puede pegar esto en un bloc de notas. De hecho incluso se puede pegar/abrirlo en Visual Studio o cualquier editor de XML, y ver esto:

enter image description here

lo que puede cortar + pasta de esas macros.

Como se señaló, en el pasado a menudo mantenía un "registro" de cambios.

Así que si estaba trabajando fuera del sitio y modifiqué 2 módulos de código, 4 formularios y 2 informes, entonces tuve un pequeño registro de cambios. Escribiría en esta hoja qué objeto fue cambiado.

Cuando llego al sitio, entonces echo un rápido vistazo a esa hoja y sé que debo importar los 3 a 5 objetos, y esa importación solo dura unos minutos.

Sin embargo, con los desencadenadores de tabla y los procedimientos de almacenamiento, puede tener más que unos pocos para copiar.

yo bien hacer una de dos cosas:

uso de la idea de registro y

a) Un-publicar la versión de desarrollo y llevar eso conmigo a su sitio de trabajo. A continuación, importa nuevos formularios, informes, etc. Para el código de activación, corta y pega entre las dos aplicaciones.

b) Cuando realiza un cambio en un desencadenador, corte y pegue en un bloc de notas y colóquelos en un directorio. Cuando esté en el sitio, simplemente tome cada bloc de notas, corte + pegue en la producción y luego mueva o copie el elemento del bloc de notas en una carpeta "hecho".

Lo anterior es ciertamente menos que ideal. Por otra parte, en el pasado no siempre tenía el código para escribir un cambio de tabla, y usar una pequeña hoja de registro funcionaba bastante bien.

Por lo tanto, en el pasado solía escribir que tal y tal tabla se modificó y tengo que agregar tal y tal columna.

Así que realmente es su elección si quiere cortar + pegar el código de macro como xml en pequeños documentos separados, o cortar + pegar directamente del desarrollo en producción.

Creo que si trabaja en una ubicación diferente, entonces creo que es mejor deshacer la publicación de la versión de desarrollo, y llevar eso con usted (supongo que sabe/aprovecha que puede hacer una copia no publicada de una aplicación web).

Así que los formularios, módulos de código, macro, etc. pueden importarse fácilmente (usted elimina los formularios, etc., y solo importa de esa copia no publicada).

Sin embargo, para el código de la tabla? Tienes que cortar + pegar desde esa copia no publicada, de a una por vez, en algún área de transición, o como se señaló cortar + pegar entre las aplicaciones.

Existe la posibilidad de que el texto para guardar pueda funcionar aquí, pero todavía no tuve tiempo de preparar una solución mejor.

Edit: Por cierto, en lo anterior asumí una base de datos de servicios web, pero el consejo todavía se aplica a las bases de datos de acceso no web.

+0

Gracias por su tiempo y por todos los detalles Albert. La información XML es realmente útil. También Ctrl-C, Ctrl-V funciona realmente bien también. Basado en tu reputación, lo tomo como la respuesta del evangelio. Gracias de nuevo – unrazzle

6

Es posible que desee probar un par de funciones de VBA indocumentados

Para exportar:

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

Para importar:

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

Para ampliar Martijn Pieters'/respuesta de Lanik (gracias Martijn y Lanik), tuve la necesidad de crear virtualmente las mismas macros de datos en 28 tablas diferentes, con una macro AfterInsert, AfterUpdate, AfterDelete y datos nombrados en cada una. Por lo tanto, he usado el comando SaveAsText

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

para crear una plantilla, a continuación, utiliza esa plantilla para crear el 28 xml archivos a través de un pequeño código vba, sustituyendo los nombres de tabla, claves primarias, etc. También creé 28 comandos LoadFromText. Podría usar los comandos LoadFromText para cargar todas las macros a la vez, con un proceso repetible. Ahora que ya terminé las pruebas, puedo actualizar rápidamente la base de datos de producción de esta manera o agregar fácilmente las mismas macros de datos a otras tablas.

Para que otros lo sepan, LoadFromText sobrescribe cualquier macro anterior, lo que es fantástico ya que no tenía mi plantilla correcta en el primer intento.

Dado lo anterior, el siguiente paso es hacer que su aplicación de base de datos 'updater' use un comando DoCmd.TransferDatabase para transferir el módulo con una función/sub con todos los comandos LoadFromText a los datos .accdb. También debería transferir una macro para ejecutar la función/sub. Intenté que mi actualizador ejecutara la macro para cargar las macros de datos, pero la seguridad de acceso lo impidió. por lo tanto, es posible que necesite que su usuario abra la base de datos y habilítelo, luego ejecute la macro.Esto es más intrincado si pudiéramos editar las macros de datos directamente, pero proporciona una solución que resuelva el problema.

+0

Excelente respuesta. Me encuentro con un problema cuando uso el código 'SaveAsText acTableDataMacro', y [He publicado una pregunta aquí] (http://stackoverflow.com/questions/31755802/can-i-use-access-vba-to -determine-if-a-table-has-a-data-macro). –

0

Tuve el mismo problema al no poder encontrar la macro correcta para exportar en formato xml. Sin embargo, pude hacer clic derecho en mi consulta y exportar a XML de esa manera, así que sabía que era posible.

Sin embargo, quería que se ejecutara desde un botón y encontré una forma sencilla de hacerlo sin escribir ningún código vba.

Primero tiene que exportar su tabla o consultar manualmente haciendo clic derecho en su tabla o consulta y seleccionando exportar y seleccionando xml como el tipo de archivo. Al final puede guardar los pasos de exportación, simplemente marque la casilla para guardar los pasos y dé un nombre apropiado a los pasos de exportación. Una vez que haya hecho esto, puede ejecutar los pasos de exportación a través de una macro utilizando la acción RunSavedImportExport. Simplemente seleccione el nombre de la exportación guardada que creó cuando exportó manualmente. Trabajo hecho. Espero que esto ayude a otros.

+2

FYI: Las macros de datos no se incluyen en el XML. Acabo de probarlo en Access 2013. – HarveyFrench

0

Haga clic con el botón derecho en la macro y elija Export y luego elija la base de datos que va a recibir la macro.

+0

Sé que funciona con las macros normales enumeradas en el panel de navegación, pero también se aplica a las macros de datos, por ejemplo, antes de cambiar, Después de Insertar, ...? (No creo que lo haga) –

Cuestiones relacionadas