Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2006.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie fortgeschrittene Techniken mit Makros kennen.

Techniken

Makros

Voraussetzungen

Access 97 und höher

Beispieldatenbank

Makros97.mdb, Makros00.mdb

Makros, Teil 2: Fortgeschrittene Techniken

Martin Hoffmann, Düsseldorf

Nach den Grundlagen im ersten Teil dieser Beitragsreihe legen Sie nun richtig los: Am Beispiel eines Formulars zur Eingabe von Kundendaten erfahren Sie, wie Sie Makros verschiedenen Ereignissen zuweisen, wie Sie Bedingungen in Makros unterbringen und wie Sie die Befehle eines Makros auf mehrere Makros aufteilen.

Telefonnummer als Faxnummer übernehmen

Eine wichtige Aufgabe von Makros ist das Auslesen und Verändern von Feldinhalten. Auf diese Weise können Werte kopiert, initialisiert oder umgewandelt werden.

Im folgenden Beispiel erstellen Sie ein Makro, welches im Kundenformular frmKunden die Telefonnummer kopiert und diese dann im Feld Telefaxnummer speichert.

Dadurch ersparen Sie sich die erneute Eingabe der in vielen Fällen gleichen Nummer für Telefon und Fax. Ein Klick auf die Schaltfläche genügt.

Verweise auf Steuerelemente

Um innerhalb eines Makros den Inhalt des Feldes Telefonnummer auslesen zu können, müssen Sie einen Verweis auf dieses Steuerelement erstellen. Die Syntax eines solchen Verweises lautet in der Kurzform:

Formulare!<Formularname>!
<Steuerelementname>

Diesen vollständigen Verweis müssen Sie angeben, wenn Sie von außerhalb des Formulars auf Steuerelemente zugreifen möchten. Im Beispiel soll die Schaltfläche zum Kopieren der Telefonnummer jedoch im Kundenformular platziert werden. Es reicht deshalb aus, den Namen des Steuerelements anzugeben. Als Formularname wird automatisch das Formular eingesetzt, von dem aus das Makro aufgerufen wird. Der Verweis lautet also lediglich:

<Steuerelementname>

Erstellen der Schaltfläche

Im Abschnitt Erstellen eines Hauptmenüs des ersten Teils dieser Beitragsreihe (s. Shortlink 373) haben Sie zunächst ein Makro und anschließend per Drag-and-Drop die entsprechende Schaltfläche im Formular angelegt. Zum Erstellen der Schaltfläche im Kundenformular gehen Sie den umgekehrten Weg.

Abb. 1: Legen Sie eine Befehlsschaltfläche für das Makro an.

Sie fügen zuerst die Schaltfläche in das Formular ein und anschließend legen Sie über den Makro-Editor die Aktionen fest.

Öffnen Sie das Kundenformular in der Entwurfsansicht. Das Formular enthält ein Register, in dem die Kundendaten übersichtlich gruppiert sind.

Im zweiten Registerblatt finden Sie die Telefon- und Telefaxnummer. Hier ist der richtige Platz für die Schaltfläche. Klicken Sie auf das Register Kommunikation, um es zu aktivieren und die Steuerelemente sichtbar zu machen.

Öffnen Sie nun die Toolbox über das gleichnamige Symbol in der Symbolleiste und legen Sie im Register eine neue Befehlsschaltfläche rechts neben der Telefaxnummer an (s. Abb. 1).

Geben Sie nun der Befehlsschaltfläche im Eigenschaftsfenster den Namen btnTelefonÜbernehmen. Als Beschriftung tragen Sie Telefonnummer übernehmen ein.

Anlegen des Makros

Die Telefonnummer soll bei einem Klick auf die Schaltfläche in das Telefaxfeld kopiert werden.

Sie benötigen also eine Verknüpfung des Makros mit der Eigenschaft Beim Klicken der Schaltfläche. Aktivieren Sie im Eigenschaftsfenster der Schaltfläche das Register Ereignis und klicken Sie auf die Editor-Schaltfläche rechts neben der Eigenschaft Beim Klicken (s. Abb. 2).

Im folgenden Dialog wählen Sie den Makro-Generator aus der Liste und bestätigen mit OK (s. Abb. 3).

Access öffnet dann sofort ein neues, leeres Makrofenster und fordert Sie zur Eingabe eines Namens auf, unter dem es das Makro speichert. Geben Sie den Namen makTelefonÜbernehmen ein.

Abb. 2: So rufen Sie den Dialog zur Auswahl des Makro-Generators auf.

Abb. 3: Wählen Sie den Generator aus.

Eingeben der benötigten Aktionen

Das Makro ist jetzt für die Eingabe der Aktionen bereit. Da Sie den Inhalt des Feldes Telefaxnummer verändern müssen, ist die erste Aktion die SetzenWert-Aktion. Damit weisen Sie einem Feld einen Ausdruck zu. Dies kann eine Berechnung, eine fester Wert oder wie in diesem Fall der Inhalt eines anderen Feldes sein.

Abb. 4: Kopieren Sie Daten mit der SetzenWert-Aktion.

