Access: Kontrollkästchen gefilterter DS im Endlosformular markieren
Hallo Profis,
ich habe ein Endlosformular, in dem über entsprechende (Such-)Felder für Name und Ort die Datensätze des Endlosformulars gefiltert werden. Das Feld "Auswahl", ein Ja-/Nein-Feld, soll dann mit einem Klick für die gefilterten DS markiert und demarkiert werden.
Hat jemand eine Idee, ob/wie so etwas funktionieren kann?
Antwort schreiben
Antwort 1 von RaHi vom 22.03.2021, 12:30 Options
Hallo,
eine mögliche Lösung wäre
Private Sub button_Click()
If Me.FilterOn Then
DoCmd.RunSQL "UPDATE tblTabelle set auswahl= true where " & Me.Filter
DoCmd.RunSQL "UPDATE tblTabelle set auswahl= false where not (" & Me.Filter & ")"
Else
DoCmd.RunSQL "UPDATE blBOOL set b = true"
End If
Me.Requery
End Sub
Der Code muss im Codebereich des Formulars stehen. Ersetzen müsstest du noch den Tabellenname. In Me.Filter stehen die Filterkriterien als SQL-Statement. Mit den zwei RunSQL-Statements setzt du dann den Wert für das Feld Auswahl in deiner Tabelle entsprechende auf true und false. Falls du keinen Filter gesetzt hast, muss das getrennt behandelt werden, da sonst das Where-Kriterium nicht syntaktisch korrekt wäre.
Gruß
Ralf
Antwort 2 von RaHi vom 22.03.2021, 14:56 Options
Hallo,
im Else-Zweig meinte ich natürlich
DoCmd.RunSQL "UPDATE tblTabelle set auswahl= true"
Gruß
Ralf
Antwort 3 von lacasalatina vom 22.03.2021, 19:07 Options
Hallo Ralf,
super, das hat geklappt!!! Vielen Dank für Deine Hilfe!!!
Hast Du evtl. auch eine Idee, wie ich ALLE angehakten Datensätze wieder "de-markiere"? Also zB habe ich als 1. Schritt alle Schmitt´sgefiltert und die über Deine obige Funktion markiert. Dann filter ich im 2. Schritt nach dem Ort, zB Hamburg. Die werden dann "dazumarkiert" zu den Schmitts. Und dann sollen ALLE Markierungen, also Schmitts und Hamburger, mit einem Klick gelöscht werden.
Wäre super, wenn Du hierfür auch noch eine Idee hättest!!!
Vielen Dank schon mal für die "erste" Lösung :-)
Antwort 4 von RaHi vom 22.03.2021, 19:39 OptionsLösung
Hallo,
für deine Anforderung (alle Schmidt und alle aus Hamburg) musst du das zweite "Update" im Then-Zweig weg lassen. Bei meiner ersten Lösung wurden entweder alle Schmidts oder alle Hamburger markiert, bzw. die Schnittmenge, wenn du die Kriterien zusammen angegeben hast. So wie ich dich jetzt verstehe, willst du die Vereinigungsmenge.
Für das Löschen der Markierungen verwende einfach einen weiteren Button mit
DoCmd.RunSQL "UPDATE tblTabelle set auswahl= false"
Me.Filter = ""
Me.FilterOn = false
Me.requery
Hast du das gemeint?
Gruß
Ralf
Antwort 5 von lacasalatina vom 22.03.2021, 19:54 Options
Mit EINEM Wort: PERFEKT !!!
Mit VIER Worten: besser geht es nicht !!!
Vielen, vielen Dank, ich hab was gelernt !!!