Fehler bei verknüpften ODBC-Tabellen in Recordsets

Wer eine Migration seiner Access-Datenbank zum SQL Server durchgeführt hat und dabei beispielsweise den SQL Server Migration Assistant genutzt hat, hofft vielleicht, damit schon am Ziel zu sein. Tatsächlich kann das in ganz wenigen Fällen so sein. Das ist aber nicht der Fall, wenn man nicht nur mit Abfragen, Formularen oder Berichten auf den nun statt der ursprünglichen Tabellen verwendeten Tabellenverknüpfungen arbeitet, sondern auch mit VBA – insbesondere mit DAO-Recordsets – auf diese Daten zugreift. Dabei treten gelegentlich Fehler auf. Warum diese nur gelegentlich auftreten und wie wir diese Fehler endgültig verhindern, zeigen wir in diesem Beitrag.

Weiterlesen

Benutzerdefinierter Navigationsbereich im Griff

Den Navigationsbereich von Access kennt jeder Access-Entwickler. Damit öffnen und verwalten wir die Access-Objekte beim Entwickeln einer Datenbankanwendung. Aber der Navigationsbereich bietet noch mehr Möglichkeiten, als einfach nur die Tabellen, Abfragen, Formulare, Berichte, Makros und Module sortiert nach Kategorien anzuzeigen und eine einfache Suchfunktion dafür bereitzustellen. Wir können damit auch noch benutzerdefinierte Kategorien und Gruppen erstellen, in denen wir die Objekte individuell strukturieren können. Während die Verwendung dieser Funktionen eher trivial ist, weshalb wir nur einen kurzen Blick darauf werfen, interessiert uns aus Entwicklersicht, wo diese Kategorien und Gruppen sowie die enthaltenen Elemente gespeichert werden. In diesem Beitrag werden die notwendigen Schritte beschrieben, um diese Einstellungen und Elemente bei der Übertragung der Anwendung in eine neue Datenbankdatei zu berücksichtigen.

Weiterlesen

Lastschriften mit DDBAC und VBA

Das Anlegen von Lastschriften ist eine wichtige Funktion, wenn man Kunden neben Zahlungsarten wie Rechnung, PayPal, Kreditkarte et cetera auch noch die Möglichkeit geben möchte, die Bankverbindung anzugeben, um den Betrag zum Fälligkeitsdatum einfach abbuchen zu lassen. Das ist gerade für wiederkehrende Leistungen wie Abonnements praktisch. Dazu sind jedoch erstens einige Voraussetzungen zu erfüllen wie zum Beispiel das Aktivieren der Möglichkeiten zum Einziehen von Lastschriften und das Beantragen einer sogenannten Gläubiger-Identifikationsnummer. Schließlich benötigen wir noch den passenden VBA-Code. Allein damit kommen wir aber nicht aus: Wenn wir gemütlich von unserer Datenbankanwendung aus Lastschriften anlegen wollen, benötigen wir eine zusätzliche Bibliothek. Dabei handelt es sich um die in vielen Anwendungen verwendete DDBAC-Bibliothek. Wie wir die einzelnen Schritte erledigen, um unsere Anwendung zum Anlegen von Lastschriften verwenden zu können, zeigen wir in diesem Beitrag.

Weiterlesen

Dateidownload per API

Manchmal kommt es vor, dass man einen oder mehrere Downloads durchführen muss. Normalerweise führt man diesen Download durch einen Klick auf den entsprechenden Link durch. Die Datei landet danach üblicherweise im Download-Ordner, von wo wir ihn dann zum gewünschten Ort verschieben. Wenn wir zuvor die URL der herunterzuladenden Datei kennen und auch wissen, in welchen Ordner und unter welchem Namen die Datei im System landen soll, können wir dies auch per VBA realisieren. Dazu benötigen wir nur eine einfache API-Funktion und ihren Aufruf.

Weiterlesen

Early Binding und Late Binding gleichzeitig nutzen

Early Binding und Late Binding sind zwei Konzepte für das gleiche Ziel: Die Eigenschaften und Methoden von Elementen einer Bibliothek unter VBA verfügbar zu machen. Beide unterscheiden sich in verschiedenen Punkten und haben Vor- und Nachteile. Diese ein wenig auszugleichen ist das Ziel dieses Beitrags: Wir wollen zeigen, wie Sie die Vorteile von Early Binding wie den Einsatz von IntelliSense nutzen können, und gleichzeitig schnell zu Late Binding zu wechseln, um die dortigen Vorteile zu nutzen. Dazu schauen wir uns zunächst noch einmal die wesentlichen Unterschiede an und kommen dann zu unserer Idee, beide Versionen parallel zu nutzen – mit einer Technik namens „bedingte Kompilierung“.

Weiterlesen

Outlook.com mit Access und VBA: Vorbereitungen

