VBA [basics]: Klassenmodule für Formulare und Berichte

Neben Standardmodulen und alleinstehenden Klassenmodulen landen früher oder später noch die Klassenmodule von Formularen und Berichten im Projekt-Explorer Ihres VBA-Projekts. Diese legt Access in der Regel „nebenbei“ für uns an, wenn wir eine Ereignisprozedur für ein Formular, einen Bericht oder ein Steuerelement anlegen. Wir zeigen in diesem Artikel erst einmal die Grundlagen für den Umgang mit den Klassenmodulen für Formulare und Berichte und legen dabei wenige Beispielereignisprozeduren an. In weiteren Artikeln gehen wir dann umfassend auf die Techniken zum Programmieren von Formularen und Berichten ein.

Weiterlesen

VBA [basics]: Einführung in den VBA-Editor

Der VBA-Editor ist die Schaltzentrale für die Programmierung unter VBA. Hier legen Sie Routinen an, schreiben den Code, starten die Ausführung von manchen Routinen zum Debuggen. Bevor wir damit starten, wollen wir allerdings erst einmal die einzelnen Elemente des VBA-Editors vorstellen. Deshalb werfen wir in diesem Artikel einen Blick auf Elemente wie die Menüs und ihre Einträge, die Symbolleisten, das Code-Fenster, den Direktbereich, den Objektkatalog das Lokalfenster, das Überwachungsfenster, die Aufrufe-Liste und das Verweise-Fenster und erläutern kurz, wozu diese dienen. Später werden wir in weiteren Artikel im Detail auf die einzelnen, am meisten verwendeten Elemente eingehen.

Weiterlesen

VBA [basics]: Projekten, Modulen und Klassen verwalten

In einer Access-Datei, also einer Datei mit der Endung .mdb oder .accdb (oder anderen, ähnlichen Endungen für Spezialfälle), finden wir genau ein VBA-Projekt, das zu dieser Datei gehört (es kann noch weitere eingebundene Projekte geben, aber das ist ein fortgeschrittenes Thema). Dieses Projekt enthält Module und Verweise auf einzubindende Bibliotheken. Die Module teilen sich wieder auf in Standardmodule und Klassenmodule. Die Klassenmodule teilen sich auf in alleinstehende Klassenmodule und Klassenmodule, die zu einem Formular oder Bericht gehören. Diese Begriffe schauen wir uns im vorliegenden Artikel an und zeigen, wie wir diese optimal im VBA-Editor verwalten können.

Weiterlesen

VBA [basics]: Aller Anfang ist leicht

Aller Anfang ist leicht? Nun: Das bezieht sich darauf, dass man – im Gegensatz zu anderen Programmiersprachen wie den .NET-Sprachen, PHP oder anderen – einfach nur eine Access-Datenbank laden und den VBA-Editor öffnen muss, um Code einzugeben und diesen direkt ausprobieren zu können. Wir brauchen das Projekt nicht zu erstellen, wir müssen keinen Browser öffnen, um sich die Ausgabe anzusehen oder eine .exe kompilieren – einfacher geht es nicht! Damit starten wir in unsere VBA [basics]-Reihe und machen ein paar erste Schritte im VBA-Editor von Access.

Weiterlesen

Tabellen [basics]: Neue Indizes per Autoindex und Co.

Eigentlich geht man davon aus, dass man sich selbst um das Anlagen von Indizes kümmern muss. Indizes sorgen dafür, dass Daten in den betroffenen Feldern indiziert werden und dass wir diese Felder schneller sortieren und filtern können. Aber ist das wirklich so? Muss man jeden Index einzeln anlegen? Das ist nicht der Fall: Access hat verschiedene Mechanismen, die automatisch Indizes anlegen. Welche das sind und wie wir ihren Einsatz steuern können, beschreiben wir in diesem Artikel.

Weiterlesen

Formulare [basics]: Probleme mit Form und Subform

Nutzen wir ein Haupt- und ein Unterformular zur Darstellung von Daten aus 1:n- oder m:n-Beziehungen, kann es zu unerwarteten Problem kommen: Plötzlich verschwinden Datensätze aus dem Unterformular oder es tauchen später Datensätze in der Tabelle mit dem an der Beziehung beteiligten Fremdschlüsselfeld auf, die keinen Wert in diesem Feld haben. In beiden Fällen kann es sein, dass eine unbewusste Fehlbedienung des Gespanns aus Haupt- und Unterformular verantwortlich ist. In diesem Artikel schauen wir uns zunächst einmal an, wie wir diese Probleme reproduzieren können und schauen uns dann einen praktischen Lösungsansätze an.

