SQL Server-Datenbanken vergleichen mit VS.Code
Es gibt verschiedene Gründe, zwei Datenbanken miteinander zu vergleichen. Wenn uns zwei Versionen einer Datenbank vorliegen, unterscheiden diese sich gegebenenfalls und wir möchten herausfinden, welche die aktuellere ist. Bei der Gelegenheit kann man auch gleich noch prüfen, welche Unterschiede zwischen den Datenbanken es überhaupt gibt. Damit eröffnen sich praktische Möglichkeiten: So können wir etwa ein Skript erstellen lassen, welches die Unterschiede zwischen zwei Versionen einer Datenbank aufzeigt. Damit erkennen wir nicht nur die Unterschiede selbst, sondern können das Skript sogar nutzen, um die ältere der beiden Datenbanken auf den aktuellen Stand bringen. Das ist hilfreich, wenn wir eine beim Kunden befindliche Datenbank aktualisieren wollen. Wir erstellen dann einfach ein Skript mit den Unterschieden und führen es beim Kunden aus, damit er die aktuellste Version der Datenbank erhält. Für das Ermitteln der Unterschiede gibt es verschiedene Werkzeuge, etwa die SQL Server-Tools für Visual Studio Code, die leichtgewichtige Entwicklungsumgebung von Microsoft. In diesem Artikel zeigen wir, wie dieses installiert wird und wie wir die SQL Server-Tools aktivieren und nutzen, um die Unterschiede zwischen zwei Datenbanken in einem Skript zusammenzustellen.
SQL Server-Datenbank von Access aus updaten
Wenn wir eine Access-Anwendung mit SQL Server-Frontend an einen Kunden ausgeliefert haben, müssen wir sicherstellen, dass Updates problemlos funktionieren. Updates haben hier zwei Seiten: Einerseits kann das Access-Frontend um neue Funktionen erweitert werden, andererseits können diese Funktionen eine Anpassung der SQL Server-Datenbank erfordern. Das Aktualisieren der Access-Datenbank erfolgt im einfachsten Fall durch einfaches Ersetzen der .accdb-Datei. Beim Backend wird es ein wenig aufwendiger: Wir können es nicht einfach ersetzen, da die enthaltenen Daten im laufenden Betrieb bearbeitet wurden. Hier gibt es nun zwei Wege: Wir lassen uns ein Backup des Backends zukommen, aktualisieren es und spielen es anschließend wieder ein. Wenn die Anwendung bei mehreren Kunden verwendet wird, ist dies jedoch zu aufwendig. In diesem Fall können wir das Backend aber auch automatisch durch entsprechenden Code in der neuen Version des Frontends aktualisieren lassen. Wie das gelingt, zeigen wir in diesem Artikel.
VBA: Datei-Icons einlesen und speichern
Symbole und Icons spielen in Microsoft-Access-Anwendungen eine oft unterschätzte Rolle. Dabei können sie die Bedienbarkeit und Verständlichkeit einer Datenbank erheblich verbessern – insbesondere dann, wenn Dateien, Ordner oder Dokumenttypen visuell unterschieden werden sollen. Während Access für viele Steuerelemente wie TreeView, ListView, Symbolleisten oder Ribbon-Schaltflächen grundsätzlich Icon-Unterstützung bietet, stellt sich in der Praxis häufig die Frage:Wie lassen sich die echten System-Icons von Dateien – so wie sie auch im Windows-Explorer angezeigt werden – in einer Access-Anwendung verwenden? Genau das zeigen wir in diesem Artikel und liefern auch noch das Know-how, um die eingelesenen Icons direkt in der Tabelle MSysResources zu speichern. Von dort können wir sie beispielsweise in ein ImageList-Steuerelement schreiben – um sie dann in TreeView- und ListView-Steuerelementen anzuzeigen.
Access: Ordner und Dateien im Formular anzeigen
In Access-Anwendungen kann es interessant sein, Ordner und Dateien zu einem Datensatz verfügbar zu machen. Das bietet sich an, wann immer Dateien im Kontext eines Datensatzes in einem bestimmten Bereich im Dateisystem gespeichert sind – etwa zu Kunden, Projekten, Produkten und anderen Tabellen. In diesem Artikel zeigen wir, wie man die Verzeichnisse und Dateien eines Verzeichnisses über ein ListView-Steuerelement einfach in einem Formular anzeigen kann. Die Standardfunktionen zu diesen Elementen sollen direkt über die Einträge dieses ListView-Steuerelements verfügbar sein – zum Beispiel das Öffnen in der jeweiligen Zielanwendung, das Löschen einer Datei oder auch das Navigieren in unter- oder übergeordneten Verzeichnissen.
VBA: Early Binding und Late Binding
Wenn wir Objektvariablen deklarieren und instanzieren wollen, gibt es zwei Varianten: Early Binding und Late Binding. Beide haben ihre Daseinsberechtigung. Bei der ersten können wir IntelliSense nutzen, benötigen allerdings einen Verweis auf die jeweilige Bibliothek. Durch das Vorhandensein des Verweises ist die Performance außerdem ein wenig besser. Beim Late Binding deklarieren wir die Variable mit dem Typ Object und weisen diese anders zu. Hier benötigen wir keinen Verweis, was wiederum Vorteile mit sich bringt. Ferner können wir kein IntelliSense nutzen. In diesem Artikel zeigen wir zuerst die Unterschiede und die Vor- und Nachteile von Early Binding und Late Binding. Zudem stellen wir eine Möglichkeit vor, beide Varianten gleichzeitig zu definieren und zur Laufzeit zwischen den Methoden zu wechseln.
Per VBA von Early Binding zu Late Binding wechseln
Im Artikel »VBA: Early Binding und Late Binding« (www.vbentwickler.de/494) haben wir die beiden Methoden Early Binding und Late Binding vorgestellt und ihre Vor- und Nachteile beschrieben. Im vorliegenden Artikel zeigen wir nun eine automatische Lösung, um schnell einige oder alle per Early Binding definierten Elemente nach Late Binding zu migrieren. Dazu nutzen wir Code, der zunächst alle Early Binding-Elemente ermittelt, diese in einem Formular anzeigt und es dann ermöglicht, diese in Late Binding-Elemente umzuwandeln.
VBA: Bedingte Kompilierung nutzen
In VBA-Projekten kann es vorkommen, dass Anweisungen nur in bestimmten Situationen kompiliert werden sollen. Das bekannteste Beispiel sind die Deklarationen von API-Funktionen, die je nach VBA-Version mal in der 32-Bit- und mal in der 64-Bit-Variante bereitgestellt werden sollen. Da die 64-Bit-Version bei Verwendung von 32-Bit-Access unter Umständen Datentypen mit sich bringt, die es in der 32-Bit-Version nicht gibt, würde dies beim Kompilieren zu Fehlern führen. Daher gibt es die sogenannte bedingte Kompilierung, bei der man mit speziellen If…Then-Bedingungen dafür sorgen kann, dass nur die für die aktuelle Version relevanten Codezeilen kompiliert werden können. In diesem Artikel zeigen wir, wie die bedingte Kompilierung funktioniert. Außerdem stellen wir ein weiteres Beispiel vor, in dem wir entweder die Early Binding- oder die Late Binding-Verwendung von Variablen nutzen wollen – abhängig von einer zur Laufzeit gesetzten Bedingung.
