Ich bin an der Aktualisierung einer Access-Lösung beteiligt. Es verfügt über eine gute Anzahl an VBA, eine Reihe von Abfragen, eine kleine Anzahl von Tabellen und einige Formulare für die Dateneingabe und Berichterstellung. Es ist ein idealer Kandidat für Access.
Ich möchte Änderungen am Tabellendesign, am VBA, an den Abfragen und an den Formularen vornehmen. Wie kann ich meine Änderungen mit der Versionskontrolle verfolgen? (Wir verwenden Subversion, aber das gilt für jede Variante.) Ich kann die gesamte MDB in Subversion stecken, aber das speichert eine Binärdatei, und ich kann nicht sagen, dass ich nur eine Zeile VBA-Code geändert habe.
Ich dachte darüber nach, den VBA-Code in separate Dateien zu kopieren und diese zu speichern, aber ich konnte sehen, dass diese schnell nicht mehr mit dem Inhalt der Datenbank synchronisiert sind.
quelle
Antworten:
Wir haben unser eigenes Skript in VBScript geschrieben, das die undokumentierte Application.SaveAsText () in Access verwendet, um alle Code-, Formular-, Makro- und Berichtsmodule zu exportieren. Hier ist es, es sollte Ihnen einige Hinweise geben. (Achtung: Einige der Nachrichten sind auf Deutsch, aber Sie können das leicht ändern.)
EDIT: Um verschiedene Kommentare unten zusammenzufassen:
Unser Projekt geht von einer ADP-Datei aus. Um diese Arbeit mit .mdb / .accdb zu erhalten, müssen Sie OpenAccessProject () in OpenCurrentDatabase () ändern.. (Aktualisiert, um zu verwenden,OpenAccessProject()
wenn eine ADP-Erweiterung angezeigt wird, andernfalls verwendenOpenCurrentDatabase()
.)decompose.vbs:
Wenn Sie einen anklickbaren Befehl benötigen, erstellen Sie anstelle der Befehlszeile eine Datei mit dem Namen "decompose.cmd" mit
Standardmäßig werden alle exportierten Dateien in einen Unterordner "Scripts" Ihrer Access-Anwendung verschoben. Die ADP / MDB-Datei wird ebenfalls an diesen Speicherort kopiert (mit dem Suffix "Stub") und von allen exportierten Modulen befreit, wodurch sie sehr klein wird.
Sie MÜSSEN diesen Stub mit den Quelldateien einchecken, da die meisten Zugriffseinstellungen und benutzerdefinierten Menüleisten nicht auf andere Weise exportiert werden können. Stellen Sie nur sicher, dass Sie Änderungen nur an dieser Datei vornehmen, wenn Sie wirklich eine Einstellung oder ein Menü geändert haben.
Hinweis: Wenn in Ihrer Anwendung Autoexec-Makros definiert sind, müssen Sie möglicherweise die Umschalttaste gedrückt halten, wenn Sie die Zerlegung aufrufen, um zu verhindern, dass sie ausgeführt wird und den Export stört!
Natürlich gibt es auch das umgekehrte Skript, um die Anwendung aus dem "Source" -Verzeichnis zu erstellen:
compose.vbs:
Dies geht wiederum mit einem Begleiter "compose.cmd" einher, der Folgendes enthält:
Sie werden aufgefordert, das Überschreiben Ihrer aktuellen Anwendung zu bestätigen, und erstellen in diesem Fall zunächst ein Backup. Es sammelt dann alle Quelldateien im Quellverzeichnis und fügt sie erneut in den Stub ein.
Habe Spaß!
quelle
Es scheint etwas zu sein, das in Access verfügbar ist:
Dieser Link von msdn erklärt, wie Sie ein Versionsverwaltungs-Add-In für Microsoft Access installieren. Dies wird als kostenloser Download als Teil der Access Developer Extensions für Access 2007 und als separates kostenloses Add-In für Access 2003 geliefert.
Ich bin froh, dass Sie diese Frage gestellt haben, und ich habe mir die Zeit genommen, sie nachzuschlagen, da mir diese Fähigkeit auch gefallen würde. Der obige Link enthält weitere Informationen dazu und Links zu den Add-Ins.
Update:
Ich habe das Add-In für Access 2003 installiert. Es funktioniert nur mit VSS, aber es ermöglicht mir, Access-Objekte (Formulare, Abfragen, Tabellen, Module usw.) in das Repository zu stellen. Wenn Sie einen Artikel im Repo bearbeiten, werden Sie aufgefordert, ihn auszuchecken, müssen dies aber nicht. Als nächstes werde ich überprüfen, wie es gehandhabt wird, auf einem System ohne das Add-In geöffnet und geändert zu werden. Ich bin kein Fan von VSS, aber ich mag den Gedanken wirklich, Zugriffsobjekte in einem Repo zu speichern.
Update2: Computer
ohne Add-In können keine Änderungen an der Datenbankstruktur vornehmen (Tabellenfelder, Abfrageparameter usw. hinzufügen). Zuerst dachte ich, dass dies ein Problem sein könnte, wenn jemand es tun müsste, da es keine offensichtliche Möglichkeit gab, die Access-Datenbank aus der Quellcodeverwaltung zu entfernen, wenn Access das Add-In nicht geladen hatte.
ID hat festgestellt, dass Sie beim Ausführen der Datenbank "Kompakt und Reparieren" aufgefordert werden, die Datenbank aus der Quellcodeverwaltung zu entfernen. Ich habe mich für Ja entschieden und konnte die Datenbank ohne das Add-In bearbeiten. Der Artikel im obigen Link enthält auch Anweisungen zum Einrichten von Access 2003 und 2007 für die Verwendung von Team System. Wenn Sie einen MSSCCI-Anbieter für SVN finden, besteht eine gute Chance, dass dies funktioniert.
quelle
Die von Oliver veröffentlichte Compose / Decompose-Lösung ist großartig, hat aber einige Probleme:
Ich hatte vor, dies selbst zu beheben, stellte jedoch fest, dass bereits eine gute Lösung verfügbar ist: timabell / msaccess-vcs-Integration auf GitHub. Ich habe die msaccess-vcs-Integration getestet und es funktioniert großartig.
Aktualisiert am 3. März 2015 : Das Projekt wurde ursprünglich von bkidwell auf Github gepflegt / besessen, aber es wurde auf timabell übertragen - der obige Link zum Projekt wird entsprechend aktualisiert. Es gibt einige Gabeln aus dem ursprünglichen Projekt von bkidwell, zum Beispiel von ArminBra und von matonb , die AFAICT nicht verwenden sollte.
Der Nachteil der Verwendung von msaccess-vcs-Integration im Vergleich zu Olivers 'Zerlegungslösung:
Wie auch immer, meine klare Empfehlung ist msaccess-vcs-Integration. Es löste alle Probleme, die ich mit der Verwendung von Git für die exportierten Dateien hatte.
quelle
Olivers antworten auf Steine, aber die
CurrentProject
Referenz hat bei mir nicht funktioniert. Am Ende habe ich die Eingeweide aus der Mitte seines Exports herausgerissen und durch diese ersetzt, basierend auf einer ähnlichen Lösung von Arvin Meyer . Hat den Vorteil, Abfragen zu exportieren, wenn Sie eine MDB anstelle einer ADP verwenden.quelle
Wir haben unser eigenes internes Tool entwickelt, mit dem:
Das gesamte System ist intelligent genug, um "Laufzeit" -Versionen unserer Access-Anwendung zu erstellen, die automatisch aus txt-Dateien (Module und Formulare, die mit dem Befehl undocument application.loadFromText neu erstellt werden) und mdb-Dateien (Tabellen) generiert werden.
Es mag seltsam klingen, aber es funktioniert.
quelle
Basierend auf den Ideen dieses Beitrags und ähnlichen Einträgen in einigen Blogs habe ich eine Anwendung geschrieben, die mit den Dateiformaten mdb und adp funktioniert. Es importiert / exportiert alle Datenbankobjekte (einschließlich Tabellen, Referenzen, Beziehungen und Datenbankeigenschaften) in Nur-Text-Dateien. Mit diesen Dateien können Sie mit einer beliebigen Quellversionskontrolle arbeiten. In der nächsten Version können die Nur-Text-Dateien wieder in die Datenbank importiert werden. Es wird auch ein Kommandozeilen-Tool geben
Sie können die Anwendung oder den Quellcode von folgender Adresse herunterladen: http://accesssvn.codeplex.com/
Grüße
quelle
Einen alten Thread wiederbeleben, aber das ist gut so. Ich habe die beiden Skripte (compose.vbs / decompose.vbs) für mein eigenes Projekt implementiert und bin auf ein Problem mit alten MDB-Dateien gestoßen:
Es bleibt stehen, wenn es zu einem Formular gelangt, das den Code enthält:
Access sagt, es hat ein Problem und das ist das Ende der Geschichte. Ich habe einige Tests durchgeführt und herumgespielt, um dieses Problem zu umgehen, und diesen Thread mit einer Umgehung am Ende gefunden:
Datenbank kann nicht erstellt werden
Grundsätzlich (für den Fall, dass der Thread tot ist) nehmen Sie die .mdb und führen ein "Speichern unter" im neuen .accdb-Format durch. Dann funktioniert die Quelle sicher oder komponieren / zerlegen. Ich musste auch 10 Minuten herumspielen, um die richtige Befehlszeilensyntax für die (De-) Compose-Skripte zu erhalten, damit sie richtig funktionieren. Hier also auch diese Informationen:
So komponieren Sie (sagen Sie, Ihre Inhalte befinden sich in C: \ SControl (erstellen Sie einen Unterordner mit dem Namen Source, um die extrahierten Dateien zu speichern):
Das ist es!
Die Versionen von Access, bei denen das oben genannte Problem aufgetreten ist, enthalten Access 2000-2003 ".mdb" -Datenbanken und haben das Problem behoben, indem sie vor dem Ausführen der Skripts zum Erstellen / Zerlegen in den Formaten ".accdb" 2007-2010 gespeichert wurden. Nach der Konvertierung funktionieren die Skripte einwandfrei!
quelle
Nur-Text-Datei-Lösung (Abfragen, Tabellen und Beziehungen enthalten)
Ich habe das Skriptpaar von Oliver so geändert, dass es neben Modulen, Klassen, Formularen und Makros auch Beziehungen, Tabellen und Abfragen exportiert / importiert . Alles wird in Klartextdateien gespeichert, sodass keine Datenbankdatei erstellt wird, die mit den Textdateien in der Versionskontrolle gespeichert werden kann.
Export in Textdateien (decompose.vbs)
Sie können dieses Skript durch Aufrufen ausführen
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Wenn Sie den zweiten Parameter weglassen, wird der Ordner 'Source' erstellt, in dem sich die Datenbank befindet. Bitte beachten Sie, dass der Zielordner gelöscht wird, wenn er bereits vorhanden ist.Fügen Sie Daten in die exportierten Tabellen ein
Zeile 93 ersetzen:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
mit Linie
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Importieren inDatenbankdatei erstellen (compose.vbs)Sie können dieses Skript durch Aufrufen ausführen
cscript compose.vbs <path to file which should be created> <folder with text files>
. Wenn Sie den zweiten Parameter weglassen, wird der Ordner "Quelle" angezeigt, in dem die Datenbank erstellt werden soll.Daten aus Textdatei importieren
Zeile 14 ersetzen:
const acStructureOnly = 0
durchconst acStructureOnly = 1
. Dies funktioniert nur, wenn Sie die Daten in die exportierte Tabelle aufgenommen haben.Dinge, die nicht abgedeckt sind
Eine meiner anderen Ressourcen bei der Arbeit an diesem Skript war diese Antwort , mit deren Hilfe ich herausfinden konnte, wie Beziehungen exportiert werden.
quelle
Es gibt ein Problem: VSS 6.0 kann MDBs nur mit dem Add-In unter einer bestimmten Anzahl von Objekten akzeptieren, einschließlich aller lokalen Tabellen, Abfragen, Module und Formulare. Ich kenne die genaue Objektgrenze nicht.
Um unsere 10 Jahre alte Prod Floor App zu erstellen, die riesig ist, müssen wir 3 oder 4 separate MDBs aus SS zu einer MDB kombinieren, was automatisierte Builds so kompliziert macht, dass wir keine Zeit damit verschwenden.
Ich denke, ich werde das obige Skript versuchen, um diesen MDb in SVN zu spucken und Builds für alle zu vereinfachen.
quelle
Für Benutzer von Access 2010 ist SaveAsText keine sichtbare Methode in Intellisense, aber es scheint eine gültige Methode zu sein, da das zuvor erwähnte Skript von Arvin Meyer für mich gut funktioniert hat.
Interessanterweise ist SaveAsAXL neu in 2010 und hat dieselbe Signatur wie SaveAsText, obwohl es anscheinend nur mit Webdatenbanken funktioniert, für die SharePoint Server 2010 erforderlich ist.
quelle
Wir hatten vor einiger Zeit das gleiche Problem.
Unser erster Versuch war ein Drittanbieter-Tool, das einen Proxy der SourceSafe-API für Subversion zur Verwendung mit MS Access und VB 6 bietet. Das Tool finden Sie hier .
Da wir mit diesem Tool nicht so zufrieden waren, haben wir auf Visual SourceSafe und das VSS Acces Plugin umgestellt.
quelle
Ich benutze Oasis-Svn http://dev2dev.de/
Ich kann nur sagen, dass es mich mindestens einmal gerettet hat. Meine MDB wuchs über 2 GB und das hat es kaputt gemacht. Ich könnte zu einer alten Version zurückkehren und die Formulare importieren und habe gerade einen Tag Arbeit verloren.
quelle
Ich habe dieses Tool auf SourceForge gefunden: http://sourceforge.net/projects/avc/
Ich habe es nicht benutzt, aber es könnte ein Anfang für dich sein. Möglicherweise sind andere Tools von Drittanbietern in VSS oder SVN integriert, die genau das tun, was Sie benötigen.
Persönlich halte ich einfach eine einfache Textdatei bereit, um ein Änderungsprotokoll zu führen. Wenn ich die binäre MDB festschreibe, verwende ich die Einträge im Änderungsprotokoll als meinen Festschreibungskommentar.
quelle
Zur Vollständigkeit...
Es gibt immer "Visual Studio [YEAR] Tools für das Microsoft Office System" ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ), aber das scheint VSS zu erfordern. Für mich ist VSS (Auto Corrupting) schlechter als meine 347 Speicherpunkte auf meiner über gesicherten Netzwerkfreigabe.
quelle
Ich verwende das Access 2003-Add-In: Quellcodeverwaltung . Es funktioniert gut. Ein Problem sind ungültige Zeichen wie ein ":".
Ich checke ein und aus. Intern macht das Add-In dasselbe wie der Code dort oben, jedoch mit mehr Tool-Unterstützung. Ich kann sehen, ob ein Objekt ausgecheckt ist, und die Objekte aktualisieren.
quelle
Sie können Ihren MS Access auch mit dem Team Foundation Server verbinden. Es gibt auch eine kostenlose Express-Variante für bis zu 5 Entwickler. Funktioniert wirklich gut!
Bearbeiten: fester Link
quelle
Die Antwort von Oliver funktioniert großartig. Unten finden Sie meine erweiterte Version, die Unterstützung für Access-Abfragen bietet.
( Weitere Informationen / Verwendung finden Sie in der Antwort von Oliver. )
decompose.vbs:
compose.vbs:
quelle
Ich habe versucht, zu seiner Antwort beizutragen, indem ich eine Exportoption für Abfragen in der Zugriffsdatenbank hinzugefügt habe. (Mit reichlich Hilfe von anderen SO- Antworten )
Ich kann das nicht wieder in die 'Compose'-Funktion einarbeiten, aber das ist es nicht, was ich jetzt tun muss.
Hinweis: Ich habe außerdem jedem exportierten Dateinamen in decompose.vbs ".txt" hinzugefügt , damit die Quellcodeverwaltung mir sofort die Dateiunterschiede anzeigt.
Hoffentlich hilft das!
quelle
Dieser Eintrag beschreibt einen völlig anderen Ansatz als die anderen Einträge und ist möglicherweise nicht das, wonach Sie suchen. Ich werde also nicht beleidigt sein, wenn Sie dies ignorieren. Aber zumindest ist es ein Denkanstoß.
In einigen professionellen kommerziellen Softwareentwicklungsumgebungen wird das Konfigurationsmanagement (CM) von Software-Ergebnissen normalerweise nicht innerhalb der Softwareanwendung selbst oder des Softwareprojekts selbst durchgeführt. CM wird den endgültig zu liefernden Produkten auferlegt, indem die Software in einem speziellen CM-Ordner gespeichert wird, in dem sowohl die Datei als auch ihr Ordner mit einer Versionsidentifikation gekennzeichnet sind. Mit Clearcase kann der Datenmanager beispielsweise eine Softwaredatei "einchecken", ihr einen "Zweig" zuweisen, ihr eine "Blase" zuweisen und "Beschriftungen" zuweisen. Wenn Sie eine Datei anzeigen und herunterladen möchten, müssen Sie Ihre "Konfigurationsspezifikation" so konfigurieren, dass sie auf die gewünschte Version verweist, und dann die CD in den Ordner legen und dort ist sie.
Nur eine Idee.
quelle
Für alle, die mit Access 97 nicht weiterkommen, konnte ich die anderen Antworten nicht zum Laufen bringen. Mit einer Kombination aus den hervorragenden Antworten von Oliver und DaveParillo und einigen Änderungen konnte ich die Skripte mit unseren Access 97-Datenbanken zum Laufen bringen. Es ist auch etwas benutzerfreundlicher, da gefragt wird, in welchem Ordner die Dateien abgelegt werden sollen.
AccessExport.vbs:
Wenn Sie zum Importieren von Dateien in die Datenbank die Datenbank von Grund auf neu erstellen müssen oder aus irgendeinem Grund Dateien außerhalb von Access ändern möchten.
AccessImport.vbs:
quelle