Programmieren mit Makros, Teil II

Makros sind eine Möglichkeit, einfache Vorgänge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung – zum Beispiel in Form zweier Spezialmakros namens AutoExec und AutoKeys, die beim Start beziehungsweise beim Ausführen von Tastenkombination aufgerufen werden können. Da Microsoft mit Access 2010 die Webdatenbanken eingeführt hat, die ausschließlich mit Makros programmiert werden können, wollen wir an dieser Stelle eine Einführung in die Programmierung mit Makros bieten.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1403_Makros.mdb.

Steuerelemente und Co.

Mit FestlegenEigenschaft stellen Sie den Wert einer Eigenschaft eines Steuerelements oder auch eines Formulars oder Berichts ein. Die Makroaktion erwartet die folgenden Parameter:

  • Steuerelementname: Geben Sie hier den Namen des Steuerelements an, also beispielsweise txtText. Wenn Sie diesen Parameter leer lassen, bezieht sich die Makroaktion auf das Objekt, das aktuell den Fokus besitzt. Sie müssen dieses also gegebenenfalls zuvor noch aktivieren (mit öffnenFormular, öffnenBericht oder AuswählenObjekt).
  • Eigenschaft: Stellen Sie hier die betroffene Eigenschaft ein. Sie können lediglich die folgenden Eigenschaften verwenden: Aktiviert, Sichtbar, Gesperrt, Links, Breite, Oben, Höhe, Vordergrundfarbe, Hintergrundfarbe, Beschriftung und Wert.
  • Wert: Geben Sie hier den Wert für die Eigenschaft ein. Für Eigenschaften, welche die Werte Wahr/Falsch beziehungsweise True/False erwarten, geben Sie die Werte –1 oder 0 an.

Ein Beispiel folgt weiter unten.

Die Makroaktion BearbeitenListenElemente öffnet den Dialog, mit dem Sie die Listeneinträge eines Kombinationsfeldes oder Listenfeldes bearbeiten können. Dabei gibt es folgende Voraussetzungen: Das Steuerelement muss zuvor den Fokus erhalten, es muss seine Daten in einer Wertliste anzeigen (Eigenschaft Herkunftsart) und die Eigenschaft Wertlistenbearbeitung zulassen muss den Wert Ja enthalten.

Der mit der Makroaktion geöffnete Dialog sieht wie in Bild 1 aus (siehe auch Formular frmBearbeitenListenElemente).

öffnen des Dialogs zum Anzeigen einer Wertliste zur Bearbeitung

Bild 1: öffnen des Dialogs zum Anzeigen einer Wertliste zur Bearbeitung

Datensatzoperationen

Wie Sie den Datensatzzeiger bewegen und wie Sie einen neuen Datensatz anzeigen, haben Sie in den vorherigen Abschnitten gelernt. Schauen wir uns nun an, welche Operationen mit Datensätzen Sie noch mit der Hilfe von Makros durchführen können.

Die Makroaktion DatensatzLöschen etwa erlaubt das Löschen des aktuellen Datenatzes. Um einen Datensatz zu löschen, aktivieren Sie im gleichen Makro zuvor das Objekt, in diesem sich der zu löschende Datensatz befindet. Wenn Sie eine Schaltfläche etwa in einem Detailformular anlegen, dass selbst den zu löschenden Datensatz anzeigt, braucht diese lediglich die Makroaktion DatensatzLöschen aufzurufen. Ein Beispiel dazu finden Sie im Formular frmArtikelDetail.

Wenn Sie hingegen einen Datensatz in einem Unterformular oder in einem anderen Formular speichern möchten, müssen Sie das entsprechende Element zuvor mit dem Fokus versehen (siehe Schaltfläche Datensatz löschen im Formular frmArtikel).

Die Makroaktion DatensatzSpeichern speichert den aktuellen Datensatz in dem Objekt, das den Fokus besitzt. Hier sehen wir uns ein etwas umfangreicheres Beispiel an (siehe Bild 2).

Anlegen und speichern eines neuen Datensatzes

Bild 2: Anlegen und speichern eines neuen Datensatzes