Abb. 5: Sie aktualisieren Felder mit der Aktion AktualisierenDaten.

Abb. 6: So funktioniert das Übernehmen der Telefonnummer per Knopfdruck.

Wählen Sie die SetzenWert-Aktion aus der Liste aus und tragen Sie im Argument Feld den Ausdruck TelefaxGeschäftlich ein.

Da Sie das Makro vom Formular Kunden aus aufrufen, bezieht sich der relative Verweis auf das Steuerelement dieses Formulars. Würde die Schaltfläche beispielsweise in einem anderen Formular liegen, müssten Sie den vollständigen Ausdruck Formulare!frmKunden!TelefaxGeschäftlich angeben.

Hinweis

Achten Sie bei der Eingabe von Feldnamen in Ausdrücken darauf, dass diese in eckige Klammern gesetzt werden müssen, wenn sie Sonderzeichen enthalten. Zum Beispiel werden [Kunden-Nr] oder [Kunden Nummer] ohne eckige Klammern von Access nicht oder falsch interpretiert. In der Beispieldatenbank Makros.mdb kommen deshalb in keinem Feldnamen Sonderzeichen vor - ein Problem weniger, auf das Sie achten müssen. Außerdem setzt Access Feldnamen ohne Sonderzeichen automatisch in eckige Klammern, wie in Abb. 4 zu sehen ist. (

Der Wert, den das Feld erhalten soll, steht im Steuerelement TelefonGeschäftlich des gleichen Formulars. Geben Sie diesen Namen im Parameter Ausdruck an.

Damit nach dem Kopieren der neue Inhalt des Feldes TelefaxGeschäftlich sichtbar wird, müssen Sie das Feld noch aktualisieren. Dies geschieht mit der Aktion AktualisierenDaten. Als Steuerelementnamen tragen Sie im gleichnamigen Aktionsargument TelefaxGeschäftlich ein (s. Abb. 5).

Sichern Sie die Änderungen am Makro mit dem Menübefehl Datei/Speichern. Beim Schließen des Makros trägt Access automatisch den zuvor gegebenen Makronamen in der Eigenschaft BeimKlicken der Schaltfläche ein.

Um die neue Funktion auszuprobieren, wechseln Sie in die Formularansicht und aktivieren das Register Kommunikation. Legen Sie zu Testzwecken einen neuen Kunden an und geben Sie eine Telefonnummer ein. Klicken Sie anschließend auf die Schaltfläche Telefonnummer übernehmen. Die Telefonnummer erscheint dann im Feld Telefax geschäftlich (s. Abb. 6).

Abb. 7: Die Spalte Bedingung wird eingeblendet.

Einen Nachteil hat das Makro jedoch. Wenn im Feld Telefaxnummer bereits ein Eintrag vorhanden ist, wird dieser beim Ausführen des Makros überschrieben. Im folgenden Abschnitt wird Ihnen deshalb eine verbesserte Version vorgestellt, bei der eine Sicherheitsabfrage vor versehentlichem Überschreiben schützt.

Benutzerrückfragen durch
Meldungsfenster realisieren

Normalerweise werden alle Aktionen eines Makros von oben nach unten abgearbeitet. Um eine bedingte Ausführung von Makro-Aktionen zu realisieren, stellt das Makrofenster die Spalte Bedingung zur Verfügung. Sie blenden die Spalte über das gleichnamige Symbol in der Symbolleiste oder über den Menübefehl Ansicht/Bedingungen ein (s. Abb. 7).

In dieser Spalte können Sie zu jeder Aktion einen Ausdruck eingeben. Wenn Sie das Makro starten, wird zunächst der Ausdruck ausgewertet. Ergibt der Ausdruck den logischen Wert Wahr, führt Access die Aktion aus. Ist das Ergebnis des Ausdrucks Falsch, wird die Aktion übersprungen.

Damit Access den Ausdruck auswerten kann, muss dieser eine ganz bestimmte Form haben. Sie können nicht einfach einen Text oder Zahlen als Ausdruck eingeben. Das Ergebnis des Ausdrucks muss entweder den Wert Wahr oder Falsch haben. Sie müssen folglich logische Ausdrücke in die Spalte Bedingung eintragen. Dies ist in den meisten Fällen ein Vergleich. So kann zum Beispiel der Ausdruck

[Rechnungsdatum]<Datum()

je nach Tagesdatum den Wert Wahr oder Falsch annehmen.

Als Bedingung können Sie außerdem Funktionen eingeben, die Bool’sche Werte Wahr oder Falsch zurückliefern.

Im Zusammenhang mit Steuerelementen hat die Funktion IstNull eine besondere Bedeutung.

Damit können Sie überprüfen, ob ein Steuerelement einen Feldinhalt hat. Für das Beispiel mit der Telefaxnummer lautet der Ausdruck:

IstNull([TelefaxGeschäftlich])

Das Ergebnis lautet Wahr, wenn keine Telefaxnummer eingetragen ist, anderenfalls lautet das Ergebnis Falsch.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.