Manchmal benötigt man eine 1:1-Kopie der Daten aus einer Access-Tabelle in einer anderen Tabelle – vielleicht in der gleichen, vielleicht aber auch in einer anderen Datenbank. Das ist mit entsprechenden Einfügeabfragen kein Problem, solange kein anderes Datenbanksystem wie etwa der SQL Server als Ziel in Frage kommt – und Sie gleichzeitig die Daten nicht nur einfach einfügen, sondern auch noch die Inhalte der Autowertfelder beibehalten wollen. Dieser Beitrag zeigt praktische Erfahrungen und Lösungsweise für spezielle Migrationsvorhaben auf.
Das SQL Server Management Studio gibt es mittlerweile als kostenlosen Download, den Sie separat zu einer bestehenden SQL Server-Datenbank installieren können. Da es mittlerweile mit LocalDB auch eine sehr schlanke SQL Server-Version gibt, wollen wir uns einmal anschauen, wie Sie mit diesen beiden Softwarekomponenten eine SQL Server-Datenbank aufsetzen können. Dabei wollen wir unsere oft genutzte Beispieldatenbank Suedsturm.mdb nachbilden.
Wenn Sie von Access aus auf die Daten einer SQL Server-Datenbank (und neuerdings auch auf LocalDB-Datenbanken) zugreifen wollen, müssen Sie mit Bordmitteln arbeiten, die häufig nicht zufriedenstellend sind. Wir haben einen Satz von Tools entwickelt, mit denen Sie eine Reihe von Aufgaben sehr schnell erledigen können: Verbindungen definieren, Tabellen verknüpfen und SQL-Abfragen direkt an den Server schicken. Dieser Beitrag zeigt, wie Sie mithilfe eines Teils dieser Tools per VBA auf SQL Server und Co. zugreifen.
Die Ausgabe von Rechnungen dürfte einer der beliebtesten Anwendungszwecke für die Erstellung von Berichten sein. Gleichzeitig sind Rechnungsberichte aber auch eine der anspruchsvollsten Aufgaben – zumindest, wenn man sämtlichen Schnickschnack wie Zwischensumme und Übertrag, vernünftige Aufteilung der Positionen bei mehrseitigen Berichten, keine letzte Seite ohne wesentliche Informationen et cetera berücksichtigen will. Und wenn Sie dann noch mehrere Rechnungen in einem Bericht abbilden wollen, haben Sie das Ziel erreicht.
Evernote ist ein sehr praktisches Tool, um Informationen zu sammeln und auf allen möglichen Endgeräten verfügbar zu machen. Schreiben Sie etwa eine Notiz in der Evernote-App auf dem Smartphone, können Sie diese später am Desktop-Rechner weiternutzen. Oder Sie speichern Rechnungen vom heimischen Rechner und können diese, wenn Sie mal etwas umtauschen wollen, wieder auf dem Smartphone abrufen. All dies wird natürlich noch interessanter, wenn Sie auch noch per Access-Datenbank auf die gespeicherten Daten zugreifen oder diese VBA-gesteuert erweitern können.
XML-Dokumente erscheinen je nach Größe auf den ersten Blick oft unübersichtlich und mächtig. Wie soll man hier die gewünschten Daten extrahieren – und das auch noch programmgesteuert per VBA? Beispielsweise, um Informationen aus einem XML-Dokument in eine Access-Tabelle zu übertragen? Dafür steht die Abfragesprache XPath zur Verfügung. Sie erlaubt es, mit verschiedenen Ausdrucken gezielt auf Elemente mit bestimmten Namen oder Eigenschaften zuzugreifen. Dieser Beitrag zeigt anhand einiger Beispiele, wie Sie XPath unter Access/VBA einsetzen.
Beim Umgang mit XML-Dokumenten per VBA gibt es ein paar kleine Dinge, die Sie beachten müssen. Eines davon ist die Version der Bibliothek Microsoft XML, vx.0. In diesem Beitrag zeigen wir die für den Einsatz mit VBA relevanten Unterschiede auf. Dabei erfahren Sie, welche der beiden populärsten Versionen, nämlich die Version 3.0 und die Version 6.0, die für Ihren Anwendungszweck optimale Version ist.
Webservices können nicht nur Texte und Zahlen liefern oder entgegennehmen, sondern auch etwa mit Bildern oder PDF-Dateien arbeiten. So könnten Sie einen Webservice nutzen, der Bilder bearbeitet oder umwandelt oder mit einem, der ein PDF für eine bestimmte Dienstleistung liefert und dazu in einen XML-Response verpackt – zum Beispiel eine Versandmarke et cetera. Für solche Fälle kann es hilfreich sein, zu wissen, wie Sie die endlosen Zahlenkombinationen aus dem XML-Dokument in eine Datei umwandeln – und umgekehrt.
Mit den eingebauten Funktionen für den Export von Daten aus Tabellen und Abfragen in das XML-Format können Sie bereits recht gute Ergebnisse erzielen. Natürlich können Sie aber nicht komplett steuern, wie das Zieldokument später aussehen wird. Je nach den Anforderungen der Anwendung, die das XML-Dokument weiterverarbeiten soll, sind noch Änderungen notwendig. Hier tritt die Transformation von XML-Dokumenten auf den Plan: Mit einer sogenannten .xslt-Datei legen Sie fest, wie ein Dokument in ein anderes umgeformt werden soll. Den vollständigen Vorgang steuern Sie dann per VBA-Prozedur. Dieser Beitrag liefert die Grundlagen der Transformation und die notwendigen VBA-Techniken.
Access stellt verschiedene Möglichkeiten für den Export von Daten im XML-Format zur Verfügung. Die Variante, mit der Sie Tabellen über die Benutzeroberfläche in das XML-Format exportieren können, können Sie natürlich auch per VBA nutzen – und zwar mit dem Befehl »ExportXML« des »Application«-Objekts. Dieser Beitrag zeigt, welcher Parameter welcher Option entspricht und welche zusätzlichen Features Sie per VBA erhalten.
Für den einen oder anderen Anwendungsfall benötigen Sie die Daten aus den Tabellen Ihrer Datenbank im XML-Format – zum Beispiel, um diese von einer anderen Anwendung aus einzulesen. Access stellt verschiedene Möglichkeiten für den Export von Daten im XML-Format zur Verfügung. Wir schauen uns an, wie dies über die Benutzeroberfläche gelingt und welche Möglichkeiten VBA für diesen Zweck bietet – diesmal ohne Nutzung externer Bibliotheken, also ausschließlich mit Bordmitteln.
Neben den verschiedenen Bereichen und Steuerelementen liefern Berichte auch eine Reihe von Ereigniseigenschaften, für die Sie wie bei Formularen Ereignisprozeduren hinterlegen können. Zwei Ereignisse, die man üblicherweise nicht besonders oft benötigt, heißen Bei Aktivierung und Bei Deaktivierung. Wir zeigen, wie Sie diese einsetzen können: nämlich, um Elemente im Ribbon abhängig von diesen beiden Ereignissen zu aktivieren oder deaktivieren – zum Beispiel zum Ein- oder Ausschalten einer Drucken-Schaltfläche.