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 1/2010.

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

Fügen Sie Platzhalter zu Texten über das Kontextmenü hinzu und ersetzen Sie diese zur Laufzeit.

Techniken

VBA, Menüleisten

Voraussetzungen

Access 2000 und höher

Beispieldateien

PlatzhalterKontextmenues.mdb

Shortlink

www.access-im-unternehmen.de/701

Platzhalterauswahl per Kontextmenü

André Minhorst, Duisburg

Manche Lösung scheint auf den ersten Blick kein besonders großes Einsatzgebiet zu haben, aber wenn man erst einmal darüber nachdenkt ... Ein Beispiel dafür ist das Einfügen von Platzhaltern in Textfelder, wobei die Platzhalter den Feldnamen der Tabelle entsprechen, aus denen sie stammen. Ursprünglich wurde die Technik für ein eBay-Tool entwickelt, wobei der als Titel anzuzeigende Text aus Tabellenfeldern wie Artikelbezeichnung, Farbe, Größe und so weiter zusammengesetzt wurde.

Beim Einstellen von Artikeln las das Tool dann die benötigten Informationen aus der Tabelle aus und fügte sie zum Artikeltitel zusammen. Das hätte man aber auch über ein Feld einer einfachen Abfrage erledigen können, oder? Stimmt: Aber erstens sollte der Titeltext flexibel einstellbar sein, um eine möglichst zugkräftige Beschreibung zu liefern und zweitens sollte das Tool von Mitarbeitern bedient werden, die anderes zu tun haben, als sich mit Access-Abfragen herumzuschlagen.

Nun ist es einfach, eine Routine zu schreiben, die beim Abarbeiten eines Datensatzes einen Ausdruck wie den folgenden mit den Inhalten der entsprechenden Felder eines Datensatzes füllt:

[Artikelnummer] [Bezeichnung] [Farbe] [Hersteller] [Groesse]

Der Clou ist es, dem Benutzer eine einfache Möglichkeit an die Hand zu geben, die in eckigen Klammern stehenden Platzhalter zum gewünschten Ausdruck zusammenzustellen, ohne dass er jeden einzelnen Feldnamen der zugrunde liegenden Tabelle kennen muss.

Beschreibung der Technik

Wir müssen dem Benutzer also irgendwie Zugriff auf die Feldnamen der Tabelle verschaffen und ihm erlauben, diese möglichst einfach in das Zieltextfeld einzutragen. Dazu gibt es mehrere Möglichkeiten: So könnte man etwa eine Liste mit allen verfügbaren Feldern in das Formular integrieren, welches auch das Zielfeld enthält, oder man erstellt ein eigenes Popup-Formular, das nur dem Zuweisen der Platzhalter dient. Am einfachsten ist es jedoch, wenn Sie einfach ein Kontextmenü erstellen, das der Benutzer per Rechtsklick auf das Zielfeld öffnet und aus dem er die gewünschten Platzhalter auswählen kann. Der Platzhalter wird dann genau an der Position der Einfügemarke hinzugefügt. Sollte gerade ein Bereich des Zielfeldes markiert sein, soll dieser einfach durch den Platzhalter überschrieben werden. Auf diese Weise kann der Benutzer Platzhalter für Platzhalter hinzufügen.

Weitere Einsatzmöglichkeiten

Damit auch Leser etwas von dieser Lösung profitieren, die diese nicht gerade zum Zusammensetzen der Titeltexte von eBay-Versteigerungen benötigen, hier noch einige Anregungen für weitere Anwendungsfälle:

  • Textbausteine für Briefe: Möglicherweise erstellen Sie Serienbriefe in Form von Access-Berichten. Damit Sie Betreff, Anrede und Fließtext flexibel gestalten können, tragen Sie die Platzhalter einfach per Kontextmenü in die entsprechenden Felder ein und ersetzen diese zur Laufzeit.
  • Serienmails: Das gleiche Verfahren lässt sich natürlich auch für Serienmails anwenden.
  • Rechnungen: Wenn Sie eine Artikeltabelle mit vielen Detailinformationen zu den jeweiligen Artikeln pflegen, möchten Sie diese Informationen vielleicht mal mehr und mal weniger detailliert in die Rechnungspositionen eintragen.
  • Generell können Sie dem Benutzer so die Möglichkeit geben, Ausdrücke für die Ausgabe in Berichten statt über die Erstellung einer Abfrage mithilfe von Platzhaltern zusammenzustellen.

Beispiel

Zu Beispielzwecken hält wieder einmal die Südsturm-Datenbank her, unsere optimierte Version der Nordwind-Datenbank. Dabei soll der Benutzer beliebige Felder aus der Artikeltabelle zum Positionstext in einer Bestellung zusammensetzen können. Vergessen Sie den Hintergrund nicht: Wir möchten dem Benutzer die Möglichkeit geben, Inhalt etwa von Berichten flexibel aus der Datenherkunft zusammenzusetzen, ohne dass er sich selbst mit Abfragen und weiteren Access-Spezialitäten auseinandersetzen muss.

Das Beispielformular enthält im Wesentlichen ein Textfeld namens txtPositionstext, das der Zusammenstellung der Platzhalter für den Positionstext eines Artikels dient. Für Beispielzwecke ist das Formular an die Abfrage qryArtikelPlatzhalter gebunden und zeigt all seine Felder an - so lässt sich leicht prüfen, ob die Platzhalter wie gewünscht gefüllt werden.

Doch eins nach dem anderen: Zunächst einmal brauchen Sie eine Abfrage, die alle infrage kommenden Felder liefert. Diese heißt in unserem Beispiel qryArtikelPlatzhalter und sieht wie in Abb. 1 aus. Diese Beispielabfrage zeigt gleich einen praktischen Nutzen: Wenn der Benutzer selbst eine Abfrage für das Zusammenstellen des Positionstextes erstellen müsste, käme er noch nicht einmal mit einer einfachen Abfrage über eine Tabelle aus, sondern müsste die Bezeichnung der Kategorie und des Lieferanten aus weiteren verknüpften Tabellen hinzufügen - dies erledigen wir an dieser Stelle für den Benutzer.

pic001.png

Abb. 1: Diese Abfrage dient als Datenherkunft für die Auswahl der Platzhalter.

Kontextmenü, selbst gebaut

Wenn der Benutzer nun mit der rechten Maustaste auf das Textfeld txtPositionstext klickt, soll ein Kontextmenü erscheinen, das alle Feldnamen der Abfrage qryArtikelPlatzhalter enthält. Zur Verdeutlichung, dass es sich dabei um Platzhalter handelt, klammern wir die Einträge des Kontextmenüs außerdem in eckige Klammern ein, sodass sich etwa das Bild aus Abb. 2 ergibt.

pic002.png

Abb. 2: So soll das Kontextmenü zum Einfügen der Platzhalter aussehen.

Damit das Kontextmenü erscheint, sind zwei Schritte nötig:

  • Zusammenstellen des Kontextmenüs auf Basis der Felder aus qryArtikelPlatzhalter
  • Anzeigen des Kontextmenüs

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:

Verwandte Beiträge:

Kontextmenüs von A bis Z

Dynamische Ribbons

Vertikale Menüleisten

Auswahlfelder im Ribbon

Dynamische Menüs mit VBA

Trojanische Kontextmenüs am Beispiel Excel

Texte aufteilen

Flexible Datumstextfelder

Zeichenketten zerlegen

Mehrsprachige Anwendungen, Teil 2

Platzbedarf für Text ermitteln

Tipps und Tricks

Tipps und Tricks

Importieren von Textdateien

© 2003-2015 André Minhorst Alle Rechte vorbehalten.