Weiterlesen

Abfragen [basics]: Nach Zahlenfeldern filtern

Wenn wir eine Produkttabelle nutzen, die Zahlenfelder wie beispielsweise zum Speichern des Einzelpreises enthalten, können wir diese zum Filtern nach bestimmten Preisen oder Preisbereichen verwenden. Das ist ein perfekter Einsatzzweck für Abfragen. Diese können wir für die betroffenen Felder mit einen oder mehreren Kriterien ausstatten, die wir dann auch noch mit Operatoren wie Und oder Oder verknüpfen können. Außerdem lassen sich für Zahlen, um die es sich hier handelt, exakte Vergleiche durchführen, Zahlen in bestimmten Bereichen ermitteln und vieles mehr. Dieser Artikel zeigt, wie Sie optimal nach Datensätzen mit bestimmten Werten in Zahlenfeldern suchen.

Weiterlesen

Formulare [basics]: m:n-Beziehung mit Listenfeldern

Im Artikel haben wir uns bereits angesehen, wie man die Daten einer m:n-Beziehung mit Haupt- und Unterformular verwalten kann. Wir wollen nun eine Alternative dazu betrachten, bei der wir die Daten der beiden per m:n-Beziehung verknüpften Tabellen mithilfe zweier Listenfelder anzeigen und verwalten wollen. In diesem Fall schauen wir uns die Daten der Tabellen tblBuecher und tblKategorien an, die über die Tabelle tblBuecherKategorien miteinander verknüpft sind. Wir wollen dazu in einem Formular jeweils einen Buchdatensatz anzeigen in zwei Listenfeldern jeweils die dem Buch zugeordneten Kategorien und die nicht zugeordneten Kategorien. Als Sahnehäubchen fügen wir noch einige VBA-Funktionen hinzu, mit denen wir einem Buch neue Kategorien zuweisen oder diese entfernen können.

Weiterlesen

Tabellen [basics]: Von der 1:n- zur m:n-Beziehung

Bei der Datenmodellierung hat man nicht immer alle Aspekte vom ersten Augenblick an im Blick. Es kann passieren, dass Felder nachträglich hinzugefügt werden müssen, dass wir ihren Datentyp ändern wollen oder dass ein Tabellen- oder Feldname noch angepasst werden soll. Es kommt jedoch auch vor, dass wir eine Beziehung nicht von Anfang an so gestalten, dass sie späteren Praxisanforderungen gerecht wird. In diesem Fall wollen wir uns den Fall anschauen, wo wir eingangs dachten, wir kämen mit einer 1:n-Beziehung aus, aber letztendlich stellte sich heraus, dass eine m:n-Beziehung doch sinnvoller ist. Wir schauen uns in diesem Artikel an, wie wir eine solche Beziehung von 1:n auf m:n umstellen können, damit wir anschließend flexibler Daten zuordnen können.

Weiterlesen

Tabellen [basics]: Vom Textfeld zum Lookup-Feld

Bei der Datenmodellierung hat man nicht immer alle Aspekte vom ersten Augenblick an im Blick. Es kann passieren, dass Felder nachträglich hinzugefügt werden müssen, dass wir ihren Datentyp ändern wollen oder dass ein Tabellen- oder Feldname noch angepasst werden soll. Es kommt jedoch auch vor, dass wir Daten erst einmal in ein Textfeld schreiben und dann feststellen, dass dieses Textfeld immer wieder die gleichen Daten aufnimmt. In diesem Fall kommt es leicht dazu, dass eigentlich gleiche Werte mit unterschiedlich Schreibweise eingetragen werden. Will man nach diesen Werten filtern und gibt nur eine Schreibweise ein, erhält man nicht alle Datensätze, die man eigentlich sehen möchte. Um dies zu verhindern, kann man solche Textfelder durch Nachschlagefelder ersetzen, die ihre Werte aus Lookup-Tabellen beziehen. So sieht man bei der Eingabe direkt, dass ein Wert bereits vorhanden ist und kann diesen nutzen, statt weitere Schreibweisen hinzuzufügen. Wie wir eine solche Änderung nachträglich durchführen, zeigen wir in diesem Artikel.

Weiterlesen