Je suis impliqué dans la mise à jour d'une solution Access. Il contient une bonne quantité de VBA, un certain nombre de requêtes, une petite quantité de tables et quelques formulaires pour la saisie de données et la génération de rapports. C'est un candidat idéal pour Access.
Je souhaite apporter des modifications à la conception de la table, au VBA, aux requêtes et aux formulaires. Comment puis-je suivre mes modifications avec le contrôle de version? (nous utilisons Subversion, mais cela vaut pour n'importe quelle saveur) Je peux coller le mdb entier dans subversion, mais cela stockera un fichier binaire, et je ne pourrai pas dire que je viens de changer une ligne de code VBA.
J'ai pensé à copier le code VBA dans des fichiers séparés et à les enregistrer, mais je pouvais voir ceux-ci se désynchroniser rapidement avec le contenu de la base de données.
la source
Réponses:
Nous avons écrit notre propre script en VBScript, qui utilise le Application.SaveAsText () non documenté dans Access pour exporter tous les modules de code, formulaire, macro et rapport. Voilà, cela devrait vous donner quelques indications. (Attention: certains messages sont en allemand, mais vous pouvez facilement changer cela.)
EDIT: Pour résumer les divers commentaires ci-dessous:
Notre projet suppose un fichier .adp. Afin d'obtenir ce travail avec .mdb / .accdb, vous devez changer OpenAccessProject () en OpenCurrentDatabase (). (Mis à jour pour utiliserOpenAccessProject()
s'il voit une extension .adp, sinon utiliserOpenCurrentDatabase()
.)decompose.vbs:
Si vous avez besoin d'une commande cliquable, au lieu d'utiliser la ligne de commande, créez un fichier nommé "decompose.cmd" avec
Par défaut, tous les fichiers exportés vont dans un sous-dossier "Scripts" de votre application Access. Le fichier .adp / mdb est également copié à cet emplacement (avec un suffixe "stub") et dépouillé de tous les modules exportés, ce qui le rend vraiment petit.
Vous DEVEZ archiver ce stub avec les fichiers source, car la plupart des paramètres d'accès et des barres de menus personnalisées ne peuvent pas être exportés d'une autre manière. Assurez-vous simplement de ne valider les modifications dans ce fichier que si vous avez vraiment changé un paramètre ou un menu.
Remarque: Si vous avez défini des Autoexec-Makros dans votre application, vous devrez peut-être maintenir la touche Maj enfoncée lorsque vous invoquez la décomposition pour l'empêcher de s'exécuter et d'interférer avec l'exportation!
Bien sûr, il existe également le script inverse, pour construire l'application à partir du répertoire "Source":
compose.vbs:
Encore une fois, cela va avec un compagnon "compose.cmd" contenant:
Il vous demande de confirmer l'écrasement de votre application actuelle et crée d'abord une sauvegarde, si vous le faites. Il collecte ensuite tous les fichiers source du répertoire source et les réinsère dans le stub.
S'amuser!
la source
Cela semble être quelque chose de tout à fait disponible dans Access:
Ce lien de msdn explique comment installer un complément de contrôle de source pour Microsoft Access. Il a été livré en téléchargement gratuit dans le cadre des extensions Access Developer pour Access 2007 et en tant que complément gratuit distinct pour Access 2003.
Je suis heureux que vous ayez posé cette question et j'ai pris le temps de la chercher, car j'aimerais aussi cette capacité. Le lien ci-dessus contient plus d'informations à ce sujet et des liens vers les compléments.
Mise à jour:
j'ai installé le complément pour Access 2003. Il ne fonctionnera qu'avec VSS, mais il me permet de mettre des objets Access (formulaires, requêtes, tables, modules, ect) dans le référentiel. Lorsque vous modifiez un élément du référentiel, vous êtes invité à le retirer, mais vous n'êtes pas obligé de le faire. Ensuite, je vais vérifier comment il gère l'ouverture et la modification sur un système sans le complément. Je ne suis pas fan de VSS, mais j'aime vraiment l'idée de stocker des objets d'accès dans un dépôt.
Update2: Les
machines sans le complément ne peuvent pas apporter de modifications à la structure de la base de données (ajouter des champs de table, des paramètres de requête, etc.). Au début, j'ai pensé que cela pourrait être un problème si quelqu'un en avait besoin, car il n'y avait aucun moyen apparent de supprimer la base de données Access du contrôle de source si Access n'avait pas chargé le complément.
Id a découvert que l'exécution de la base de données «compacter et réparer» vous invite à supprimer la base de données du contrôle de code source. J'ai choisi oui et j'ai pu modifier la base de données sans le complément. L'article du lien ci - dessus donne également des instructions sur la configuration d'Access 2003 et 2007 pour utiliser Team System. Si vous pouvez trouver un fournisseur MSSCCI pour SVN, il y a de fortes chances que vous puissiez le faire fonctionner.
la source
La solution de composition / décomposition publiée par Oliver est excellente, mais elle présente quelques problèmes:
J'avais l'intention de résoudre ce problème moi-même, mais j'ai découvert qu'une bonne solution était déjà disponible: timabell / msaccess-vcs-integration sur GitHub. J'ai testé msaccess-vcs-integration et cela fonctionne très bien.
Mise à jour le 3 mars 2015 : Le projet était à l'origine maintenu / détenu par bkidwell sur Github, mais il a été transféré à timabell - le lien ci-dessus vers le projet est mis à jour en conséquence. Il y a des fourches du projet original de bkidwell, par exemple par ArminBra et par matonb , qui AFAICT ne devraient pas être utilisées.
L'inconvénient de l'utilisation de msaccess-vcs-integration par rapport à la solution de décomposition d'Olivers:
Quoi qu'il en soit, ma recommandation claire est msaccess-vcs-integration. Cela a résolu tous les problèmes que j'avais avec l'utilisation de Git sur les fichiers exportés.
la source
Olivers répond aux roches, mais la
CurrentProject
référence ne fonctionnait pas pour moi. J'ai fini par arracher les tripes du milieu de son export et le remplacer par celui-ci, basé sur une solution similaire d' Arvin Meyer . A l'avantage d'exporter des requêtes si vous utilisez un mdb au lieu d'un adp.la source
Nous avons développé notre propre outil interne, où:
L'ensemble du système est suffisamment intelligent pour nous permettre de produire des versions "runtime" de notre application Access, générées automatiquement à partir de fichiers txt (modules et formulaires recréés avec la commande undocument application.loadFromText) et de fichiers mdb (tables).
Cela peut sembler étrange mais cela fonctionne.
la source
Sur la base des idées de cet article et d'entrées similaires dans certains blogs, j'ai écrit une application qui fonctionne avec les formats de fichiers mdb et adp. Il importe / exporte tous les objets de la base de données (y compris les tables, les références, les relations et les propriétés de la base de données) vers des fichiers de texte brut. Avec ces fichiers, vous pouvez travailler avec n'importe quel contrôle de version source. La prochaine version permettra de réimporter les fichiers texte brut dans la base de données. Il y aura aussi un outil de ligne de commande
Vous pouvez télécharger l'application ou le code source sur: http://accesssvn.codeplex.com/
Cordialement
la source
Ressusciter un vieux fil mais celui-ci est bon. J'ai implémenté les deux scripts (compose.vbs / decompose.vbs) pour mon propre projet et j'ai rencontré un problème avec les anciens fichiers .mdb:
Il se bloque lorsqu'il atteint une forme qui inclut le code:
Access dit qu'il a un problème et c'est la fin de l'histoire. J'ai couru quelques tests et essayé de contourner ce problème et j'ai trouvé ce fil avec un travail à la fin:
Impossible de créer la base de données
Fondamentalement (au cas où le thread serait mort), vous prenez le .mdb et faites un "Enregistrer sous" au nouveau format .accdb. Ensuite, le coffre-fort de la source ou le contenu de composition / décomposition fonctionnera. J'ai également dû jouer pendant 10 minutes pour obtenir la bonne syntaxe de ligne de commande pour que les scripts (de) composer fonctionnent correctement, alors voici également cette information:
Pour composer (disons que vos trucs se trouvent dans C: \ SControl (créez un sous-dossier nommé Source pour stocker les fichiers extraits):
C'est tout!
Les versions d'Access où j'ai rencontré le problème ci-dessus incluent les bases de données Access 2000-2003 ".mdb" et ont résolu le problème en les enregistrant dans les formats ".accdb" 2007-2010 avant d'exécuter les scripts de composition / décomposition. Après la conversion, les scripts fonctionnent très bien!
la source
Solution de fichier texte uniquement (requêtes, tables et relations incluses)
J'ai modifié la paire de scripts d'Oliver afin qu'ils exportent / importent des relations, des tables et des requêtes en plus des modules, des classes, des formulaires et des macros. Tout est enregistré dans des fichiers en clair, il n'y a donc pas de fichier de base de données créé pour être stocké avec les fichiers texte dans le contrôle de version.
Exporter dans des fichiers texte (decompose.vbs)
Vous pouvez exécuter ce script en appelant
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Si vous omettez le deuxième paramètre, cela créera le dossier «Source» où se trouve la base de données. Veuillez noter que le dossier de destination sera effacé s'il existe déjà.Inclure les données dans les tables exportées
Remplacez la ligne 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
avec ligne
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Importer dans unfichier de base de données (compose.vbs)Vous pouvez exécuter ce script en appelant
cscript compose.vbs <path to file which should be created> <folder with text files>
. Si vous omettez le deuxième paramètre, il cherchera dans le dossier «Source» où la base de données doit être créée.Importer des données à partir d'un fichier texte
Remplacez la ligne 14:
const acStructureOnly = 0
parconst acStructureOnly = 1
. Cela ne fonctionnera que si vous avez inclus les données dans la table exportée.Choses qui ne sont pas couvertes
Une de mes autres ressources tout en travaillant sur ce script était cette réponse , qui m'a aidé à comprendre comment exporter des relations.
la source
Il y a un piège - VSS 6.0 ne peut accepter que les MDB utilisant le complément sous un certain nombre d'objets, qui comprend toutes les tables, requêtes, modules et formulaires locaux. Je ne connais pas la limite d'objet exacte.
Pour créer notre application de plancher de production vieille de 10 ans, qui est énorme, nous sommes obligés de combiner 3 ou 4 MDB séparées à partir de SS en une seule MDB, ce qui complique les constructions automatisées au point que nous ne perdons pas de temps à le faire.
Je pense que je vais essayer le script ci-dessus pour cracher ce MDb dans SVN et simplifier les versions pour tout le monde.
la source
Pour ceux qui utilisent Access 2010, SaveAsText n'est pas une méthode visible dans Intellisense mais cela semble être une méthode valide, comme le script d'Arvin Meyer l'a mentionné précédemment a bien fonctionné pour moi.
Fait intéressant, SaveAsAXL est une nouveauté de 2010 et possède la même signature que SaveAsText, même s'il semble qu'il ne fonctionnera qu'avec les bases de données Web, qui nécessitent SharePoint Server 2010.
la source
Nous avons eu le même problème il y a quelque temps.
Notre premier essai était un outil tiers qui offre un proxy de l'API SourceSafe pour Subversion à utiliser avec MS Access et VB 6. L'outil peut être trouvé ici .
Comme nous n'étions pas très satisfaits de cet outil, nous sommes passés à Visual SourceSafe et au plug-in d'accès VSS.
la source
J'utilise Oasis-Svn http://dev2dev.de/
Je peux juste dire que cela m'a sauvé au moins une fois. Mon mdb augmentait au-delà de 2 Go et cela l'a cassé. Je pourrais revenir à une ancienne version et importer les formulaires et perdre un jour ou deux de travail.
la source
J'ai trouvé cet outil sur SourceForge: http://sourceforge.net/projects/avc/
Je ne l'ai pas utilisé, mais c'est peut-être un début pour vous. Il peut y avoir d'autres outils tiers qui s'intègrent à VSS ou SVN qui font ce dont vous avez besoin.
Personnellement, je garde juste un fichier texte à portée de main pour garder un journal des modifications. Lorsque je valide la MDB binaire, j'utilise les entrées du journal des modifications comme commentaire de validation.
la source
Par souci d'exhaustivité ...
Il existe toujours des «outils Visual Studio [YEAR] pour Microsoft Office System» ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ) mais cela semble nécessiter VSS. Pour moi, VSS (corruption automatique) est pire que mes 347 points de sauvegarde sur mon partage réseau sauvegardé uber.
la source
J'utilise le complément Access 2003: contrôle de code source . Ça fonctionne bien. Un problème sont des caractères non valides comme un ":".
Je suis arrivée et départ. En interne, le complément fait la même chose que le code là-haut, mais avec plus de support d'outils. Je peux voir si un objet est extrait et actualiser les objets.
la source
Vous pouvez également connecter votre MS Access à Team Foundation Server. Il existe également une variante Express gratuite pour jusqu'à 5 développeurs. Fonctionne vraiment bien!
Edit: lien fixe
la source
La réponse d'Oliver fonctionne très bien. Veuillez trouver ma version étendue ci-dessous qui ajoute la prise en charge des requêtes Access.
(Veuillez consulter la réponse d'Oliver pour plus d'informations / utilisation)
decompose.vbs:
compose.vbs:
la source
J'ai essayé de contribuer à sa réponse en ajoutant une option d'exportation pour les requêtes dans la base de données d'accès. (Avec l'aide d' autres réponses SO )
Je ne suis pas en mesure de travailler cela dans la fonction «composer», mais ce n'est pas ce dont j'ai besoin pour le moment.
Remarque: j'ai également ajouté ".txt" à chacun des noms de fichiers exportés dans decompose.vbs afin que le contrôle de source me montre immédiatement les fichiers diffs.
J'espère que cela pourra aider!
la source
Cette entrée décrit une approche totalement différente des autres entrées et peut ne pas être ce que vous recherchez. Je ne serai donc pas offensé si vous l'ignorez. Mais au moins, c'est matière à réflexion.
Dans certains environnements de développement de logiciels commerciaux professionnels, la gestion de la configuration (CM) des livrables logiciels n'est normalement pas effectuée dans l'application logicielle elle-même ou dans le projet logiciel lui-même. CM est imposé aux produits livrables finaux, en enregistrant le logiciel dans un dossier CM spécial, où le fichier et son dossier sont marqués avec l'identification de la version. Par exemple, Clearcase permet au gestionnaire de données «d'archiver» un fichier logiciel, de lui attribuer une «branche», de lui attribuer une «bulle» et d'appliquer des «étiquettes». Lorsque vous voulez voir et télécharger un fichier, vous devez configurer votre "config spec" pour pointer vers la version que vous voulez, puis cd dans le dossier et le voilà.
Juste une idée.
la source
Pour toute personne coincée avec Access 97, je n'ai pas été en mesure de faire fonctionner les autres réponses. En combinant les excellentes réponses d' Oliver et DaveParillo et en apportant quelques modifications, j'ai pu faire fonctionner les scripts avec nos bases de données Access 97. C'est aussi un peu plus convivial car il demande dans quel dossier placer les fichiers.
AccessExport.vbs:
Et pour importer des fichiers dans la base de données, si vous devez recréer la base de données à partir de zéro ou si vous souhaitez modifier des fichiers en dehors d'Access pour une raison quelconque.
AccessImport.vbs:
la source