4.4k Aufrufe
Gefragt in Datenbanken von
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?

5 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
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
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

im Else-Zweig meinte ich natürlich
DoCmd.RunSQL "UPDATE tblTabelle set auswahl= true"

Gruß
Ralf
0 Punkte
Beantwortet von
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 :-)
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
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
0 Punkte
Beantwortet von
Mit EINEM Wort: PERFEKT !!!

Mit VIER Worten: besser geht es nicht !!!

Vielen, vielen Dank, ich hab was gelernt !!!
...