Die Dokumentation zu OASIS-SVN befindet sich noch im Aufbau!
The documentation for OASIS-SVN ist still under construction and currently only available in german.
It will be translated as soon as possible. In the meantime you can use a translation service like DeepL or google-translate to convert it into your desired language.
Einleitung
Was macht OASIS-SVN?
Ein Access-Projekt besteht als "Binärklotz" im Normalfall aus einer einzigen - mehr oder weniger großen - Datei.
Dies bedeutet aber leider, dass ein solches Projekt nur schlecht (und vor allem nicht sinnvoll) mit einem in der Regel dateibasierten Versionskontrollsystem verwaltet werden kann.
OASIS-SVN unterstützt Sie beim Verwalten ihres Projekts, indem es einen Mechanismus zur Verfügung stellt der alle relevanten Objekte ihrer Access-Datenbank (Tabellen, Formulare, Berichte, Module, Eigenschaften, Beziehungen ...) als einzelne (Text-) Datei speichert.
OASIS-SVN ist (wie der - historisch bedingte - Name schon vermuten lässt) auf die Unterstützung von Subversion (SVN) als Versionskontrollsystem optimiert.
Da die Objekte aber als reine Textdateien exportiert werden, können diese prinzipiell mit jeder beliebigen Quellcodeverwaltung (Team-Foundation-Server, Vault, VisualSourceSafe ...) verwaltet werden.
Seit Version 3.0 ist nun auch die direkte Unterstützung sowohl für Git als auch für Mercurial integriert. Möglicherweise werden in künftigen Versionen weitere Systeme integriert. Bedingung dafür ist, dass sich das Zielsystem über die Kommandozeile ansprechen lässt.
Was macht OASIS-SVN nicht?
OASIS-SVN ist selbst keine Versionsverwaltung, sondern schafft lediglich die Voraussetzungen für diese.
Voraussetzungen
Architektur
OASIS-SVN ist primär ausschließlich mit Access 32-Bit lauffähig.
Da die neue Entwicklungsumgebung (Delphi 10.2 Tokyo) aber auch die Erstellung von 64-Bit-Dll's ermöglicht, kann auf Anfrage auch Office 64-Bit unterstützt werden.
Ganz nebenbei bemerkt empfiehlt übrigens auch Microsoft selbst die Verwendung von Office 32-Bit: https://technet.microsoft.com/.../ee681792.aspx
Quellcodeverwaltung
Neben OASIS-SVN als COM-Add-In für Microsoft-Access werden zur Quellcodeverwaltung weitere Komponenten benötigt. Diese unterscheiden sich je nach verwendetem System:
Subversion (SVN):
Als Client für Subversion wird TortoiseSVN benötigt.
ACHTUNG: Bei der Installation von TortoiseSVN müssen unbedingt auch die Kommandozeilentools mit installiert werden.
Ansonsten funktioniert der Einrichtungs-Assistent nicht.
Git:
Neben TortoiseGit wird hier zwingend auch der Git-Client für Windows benötigt.
Möglicherweise hat es lizenzrechtliche Gründe, warum TortoiseGit nicht autark funktionsfähig ist.
Mercurial:
Als Client für Mercurial setzt OASIS-SVN auf TortoiseHG.
Sinnvollerweise sollte man natürlich die zur jeweiligen Rechnerarchitektur (32-/64-Bit) passende Version diese Tools installieren.
Installation
Die Installation von OASIS-SVN gestaltet sich denkbar einfach:
Nachdem die Setup-Datei von der Webseite heruntergeladen wurde, muss sie lediglich gestartet werden.
Dieser Vorgang entspricht einer üblichen Programminstallation und sollte ansonsten selbsterklärend sein.
ACHTUNG: Zur Installation sind Administratorenrechte notwendig, da OASIS tief im System verankert wird und als COM-Add-In für den VB-Editor in der Registry unter HKEY_LOCAL_MACHINE registriert werden muss !
Einstellungen
Grundsätzliches
Sämtliche Einstellungen für OASIS-SVN werden zur Laufzeit gemeinsam in einem zentralen Objekt verwaltet.
Dabei ist jedoch zu beachten, dass einige Parameter für jedes Projekt getrennt gespeichert werden. Diese Einstellungen werden im Projektverzeichnis unter dem Dateinamen "*.oasis" gespeichert (z.B. "Nordwind.oasis").
Diese projektspezifischen Einstellungen sind im Dialog durch ■ gekennzeichnet und übersteuern beim Laden eines Projektes die globalen Einstellungen.
Einige wenige Parameter werden nur einmal beim Start von OASIS-SVN ausgewertet. Damit Änderungen an diesen Parametern berücksichtigt werden können ist daher ein Neustart von OASIS-SVN und damit von Access notwendig. Diese Parameter sind im Dialog durch ■ gekennzeichnet.
Alle globalen Einstellungen werden im Datenverzeichnis des aktuellen Benutzers gespeichert: %appdata%\OASIS\oasis_svn.cfg
Objekttypen
Hier wird vorrangig eingestellt, welche Objekttypen für das aktuelle Projekt überhaupt verwaltet werden sollen.
Durch einen Rechtsklick in die Liste lassen sich über ein Kontextmenü schnell alle Objekte an- oder abwählen.
Nur für die hier gewählten Objekttypen wird auch das Kontextmenü im Navigationsbereich und im VB-Editor aktiviert.
Mit der Option "Alle Objekte in einer Liste zeigen" wird die Aufteilung der Objekte auf einzelne Reiter im Ex- und Import-Dialog aufgehoben. Sämtliche Objekte werden in einer einzigen Liste gelistet.
➤ Diese Option wird aus Gründen der Übersichtlichkeit nicht empfohlen!
Über die Auswahl "Im Dialog auswählen" lässt sich einstellen, ob Objekte im Ex- und Importdialog automatisch selektiert werden sollen.
Die Option "Nur geänderte" versucht dabei, über die Zeitstempel der Objekte und des Dateidatums zu ermitteln ob ein Objekt exportiert bzw. importiert werden muss.
➤ Bitte beachten Sie hierzu, dass die automatische Selektierung einigen Einschränkungen unterworfen ist und daher nicht immer zuverlässig funktionieren kann. Das liegt an einigen Besonderheiten von Access und kann leider nicht umgangen werden.
Erklärung: OASIS verwendet das Datum der letzten Änderung eines Objekts aus der Systemtabelle MSysObjects. Dieses wird von Access aber z.B. für alle Module gemeinsam gesetzt. Eine Änderung an einem einzigen Modul ändert somit den Zeitstempel aller Module einer Access-Datenbank. Access 2000 hat dazu noch einen bekannten Bug. Hier stimmen die Zeitstempel aller Objekte in den seltensten Fällen.
Wichtiger Hinweis:
Das Verwalten von Tabellen über die Quellcodeverwaltung wird grundsätzlich nicht oder zumindest nur für kleinere "Lookup"-Tabellen (wie z.B. Anreden, Farben etc.) empfohlen.
Da Access für Tabellen von Haus aus kein vordefiniertes Dateiformat für die Verwaltung von Tabellen bereitstellt, wird hier ein selbstentwickeltes XML-Format verwendet. Dies führt dazu, dass die erzeugten Dateien - vor allem beim Export von Daten - schnell relativ groß werden. Insbesondere dann, wenn die Daten binäre Elemente wie z.B. Bilder enthalten.
❢❢❢ Eine Quellcodeverwaltung ist weder dazu gedacht noch dazu geeignet, Versionsstände ihrer Bewegungsdaten zu verwalten ❢❢❢
Tabellenoptionen
Auf der Seite "Tabellenoptionen" wird festgelegt, wie sich OASIS beim Ex- und Import von Tabellen verhält.
Die Option "Indizes exportieren" steuert, ob die gesetzten Indizes einer Tabelle exportiert werden.
Mit "Daten exportieren" legen Sie fest, ob nur die Struktur einer Tabelle oder auch die enthaltenen Daten exportiert werden sollen.
Ist diese Option aktiviert, werden weitere Einstellungen möglich. So können Sie hier festlegen, wie viele Datensätze maximal exportiert werden sollen. Stellen Sie hier die Anzahl auf "0" ein, um alle Datensätze einer Tabelle zu exportieren.
Mittels "Struktur und Daten getrennt" wird festgelegt, ob die Datensätze und die Definition einer Tabelle in einer einzigen Datei gespeichert, oder ob die Datensätze in eine separate Datei geschrieben werden.
Bei separater Speicherung wird zusätzlich zur Definitionsdatei "Tabellenname.def" eine Datei "Tabellenname.dat" mit dem Inhalt der Datensätze erzeugt.
Verknüpfte Tabellen werden separat behandelt und im folgenden Block getrennt eingestellt.
Zusätzlich zu den bereits beschriebenen Optionen kann hier die Anzahl zu exportierender Datensätze separat eingestellt werden. Sollen aus den verknüpften Tabellen (im Gegensatz zu lokalen Tabellen) keine Daten exportiert werden, kann dies über die Option "Nur Struktur (keine Daten exportieren)" festgelegt werden. Auch die Trennung von Struktur und Daten lässt sich abweichend von der Einstellung für die lokalen Tabellen vornehmen.
Mittels "als lokale Tabellen importieren" lassen sich ursprünglich verknüpfte Tabellen beim Import so behandeln als wären sie lokale Tabellen. Es wird dann nicht die Verbindungszeichenfolge restauriert, sondern die Struktur (und ggf. die Daten) in das aktuelle Projekt eingebunden.
Ist grundsätzlich der Export von Daten aktiviert, kann über einen Klick auf "Erweitert ..." gewählt werden, für welche Tabellen überhaupt Daten exportiert werden sollen. Hierüber lassen sich bestimmte Tabellen vom Export der Daten ausschließen. Dies ist z.B. sinnvoll, wenn einzelne Tabellen sehr viele Datensätze enthalten.
Diese Möglichkeit der Einschränkung sollte aber bewusst und mit Vorsicht eingesetzt werden. Schnell werden hier nachträglich hinzugekommene Tabellen vergessen. Daher sollte hier nach Möglichkeit "Daten für alle Tabellen exportieren" aktiviert sein.
Einstellungen
Auf der Seite "Einstellungen" werden die wichtigsten Parameter für OASIS-SVN und ihr aktuelles Projekt vorgenommen.
Die wichtigste von allen ist dabei die Angabe des Verzeichnisses, in das OASIS die exportierten Objekte schreibt. Idealerweise ist dies ein Unterverzeichnis ihres aktuellen Projektes (z.B. "Source").
Über die Option "Immer <CurrentProject.Path> verwenden" können Sie dabei festlegen, dass das hier angegebene Verzeichnis als relativer Pfad zum aktuellen Projektverzeichnis verstanden wird.
In einem solchen Fall dürfen selbstverständlich keine Laufwerksbuchstaben oder UNC-Pfade verwendet werden.
"Weitere Verzeichnisse" enthält eine Liste von Verzeichnissen, die sich unterhalb des gewählten Exportverzeichnisses befinden. Dies ist z.B. nützlich, um gemeinsam genutzte Biblitheksmodule o.ä. verwenden zu können.
Mit Subversion kann das über "svn:externals" erreicht werden. Wie dies mit Git bzw. Mercurial realisiert wird, entnehmen Sie bitte der Dokumentation der gewählten Quellcodeverwaltung.
Markieren Sie die Unterverzeichnisse, die beim Import von Objekten zusätzlich berücksichtigt werden sollen.
Namens-Konventionen:
Mit den "Namens-Konventionen" legen Sie fest, wie die exportierten Objekte als Datei benannt und organisiert werden sollen. Wir empfehlen hier ausdrücklich die voreingestellte Auswahl "Prefix". Ein Formular "Kunden" wird auf diese Weise z.B. als "F_Kunden.def" im Exportverzeichnis gespeichert.
Die Auswahl "Suffix" dient hauptsächlich dazu, Kompatibilität mit älteren Projekten herzustellen, die bereits einmal mit Visual-Source-Safe (VSS) unter Versionskontrolle gestellt waren.
Bei der Option "Ordner" werden die Objekte - je nach Objekttyp - in Unterverzeichnissen des eingestellten Exportpfades organisiert. Auch wenn diese Auswahl offensichtlich für eine bessere Übersichtlichkeit sorgt: Diese Option ist in der Vergangenheit auf Kundenwunsch hinzugefügt worden und wird von uns nicht empfohlen. Das Exportverzeichnis ist für den Anwender prinzipiell eine "Black-Box" - OASIS oder die Quellcodeverwaltung benötigen hier keine Übersichtlichkeit.
Export:
Die Option "Exportdatum als Dateidatum verwenden" sorgt dafür, dass beim Export eines Objektes der Zeitstempel der Datei auf das letzte Änderungsdatum des Objektes eingestellt wird. Die Einstellung ist zwingend notwendig, wenn geänderte Objekte im Dialog automatisch markiert werden sollen (siehe Reiter "Objekttypen").
"Exportdateien bereinigen" löscht nach dem Speichern eines Objektes als Datei einige Elemente im Dateiinhalt. Dies sind Inhalte, die vor allen Dingen für den Ausdruck notwendig sind. So sind in der Datei z.B. der gewählte Drucker, die Seitengröße und andere Dinge gespeichert, die in vielen Fällen gefahrlos gelöscht werden können. Unter anderem werden entfernt: RecSrcDt, PrtDevMode, PrtDevModeW, PrtDevNames, PrtDevNamesW, PrtMip.
Aber Achtung: Während das Entfernen dieser Elemente bei Formularen in der Regel keine Probleme macht, weil Formulare in den meisten Fällen nicht gedruckt werden, kann das bei Berichten zu Problemen führen. Sobald für einen Bericht bestimmte Einstellungen für den Ausdruck gesetzt wurden, sollte in der exportierten Datei nicht entfernt werden. Die Option für die Berichte sollte an dieser Stelle also mit Bedacht aktiviert werden.
"NoSaveCTIWhenDisabled" löscht bei Aktivierung eine einzelne Zeile NoSaveCTIWhenDisabled =1 aus der exportierten Datei. Diese führt zu Kompatibilitätsproblemen zwischen den verschiedenen Access-Versionen und kann in der Regel problemlos entfernt werden.
Der "Kompatibilitätsmodus" erzwingt nach dem Schreiben der Exportdatei die Angabe einer speziellen internen Versionsnummer. Es kommt hin und wieder vor, dass Access Dateien produziert die intern eine Versionsangabe enthalten die mit älteren Access-Versionen zu Problemen führen. Durch die Aktivierung dieser Option wird beim Export diese Versionsangabe zwingend auf Version =19 eingestellt.
Die Option "Dateien nach UTF-8 konvertieren" kann ab Access 2007 nützlich sein, denn ab dieser Version werden u.a. die Formulardateien im Format UTF-16 gespeichert.
Mit dieser Kodierung kommen aber nicht alle Versionskontrollsysteme klar.
Ist die Option aktiviert, werden die Dateien nach dem Speichern in das Format UTF-8 konvertiert.
Die beiden Optionen "Formulardateien splitten" und "Berichtsdateien splitten" erleichtern ggf. die Zusammenarbeit mit mehreren Entwicklern, wenn die Arbeiten am Code und am Design von Formularen und/oder Berichten auf verschiedene Entwickler aufgeteilt werden.
Sind die entsprechenden Optionen aktiviert, werden die exportierten Objekte in zwei Dateien aufgeteilt, die dann getrennt versioniert werden können.
Neben der Datei Objektname.def , die dann nur noch den reinen Codeanteil eines Objektes enthält wird nun eine weitere Datei Objektname.layout erzeugt. Diese enthält ausschließlich die Designinformationen. Vor dem Import werden die beiden Dateien natürlich wieder zusammengeführt.
Änderungen an diesen beiden Optionen wirken sich erst beim nächsten Export von Objekten aus. Wird also für ein Objekt die Aufteilung in Code und Design gewünscht, muss das Objekt nach Änderung der Option erneut exportiert werden.
Importverhalten:
Hier wird festgelegt, ob beim Import von Objekten evtl. bereits vorhandene Objekte gleichen Namens und gleichen Typs überschrieben werden sollen (Standard). Wird hier "Umbenennen" gewählt, werden bereits vorhandene Objekte umbenannt und der Name mit einer laufenden Nummer versehen, bevor der Importvorgang startet.
Optionen:
Die Option "Aktionen protokollieren" sorgt dafür, dass alle Aktivitäten in einer Textdatei protokolliert werden. Die Protokolldatei wird im Datenverzeichnis von OASIS erzeugt %appdata%\OASIS\oasis_svn.log
Tipp: Durch eine kleine manuelle Änderung an der Einstellungsdatei kann erreicht werden, dass OASIS für jeden Tag eine separate Datei anlegt. Fügen Sie dazu in der Konfigurationsdatei im Block "settings" eine neue Zeile ein: <LogFileFormat value=""oasis_"yyyymmdd" />
HTML-Logging:
Mit der Option "Erweitertes HTML-Logging" wird für jede Sitzung eine HTML-Datei nach dem Muster Nordwind_20161218143252.html erzeugt. In dieser Datei werden (wie im Protokoll) alle Aktionen innerhalb der aktuellen Sitzung protokolliert.
Achtung: Dieses Feature macht z.Zt. Probleme und scheint nicht mehr sauber zu funktionieren!
Updates:
Aktivieren Sie diese Option, um bei jedem Start von Access zu prüfen, ob eine neue Version von OASIS-SVN zur Verfügung steht. OASIS greift dazu beim Start kurz auf unseren Webserver zu, um die aktuelle Versionsnummer zu ermitteln. Stellen Sie daher bei Aktivierung dieser Option sicher, dass OASIS auch (per SSL) auf den Webserver https://dev2dev.de zugreifen kann.
Wurde eine neue Version gefunden, werden Sie auf diesen Umstand hingewiesen und haben die Möglichkeit, OASIS-SVN automatisch zu aktualisieren. Wird der Hinweisdialog mit "Ja" bestätigt, startet im Hintergrund der Updater und wartet auf die Beendigung von Access. Nach dem Beenden von Access wird dann die neueste Version vom Webserver heruntergeladen und ersetzt die bislang vorhandene.
Wählen Sie die Option "Nur melden", wenn Sie lediglich über eine neue Version informiert werden möchten, ohne die Möglichkeit des direkten Downloads. Diese Option ist dann sinnvoll, wenn in Ihrem Umfeld eine starke Firewall aktiv ist, die den automatischen Download verhindert. Download und Installation der neuen Version müssen dann manuell erfolgen.
Live-Log:
Seit OASIS-SVN 3.0 steht ein neues "Live-Log" zur Verfügung. Dieses wird mit einem sogenannten "Custom-Task-Pane" realisiert. Dabei handelt es sich um ein integriertes ActiveX-Formular das in das Access-Fenster eingeblendet werden kann.
Achtung: Durch das neue ActiveX-Element muss OASIS-SVN neu registriert werden, falls Sie bislang Version 2.9 eingesetzt haben. Dazu muss beim Wechsel von Version 2.9 auf die Version 3.0 einmal das Setup neu ausgeführt werden.
Das Live-Log protokolliert im Gegensatz zum normalen Protokoll wesentlich detaillierter und kann insbesondere beim Auftreten von Fehlern hilfreiche Informationen bieten. Dazu bietet es u.a. auch die Möglichkeit, auf Knopfdruck eine Email mit allen relevanten Daten an unseren Support zu senden.
Hinweis: Damit das Live-Log alle Ereignisse ab dem Start protokollieren kann, muss es beim Start bereits aktiv sein. Eine Änderung erfordert daher einen Neustart von Access!
Sprache:
Als letzte Option auf dieser Einstellungsseite kann hier noch die Sprache der Benutzeroberfläche eingestellt werden.
Zur Zeit stehen hier Deutsch, Englisch und Polnisch zur Verfügung. Eine Änderung der Sprache führt sofort zur Aktualisierung der Benutzeroberfläche.
Integration
Auf der Seite "Integration" stellen Sie ein, wie sich OASIS-SVN in Ihre Access-Umgebung integriert, welches Versionsverwaltungssystem verwendet wird und wie OASIS-SVN mit diesem interagieren soll.
Die Option "Access immer im Vollbildmodus starten" sorgt dafür, dass das Access-Fenster beim Start maximiert wird. NAtürlich kann dieses Verhalten auch über die Eigenschaften der Verknüpfung zu Access über das Betriebssystem gesteuert werden.
"Symbolleistenschaltflächen anzeigen" ist für diejenigen Anwender gedacht, die noch mit eine Access-Version vor A2007 arbeiten. Durch die Deaktivierung dieser Option kann die komplette Symbolleiste für OASIS-SVN ausgeblendet werden.
"Projekt automatisch speichern/compilieren" sorgt dafür, dass vor dem Export alle geänderten Module gespeichert und das Projekt compiliert wird. Auch nach dem Import von Objekten wird das Projekt automatisch compiliert.
Wie es der Name vermuten lässt, schaltet "Objektnamen-Autokorrektur abschalten" die Autokorrektur von Objektnamen in Access ab. Das kann natürlich auch in den Optionen von Access vorgenommen werden. Über die Option wird das aber dauerhaft für alle Access-Datenbanken eingestellt.
Für die Anwender die noch eine Access-Version < 2007 einsetzen, führt "Letzte Datenbank automatisch öffnen" dazu dass die zuletzt geöffnete Datenbank beim nächsten Start von Access automatisch geöffnet wird.
Die Option "Eigene Multifunktionsleiste" sorgt bei Access ab 2007 dafür, dass die Steuerelemente für OASIS im Office-Ribbon (Multifunktionsleiste) angezeigt werden.
Ex- und Importe über das Kontextmenü werden durch einen Signalton quittiert. Mit der Option "Kontextmenü-Aktionen optisch bestätigen" wird zusätzlich auch ein kleines Meldungsfenster eingeblendet, dass sich automatisch selbst schließt.
Mit "Beim Beenden Registry bereinigen" wird vor allem für Anwender von Access < 2007 benötigt, um beim Beenden von Access temporäre Einträge in Menüs und Symbolleisten zu bereinigen.
Beim Einlesen der Objekte in den Exportdialog wird standardmäßig nicht die Beschreibung der Objekte gelesen, da dies eklatante Performance-Einbußen mit sich bringt. Über die Option "Objektbeschreibung lesen" kann dies bewusst übersteuert werden.
Mit der Aktivierung der Option "Keine Einträge in Kontextmenüs" können Sie verhindern, dass OASIS die Kontextmenüs der Objekt verändert. Natürlich können Objekte dann nur noch mit dem Ex- bzw. Importdialog verwaltet werden.
Ab Version 3.0 gibt mit "STRG+S in Access abfangen" die Möglichkeit, das Speichern von Objekten im Entwurfsmodus über die Tastenkombination STRG+S abzufangen. Damit wird automatisch auch der Export des betroffenen Objektes angestoßen.
Das Gleiche gilt für "STRG+S im VB-Editor abfangen", mit der auch das Speichern im VB-Editor direkt zum Export des Objektes führt.
Mit der Option "Kontextmenüs für deaktivierte Objekte" können Sie erreichen, dass die Kontextmenüs im Navigationsbereich auch dann zur Verfügung stehen, wenn der zugehörige Objekttyp deaktiviert ist.
Damit lassen sich z.B. Tabellen und Abfragen in den Einstellungen deaktivieren, da das Lesen dieser Objekte im Ex-/Importdialog z.T. sehr viel Zeit benötigt. Über das Kontextmenü können einzelne Tabellen und Abfragen dann trotzdem komfortabel verwaltet werden.
Tortoise-Integration:
Über die Option "Symbolleistenschaltflächen anzeigen" wird gesteuert, ob die Befehle für die Quellcodeverwaltung direkt im Ribbon/Symbolleiste angezeigt werden. Wirklich sinnvoll ist diese Option nur, wenn Sie eine Quellcodeverwaltung einsetzen, die nicht direkt von OASIS unterstützt wird (Vault, Team-Foundation-Server usw.).
Wer seinen Workflow weiter automatisieren möchte, kann mit "Automatisches UPDATE vor Import" dafür sorgen, dass vor dem Import über den Importdialog automatisch ein Update aus der Quellcodeverwaltung angestoßen wird.
Die Dateien sind somit vor dem Import auf jeden Fall auf dem aktuellen Revisionsstand.
Analog dazu kann mit "Automatisches COMMIT nach Export" dafür gesorgt werden, dass nach dem Export über den Exportdialog automatisch ein Commit in die Quellcodeverwaltung veranlasst wird.
Nach einer Aktion der Quellcodeverwaltung werden die Dialoge - solange kein Fehler auftritt - automatisch geschlossen, um die Arbeit in Access nicht zu unterbrechen. Durch Aktivierung der Option "Dialoge nicht schließen" kann dieses Verhalten abgeschaltet werden um die Ergebnisse und Meldungen der Quellcodeverwaltung lesen zu können.
Versionskontrollsystem:
Seit OASIS 3.0 wird nicht nur Subversion direkt unterstützt. Inzwischen werden sowohl Git (mit TortoiseGit) und Mercurial (über TortoiseHG) unterstützt und können über diese Auswahl für jede Datenbank separat eingestellt werden. Hier werden lediglich die Systeme zur Auswahl angeboten, die auf dem System auch installiert sind.
Hinweis: Die Prüfung ob ein System installiert ist, erfolgt über das Auslesen der Registry. Sollte ihr System hier nicht erkannt werden, lässt sich das manuell über eine Änderung an der Einstellungsdatei erzwingen.
Fügen Sie der Einstellungsdatei dazu einen Eintrag <TortoiseProc value="C:\Program...\TortoiseProc.exe" /> im Block "settings" hinzu.
Tools
Navigationsbereich
Mit der Einführung von Access 2007 wurde das bekannte "Datenbankfenster" durch den "Navigationsbereich" abgelöst. Dieser erlaubt u.a. auch das Anlegen von benutzerdefinierten Gruppen, mit denen man sehr gut für Übersichtlichkeit in der Liste seiner Objekte sorgen kann.
Der Reiter "Tools" bietet hier die Möglichkeit, diese Gruppierungen zu sichern und auch wiederherzustellen.
Mit dem Button "Sichern" wird die aktuelle Zuordnung von Objekten zu benutzerdefinierten Gruppen als Datei gespeichert und kann damit ebenfalls unter Versionsverwaltung gestellt werden. Wählen Sie dazu einfach das Verzeichnis aus, in das die Datei gespeichert werden soll. Für den Dateinamen wird der aktuelle Projektname und die Namenserweiterung ".groups" verwendet - also z.B. Nordwind.groups.
Idealerweise sollten Sie hier das Verzeichnis wählen, in das auch die Objekte exportiert werden (Im- und Exportverzeichnis).
Mit dem Button "Wiederherstellen" kann eine gespeicherte Zuordnung der Gruppen wieder gelesen und die Gruppierung im Navigationsbereich restauriert werden. Dabei erfolgt zunächst eine Sicherheitsabfrage, da beim Wiederherstellen die aktuelle Zuordnung gelöscht werden muss.
Zuletzt kann über den Button "Löschen" auch die aktuelle Gruppierung im Navigationsbereich komplett gelöscht werden. Bitte beachten Sie dabei, dass diese Änderung das Schließen und erneute Öffnen ihres Projektes erfordert, um die Änderungen wirksam werden zu lassen.
Registrierung
OASIS-SVN wird bei der Installation im Bereich HKEY_LOCAL_MACHINE für den VB-Editor registriert.
Es kann aber vorkommen, dass dies nicht auf allen Systemen funktioniert.
Um dies zu beheben, lässt sich per Knopfdruck der Bereich in der Registry ändern, in dem OASIS für den VB-Editor registriert ist.
Sollte dies bereits passiert sein, wird der gesamte Bereich "Registrierung" erst gar nicht angezeigt.
Auto-Build
Mit Auto-Build besteht die Möglichkeit, vor dem Export bzw. vor und/oder nach dem Import eigenen VBA-Code in ihrer Datenbank auszuführen. Dies kann z.B. dazu genutzt werden, vor dem Export temporäre Objekte zu löschen oder nach einem Import Dinge automatisiert zu verarbeiten.
Über die Option "Vor Ausführung fragen" kann sowohl für den Export als auch für den Import festgelegt werden, dass vor der Ausführung der Funktion eine Rückfrage erfolgt.
Über die "Methode vor Import" lassen sich vor dem Import per VBA vorbereitende Maßnahmen durchführen. Hier kann z.B. eine passwortgeschützte ODBC-Verbindung initialisiert werden, damit es beim Import der Tabellendefinitionen verknüpfter Tabellen nicht zu Rückfragen seitens Access kommt.
Ist hier eine Methode angegeben, werden beim Import zuerst die Module und erst dann alle anderen Objekte importiert.
Für die "Methode nach Import" kann zusätzlich unterschieden werden, ob der Funktionsaufruf nach dem Import durch den Dialog oder auch während des Auto-Build-Prozesses ausgeführt werden soll.
Weiterhin kann hier eine Funktion angegeben werden, die vor dem Erzeugen einer MDE/ACCDE durch den Auto-Build-Prozess ausgeführt wird.
Hinweis:
1.) Bitte beachten Sie, dass die hier eingestellten Funktionsaufrufe nur beim Im- und Export über den Dialog ausgeführt werden und nicht bei der Auslösung über das Kontextmenü!
2.) Alle hier eingetragenen Funktionen müssen sich in einem öffentlichen Modul befinden und dürfen keine Parameter erwarten!
Info über OASIS
Die Seite "Info" im Einstellungsdialog informiert Sie über die Versionsnummer von OASIS-SVN, die eingestellten Verzeichnisse und Dateinamen im Zusammenhang mit dem aktuellen Projekt.
Zusätzlich kann hier das Projekt compiliert werden, ohne in den VB-Editor wechseln zu müssen.
Eine Demoversion von OASIS-SVN kann hier durch Eingabe der erhaltenen Lizenzinformationen zur Vollversion freigeschaltet werden. Der Button "Freischalten" ist natürlich nur sichtbar, solange Sie eine Demoversion besitzen.
Sollten Sie bereits die Vollversion besitzen, erhalten Sie hier Informationen über evtl. verfügbare Updates zu OASIS-SVN. Bedingung hierfür ist natürlich, dass Sie die Prüfung auf Updates auf der Seite "Einstellungen" aktiviert haben.
Falls aktuelle Updates zur Verfügung stehen, erhalten Sie beim Klick auf den Button "?" kurze Informationen zu den letzten fünf Updates.
Export
Export-Dialog
Für den Export mehrerer Objekte in einem Arbeitsgang wurde der Exportdialog geschaffen. Dieser listet alle in der aktuellen Datenbank enthaltenen Objekte übersichtlich auf.
Es werden hier nur Seiten für die Objekttypen angezeigt, die im Einstellungsdialog markiert sind. Werden für einen Objekttyp keine Objekte in der Datenbank gefunden, wird die zugehörige Seite deaktiviert.
Zur Markierung mehrerer Objekte können hier die gewohnten Kombinationen STRG+Klick bzw. UMSCH+Klick verwendet werden.
Zusätzlich gelten in allen Dialogen dieser Art folgende Tastenkombinationen:
- STRG+A: Markiert alle Objekte auf allen Seiten
- STRG+L: Markiert alle Objekte der aktuellen Seiten
- STRG+U: Hebt alle Markierungen auf allen Seiten wieder auf
- STRG+M: Kehrt die Markierungen auf allen Seiten um
- STRG+N: Kehrt die Markierung auf der aktuellen Seiten um
Klicken Sie auf "OK", sobald Sie Ihre Auswahl getroffen haben. Die markierten Objekte werden anschließend in das das Exportverzeichnis exportiert - dabei wird der Fortschritt in der Statuszeile dargestellt.
Hinweise:
- Sie können den Export durch eine Änderung des Projektverzeichnisses auch in ein beliebiges Verzeichnis durchführen.
Diese Änderung ist nur temporär und wird nicht in den Einstellungen gespeichert. - Die Objektliste kann durch einen Klick auf den jeweiligen Spaltenkopf auf- und absteigend sortiert werden. Halten Sie die UMSCH-Taste fest, um nach mehreren Spalten zu sortieren.
Außerdem besitzt jeder Spaltenkopf noch ein kleines Symbol, hinter dem sich eine Filterfunktion (ein wenig Excel ähnlich) verbirgt.
Gesetzte Filter werden beim Schließen des Dialogs gesichert und beim erneuten Öffnen wieder aktiviert. - Wurde in den Einstellungen die Option "Automatisches COMMIT nach Export" aktiviert, so werden die geänderten Dateien nach dem Exportvorgang in das Repository übertragen.
- Wurde in den Einstellungen die Option "Projekt automatisch speichern/compilieren" aktiviert, so werden alle geöffneten Module vor dem Export gespeichert und das VBA-Projekt compiliert.
- Aus externen Verzeichnissen importierte Objekte werden in der Liste kursiv dargestellt.
Auf der Seite "Eigenschaften" können Sie über einen Doppelklick auf eine der aufgelisteten Eigenschaften einen zum Typ der jeweiligen Eigenschaft passenden Editor öffnen.
Mit Hilfe dieses Editors können diese Eigenschaften auch direkt manipuliert werden.
Auch auf allen anderen Seiten öffnet sich auf einen Doppelklick ein Detailformular.
Allerdings kann hier nichts verändert werden. Stattdessen erhalten Sie hier auf einen Blick sämtliche Eigenschaften des gewählten Objektes in einer übersichtlichen Liste präsentiert.
Navigationsbereich
Sollen nur einzelne oder wenige Objekte exportiert werden, ist der Umweg über den Exportdialog oft zu aufwändig und zeitraubend und stört ein bisschen den Arbeitsfluss.
Daher kann durch einen Rechtsklick auf ein Objekt im Navigationsbereich (für Access < A2007 "Datenbankfenster") das Standard-Kontextmenü für den Export verwendet werden. Dieses wurde zu diesem Zweck um entsprechende Befehle erweitert.
Hinweis: Die Einträge im Kontextmenü fehlen, falls Sie in den Einstellungen "Keine Einträge in Kontextmenüs" aktiviert haben!
Tipp 1: Noch schneller geht's, wenn Sie in den Einstellungen die Option "STRG+S in Access abfangen" aktivieren. In diesem Fall genügt es, ein Objekt zu markieren (oder im Entwurfsmodus zu öffnen) und die Tastenkombination STRG+S zu drücken, mit der standardmäßig ein Objekt gespeichert wird.
OASIS-SVN reagiert dann ebenfalls auf den Tastendruck und exportiert das Objekt unmittelbar nach dem Speichervorgang.
Tipp 2: Haben Sie in den Einstellungen "Kontextmenü-Aktionen optisch bestätigen" aktiviert, werden Sie über das Ergebnis des Befehls mit einer kleinen Hinweisbox informiert. Diese Box schließt sich nach wenigen Augenblicken selbst wieder.
VB-Editor
Analog zum Navigationsbereich (Datenbankfenster) stehen auch im VB-Editor zusätzliche Befehle im Kontextmenü eines Objektes zur Verfügung.
Hinweis: Da das automatische Anpassen der zur Verfügung stehenden Befehle für OASIS in der Vergangenheit zu unschönen Seiteneffekten geführt hat (Flackern der Symbolleiste, Performanceeinbußen), wurde diese Anpassung deaktiviert. Das Kontextmenü steht somit auch dann zur Verfügung, wenn kein exportierbares Objekt, sondern z.B. ein übergeordneter Knoten ausgewählt wurde. Auf diesen Objekten werden die Befehle natürlich nicht ausgeführt - der Klick läuft ins Leere.
Tipp: Auch im VB-Editor geht's schneller, wenn Sie in den Einstellungen die Option "STRG+S im VB-Editor abfangen" aktivieren. Mit dieser Tastenkombination wird das aktuell geöffnete Modul gespeichert und unmittelbar danach exportiert.
Import
Import-Dialog
Der Importdialog bietet für alle in den Einstellungen aktivierten Objekttypen die im Projektordner enthaltenen Dateien zum Import an.
Seiten, für die im Projektordner keine passenden Dateien gefunden wurden, werden deaktiviert.
Zur Markierung mehrerer Objekte können hier die gewohnten Kombinationen STRG+Klick bzw. UMSCH+Klick verwendet werden.
Zusätzlich gelten in allen Dialogen dieser Art folgende Tastenkombinationen:
- STRG+A: Markiert alle Objekte auf allen Seiten
- STRG+L: Markiert alle Objekte der aktuellen Seiten
- STRG+U: Hebt alle Markierungen auf allen Seiten wieder auf
- STRG+M: Kehrt die Markierungen auf allen Seiten um
- STRG+N: Kehrt die Markierung auf der aktuellen Seiten um
Sie können die aktuell markierten Objekte als Konfiguration speichern um diese Auswahl für folgende Importe wiederverwenden zu können:
- STRG+S: Speichert die Liste der aktuell gewählten Objekte als Datei
- STRG+W: Lädt die gespeicherte Konfiguration
- STRG+X: Löscht eine gespeicherte Konfiguration
Die Konfiguration wird in einer Datei "Datenbankname.build" im Verzeichnis der aktuellen Datenbank gespeichert.
Klicken Sie auf "OK", sobald Sie Ihre Auswahl getroffen haben. Die markierten Objekte werden anschließend in die aktuelle Access-Datenbank importiert - dabei wird der Fortschritt in der Statuszeile dargestellt.
Hinweise:
- Sie können den Import durch eine Änderung des Projektverzeichnisses auch aus einem beliebigen anderen Verzeichnis durchführen.
Diese Änderung ist nur temporär und wird nicht in den Einstellungen gespeichert. - Die Objektliste kann durch einen Klick auf den jeweiligen Spaltenkopf auf- und absteigend sortiert werden. Halten Sie die UMSCH-Taste fest, um nach mehreren Spalten zu sortieren.
Außerdem besitzt jeder Spaltenkopf noch ein kleines Symbol, hinter dem sich eine Filterfunktion (ein wenig Excel ähnlich) verbirgt.
Gesetzte Filter werden beim Schließen des Dialogs gesichert und beim erneuten Öffnen wieder aktiviert. - Wurde in den Einstellungen die Option "Automatisches UPDATE vor Import" aktiviert, so werden vor dem Öffnen des Dialogs die aktuellen Versionen der Objekte aus dem Repository übertragen.
- Wurde in den Einstellungen die Option "Projekt automatisch speichern/compilieren" aktiviert, so wird das aktuelle VBA-Projekt nach Anschluss des Importvorgangs compiliert.
- Aus externen Verzeichnissen stammende Objekte werden in der Liste kursiv dargestellt.
Navigationsbereich
Sollen nur einzelne oder wenige Objekte importiert werden, ist der Umweg über den Importdialog oft zu aufwändig und zeitraubend und stört ein bisschen den Arbeitsfluss.
Daher kann durch einen Rechtsklick auf ein Objekt im Navigationsbereich (für Access < A2007 "Datenbankfenster") das Standard-Kontextmenü für den Import verwendet werden. Dieses wurde zu diesem Zweck um entsprechende Befehle erweitert.
Hinweis: Die Einträge im Kontextmenü fehlen, falls Sie in den Einstellungen "Keine Einträge in Kontextmenüs" aktiviert haben!
Tipp: Haben Sie in den Einstellungen "Kontextmenü-Aktionen optisch bestätigen" aktiviert, werden Sie über das Ergebnis des Befehls mit einer kleinen Hinweisbox informiert. Diese Box schließt sich nach wenigen Augenblicken selbst wieder.
VB-Editor
Analog zum Navigationsbereich (Datenbankfenster) stehen auch im VB-Editor zusätzliche Befehle im Kontextmenü eines Objektes zur Verfügung.
Hinweis: Da das automatische Anpassen der zur Verfügung stehenden Befehle für OASIS in der Vergangenheit zu unschönen Seiteneffekten geführt hat (Flackern der Symbolleiste, Performanceeinbußen), wurde diese Anpassung deaktiviert. Das Kontextmenü steht somit auch dann zur Verfügung, wenn kein importierbares Objekt, sondern z.B. ein übergeordneter Knoten ausgewählt wurde. Auf diesen Objekten werden die Befehle natürlich nicht ausgeführt - der Klick läuft ins Leere.
Löschen
Löschen-Dialog
Der Löschen-Dialog bietet für alle in den Einstellungen aktivierten Objekttypen die Möglichkeit, das Objekt sicher aus der Datenbank und aus der Versionsverwaltung zu löschen.
Zur Markierung mehrerer Objekte können hier die gewohnten Kombinationen STRG+Klick bzw. UMSCH+Klick verwendet werden.
Zusätzlich gelten in allen Dialogen dieser Art folgende Tastenkombinationen:
- STRG+A: Markiert alle Objekte auf allen Seiten
- STRG+L: Markiert alle Objekte der aktuellen Seiten
- STRG+U: Hebt alle Markierungen auf allen Seiten wieder auf
- STRG+M: Kehrt die Markierungen auf allen Seiten um
- STRG+N: Kehrt die Markierung auf der aktuellen Seiten um
Klicken Sie auf "OK", sobald Sie Ihre Auswahl getroffen haben. Die markierten Objekte werden anschließend in der aktuellen Access-Datenbank gelöscht und für die Quellcodeverwaltung als "zu löschen" markiert - dabei wird der Fortschritt in der Statuszeile dargestellt.
Hinweis: Das Löschen von Objekten über die Access-eigenen Standardfunktionen (Kontextmenü oder ENTF-Taste) führt zwar ebenfalls dazu, dass das Objekt aus der Datenbank entfernt wird. Es bleibt dabei aber in der Quelloceverwaltung unverändert vorhanden und würde somit beim nächsten Import wieder aufgelistet.
Navigationsbereich
Sollen nur einzelne oder wenige Objekte gelöscht werden, ist der Umweg über denDialog oft zu aufwändig und zeitraubend und stört ein bisschen den Arbeitsfluss.
Daher kann durch einen Rechtsklick auf ein Objekt im Navigationsbereich (für Access < A2007 "Datenbankfenster") das Standard-Kontextmenü zum sicheren Löschen von Objekten verwendet werden. Dieses wurde zu diesem Zweck um entsprechende Befehle erweitert.
Hinweis: Die Einträge im Kontextmenü fehlen, falls Sie in den Einstellungen "Keine Einträge in Kontextmenüs" aktiviert haben!
Tipp: Haben Sie in den Einstellungen "Kontextmenü-Aktionen optisch bestätigen" aktiviert, werden Sie über das Ergebnis des Befehls mit einer kleinen Hinweisbox informiert. Diese Box schließt sich nach wenigen Augenblicken selbst wieder.
VB-Editor
Analog zum Navigationsbereich (Datenbankfenster) stehen auch im VB-Editor zusätzliche Befehle im Kontextmenü eines Objektes zur Verfügung.
Hinweis: Da das automatische Anpassen der zur Verfügung stehenden Befehle für OASIS in der Vergangenheit zu unschönen Seiteneffekten geführt hat (Flackern der Symbolleiste, Performanceeinbußen), wurde diese Anpassung deaktiviert. Das Kontextmenü steht somit auch dann zur Verfügung, wenn kein löschbares Objekt, sondern z.B. ein übergeordneter Knoten ausgewählt wurde. Auf diesen Objekten werden die Befehle natürlich nicht ausgeführt - der Klick läuft ins Leere.
Verwalten
Datenbank verwalten
Vor allem beim rein lokalen Einsatz von OASIS-SVN vereinfacht dieser Befehl das Einrichten eines Repository und des Projektordners auf wenige Mausklicks.
Der Befehl "Datenbank verwalten" erzeugt abhängig vom Namen der aktuellen Datenbank ein lokales Repository in %appdata%\OASIS\Repositories\Datenbankname\ und ein Projektverzeichnis in %appdata%\OASIS\Source\Datenbankname\
Hinweis: Da für die Benennung der Verzeichnisse der Name der aktuellen Datenbank verwendet wird, sollte die Datenbank vor der Ausführung des Befehls bereits einen sinnvollen Namen haben.
Optional können Sie nach dem Erzeugen des Repository noch die übliche Verzeichnisstruktur (trunk, branches, tags) unterhalb des Repository-Pfades erzeugen lassen. Für SVN-Neulinge empfehlen wir diese Option jedoch nicht. Klicken Sie im entsprechenden Dialog einfach auf "OK".
Sollte eines der beiden anzulegenden Verzeichnisse bereits existieren, werden Sie darauf hingewiesen.
Der Vorgang schlägt in der Regel fehl, wenn die Verzeichnisse bereits existieren!
Neu erzeugen
Projekt neu erzeugen
Mit dem Befehl "Neu Erzeugen" wird eine leere Datenbank neu angelegt und die Objekte aus dem Projektverzeichnis importiert. Sie können somit aus einmal exportierten Objekten Ihr Datenbankprojekt komplett wiederherstellen.
Zunächst erscheint ein Systemdialog zur Auswahl der neu zu erzeugenden Datenbank.
Dabei können Sie sowohl einen neuen Dateinamen angeben als auch eine vorhandene Datei auswählen. Eine vorhandene Datei wird dabei (nach Rückfrage) überschrieben.
Wichtig: Um die Objekte und Einstellungen für die neu erzeugte Datenbank ermitteln zu können, muss passend zum gewählten Namen für die Datenbank auch eine lokale Einstellungsdatei "Datenbankname.oasis" vorhanden sein!
Wie beim Import auch, bietet der Dialog nun für alle aktivierten Objekttypen die im Projektordner vorhandenen Dateien zum Import an.
Das zu verwendende Verzeichnis kann jederzeit geändert werden.
Wie in Windows üblich, können Mehrfachselektionen mithilfe der Umschalt- und der STRG-Taste bewirkt werden.
Seiten, für die im Projektordner keine passenden Dateien gefunden wurden, werden deaktiviert.
Tastenkürzel:
- STRG+A: Markiert alle Objekte auf allen Seiten
- STRG+L: Markiert alle Objekte der aktuellen Seiten
- STRG+U: Hebt alle Markierungen auf allen Seiten wieder auf
- STRG+M: Kehrt die Markierungen auf allen Seiten um
- STRG+N: Kehrt die Markierung auf der aktuellen Seiten um
- STRG+S: Speichert die Liste der aktuell gewählten Objekte als Datei
- STRG+W: Lädt die gespeicherte Konfiguration
- STRG+X: Löscht eine gespeicherte Konfiguration
Klicken Sie auf 'OK', sobald Sie Ihre Auswahl getroffen haben.
Die markierten Dateien werden anschließend in die neu erzeugte Datenbank importiert - dabei wird der Fortschritt in der Statuszeile dargestellt.
Hinweise:
- Wurde in den Einstellungen die Option 'Automatisches UPDATE vor Import' aktiviert, so wird der Projektordner vor dem Importvorgang aus dem Repository aktualisiert.
- Wurde in den Einstellungen die Option 'Projekt automatisch speichern/compilieren' aktiviert, so wird das neu erzeugte VBA-Projekt nach Abschluß des Importvorgangs compiliert.
Assistent
Einrichtungs-Assistent
Der Einrichtungs-Assistent vereinfacht die Einrichtung eines Repository und der damit verbundenen Datenbankdatei.
Alle notwendigen Einstellungen um Ihre Datenbank unter Versionskontrolle zu stellen werden hier in wenigen Schritten konfiguriert, so dass nach wenigen Mausklicks eine Datenbank unter Versionsverwaltung genommen ist.
Wichtig: Der Assistent ist für Benutzer gedacht, die bislang keinerlei Berührungspunkte mit einer Quellcodeverwaltung hatten. Anwender die bereits Grundkenntnisse besitzen empfehlen wir, die Einstellungen im Einstellungsdialog selbst vorzunehmen!
Hinweis: Die Verzeichnisse, die in den Schritten 2 und 3 auszuwählen sind, sollten unbedingt leer sein!
Wählen Sie zunächst die Datenbankdatei aus, für die die Einrichtung vorgenommen werden soll.
Sollte die Datenbankdatei noch nichgt existieren, wird sie nach Abschluss des Assistenten neu erzeugt.
Im nächsten Schritt können Sie wählen, in welchem Verzeichnis OASIS-SVN die exportierten Objekte speichern soll.
Dieses Verzeichnis wird später mit dem Repository abgeglichen und wird als Arbeitsverzeichnis ("working-copy") bezeichnet.
Nun muss noch festgelegt werden, mit welchem Repository das in Schritt 2 festgelegte Verzeichnis verbunden werden soll.
Dabei stehen folgende Auswahlmöglichkeiten zur Verfügung:
- Kein Repository einrichten
Es wird kein Repository angelegt, somit steht keine Versionierung zur Verfügung.
Dies kann jedoch jederzeit nachgeholt werden. - Mit einem Repository auf einem Webserver verbinden
Das Arbeitsverzeichnis wird mit einem Repository verbunden, welches per http/https erreichbar ist.
Die dazu notwendigen Angaben werden nach Abschluss des Assistenten abgefragt. - Repository in einem lokalen Verzeichnis einrichten
Das Repository wird in einem Verzeichnis im lokalen Dateisystem eingerichtet. Dies ist für den Heimgebrauch die Standardeinstellung.
Bitte beachten Sie, dass das dadurch erzeugte Verzeichnis später für jegliche "normalen" Dateioperationen tabu ist, da das Repository sonst beschädigt werden könnte.
Bevor die gewählten Dateien und Verzeichnisse nun durch den Assistenten erzeugt und eingerichtet werden, können Sie abschließend noch wählen, ob eine neu zu erzeugende Datenbank nach Abschluss in Access geöffnet werden soll.
Klicken Sie nun auf "Fertigstellen", um die zur Einrichtung notwendigen Schritte durchzuführen.
OASIS automatisieren
Kommandozeilenoptionen
Mit Hilfe der Kommandozeilenoptionen von Access lässt sich OASIS soweit automatisieren, dass damit ein automatisches Build (z.B. über Nacht oder bei einem Checkin in die Versionsverwaltung) möglich wird.
"C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" /cmd OASIS#C:\temp\Datenbankname.accdb
Mit diesem Aufruf wird OASIS veranlasst, eine neue Datenbank Datenbankname.accdb zu erzeugen und alle Objekte aus den Quelldateien in diese Datenbank zu importieren.
Damit das so funktioniert, muss im Zielverzeichnis z.B. C:\temp\ die zu der zu erzeugenden Datenbank passende Einstellungsdatei Datenbankname.oasis vorhanden sein, damit OASIS die lokalen Einstellungen wie z.B. das Source-Verzeichnis usw. ermitteln kann.
Wird statt dem Suffix .accdb das Suffix .accde angegeben, wird nach dem Import auch gleich eine kompilierte Datenbank Datenbankname.accde erzeugt.
Dieses Verfahren setzen wir bei einem unserer Projekte zusammen mit Subversion und Continue-CI (als Continous-Integration-System) seit Jahren erfolgreich ein.
OASIS baut völlig sebsttätig bei einem Checkin in die Versionsverwaltung einen neue .accde-Datei, die dann von Continua komplett automatisch an die Anwender verteilt wird.
Automatische Builds haben aufgrund von Beschränkungen auf Access-Seite allerdings einen nicht zu unterschätzenden Pferdefuß:
Sollen beim Build auch verknüpfte Tabellen (oder PassThrough-Abfragen) aus einem DBMS wie MS-SQL oder Oracle eingebunden werden, fragt Access beim Einstellen des Connection-String nach Benutzername/Kennwort für den Zugriff auf den Datenbankserver.
Das ist für automatisch ablaufende Prozesse natürlich völlig unbrauchbar und verlangt nach einer anderen Vorgehensweise. Hier bieten sich zwei verschiedene Strategien an:
1.) Vorlagendatenbank statt komplettem Neu-Erzeugen
Für diese Variante verwendet man eine leere Datenbank, in die man ausschließlich die verknüpften Tabellen importiert. Diese Tabellen dürfen natürlich nicht parallel als einzelne Objekte in der Versionsverwaltung eingecheckt sein. Stattdessen checkt man die (evtl. gezippte) Vorlagendatenbank ein, um hier Versionieren zu können. OASIS verwendet dann diese Datenbank und fügt beim Build lediglich alle anderen Objekte ein.
Das ist zugegebenermaßen eine etwas "rustikale" Möglichkeit ... die wir in unserem Prozess aber erfolgreich verwenden.
2.) Öffentliche Methode "Vor Import"
In den Einstellungen lässt sich auf der Registerseite "Auto-Build" der Name einer Methode eintragen, die vor dem Import aufgerufen wird. Diese Methode muss natürlich in einem Standardmodul vorhanden und öffentlich erreichbar (public) sein.
Ist eine solche Methode eingetragen, ändert OASIS beim Import die Reihenfolge der Objekte ... die Module werden dann als Erstes importiert. Nach dem Import der Module wird dann die eingetragene Methode (per Application.Run) aufgerufen.
Innerhalb dieser Methode kann per VBA eine Verbindung zur entfernten Datenbank aufgebaut werden, die im Anschluss gleich wieder geschlossen wird. Netterweise "merkt" sich Access diese Zugangsdaten, so dass anschließend der Import der verknüpften Tabellen ohne Frage nach Benutzername/Kennwort vonstatten geht.
Diese Vorgehensweise ist deutlich eleganter und universeller. Wie so etwas per VBA funktioniert, hat Ben Clothier in einem Blogeintrag ausführlich erklärt.
OASIS-Objektmodell
Weitere Möglichkeiten zur Automatisierung ergeben sich aus dem Objektmodell in Verbindung mit ein wenig VBA-Code.
So lassen sich u.a. Objekte per VBA in ein bestimmtes Verzeichnis exportieren:
'Early Binding Public Sub Export() Dim oa As OASIS Set oa = New OASIS oa.ExportObjects oaQuery + oaForm + oaReport, "C:\Temp" End Sub 'Late Binding Public Sub Export() Dim oa As Object
Set oa = CreateObject("oasis_svn.oasis")
oa.ExportObjects 2 + 4 + 8, "C:\Temp" End Sub
Auch Tabellen lassen sich über das Objektmodell gezielt in eine Datei mit beliebigem Dateinamen exportieren:
Public Sub ExportTable() Dim oa As Object Set oa = CreateObject("oasis_svn.oasis") oa.ExportTable "tbl_Artikel", "C:\Temp\T_Artikel.def" End Sub
Die Funktion "GetAdditionalFolders" liefert eine Semikolon-separierte Liste der zusätzlichen Quellverzeichnisse.
Die Funktionen "GetDate", "GetPath", "GetRevision" und "GetUrl" liefern Informationen zum Repository, sind allerdings historisch bedingt auf Subversion (SVN) als Versionskontrollsystem beschränkt.
TortoiseSVN und TortoiseGit liefern aber eigene Objektmodelle, mit denen sich noch wesentlich mehr Informationen zu einem Repository ermitteln lassen.
Best Practice / Tipps
Unter der Überschrift "Best Practice" möchten wir an dieser Stelle einige Verfahrensweisen vorstellen, die sich im Zusammenhang mit Access und Quellcodeverwaltung als praktisch erwiesen haben.
Verwalten von Tabellen
Da der Hinweis gar nicht oft genug gegeben werden kann, hier nochmal unsere beinahe wichtigste Empfehlung:
Das Verwalten von Daten in Tabellen über die Quellcodeverwaltung wird grundsätzlich nicht oder allerhöchstens für kleinere "Lookup"-Tabellen (wie z.B. Anreden, Farben etc.) empfohlen.
Da Access für Tabellen von Haus aus kein vordefiniertes Dateiformat für die Verwaltung von Tabellen bereitstellt, wird hier ein selbstentwickeltes XML-Format verwendet. Dies führt dazu, dass die erzeugten Dateien - vor allem beim Export von Daten - schnell relativ groß werden. Insbesondere dann, wenn die Daten binäre Elemente wie z.B. Bilder enthalten.
❢❢❢ Eine Quellcodeverwaltung ist weder dazu gedacht noch dazu geeignet, Versionsstände ihrer Bewegungsdaten zu verwalten ❢❢❢
Das Verwalten der Tabellenstrukturen ist natürlich problemlos möglich.
Workflow mit Subversion (SVN)
Solange man als Einzelkämpfer unterwegs ist, muss man sich um den korrekten Workflow im Zusammenhang mit SVN keine großen Gedanken machen.
Geht es aber darum, im Team gemeinsam an einem Projekt zu arbeiten, ist es immens wichtig die richtigen Schritte in der richtigen Reihenfolge durchzuführen. Dabei hat sich folgende Vorgehensweise seit Jahren bewährt.
- Vor Beginn der Arbeit wird ein SVN-Update durchgeführt, um die lokalen Dateien auf den letzten Versionsstand zu bringen.
Ist in den Einstellungen "Dialoge nicht schließen" aktiviert, lässt sich nach Abschluss des Prozesses leicht nachlesen, welche Dateien geändert wurden. Diese Dateien müssen dann in das Projekt importiert werden.
Alternativ kann in den Einstellungen "Automatisch markieren => nur geänderte" aktiviert werden. Damit werden im Importdialog alle geänderten Dateien automatisch für den Import markiert.
Hinweis: Die Option arbeitet aufgrund einiger Access-Eigenarten nicht immer zuverlässig!
Tipp: Über den "Post-Commit-Hook" lässt sich eine Benachrichtigung per Email einrichten, mit der alle Teammitglieder bei einem SVN-Commit eine Mail mit den geänderten Dateien erhalten. - Nachdem alle geänderten Dateien importiert wurden, kann aktiv am Projekt gearbeitet werden. Dabei sollte nach jedem erfolgreichen Schritt das gerade bearbeitete Objekt exportiert werden.
Hier ist das Kontextmenü (im Navigationsbereich oder im VB-Editor) in der Regel der schnellere Weg als der Aufruf des Exportdialogs.
Tipp: Über die Option(en) "STRG+S abfangen" wird der Export automatisch durchgeführt, wenn ein Objekt über die Tastenkombination STRG+S gespeichert wird.
Bei wichtigen Schritten im Fortschritt der Entwicklung sollte ein SVN-Commit durchgeführt werden, um den derzeitigen Stand der Entwicklung in die Versionsverwaltung zu überführen. - Nach Beendigung der Arbeit am aktuellen Projekt sollte ein SVN-Commit durchgeführt werden.
Aber Achtung: Es könnte nun durchaus sein, dass andere Teammitglieder in der Zwischenzeit Änderungen durchgeführt haben ... auch an den von Ihnen bearbeiteten Objekten.
Daher sollte VOR dem Commit ein SVN-Update durchgeführt werden. TortoiseSVN führt im Fall der Fälle automatisch ein MERGE durch und versucht, die Änderungen beider Seiten miteinander zu mischen. Dies funktioniert in der Regel auch wirklich problemlos, solange die Entwickler nicht an der gleichen Stelle einer Datei Änderungen vorgenommen haben.
Sollte doch einmal der Fall eintreten, dass zwei Entwickler Änderungen an der gleichen Stelle einer Datei vorgenommen haben, wird TortoiseSVN einen Konflikt melden. Hier muss dann "von Hand" entschieden werden, welche der beiden Versionen die gültige ist (use theirs / use mine) oder die Änderungen werden manuell zusammengeführt.
Hinweis: Wird das Update vor dem Commit vergessen, weist TortoiseSVN selbständig darauf hin, falls die lokalen Dateien nicht mehr aktuell sein sollten und bietet ein SVN-Update an.
OASIS im täglichen Einsatz
Manuelle Einstellungen in der Projektdatei
Einige Einstellungen sind nicht über den Einstellungsdialog verfügbar und müssen bei Bedarf manuell in der Projektdate (projektname.oasis) vorgenommen werden.
<ValidSystemObjects value="MSysResources,MSysModuleTest"/>
Über diese Einstellung lassen sich Systemobjekte definieren, die im Ex- und Importdialog und auch über das Kontextmenü verwaltet werden können.
Dies ist z.B. hilfreich, wenn jemand auf die Idee gekommen sein sollte, seine Objekte mit dem Präfix "MSys" zu "verstecken".
<EnableODBCScan value="true"/>
ODBC-verknüpfte Tabellen werden von Access intern nicht als Tabellen, sondern als Objekte vom Typ "acDefault" gemeldet.
Damit diese trotzdem von OASIS als Objekte vom Typ "Tabelle" erkannt werden können, führt OASIS intern eine Liste mit allen ODBC-Tabellen.
Da dies aber - offenbar vor allem in älteren Access-Versionen - manchmal zu Fehlern. Darum muss der Scan nach ODBC-verknüpften Tabellen manuell eingeschaltet werden.
Kleines Helferlein für den VB-Editor
Bei der täglichen Arbeit mit dem VB-Editor hat mich seit Jahren ein kleines Manko gestört: Es gibt keine "schnelle" und übersichtliche Liste aller Methoden eines Code-Moduls.
Wer mit der Delphi-IDE vertraut ist, kennt vermutlich das AddOn "GExperts" und die praktische "ProcedureList", die sich per Hotkey aufrufen lässt. So etwas sollte auch der VB-Editor bekommen, also wurde das als kleines "Schmankerl" mit in OASIS integriert. Hier lässt sich eine solche Liste mit der Tastenkombination STRG+UMSCH+P aufrufen (STRG+G war leider schon belegt).
Das Eingabefeld im oberen Teil der Liste fungiert hier als Filter. Wird hier etwas eingegeben, Werden nur noch die Funktionen bzw. Prozeduren gezeigt, deren Name den eingegebenen Text enthält.
Ein Druck auf die ENTER-Taste springt zu der Stelle im Quellcode, an der die aktuell markierte Methode deklariert ist
Known Issues
Bekannte Probleme
OASIS unterliegt einigen Einschränkungen, die u.a. durch Access selbst als Host-Umgebung hervorgerufen werden.
Reservierte Button-ID's für Toolbar-Buttons
CommandButtons mit ID 1837, 1838 u.a. können nicht korrekt importiert werden-
Diese Buttons werden in Symbolleisten über den besonders von Access-Anfängern verwendeten Weg der Symbolleisten-Generierung über "Anpassen" und die Listen "Alle Formulare", "Alle Berichte" etc. generiert.
Aufgrund eines Bugs in Access lassen sich die Buttons allerdings beim Import nicht per VBA erzeugen.
Fehler beim Import von Tabellen
Der Import von Tabellen schlägt fehl, wenn die zu überschreibende Tabelle Teil einer Beziehung ist.
Fehler beim Import von Beziehungen
Der Import von Beziehungen schlägt fehl, wenn die zugehörigen Tabellen ohne Indizes exportiert wurden.
Alle Tabellen die Teil einer Beziehung sind müssen zwangsläufig mit Indizes exportiert werden, damit die Beziehung beim Import korrekt erzeugt werden kann.
Tortoise ist angeblich nicht installiert
In seltenen Fällen ist es möglich, dass OASIS-SVN ein installiertes TortoiseSVN (64Bit) nicht korrekt ermitteln kann.
In einem solchen Fall kann der Pfad zur Datei TortoiseProc.exe auch manuell in die Konfigurationsdatei eingetragen werden.
Öffnen Sie dazu die Datei %appdata%\OASIS\oasis_svn.cfg mit einem Texteditor und fügen Sie im Block <Settings> die folgende Zeile ein:
<TortoiseProc value="C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" />
Dabei muss die Pfadangabe ggf. auf Ihre lokalen Gegebenheiten angepasst werden.
FAQ
OASIS 'disappeared'
- Check if OASIS has been disabled in the Access options.
In many cases, OASIS can simply be re-activated here. - If 1. does not help, you can re-activate OASIS with editing the Windows registry.
In the keyHKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Access\AddIns\oasis_svn.OASIS
the value for LoadBehavior' hast to be '3'.
Exported files containing special chars or unexpected content
From time to time, files exported from OASIS may contain special Unicode characters that prevent successful import. Also, in rare cases, files may contain content that was not actually expected. For example, exported queries sometimes include fields that were not actually queried in SQL.
First check whether this behavior also occurs if the object (form, report, query, module) was exported using the undocumented function 'SaveAsText'.
If an object is correctly exported via 'SaveAsText' but not by OASIS, settings for 'Sanitizing' could play a role. Turn off any kind of file cleaning (Sanizize, NoSaveCTI, Compatibility mode, UTF-8)
False positive: Project protected by password
For some unknown reason, Access reports the current project is password protected when exporting a module - although it is definitely not.
Did you use one of the integrated wizards (e.g. form wizard)?
Open the VB-Editor and choose your current database as active project in the project-explorer.
Users report that the following steps eliminate this error:
- Open the property page of the current project in the VB Editor
- On the 'Protection' page, place the cursor in the 'Password' field
- Do not enter anything into the field and close the dialog with 'OK'
If necessary, check whether modules can be exported without errors using the undocumented function 'SaveAsText'.
Detailed error informations
To retrieve detailed error informations, OASIS is writing a lot of additional information into the internal Windows debug log.
To read (and if needed send) this log, follow this steps:
- Get a copy of 'DebugView' from Microsoft's SysInternals.
- Start DebugView
- Now, start Access, open your database and execute all the steps needed to reproduce the error.
You can save the debug log and send it by mail. It's extremely helpful!
You may also have a look into the current project's settings file. You will find this file as databasename.oasis
in the directory of your current database.