Das Damoklesschwert der Abkündigung des klassischen Outlook schwebt über unseren Häuptern: Microsoft treibt die Einführung des neuen Outlook voran und damit zieht sich die Schlinge für alle zusammen, die aktuell beispielsweise von ihrer Access-Anwendung aus per VBA auf Outlook zugreifen. Auf das neue Outlook können wir nicht mehr direkt per VBA zugreifen. Wir brauchen einen neuen Weg, um E-Mails zu versenden, Kontakte zu synchronisieren oder auch um Kalendereinträge zu verwalten. Das liest sich erst einmal nachteilig. In diesem und einigen weiteren Beiträgen wollen wir uns mit alternativen Möglichkeiten beschäftigen, um per VBA aus unserer Datenbankanwendung heraus Outlook zu steuern. In diesem Fall nicht mehr unser gewohntes, klassisches Outlook, aber auch nicht direkt das neue Outlook. Stattdessen zeigen wir, wie man direkt mit den Diensten von Outlook interagieren kann, die wir auch über Outlook.com verwenden können. In diesem Beitrag zeigen wir, wie die Vorbereitung für den Zugriff auf unser Outlook.com-Konto abläuft.

Weiterlesen

Mails senden mit der Microsoft Graph API

Im Beitrag „Outlook.com mit Access und VBA: Vorbereitungen“ haben wir gezeigt, wie wir die Voraussetzungen für den Zugriff auf unser Outlook-Konto mit der Rest-API von Microsoft erschaffen. Dabei haben wir eine Anwendung bei Microsoft registriert und die notwendigen Daten wie die Application-ID, die Tenant-ID und die SecretID ermittelt, die wir für den Zugriff auf die Rest-API benötigen. Außerdem haben wir dort die benötigten Berechtigungen eingestellt, hier erst einmal für das Senden von E-Mails. Was wir nun benötigen, sind zwei Dinge: Erstens ein Token, das wir für die Authentifizierung bei der Rest-API benötigen, zweitens den VBA-Code für die Ausführung der eigentlichen Rest-API-Aufrufe. Damit erstellen wir eine erste Prozedur, mit der wir E-Mails über unser Outlook.com-Konto versenden können. Darauf aufbauend werden wir in weiteren Beiträgen zeigen, wie wir weitere Funktionen implementieren können.

Weiterlesen

Mails mit Microsoft Graph API per Klasse versenden

In den vorherigen Beiträgen haben wir uns bereits verschiedene Themen rund um die Versendung von E-Mails mit der Microsoft Graph API angeschaut. Dabei haben wir uns angesehen, wie wir einen Outlook-Account erstellen, wie wir dafür sorgen, dass wir per Microsoft Graph API auf diesen zugreifen, und wir damit E-Mails versenden. Die erarbeiteten Techniken werden wir in diesem Beitrag noch auf ein neues Level heben: Wir erstellen eine Klasse, die alle notwendigen Eigenschaften und Methoden enthält, um die Daten einer E-Mail hinzuzufügen und die E-Mail schließlich zu versenden.

Weiterlesen

Konto bei Outlook.com anlegen und nutzen

Wenn wir in Zukunft per VBA auf unsere E-Mails, Termine, Kontakte et cetera zugreifen wollen, gelingt das über die Microsoft Graph-Rest API. Diese wiederum eignet sich primär für den Zugriff auf die Daten eines Outlook.com-Kontos. In diesem Beitrag zeigen wir, wie Sie ein solches Konto anlegen und dieses nutzen. Dazu gehört die Verwendung über die Weboberfläche, aber auch die Integration in die verschiedenen Outlook-Versionen. Dabei schauen wir uns das klassische Outlook ebenso an wie das neue „New Outlook“.

Weiterlesen

Referenzieren von Formularen und Steuerelementen

Wenn man mit VBA programmiert, kommt man nicht um das Referenzieren von Formularen und Steuerelementen herum. Dabei gibt es verschiedene Schreibweisen, verschiedene Ziele und auch noch verschiedene Ausgangspunkte. Bei den Schreibweisen scheiden sich die Geister, ob man Punkte oder Ausrufezeichen verwendet und wie detailliert oder kurz es sein soll. Die Ziele sind Formulare, Unterformulare und die darin enthaltenen Steuerelemente mit oder ohne Datenbindung. Und warum gibt es verschiedene Ausgangspunkte? Weil man einerseits vom Klassenmodul eines Formulars selbst auf die enthaltenen Steuerelemente zugreifen möchte, andererseits aber auch von Formularen auf die Elemente anderer Formulare oder auch von Prozeduren aus Standardmodulen. Wie all dies zusammenhängt und wie die Ausdrücke für die verschiedenen Konstellationen formuliert werden müssen, zeigen wir in diesem Beitrag.

Weiterlesen