Estoy involucrado con la actualización de una solución de Access. Tiene una buena cantidad de VBA, una serie de consultas, una pequeña cantidad de tablas y algunos formularios para la entrada de datos y la generación de informes. Es un candidato ideal para Access.
Quiero hacer cambios en el diseño de la tabla, el VBA, las consultas y los formularios. ¿Cómo puedo seguir mis cambios con el control de versiones? (usamos Subversion, pero esto sirve para cualquier sabor) Puedo pegar todo el mdb en subversion, pero eso almacenará un archivo binario, y no podré decir que acabo de cambiar una línea de código VBA.
Pensé en copiar el código VBA para separar los archivos y guardarlos, pero pude ver que rápidamente se desincronizan con lo que hay en la base de datos.
fuente
Respuestas:
Escribimos nuestro propio script en VBScript, que usa la aplicación indocumentada.SaveAsText () en Access para exportar todos los módulos de código, formulario, macro e informe. Aquí está, debería darte algunos consejos. (Cuidado: algunos de los mensajes están en alemán, pero puedes cambiarlos fácilmente).
EDITAR: para resumir varios comentarios a continuación:
Nuestro proyecto asume un archivo .adp. Para que esto funcione con .mdb / .accdb, debe cambiar OpenAccessProject () a OpenCurrentDatabase (). (Actualizado para usarOpenAccessProject()
si ve una extensión .adp, de lo contrario, useOpenCurrentDatabase()
).descomponer.vbs:
Si necesita un comando en el que se pueda hacer clic, en lugar de usar la línea de comando, cree un archivo llamado "decompose.cmd" con
Por defecto, todos los archivos exportados van a una subcarpeta "Scripts" de su aplicación Access. El archivo .adp / mdb también se copia en esta ubicación (con un sufijo "stub") y se eliminan todos los módulos exportados, lo que lo hace realmente pequeño.
DEBE registrar este código auxiliar con los archivos de origen, ya que la mayoría de las configuraciones de acceso y las barras de menú personalizadas no se pueden exportar de otra manera. Solo asegúrese de realizar cambios en este archivo solamente, si realmente cambió alguna configuración o menú.
Nota: ¡Si tiene algún Autoexec-Makros definido en su Aplicación, es posible que tenga que mantener presionada la tecla Mayús cuando invoque la descomposición para evitar que se ejecute e interfiera con la exportación!
Por supuesto, también existe el script inverso, para construir la Aplicación desde el Directorio "Fuente":
compose.vbs:
Nuevamente, esto va con un compañero "compose.cmd" que contiene:
Le pide que confirme la sobrescritura de su aplicación actual y, si lo hace, primero crea una copia de seguridad. Luego recopila todos los archivos de origen en el Directorio de origen y los vuelve a insertar en el código auxiliar.
¡Que te diviertas!
fuente
Parece ser algo bastante disponible en Access:
Este enlace de msdn explica cómo instalar un complemento de control de código fuente para Microsoft Access. Esto se envió como una descarga gratuita como parte de Access Developer Extensions para Access 2007 y como un complemento gratuito por separado para Access 2003.
Me alegra que hayas hecho esta pregunta y me haya tomado el tiempo de buscarla, ya que también me gustaría esta habilidad. El enlace de arriba tiene más información sobre esto y enlaces a los complementos.
Actualización:
instalé el complemento para Access 2003. Solo funcionará con VSS, pero me permite poner objetos de Access (formularios, consultas, tablas, módulos, etc.) en el repositorio. Cuando vaya a editar cualquier elemento en el repositorio, se le pedirá que lo revise, pero no tiene que hacerlo. A continuación, voy a verificar cómo se maneja la apertura y el cambio en un sistema sin el complemento. No soy fanático de VSS, pero realmente me gusta la idea de almacenar objetos de acceso en un repositorio.
Actualización 2: las
máquinas sin el complemento no pueden realizar ningún cambio en la estructura de la base de datos (agregar campos de tabla, parámetros de consulta, etc.). Al principio pensé que esto podría ser un problema si alguien lo necesitara, ya que no había una forma aparente de eliminar la base de datos de Access del control de origen si Access no tenía el complemento cargado.
Id descubrió que ejecutar la base de datos "compactar y reparar" le indica si desea eliminar la base de datos del control de origen. Opté por sí y pude editar la base de datos sin el complemento. El artículo en el enlace anterior también brinda instrucciones para configurar Access 2003 y 2007 para usar Team System. Si puede encontrar un proveedor de MSSCCI para SVN, hay una buena posibilidad de que eso funcione.
fuente
La solución de composición / descomposición publicada por Oliver es excelente, pero tiene algunos problemas:
Estaba planeando arreglar esto yo mismo, pero descubrí que ya hay una buena solución disponible: timabell / msaccess-vcs -integration en GitHub. He probado msaccess-vcs-Integration y funciona muy bien.
Actualizado el 3 de marzo de 2015 : el proyecto fue originalmente mantenido / poseído por bkidwell en Github, pero se transfirió a timabell ; el enlace anterior al proyecto se actualiza en consecuencia. Hay algunos tenedores del proyecto original de bkidwell, por ejemplo, de ArminBra y de matonb , que AFAICT no debe usarse.
La desventaja de usar la integración msaccess-vcs en comparación con la solución de descomposición de Olivers:
De todos modos, mi recomendación clara es msaccess-vcs -integration. Solucionó todos los problemas que tuve con el uso de Git en los archivos exportados.
fuente
Olivers responde rocas, pero la
CurrentProject
referencia no estaba funcionando para mí. Terminé arrancando las tripas de la mitad de su exportación y reemplazándolo con esto, basado en una solución similar de Arvin Meyer . Tiene la ventaja de exportar consultas si está utilizando un mdb en lugar de un adp.fuente
Desarrollamos nuestra propia herramienta interna, donde:
Todo el sistema es lo suficientemente inteligente como para permitirnos producir versiones de "tiempo de ejecución" de nuestra aplicación Access, generadas automáticamente a partir de archivos txt (módulos y formularios que se recrean con el comando indocument application.loadFromText) y archivos mdb (tablas).
Puede sonar extraño pero funciona.
fuente
Basado en las ideas de esta publicación y entradas similares en algunos blogs, he escrito una aplicación que funciona con formatos de archivo mdb y adp. Importa / exporta todos los objetos de la base de datos (incluidas las tablas, referencias, relaciones y propiedades de la base de datos) a archivos de texto sin formato. Con esos archivos puede trabajar con cualquier control de versión de origen. La próxima versión permitirá importar de nuevo los archivos de texto sin formato a la base de datos. Habrá también una herramienta de línea de comando
Puede descargar la aplicación o el código fuente desde: http://accesssvn.codeplex.com/
Saludos
fuente
Resucitar un hilo viejo pero este es uno bueno. Implementé los dos scripts (compose.vbs / decompose.vbs) para mi propio proyecto y encontré un problema con los viejos archivos .mdb:
Se detiene cuando llega a un formulario que incluye el código:
Access dice que tiene un problema y ese es el final de la historia. Ejecuté algunas pruebas y jugué intentando solucionar este problema y encontré este hilo con una solución al final:
No se puede crear la base de datos
Básicamente (en caso de que el hilo se muera), toma el .mdb y hace un "Guardar como" al nuevo formato .accdb. Entonces la fuente segura o componer / descomponer cosas funcionará. También tuve que jugar durante 10 minutos para obtener la sintaxis correcta de la línea de comandos para que los (de) componer scripts funcionen correctamente, así que aquí está esa información también:
Para componer (digamos que sus cosas se encuentran en C: \ SControl (cree una subcarpeta llamada Fuente para almacenar los archivos extraídos):
¡Eso es!
Las versiones de Access donde he experimentado el problema anterior incluyen bases de datos ".mdb" de Access 2000-2003 y arreglaron el problema guardándolos en los formatos ".accdb" 2007-2010 antes de ejecutar los scripts de composición / descomposición. ¡Después de la conversión, los scripts funcionan bien!
fuente
Solución de solo archivo de texto (consultas, tablas y relaciones incluidas)
He modificado el par de scripts de Oliver para que exporten / importen relaciones, tablas y consultas además de módulos, clases, formularios y macros. Todo se guarda en archivos de texto sin formato, por lo que no hay un archivo de base de datos creado para almacenarse con los archivos de texto en el control de versiones.
Exportar a archivos de texto (decompose.vbs)
Puede ejecutar este script llamando
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. En caso de que omita el segundo parámetro, creará la carpeta 'Fuente' donde se encuentra la base de datos. Tenga en cuenta que la carpeta de destino se borrará si ya existe.Incluir datos en las tablas exportadas
Reemplace la línea 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
con linea
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Importar aCrear archivo de base de datos (compose.vbs)Puede ejecutar este script llamando
cscript compose.vbs <path to file which should be created> <folder with text files>
. En caso de que omita el segundo parámetro, buscará en la carpeta 'Fuente' donde se debe crear la base de datos.Importar datos del archivo de texto
Reemplace la línea 14:
const acStructureOnly = 0
conconst acStructureOnly = 1
. Esto funcionará solo si ha incluido los datos en la tabla exportada.Cosas que no están cubiertas
Uno de mis otros recursos mientras trabajaba en este script fue esta respuesta , que me ayudó a descubrir cómo exportar relaciones.
fuente
Hay un problema: VSS 6.0 solo puede aceptar MDB utilizando el complemento bajo un cierto número de objetos, que incluye todas las tablas locales, consultas, módulos y formularios. No sé el límite exacto del objeto.
Para construir nuestra aplicación de piso de producción de 10 años, que es enorme, nos vemos obligados a combinar 3 o 4 MDB separados de SS en un solo MDB, lo que complica las compilaciones automatizadas hasta el punto de que no perdemos tiempo haciéndolo.
Creo que probaré el script anterior para arrojar este MDb a SVN y simplificar las compilaciones para todos.
fuente
Para aquellos que usan Access 2010, SaveAsText no es un método visible en Intellisense, pero parece ser un método válido, ya que el script de Arvin Meyer mencionado anteriormente funcionó bien para mí.
Curiosamente, SaveAsAXL es nuevo en 2010 y tiene la misma firma que SaveAsText, aunque parece que solo funcionará con bases de datos web, que requieren SharePoint Server 2010.
fuente
Tuvimos el mismo problema hace un tiempo.
Nuestro primer intento fue una herramienta de terceros que ofrece un proxy de la API de SourceSafe para Subversion para usar con MS Access y VB 6. La herramienta se puede encontrar aquí .
Como no estábamos tan satisfechos con esa herramienta, cambiamos a Visual SourceSafe y VSS Acces Plugin.
fuente
Estoy usando Oasis-Svn http://dev2dev.de/
Solo puedo decir que me ha salvado al menos una vez. Mi mdb estaba creciendo más allá de 2 GB y eso lo rompió. Podría volver a una versión anterior e importar los formularios y simplemente perdí un día más o menos de trabajo.
fuente
Encontré esta herramienta en SourceForge: http://sourceforge.net/projects/avc/
No lo he usado, pero puede ser un comienzo para ti. Puede haber otras herramientas de terceros que se integran con VSS o SVN que hacen lo que necesita.
Personalmente, solo tengo a mano un archivo de texto sin formato para mantener un registro de cambios. Cuando confirmo el MDB binario, uso las entradas en el registro de cambios como mi comentario de confirmación.
fuente
Por completitud...
Siempre hay "Visual Studio [YEAR] Tools para Microsoft Office System" ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ) pero eso parece requerir VSS. Para mí, VSS (corrupción automática) es peor que mis 347 puntos de guardado en mi recurso compartido de red con respaldo súper.
fuente
Estoy usando el complemento Access 2003: control de código fuente . Funciona bien. Un problema son caracteres no válidos como un ":".
Estoy registrando entrada y salida. Internamente, el complemento hace lo mismo que el código allí arriba, pero con más soporte de herramientas. Puedo ver si un objeto está desprotegido y actualizar los objetos.
fuente
También puede conectar su MS Access al Team Foundation Server. También hay una variante Express gratuita para hasta 5 desarrolladores. Funciona muy bien!
Editar: enlace fijo
fuente
La respuesta de Oliver funciona muy bien. Encuentre mi versión extendida a continuación que agrega soporte para consultas de Access.
( consulte la respuesta de Oliver para obtener más información / uso)
descomponer.vbs:
compose.vbs:
fuente
Intenté ayudar a contribuir a su respuesta agregando una opción de exportación para Consultas dentro de la base de datos de acceso. (Con amplia ayuda de otras respuestas SO )
No he podido volver a trabajar con eso en la función 'componer', pero eso no es lo que necesito que haga ahora.
Nota: También agregué ".txt" a cada uno de los nombres de archivo exportados en decompose.vbs para que el control de origen me mostrara inmediatamente las diferencias de archivo.
¡Espero que ayude!
fuente
Esta entrada describe un enfoque totalmente diferente de las otras entradas, y puede no ser lo que está buscando. Así que no me ofenderé si ignoras esto. Pero al menos es motivo de reflexión.
En algunos entornos profesionales de desarrollo de software comercial, la gestión de la configuración (CM) de los entregables de software normalmente no se realiza dentro de la aplicación de software o del proyecto de software. CM se impone a los productos finales entregables, guardando el software en una carpeta CM especial, donde tanto el archivo como su carpeta están marcados con una identificación de versión. Por ejemplo, Clearcase le permite al administrador de datos "registrar" un archivo de software, asignarle una "rama", asignarle una "burbuja" y aplicar "etiquetas". Cuando desee ver y descargar un archivo, debe configurar su "especificación de configuración" para que apunte a la versión que desea, luego cd en la carpeta y ahí está.
Solo una idea.
fuente
Para cualquier persona atascada con Access 97, no pude obtener las otras respuestas para trabajar. Utilizando una combinación de las excelentes respuestas de Oliver y DaveParillo y haciendo algunas modificaciones, pude hacer que los scripts funcionaran con nuestras bases de datos de Access 97. También es un poco más fácil de usar, ya que pregunta qué carpeta colocar los archivos.
AccessExport.vbs:
Y para importar archivos a la base de datos, si necesita recrear la base de datos desde cero o si desea modificar archivos fuera de Access por alguna razón.
AccessImport.vbs:
fuente