J'ai besoin de la version de contrôle de la version et de l'application Microsoft Access 2007. Actuellement, tout est contenu dans un seul fichier MDB. P>
L'application comprend: P>
Je suppose que je dois séparer la base de données des formulaires / code. Je voudrais pouvoir contrôler les formulaires / code comme texte pour prendre en charge la version diffs. P>
Pour le moment, je n'ai pas accès à Sourceafe (j'ai entendu dire qu'il peut y avoir un soutien d'accès) afin que je préférerais une solution qui fonctionnerait avec Subversion ou Git. P>
3 Réponses :
J'utilise le code ci-dessous pour extraire le code VBA à partir de fichiers Excel, vous pourrez peut-être modifier cela pour extraire l'accès.
Sub ExtractVBACode(strSource, objFSO, strExportPath, objLogFile) Dim objExcel Dim objWorkbook Dim objVBComponent Dim strFileSuffix Dim strExportFolder Set objExcel = CreateObject("Excel.Application") objExcel.Visible = true Set objWorkbook = objExcel.Workbooks.Open(Trim(strSource)) strExportFolder = strExportPath & objFSO.GetBaseName(objWorkbook.Name) If Not objFSO.FolderExists(strExportFolder) Then objFSO.CreateFolder(strExportFolder) End If For Each objVBComponent In objWorkbook.VBProject.VBComponents Select Case objVBComponent.Type Case vbext_ct_ClassModule, vbext_ct_Document strFileSuffix = ".cls" Case vbext_ct_MSForm strFileSuffix = ".frm" Case vbext_ct_StdModule strFileSuffix = ".bas" Case Else strFileSuffix = "" End Select If strFileSuffix <> "" Then On Error Resume Next Err.Clear objVBComponent.Export strExportFolder & "\" & objVBComponent.Name & strFileSuffix If Err.Number <> 0 Then objLogFile.WriteLine ("Failed to export " & strExportFolder & "\" & objVBComponent.Name & strFileSuffix) Else objLogFile.WriteLine ("Export Successful: " & strExportFolder & "\" & objVBComponent.Name & strFileSuffix) End If On Error Goto 0 End If Next objExcel.DisplayAlerts = False objExcel.Quit
Idée intéressante ... je peux jouer avec elle un peu plus tard. Dans quelle mesure est-il facile de le faire voyager? Idéalement, j'aimerais pouvoir passer de la caisse à travailler sur le code sans trop de tracas. Merci d'avoir répondu.
L'aller-retour est tout manuel (importation / exportation). Vous pouvez exporter les formulaires comme code, mais vous aurez toujours besoin de les faire manuellement.
Access 2007 dispose d'une fonctionnalité où vous pouvez diviser une DB en tables / requêtes (backend) et ses formulaires / rapports (front-end). Étant donné que votre question mentionne uniquement la version contrôlant les formulaires et les modules, cela pourrait être une solution plus élégante. Je ne sais pas où se passe les modules après la scission, de sorte que ce soit une pierre d'achoppement. P>
Microsoft offre VSTO (Visual Studio Tools for Office) , Ce qui vous permettra de développer en VS et d'exécuter la version de version via n'importe quel plugin VS (CVS / SVN / VSS / etc.). p>
Enfin, vous pouvez simplement vous connecter directement à Visual Source Safe. Cet article MSKB a une bonne information et une bonne information passer à travers, tandis que Cet article en ligne de bureau est conçu pour vous faire venir en cours d'exécution. p>
En fin de compte, je suggérerais de prendre le code hors de l'accès si possible. En supposant que l'éditeur VBA est votre environnement de développement principal, vous ajouterez des étapes supplémentaires à votre processus de développement qui ne peut pas être facilement automatisé. Chaque changement que vous apportez devra être exporté manuellement, différé et stocké, et il n'y a pas d'événement Application.EnCompile que vous pourriez utiliser pour exporter les modifications. Même plus dur, vous devrez importer manuellement tous les fichiers source modifiés d'autres développeurs lorsqu'ils font des Checkins. P>
Je suis d'accord ... il semble que tout quitter l'accès est probablement le meilleur itinéraire. Je vais diviser le fichier. Il suffira de conserver une vérification verbeuse dans les commentaires lors de la modification du code. Au plaisir de migrer cette chose à quelque chose d'un peu plus de développeur sympathique :)
Point de bonus Pour plusieurs de ces méthodes - ils passent le test de Joel pour avoir un processus de construction automatisé.
Source Visual Safe i> doit mourir!
Synchronisation Le code n'est plus aussi difficile que celui-ci. Il suffit de prendre les choses entre mes propres mains .
J'ai lutté avec ce même problème. J'ai initialement écrit le code comme la réponse existante. L'astuce consiste à obtenir tous vos modules sur le système de fichiers a >, mais cette méthode a des inconvénients. Aller cette route, vous pouvez obtenir vos formulaires et faire des rapports sur les projets VBA, mais vous ne pouvez pas les récupérer. Alors, je créé une bibliothèque dans le cadre de notre RubberDuck Vbe complément . La bibliothèque que j'ai écrite s'occupe de l'importation et de l'exportation Voici un exemple de la façon dont la bibliothèque est utilisée. J'ajouterai une intégration réelle avec l'éditeur VBA dans une version future. p>