Wie verwenden Sie version control mit Access-Entwicklung?
Ich bin beteiligt bei der Aktualisierung einer Access-Lösung. Es hat eine gute Menge von VBA, eine Reihe von Fragen, eine kleine Menge von Tabellen und ein paar Formularen für Dateneingabe & Berichts-generation. Es ist ein Idealer Kandidat für den Zugriff.
Möchte ich änderungen an der Tabelle design, VBA, Abfragen und Formulare. Wie kann ich eine übersicht über meine änderungen mit version control? (wir verwenden Subversion, aber das gilt für alle Varianten) kann ich stick die ganze mdb in subversion, aber das speichert eine binäre Datei, und ich werde nicht in der Lage sein zu sagen, ich habe gerade eine Zeile VBA-code.
Dachte ich über das kopieren des VBA-code in separaten Dateien, und speichern diese, aber ich konnte sehen, dass diese immer schnell out of sync mit dem, was in der Datenbank.
Access unterstützt das SCC-Schnittstelle, so dass jede version control kompatibel mit dieser Schnittstelle ist für den Zugriff bereit. Disclaimer: ich arbeite für plasticscm.com und wir haben mehrere Kunden, die mit es mit Access.
Versuchen Sie das vba-Modul github.com/timabell/msaccess-vcs-integration
InformationsquelleAutor Nathan DeWitt | 2008-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieben wir unsere eigenen Skript in VBScript verwendet die undokumentierte Anwendung.SaveAsText() in Access zu exportieren-alle code -, Formular -, makro-und report-Module. Hier ist es, es sollte Ihnen einige Hinweise. (Vorsicht: einige der Nachrichten sind in Deutsch, aber Sie können leicht ändern.).
BEARBEITEN:
- Unser Projekt geht von einem .adp-Datei. Um sich diese Arbeit mit .mdb/.accdb, die Sie haben zu ändern OpenAccessProject() Methode OpenCurrentDatabase(). (Aktualisiert
Zusammenfassen verschiedener Kommentare unten:
OpenAccessProject()
wenn Sie es sieht .adp-Erweiterung, sonst mitOpenCurrentDatabase()
.)zerlegen.vbs:
Wenn Sie einen anklickbaren Befehl, anstatt mit der Kommandozeile, erstellen Sie eine Datei namens "zerlegen.cmd" mit
Standardmäßig werden alle exportierten Dateien in einen "Scripts" - Unterordner Ihrer Access-Anwendung. Die .adp/mdb-Datei ist auch auf diesen Speicherort kopiert (mit einem "stub" - suffix) und ohne den exportierten Module, so dass es wirklich klein ist.
MÜSSEN Sie Check diese stub mit den source-Dateien, da die meisten access-Einstellungen und benutzerdefinierte Menü-Balken kann nicht exportiert werden, keine andere Möglichkeit. Nur sicher sein, um änderungen an dieser Datei nur, wenn Sie wirklich verändert irgendeine Einstellung oder Menü.
Hinweis: Wenn Sie keine Autoexec-Makros definiert in Ihrer Anwendung, Sie müssen möglicherweise halten Sie die Shift-Taste beim aufrufen des zerlegen um zu verhindern, dass es ausgeführt wird, und sich mit den export!
Natürlich gibt es auch die reverse-Skript zum erstellen der Anwendung aus der "Source"-Verzeichnis:
Komponieren.vbs:
Wieder, dies geht mit einem Begleiter "schreiben.cmd" mit:
Er bittet Sie, zu bestätigen, überschreiben Sie Ihre aktuelle Anwendung und erstellt zunächst eine Sicherung, wenn Sie tun. Er sammelt dann alle source-Dateien in das Source-Verzeichnis und re-eingefügt in die stub.
Spaß Haben!
Ich Liebe diesen code. Ich fand, dass oApplication.OpenAccessProject nicht funktionieren würde, auf ein .accdb (oder vielleicht ist es eine Access 2007-Ding) und ich musste oApplication.OpenCurrentDatabase-Methode statt.
Ich mache etwas ähnliches (SaveAsText, aber in VBA und mit einer MDB-Datei anstelle von ADP), aber ich habe ein großes Problem der linken: nach jedem export, Subversion erkennt über 100 Dateien als geändert (auch wenn ich änderte nur ein oder zwei). wenn ich mir anschaue, die Veränderungen sehe ich, dass einige Namen von Variablen oder von Steuerelement-Namen geändert haben, deren groß - /Kleinschreibung-Rechtschreibung. Zum Beispiel: jede Datei, die einmal enthalten "OrderNumber" enthält nun "Ordernumber" in der export-und ist daher als "verändert" markiert (zumindest von SVN, nicht versuchen, anderen SCM noch). Irgendeine Idee, wie kann ich diese vermeiden? Vielen Dank!
Ja, das ist ein ständiges ärgernis in unserem Projekt auch. Soweit wir festgestellt haben, das problem ist, dass Variablen in Ihrem Projekt den gleichen Namen wie Kontrollen, nur in verschiedenen Fällen (hoch/niedrig). Nun, abhängig von der Reihenfolge der Module wird zusammen Zugang scheint eine Schreibweise und "correnting" alle anderen, denn VBA sein soll, groß-und Kleinschreibung. Access führt diese, auch wenn die Bedienelemente sind auf die verschiedenen Formen! Das problem wird umso größer, wenn Sie auch mehrere Steuerelemente mit dem gleichen Namen in verschiedenen Fällen auf verschiedene Formen.
Die einzige Lösung ist, auf die Jagd nach einzelnen Variablen/Kontrolle-Name und ändern Sie die Rechtschreibung auf eine gemeinsame form. Nach einem export und Begehen die änderungen der Namen sollte stabil sein. Indem die control-Namen mit Ihrem Typen ziemlich sicher durch die Namenskonvention, dass die Namen kollidieren nicht mit Variablen. (z.B. txtTitle für ein Textfeld mit dem Feld "Titel" oder cmbUsers für eine combobox und so weiter)
InformationsquelleAutor Oliver
Scheint es etwas ganz verfügbar in Access:
Diese link von der msdn-Website erklärt, wie Sie installieren ein source-control-add-in für Microsoft Access. Diese verschickt als kostenloser download, als Teil des Access Developer-Erweiterungen für Access 2007 und als ein separates kostenloses add-in für Access 2003.
Ich bin froh, dass Sie diese Frage gestellt, und ich nahm sich die Zeit, schauen Sie, ich möchte diese Fähigkeit auch. Der link oben hat weitere Informationen dazu und links zu den add-ins.
Update:
Ich installiert das add-in für Access 2003. Es wird nur mit VSS arbeiten, aber es erlaubt mir Access-Objekte (Formulare, Abfragen, Tabellen, Module, etc.) in das repository. Wenn Sie gehen, Bearbeiten Sie jedes Element in der repo-Sie sind gefragt, um es heraus zu überprüfen, aber Sie nicht haben, um. Als Nächstes werde ich prüfen, wie es verarbeitet wird geöffnet und verändert werden Systeme ohne add-in. Ich bin kein fan von VSS sein, aber ich finde den Gedanken der Speicherung Zugriff auf Objekte in einem repo.
Update2:
Maschinen ohne das add-in nicht in der Lage sind, änderungen an der Datenbank-Struktur (hinzufügen der Felder der Tabelle, Abfrage-Parameter, etc.). Zuerst dachte ich, das könnte ein problem sein, wenn jemand gebraucht an, da es keinen offensichtlichen Weg, um entfernen Sie die Access-Datenbank, aus der Quellcodeverwaltung, wenn der Zugriff nicht über das add-in geladen.
Id entdeckt, dass die Ausführung "compact und reparieren" - Datenbank, fordert Sie, wenn Sie möchten, entfernen Sie die Datenbank aus der Quellcodeverwaltung. Ich entschied mich ja und war in der Lage, Bearbeiten Sie die Datenbank, ohne das add-in. Der Artikel in der link oben auch Anleitung geben, in der Einrichtung von Access 2003 und 2007 mit Team System. Wenn Sie finden eine MSSCCI-provider für SVN gibt es eine gute chance, die Sie bekommen können, um zu arbeiten.
Ich spielte mit diesem Ansatz (mit Vault, da kenne ich keine Kostenlose MSSCCI-Provider für SVN...TortoiseSVNSCC wird nicht mehr gepflegt und hat nicht funktioniert für mich, und die anderen zwei oder drei Optionen sind commerical). Es funktioniert, aber es zwingt Sie zur Verwendung der archaischen exklusiv-sperren-Ansatz auf Quellcodeverwaltung, und aus diesem Grund Plane ich, Sie zu verlassen und benutzen Sie @Oliver ' s Lösung.
InformationsquelleAutor Brettski
Olivers Antwort Felsen, aber die
CurrentProject
verwiesen wurde, nicht für mich arbeiten. Ich landete rippen die Eingeweide aus der Mitte seines exportieren und ersetzen Sie es mit dieser, basiert auf einer ähnlichen Lösung von Arvin Meyer. Hat den Vorteil, exportieren von Abfragen wenn Sie mit einer mdb statt einer adp.Die genehmigte Antwort funktioniert nicht für Access 97, aber diese Antwort hat mir geholfen, es zu ändern für meine eigenen verwendet. Vielen Dank für dieses posting!
Ich empfehle zum setzen der Abfrage speichern, bevor Sie die Formulare speichern ändern Sie die Reihenfolge der Löschung später auf. Ich hatte einige Probleme mit DeleteObject in die Letzte For Each-Anweisung, wenn ich habe versucht, löschen von Abfragen, die bereits automatisch gelöscht, wenn Ihre entsprechenden Formulare vorher gelöscht worden sind. Auch, wenn Sie einige Formulare öffnen beim Start und nicht möchten, halten Sie die Taste F11 (oder lassen Sie es deaktiviert haben), führen Sie einfach oApp.DoCmd.Close acForm, "formName" nach Ihrem Lauf durch die cnt.Dokumente
Kannst du bitte poste deinen code, der kompatibel ist mit Access 97. So brauche ich nicht zu Sanieren.
wie verwende ich diese? Rufen Sie es von einem sub?
InformationsquelleAutor DaveParillo
Erstellen/zerlegen-Lösung geschrieben von Oliver groß, aber hat einige Probleme:
Ich war in Planung, um dies zu beheben selbst, aber entdeckt, es ist schon eine gute Lösung zur Verfügung: timabell/msaccess-vcs-integration auf GitHub. Ich habe getestet msaccess-vcs-integration und es funktioniert Super.
Aktualisiert 3. März 2015: Das Projekt war ursprünglich aufrechterhalten/die im Besitz von bkidwell auf Github, aber es war übertragen timabell - link oben, um die Projekt entsprechend aktualisiert. Es gibt einige Gabeln aus dem ursprünglichen Projekt von bkidwell, zum Beispiel durch ArminBra und durch matonb, die AFAICT nicht verwendet werden sollte.
Den Nachteil mit msaccess-vcs-integration im Vergleich zu Olivers ' s zerlegen Lösung:
Sowieso, meine klare Empfehlung ist msaccess-vcs-integration. Es löste alle Probleme hatte ich mit der Verwendung von Git auf die exportierten Dateien.
Und jetzt gibt es auch meine Gabel github.com/timabell/msaccess-vcs-integration - behebt compound-key-Tabelle exportieren Bruch. Die anderen beiden sehen ein bisschen aufgegeben, so bin ich gerne pull-requests bug-reports etc. auf meine Gabel.
Ich aktualisiert meine Antwort spiegelt die Tatsache wider, dass das Projekt wurde auf Sie übertragen. PS! Ich hoffe, wir können einige Stimmen, wie ich denke, das ist die beste Lösung.
nice one, die Navigation in der Gabel eines github-Projekt scheint das " Letzte problem, das wir erfunden haben für uns 🙂
Jubel für die Erinnerung. Zusammengeführt Sie es jetzt.
InformationsquelleAutor hansfn
Wir entwickelten unsere eigenen internen tool, wo:
Das ganze system ist intelligent genug, uns zu erlauben, zu produzieren "runtime" - Versionen unserer Access-Anwendung, automatisch generiert aus den txt-Dateien (Module, und Formen neu erstellt mit der undocument Anwendung.loadFromText-Befehl) und mdb-Dateien (Tabellen).
Es klingt vielleicht seltsam, aber es funktioniert.
Könnte eine gute Gelegenheit sein, um den code überprüft. ...
Wird es eine gute Idee sein, laden Sie diese exportierte text-Dateien auf GitHub?
InformationsquelleAutor Philippe Grondier
Basiert auf den Ideen von diesem post und ähnliche Einträge in einigen blogs habe ich ein Programm geschrieben, das funktioniert mit mdb-und adp-Datei-Formate. Sie importieren/exportieren alle Datenbank-Objekte (einschließlich Tabellen, Referenzen, relations-und Datenbank-Eigenschaften") auf nur-text-Dateien.
Mit diesen Dateien können Sie mit einem beliebigen source version control. Die nächste version wird ermöglichen, import zurück in das nur-text-Dateien in die Datenbank. Es gibt auch ein Kommandozeilen-tool
Können Sie die Anwendung herunterladen oder den source-code von: http://accesssvn.codeplex.com/
hinsichtlich
InformationsquelleAutor mnieto
Er ein Alter thread, aber dieser ist gut. Ich habe implementiert die zwei scripts (verfassen.vbs /zerlegen.vbs) für mein eigenes Projekt und lief in ein problem mit alt .mdb-Dateien:
Er Stände, wenn es um ein Formular, das den code:
Access sagt, es hat ein problem und das ist das Ende der Geschichte. Ich lief einige tests und gespielt, um zu versuchen zu bekommen, um dieses Problem und diesen thread gefunden mit einer Arbeit um am Ende:
Kann keine Datenbank erstellen
Grundsätzlich (im Falle, dass der thread tot geht), nehmen Sie den .mdb, und führen Sie eine "Speichern unter", um die neue .accdb-format. Dann ist die Quelle sicher oder Komponieren/zerlegen Zeug funktioniert. Ich hatte auch zu spielen, um für 10 Minuten, um die richtige command line syntax für die (de)verfassen von Skripts, Recht auf Arbeit, also hier die info:
Zu verfassen (sagen, Ihr Zeug befindet sich in C:\SControl (erstellen Sie einen Unterordner mit dem Namen Quelle zum speichern der extrahierten Dateien):
Das ist es!
Den Versionen von Access, wo ich erlebt habe das problem oben gehören der Zugang 2000-2003 ".mdb-Datenbanken und das problem behoben, indem Sie Sie in den 2007-2010 ".accdb" - Formate vor der Ausführung erstellen/zerlegen von Skripts. Nach der Umwandlung der Skripte funktionieren einwandfrei!
Kein problem, sind Sie immer noch tun, access-Entwicklung Nathan? Wenn dem so ist jeder Erfolg die Integration mit Versionskontrolle?
Ich mache das nicht Access-Entwicklung nicht mehr. Ich hatte ein Projekt, das ich diese auf dem Weg zurück, wenn ich die Frage gestellt habe, und noch nie hatte er etwas anderes zu tun.
Cool, ich denke, die meisten Unternehmen nutzen irgendeine Art von dedizierten SQL server. Die situation ich bin in nun es ist eine Mischung aus MS-SQL-Server, Oracle und eine Reihe von Access-Datenbanken, die ziehen die Daten runter vom Server zum lokalen Tabellen und exportieren Sie Sie in excel. Es ist eine ziemlich komplizierte Mischung. Ich glaube, ich fange eine neue Frage auf-einige Vorschläge für die Einrichtung eines neuen Projekt, das ich hoffentlich bald sehen, was die Menschen vorschlagen kann, um die Komplexität zu verringern
InformationsquelleAutor JKK
Text-Datei, die einzige Lösung (Abfragen, Tabellen und Beziehungen enthalten)
Habe ich verändert, die Oliver ' s paar Skripte, so dass Sie exportieren/importieren Beziehungen, Tabellen und Abfragen zusätzlich zu Modulen, Klassen, forms und Makros. Alles werden in Klartext-Dateien, so gibt es keine Datenbank-Datei erstellt gespeichert werden, mit den text-Dateien in der Versionskontrolle.
Exportieren in text-Dateien (zerlegen.vbs)
Können Sie das Skript durch den Aufruf
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. In Fall, dass Sie den zweiten parameter weglassen, wird es schaffen 'Source' Ordner, in dem sich die Datenbank befindet. Bitte beachten Sie, dass der Zielordner werden gelöscht, wenn es bereits vorhanden ist.Gehören die Daten in den exportierten Tabellen
Ersetzen Sie die Zeile 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
mit der Linie
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
ImportierenCreate database-Datei (verfassen.vbs)Können Sie das Skript durch den Aufruf
cscript compose.vbs <path to file which should be created> <folder with text files>
. In Fall, dass Sie den zweiten parameter weglassen, wird es Aussehen in den 'Source' Ordner, in dem die Datenbank erstellt werden soll.Import von Daten aus text-Datei
Ersetzen Sie die Zeile 14:
const acStructureOnly = 0
mitconst acStructureOnly = 1
. Dies funktioniert nur, wenn Sie die Daten in der exportierten Tabelle.Dinge, die nicht abgedeckt sind
Einer meiner anderen Ressourcen während der Arbeit an diesem Drehbuch war diese Antwort, die mir geholfen hat, herauszufinden, wie man export-Beziehungen.
InformationsquelleAutor Jakub M.
Es ist ein gotcha - VSS 6.0 kann nur akzeptieren, MDB ' s mit dem add-in unter eine bestimmte Anzahl von Objekten, die alle lokalen Tabellen, Abfragen, Module und Formulare. Don T wissen, die genaue Objekt-Grenze.
Bauen unsere 10 Jahre alte prod Stock-app, die ist riesig, wir sind gezwungen, kombinieren 3 oder 4 separate MDB-Dateien aus der SS in einem MDB , das erschwert die automatisierte builds zu dem Punkt, den wir verschwenden keine Zeit, es zu tun.
Ich denke, ich werde versuchen, das script oben zu speien diese MDb in SVN und zu vereinfachen, baut für alle.
InformationsquelleAutor ChuckB
Für diejenigen, die sich mit Access 2010, SaveAsText ist nicht eine sichtbare Methode in der Intellisense-aber es scheint sich um eine gültige Methode, wie Arvin Meyer-Skript erwähnt funktionierte gut für mich.
Interessanterweise SaveAsAXL ist neu für 2010 und hat die gleiche Signatur wie SaveAsText, obwohl es scheint, es funktioniert nur mit web-Datenbanken, die benötigen SharePoint Server 2010.
InformationsquelleAutor Cory
Wir hatten das gleiche Problem vor einer Weile.
Unserem ersten Versuch war Sie ein Drittanbieter-tool, die bietet einen proxy der SourceSafe-API von Subversion verwendet werden, die mit MS Access und VB 6. Das Tool können Sie hier.
Da waren wir nicht sehr zufrieden mit diesem Werkzeug, das wir nach der Umstellung auf Visual SourceSafe und die VSS-Acces-Plugin.
InformationsquelleAutor Benjamin Brauer
Fand ich dieses tool auf SourceForge: http://sourceforge.net/projects/avc/
Habe ich noch nicht benutzt, aber es kann ein Anfang für Sie. Es kann einige andere 3rd-party-tools, Integration mit VSS oder SVN, die tun, was Sie brauchen.
Ich persönlich auch nur eine plain-text-Datei handlich zu halten, einen change-log. Wenn ich verpflichte mich, die binären MDB, nutze ich die Einträge im änderungsprotokoll als meine commit-Kommentar.
sourceforge.net/project/showfiles.php?group_id=115226 Nicht-Datei-Pakete Definiert. Yay.
InformationsquelleAutor Patrick Cuff
Vollständigkeit halber...
Gibt es immer noch "Visual Studio [JAHR] - Tools für Microsoft Office System"
( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ), aber das zu verlangen scheint VSS. Für mich VSS (auto beschädigen) ist schlechter als mein 347 speichern Punkte auf meinem uber gesichert Netzwerkfreigabe.
InformationsquelleAutor BIBD
ich bin mit dem Access 2003-Add-in: Source Code Control. Es funktioniert einwandfrei. Ein Problem sind ungültige Zeichen, wie ein ":".
Ich bin Check-in und out. Internly das Add-In das gleiche wie der code da oben, aber mit mehr tool-Unterstützung. Ich kann sehen, wenn ein Objekt ausgecheckt ist, und aktualisieren Sie die Objekte.
InformationsquelleAutor Summer-Time
Ich bin mit Oasis-Svn
http://dev2dev.de/
Ich kann nur sagen es hat mich gerettet, mindestens einmal. Mein mdb, wurde immer über 2 GB ist und dass Sie zerbrach. Ich könnte zurück zu einer alten version, und importieren Sie die Formulare und verlor nur einen Tag oder so zu arbeiten.
InformationsquelleAutor Friedrich
Können Sie auch eine Verbindung zu Ihrem MS Zugriff auf den Team Foundation Server. Es gibt auch eine Kostenlose Express-Variante für bis zu 5 Entwickler. Funktioniert wirklich gut!
Edit: fixed link
InformationsquelleAutor WolfgangP
Die Antwort von Oliver funktioniert Super. Bitte finden meine erweiterte version unten, fügt Unterstützung für Access-Abfragen.
(bitte siehe Antwort von Oliver weitere Informationen/Nutzung)
zerlegen.vbs:
Komponieren.vbs:
InformationsquelleAutor Daniel Hillebrand
Versuchte ich zu helfen, dazu beitragen, um seine Antwort, indem eine export-option für Abfragen in der access-Datenbank. (Mit viel Hilfe von andere SO Antworten)
Nicht in der Lage zu arbeiten, wieder in das "verfassen" - Funktion, aber das ist nicht das, was ich brauche es jetzt tun.
Anmerkung: ich habe auch Hinzugefügt ".txt", um jedes der exportierten Datei Namen in zerlegen.vbs, so dass die source-control würde sofort zeigen mir die Datei diffs.
Hoffe, das hilft!
InformationsquelleAutor JBickford
Dieser Eintrag beschreibt einen völlig anderen Ansatz als die anderen Einträge, und kann nicht sein, was du bist suchen für. Also ich werde nicht beleidigt sein, wenn Sie diese ignorieren. Aber zumindest ist es ein Denkanstoß.
In einige professionelle, kommerzielle software-Entwicklungsumgebungen, Konfigurationsmanagement (CM) der software zu erbringenden Leistungen ist in der Regel nicht getan innerhalb der software-Anwendung oder software-Projekt selbst. CM wird auferlegt auf die Endlieferung der Produkte durch die Speicherung der software in einem speziellen CM-Ordner, wo die Datei und der Ordner sind markiert mit version Identifikation.
Zum Beispiel, Clearcase ermöglicht den Daten-manager auf "check-in" - software-Datei, weisen Sie ihm einen "Zweig", weisen Sie ihm einen "Blase", und wenden Sie "labels".
Wenn Sie sehen wollen, und laden Sie eine Datei, die Sie konfigurieren Ihren "config spec" zu zeigen, um die version, die Sie wollen, dann cd in den Ordner und da ist es.
Nur eine Idee.
InformationsquelleAutor VolleyballAddictSandiego
Für alle stecken mit Access 97, ich war nicht in der Lage, um die anderen Antworten zu arbeiten. Mit einer Kombination von Oliver und DaveParillo ist hervorragende Antworten und machen einige Veränderungen, ich war in der Lage, um die Skripte arbeiten mit unseren Access 97-Datenbanken. Es ist auch ein wenig benutzerfreundlicher, da es fragt, welchen Ordner die Dateien.
AccessExport.vbs:
Und für den Import von Dateien in die Datenbank, sollten Sie brauchen, um die Datenbank vollständig neu erstellen oder Sie ändern möchten, Dateien, die außerhalb von Access aus irgendeinem Grund.
AccessImport.vbs:
InformationsquelleAutor CTristan