Das Makro aus der Abbildung (siehe Formular frmArtikelDetail) erledigt drei Schritte:

  • Es erstellt einen neuen Datensatz.
  • Es füllt das Steuerelement Artikelname mit einem Wert, damit der Datensatz in Bearbeitung und ungespeichert ist.
  • Dann ruft es die Makroaktion SpeichernDatensatz auf (die eigentlich der Makroaktion AusführenMenübefehl mit dem Wert DatensatzSpeichern entspricht) und speichert somit den Datensatz.

Gegebenenfalls möchten Sie auch einmal die änderungen an einem bereits in Bearbeitung befindlichen und noch nicht gespeicherten Datensatzes rückgängig machen. Dies erledigt man normalerweise mit der Escape-Taste, aber nicht jeder Benutzer ist sich dieser Funktion bewusst.

Also fügen wir dem Formular frmArtikelDetail noch eine Schaltfläche hinzu, welche die änderungen seit dem letzten Speichervorgang rückgängig macht.

Dazu verwenden wir schlicht und einfach die Makroaktion RückgängigDatensatz, die wiederum der Makroaktion AusführenMenübefehl mit dem Parameterwert RückgängigDatensatz entspricht. Ein Beispiel finden Sie hinter der Schaltfläche änderungen rückgängig machen im Formular frmArtikelDetail.

Ereignisse abbrechen

VBA bietet in den Ereignisprozeduren von Ereignissen wie etwa Beim öffnen oder Vor Aktualisierung einen Parameter namens Cancel an. Wenn Sie diesen auf True einstellen, wird die Aktion, die diesem Ereignis folgt, abgebrochen.

So wird beispielsweise das Formular nicht geöffnet, wenn bestimmte Bedingungen eintreten, unter denen Cancel auf True eingestellt wird oder ein Datensatz wird nicht aktualisiert.

Diese Möglichkeit gibt es auch bei Makros, die durch Formular- oder Berichtsereignisse ausgelöst werden. Nur sieht dies hier etwas anders aus, da durch Ereignisse ausgelöste Makros keine Parameter besitzen. Stattdessen rufen Sie in diesem Fall die Makroaktion AbbrechenEreignis auf.

Daten aktualisieren

Zum Aktualisieren der Daten in geöffneten Tabellen, Abfragen oder Formularen bietet Access verschiedene Methoden an.

Die Makroaktion Aktualisieren entspricht eigentlich der Makroaktion AusführenMenübefehl mit dem Wert Aktualisieren für den Parameter Wert und aktualisiert die Daten des aktuellen Objekts. Dabei wird die Datenherkunft nicht erneut abgefragt, sondern nur die aktuell angezeigten Datensätze. Das heißt, dass gelöschte oder eventuell hinzugefügte Datensätze nicht berücksichtig werden.

Die Makroaktion AktualisierenDatensatz arbeitet genauso wie die Makroaktion Aktualisieren.

Die Makroaktion AktualisierenDaten erwartet als optionalen Parameter den Namen eines Steuerelements. Wenn Sie diesen festlegen, wird das genannte Steuerelement aktualisiert (typischerweise eines mit einer Datensatzherkunft wie ein Kombinationsfeld oder ein Listenfeld). Geben Sie kein Steuerelement an, aktualisiert die Makroaktion das aktuelle Objekt, also beispielsweise eine Tabelle, eine Abfrage oder ein Formular. Im Gegensatz zur Makroaktion Aktualisieren werden hier auch gelöscht und neu hinzugefügte Datensätze berücksichtigt.

Die Makroaktion AktualisierenObjekt aktualisiert die Anzeige im einem mit den beiden Parametern Objekttyp und Objektname angegebenen Objekt, in der Regel einem Formular. Damit erzwingen Sie die Anzeige etwa in berechneten Feldern, die sonst nicht sofort angezeigt würden, weil beispielsweise noch andere Aufgaben erledigt werden müssen.

Formular filtern

Wenn Sie in einem Formular nach bestimmten Daten suchen wollen, lässt sich dies auch per Makro realisieren. Dazu verwenden Sie die Makroaktion FestlegenFilter.

Wenn Sie beispielsweise alle Datensätze des Unterformulars anzeigen möchten, deren Feld Artikelname dem im Suchfeld txtSuche eingegebenen Begriff entspricht, verwenden Sie die folgenden Parameter für diese Makroaktion:

  • Filtername: Name einer Abfrage, deren WHERE-Bedingung als Kriterium verwendet werden soll
  • Bedingung: [Artikelname] = [txtSuche]
  • Steuerelementname: sfmArtikel

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar