Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Striving_Tom am Januar 31, 2020, 16:50:44

Titel: Filter-Button programmieren
Beitrag von: Striving_Tom am Januar 31, 2020, 16:50:44
Hallo,

Ich bin mir bewusst, dass man mit VBA viel (fast alles?) umsetzen kann. Ich mache allerdings mit VBA gerade meine ersten Schritte und es fällt mir an vielen Stellen noch schwer, die richtigen Ansätze zu finden. Ich suche keine "Fertiglösungen" sondern vor allem Unterstützung im Lernprozess, wie ich meine Aufgaben selber lösen kann. Also hoffe ich, dass ich von Euch hilfreiche Hinweise bekommen kann, "wie ich etwas machen kann" ( - Die Grundsätze sind gesucht. Die Details bekomme ich dann hoffentlich selbst hin - ) und wo ich nachsehen kann, um die benötigten Informationen zu finden. - Für das nachfolgend geschilderte Problem habe ich schon selbst recherchiert, komme aber gerade nicht weiter, daher die Bitte um Unterstützung durch die Mitglieder im Forum. 

Ich habe eine Tabelle mit einem Kennzeichen (=Feldname) "Art". Mögliche Einträge in diesem Feld sind: "A", "B", "C", "D". Nun möchte ich in einem Access-Formular eine Schaltfläche einbauen, mit der ich einen Filtervorgang auslösen kann. Die Schaltfläche (Button) habe ich erstellt.

Folgender Code funktioniert schon:
Private Sub btn_Filter_Click()
    DoCmd.ApplyFilter , "Art = 'A'"
End Sub


Ich könnte nun für jedes Filterkriterium eine eigene Schaltfläche einfügen. Das ist allerdings ziemlich "unelegant" und wird außerdem irgendwann "unübersichtlich".


Ich hoffe, Ihr könnt mir weiterhelfen.
Viele Grüße
Thommy
Titel: Re: Filter-Button programmieren
Beitrag von: MzKlMu am Januar 31, 2020, 17:06:25
Hallo,
wenn Du das vernünftig aufbauen willst, so lege für die 4 Werte eine Tabelle an mit einem Feld für einen Primärschlüssel. In Deiner jetztigen Tabelle tauschts Du dann die Art gegen die Zahl aus und nennst dieses Feld dann ArtID_F
ArtID    Art
1        A
2        B
3        C
4        B


Dann legst Du ein Kombinationsfeld mit dieser Tabelle als Datenherkunft. 2 Spalten, Spaltenbreiten 0cm;3cm.
Die ID wird ausgeblendet und der Text ist zu sehen.
Gefiltert wird über die Zahl.
Private Sub Kombifeldname_AfterUpdate()
    Me.Filter = "ArtID_F =" & Me.Kombifeldname
    Me.FilterOn = True
End Sub

Für einen zusammengesetzten Filter wird da aber deutlich aufwendiger.
Titel: Re: Filter-Button programmieren
Beitrag von: Striving_Tom am Januar 31, 2020, 17:24:36
Hallo Klaus,

das war ja eine superschnelle Antwort. Herzlichen Dank !!!

Ich werde es schnellstmöglich ausprobieren.

Eine Zusatzfrage habe ich noch:
Gibt es irgendwo eine verständliche Erläuterung zu "Me." ?

Folgende Info-Seite habe ich gefunden:
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/me-keyword
Ich verstehe das Ganze aber noch nicht. Der Einblick in und die Abgrenzung von  vielen der verwendeten Ausdrücke (Klassen, Klassenmodule, Module, Prozesse, Instanzen, Prozeduren; ...) fällt mir noch schwer.
Kann man die Funktion/Bedeutung/Verwendungsweise von "Me." auch einfacher erläutern? - Ist "Me." unbedingt erforderlich? Ist das als Abkürzung eines sonst erforderlichen (längeren) Ausdruckes zu sehen?

Viele Grüße
Thommy
Titel: Re: Filter-Button programmieren
Beitrag von: Beaker s.a. am Januar 31, 2020, 17:30:33
Hallo Thommy,
Me.
ist eine Referenz auf das Klassenmodul in dem der Code ausgeführt wird. Dazu
gehören Formulare, Berichte und eigene Klassen(module).
Auch wenn sich die Klasse selber kennt, sollte man mit "Me." darauf referenzieren.
gruss ekkehard
Titel: Re: Filter-Button programmieren
Beitrag von: Striving_Tom am Januar 31, 2020, 18:02:56
Hallo,

kann man das vielleicht so ausdrücken, dass bei einem Zugriff auf "Code/Funktionen/..." aus einem  anderen Modul mit dem "Begriff" vor dem Punkt auf genau jenes andere Modul verwiesen wird, wenn "Code/Funktionen/..." aber "vor Ort" ausgeführt werden oder von "vor Ort" stammen die Angabe möglicherweise weggelassen werden könnte.

Besser sollte aber mittels "Me." darauf hingewiesen werden, dass "Code/Funktionen/..." von innerhalb des Moduls stammen bzw. innerhalb des Moduls ausgeführt werden?

Sorry für meine noch bestehende Unkenntnis ...  ;)
Viele Grüße
Thommy
Titel: Re: Filter-Button programmieren
Beitrag von: Beaker s.a. am Januar 31, 2020, 18:33:08
Hallo Thommy,
Der Begriff vor dem "." oder auch "!" bezeichnet ein Objekt, dahinter kommt
dann eine Eigenschaft oder Methode diese Objektes.
Man kann "Me." auch weglassen. Ich finde den Code dann aber schlechter
lesbar.
gruss ekkehard