8
votes

Version Control Access 2007 Base de données et application

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.

L'application comprend:

  • FORMES
  • Code VBA
  • Database réelle

    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.

    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.


0 commentaires

3 Réponses :


2
votes

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


2 commentaires

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.



3
votes

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.

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.).

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.

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.


4 commentaires

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 doit mourir!


Synchronisation Le code n'est plus aussi difficile que celui-ci. Il suffit de prendre les choses entre mes propres mains .



2
votes

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 , 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 toutes de votre code vers / depuis le projet VBA vers / depuis le référentiel comme vous ressortez, tirez et commettez. C'est un projet gratuit et open source, alors n'hésitez pas à télécharger et installer la dernière version .

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. xxx


0 commentaires