Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrere Filter verbinden

Begonnen von Bernd Sowa, April 22, 2020, 17:08:36

⏪ vorheriges - nächstes ⏩

Bernd Sowa

Hallo zusammen,
ich habe in meinem Formular zwei Filter:

Sub Wand1_Afterupdate ()
Me.Filter = nz(Me!Wand1,0)  & " between WdMin and WdMax "
Me.FilterOn = True
End Sub

und

Sub D1_Afterupdate ()
Me.Filter = nz(Me!D1,0)  & " between DMin and DMax "
Me.FilterOn = True
End Sub

Jeder der Filter funktioniert tadellos.
Mir war nur nicht bewusst, das nur immer einer der beiden ausgeführt wird.
Ich brauch aber beide.
Also habe ich versucht über eine Schaltfläche die Filter auszulösen.

Private Sub Befehl314_Click()
Me.Filter = Nz(Me!Wand1, 0) & " between WdMin and WdMax " UND Me.Filter = nz(Me!D1,0)  & " between DMin and DMax "
Me.FilterOn = True
End Sub

Das funktioniert aber nicht. Es passiert nichts beim klicken.

Und wenn es dann irgendwann einmal funzen sollte brauche ich noch einen Code um die Filter wieder auszuschalten und wieder alle Datensätze zu  zeigen.
Ich habe festgestellt, das es nicht durch löschen und aktualisieren klappt.

Für etwas Hilfe wäre ich dankbar.

Beaker s.a.

Hallo Bernd,
Ohne Test
Me.Filter = Nz(Me!Wand1, 0) & " between WdMin and WdMax AND " & nz(Me!D1,0) & " between DMin and DMax"
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Bernd Sowa

Danke sehr,
Klappt super...
Aber wie kann ich den/die Filter zurücksetzen?
Für eine erneute Suche ohne das Formular neu starten zu müssen?
Wenn du da noch einen Tip hättest...?!?!?

MzKlMu

Hallo,
so:
Me.Filter = ""
Me.FilterOn = False
Gruß Klaus

Beaker s.a.

Hallo Bernd,
ZitatKlappt super...
Freut mich. Tu dir aber einen Gefallen und vergleiche deinen Ausdruck mit
meinem. Geht am einfachsten, wenn du dir den Filterstring im Direktfenster
(Strg-G) anschaust, dazu fügst du folgende Zeile in deinen Code ein
Debug.Print Nz(Me!Wand1, 0) & " between WdMin and WdMax " UND Me.Filter = nz(Me!D1,0)  & " between DMin and DMax "
'bzw.
Debug.Print Nz(Me!Wand1, 0) & " between WdMin and WdMax AND " & nz(Me!D1,0) & " between DMin and DMax"

Das Zusammensetzen von Strings ist ein fundamentales Werkzeug, das man
unbedingt beherrschen sollte. Hilfreich dabei könnte folgender Link sein
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/ampersand-operator

Den Hinweis wegen zurücksetzen hatte ich vergessen, hat Klaus dir aber
gezeigt.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)