Access: Menüband anpassen

Schaltfläche mit Aktion verbinden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Auch mehrere Formulare können gemeinsam einen Satz von Menüband-Befehlen nutzen. Beim Aufruf muss der Code dann anhand des Formularnamens erkennen, aus welchem Formular heraus er aufgerufen wurde.

Transkript

Ich möchte für diese beiden Formulare die gleichen lokalen Befehle nutzen, die haben sowieso die gleiche Datenquelle, also können sie auch das Gleiche filtern. Im Grunde unterscheiden sie ich ja nur im Endlosformular oder Einzeldarstellung. Also brauche ich einen neuen Datensatz in UsysRibbons, hier nämlich die Nummer drei, mit frmLieferungen und ich werde dort nicht den Zusatzdetails oder Liste machen, dann sehe ich direkt, dass das für beide gleich gelten soll und könnte jetzt eigentlich auch direkt eine Kopie von diesem machen. Dann müsste ich nur die Änderung reinschreiben. Ich hab das hier schon mal vorbereitet. Da sind also die Unterschiede minimal, es sind eigentlich vor allem ein paar andere Schaltflächen. Hier gibt es eine andere Schaltfläche und hier, das sind eben alles spezielle Schaltflächen für die Lieferung. Das ist schon alles, technisch ist das kein Unterschied, sondern wirklich nur an den Beschriftungen. Achten Sie auch hier immer drauf, dass idQ und der Namespace vorkommen. Und jetzt kann ich das wieder kopieren und hier einfügen und sollte das dann auch direkt komprimieren, damit das in den Formularen auch angeboten wird, also einmal komprimieren und erst dann kann ich im Entwurf der Formulare hier als Name des Menübands diesen neuen Namen frmLieferungen benutzen. Die sehen zwar schon gut aus, werden aber noch nicht funktionieren, deswegen werde ich da noch nichts anklicken, also einmal hier und dasselbe für die Liste, also auch hier auf frmLieferungen. Es gibt also jetzt tatsächlich mehrere Formulare, die das Gleiche lokale Menüband benutzen und das muss ich jetzt entsprechend berücksichtigen, also mit Alt+F11 in das Modul RibbonCallbacks und beim OnActionButton muss ich jetzt, ich mache das mal einfach davor dann liest sich das besser, muss ich jetzt dafür sorgen, dass ich auf diese Aktionen auch reagieren kann. Ich werde mir das also hier mal direkt notieren. Liste und Details. Und dann muss ich auch wissen, weil es ja gleiche Schaltflächen sind, wer von denen das jetzt aufgerufen hat. Ich habe zwar hier eine lokale Prozedur, SucheLieferung, die kriegt nämlich nachher das Formular übergeben und eine gleichnamige lokale Prozedur gibt es hier auch. Das Fenster hat gewechselt, Sie haben wahrscheinlich gar keinen Unterschied bemerkt ich mache den mal einen tiefer. So, und jetzt sehen Sie beim Doppelklick, das ist wirklich ein eigenes Fenster, aber das muss ich hier auch wissen, ich kann jetzt nicht einfach ein lokales SucheLieferung aufrufen, denn ich muss dazu sagen, in welcher Klasse, in welchem Formular das nämlich drin ist. Also kann ich hier zwar hinschreiben, wer mich aufgerufen hat, btnLieferungenSuchen hieß das, aber ich muss jetzt hier drin noch mal prüfen, von welchem Formular dieser Button eigentlich aufgerufen wurde. Also darin eingebettet, das geht, ein Select Case. Jetzt frage ich mal ein screen.ActiveForm nach seinem Name. Ich bin sicher, dass es ein Formular ist, denn diese Schaltflächen stehen nur auf zwei Formularen, deswegen muss ich das gar nicht prüfen, da schon mal ein End Select und jetzt kann ich untersuchen, ob das vielleicht dem Namen entspricht und da frage ich einfach, ohne dass ich den Namen jetzt wissen muss, ob das der LieferungDetails-Name ist und dann rufe ich dessen Prozedur auf, LieferungDetails.SucheLieferung und das Gleiche mache ich für, ich schreibe mal die andere Version, damit Sie da auch sehen, frmLieferungenListe. Der Unterschied ist nur, Sie müssen es selber tippen und sind nicht sicher, ob hier Schreibfehler drin sind. Also diese Schreibweise liefert einen String zurück, der frmLieferungenDetails heißt, aber Sie müssen es nicht selbst schreiben, deswegen bevorzuge ich das. Also ich werde es auch hier mit frmLieferungen und dann Liste auswählen und jetzt bin ich sicher, dass ich mich nicht vertippt habe, dessen Name-Eigenschaft und wenn das ein Treffer war, ich werde das mal ein bisschen einrücken mit der Tab-Taste, dann rufe ich dessen Prozedur auf. Also hier die Liste.SucheLieferungen. Die sind gleichnamig, aber die sind trotzdem in der Klasse enthalten und müssen deswegen mit dem Klassennamen, nämlich dem Formularmodulnamen aufgerufen werden. Und notfalls baue ich dann noch eine extra Version ein, die mich warnt, wenn irgendwas schief geht. Also da steht dann die Message-Box, zum Beispiel Keine Suche nach Lieferung möglich. Das sollte eigentlich nie auftreten, aber wenn sie schon sollte sagen, dann sollten Sie es auch direkt programmieren, dass dann eine Fehlermeldung kommt und ich weiß, woran was zu prüfen wäre. Also es darf nur diese beiden geben, wenn das gleich funktioniert und dann kommen natürlich noch die übrigen, die wirklich in dem Formular enthalten sind, also case und da muss ich jetzt wieder ganz viel schreiben, btnLieferungenFilterAbiertour, ich hoffe, ich habe mich nicht verschrieben, und das ist eine allgemeine Prozedur, die steht hier in modSubs und bezieht sich indirekt auf ein aktuelles Formular, das ist hier drin enthalten, aber die Prozedur selber ist öffentlich und das Gleiche gilt für die zweite, also case und dann heißt es btnLieferungenFilterPosthorn. Und auch da gibt es eine vorbereitete Prozedur, die, ich gehe da mit Umschalt+F2 mal hin, im Prinzip genau so funktioniert, die hat nur einen anderen Filter. Und das Ganze kann ich jetzt speichern und mit Debuggen Kompilieren auf VBA-Fehler untersuchen lassen. Das sollte jetzt schon funktionieren. Ich werfe noch mal einen Blick auf die Eigenschaftennamen des Menübands, da steht schon das neue Menüband drin. Also einmal speichern und vorsichtshalber schließen. Jetzt kann ich in den Details einmal gucken, Kneipe: Posthorn, denn im Moment sehe ich ja das Abitur von 39 Datensätzen, also einen Klick hier und Sie sehen, es ist gefiltert, nur noch 19, die alle irgendwie Posthorn enthalten, dasselbe für die Kneipe: Abiertour, auch gefiltert, jetzt gibt es nur noch diese Kneipe. Und ich kann auch den Filter aufheben und bei Bedarf nach einer Lieferung suchen, das geht hier zwar technisch, aber ist in dem Listenformular besser zu sehen und das muss jetzt das Gleiche können. Also Lieferungen Liste, da sieht man auch das Filtern schöner, Kneipe: Posthorn, auf Anhieb alle gefiltert, Kneipe: Abiertour, die werden ausgetauscht, deswegen kann ich das ohne Aufheben des Filters einfach direkt aufrufen und auch hier wieder ohne Filter. Jetzt will ich alle herausfiltern, die zwei Fässer geliefert bekommen haben, also Lieferung suchen. Die Liefermenge ist zwei und nach dem OK sehen Sie, das funktioniert auch. Also technisch sind die beiden Formulare sich so ähnlich, mit gleicher Datenquelle, dass ich auch die gleichen Elemente, die gleichen Schaltflächen hier benutzen kann. Und das bedeutet, ich brauche jedes Mal, wenn ich ein Formular oder eine Gruppe von Formularen mit gemeinsamen Schaltflächen ausstatten will, hier eine neue Zeile, die jeweils ein komplettes Menüband, allerdings nur mit contextualTabs enthält.

Access: Menüband anpassen

Nutzen Sie als Datenbankentwickler das Menüband in Access, um dort sauber und platzsparend Ihre Schaltflächen und Bedienelemente unterzubringen – sogar kontextsensitiv.

2 Std. 7 min (24 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.06.2018

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!