Neuigkeiten:

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

Mobiles Hauptmenü

Filter über wahlweise eins bis drei Kriterien

Begonnen von Xoar, Februar 03, 2017, 14:59:43

⏪ vorheriges - nächstes ⏩

Xoar

Hallo,

habe in meiner Datenbank die grobe Filterung der Datensätze über verknüpfen von/nach gemacht. HF -》 Ufo. Das klappt gut

Jetzt hab ich im HF drei Checkboxen die wahlweise gedrückt werden können. Dadurch soll das Ufo im Feld [Wachabteilung] gefiltert werden.
Also wenn Checkbox1 geklickt alle wo Wachabteilung = 1, Checkbox2 = Wachabteilung = 2.
So jetzt können diese ja kombiniert werden, sprich wo Wachabteilung = 1 oder 2 ist.

Kann man ein Filterkrierium bauen, was den In () Operator nimmt?
Filterung = "in(1,2)"
Z.B. Me.Filter = "Wachabteilung = " & Filterung ?

Oder wie stellt man sowas am besten an?

Grüße

el_gomero

Moin,

nimm statt der Checkbox als Auswahl ein Listenfeld mit Mehrfachauswahl und stell darin alle Möglichkeiten zur Verfügung.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Lachtaube

Das Gleichheitszeichen im Filterausdruck macht diesen ungültig (fehlerhaft).
Grüße von der (⌒▽⌒)

DF6GL

#3
Hallo,

etwa so:

Sub Checkbox1_Click()
Me!UFO_StElem_Name.Form.Filter = "Wachabteilung = " & -(Me!Checkbox1) & " Or Wachabteilung = " & -2 * (Me!Checkbox2)
Me!UFO_StElem_Name.Form.FilterOn =True
End Sub

Sub Checkbox2_Click()
Checkbox1_Click
End Sub



oder mit IN-Operator:

Me!UFO_StElem_Name.Form.Filter = "Wachabteilung IN (" & -(Me!Checkbox1) & "," & -2 * (Me!Checkbox2) & ")"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Xoar

#4
Ich danke euch vielmals.
[edit]
war leider noch nicht genau das was ich gesucht hatte, bzw war da noch nen Syntaxfehler drin statt & -2(Me!Checkbox2) musste ich & 2 - Me!Checkbox2 schreiben.


Dim Filterstr As String
Filterstr = "Wachabteilung IN ("
If Form_frmDienstplan.HakenWa1 = True Then Filterstr = Filterstr & "1,"
If Form_frmDienstplan.HakenWa2 = True Then Filterstr = Filterstr & "2,"
If Form_frmDienstplan.HakenWa3 = True Then Filterstr = Filterstr & "3,"
Filterstr = Left(Filterstr, Len(Filterstr) - 1) & ")"

Form_frmDienstplan!ufrmDienstplan.Form.Filter = Filterstr
Form_frmDienstplan!ufrmDienstplan.Form.FilterOn = True


so hab ich das gewünschte Ergebnis. Ist als Sub in einem Modul ausgelagert und wird bei jedem "Checkbox Klick" aufgerufen.

DF6GL

Hallo,

eher nicht,

es fehlt(e) ein Sternchen bei der Berechnung..

... & -2 * (Me!Checkbox2)

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Josef P.

Hallo!

Noch eine Anregung zu deinem Code:

Deine Logik etwas anders formuliert:
Dim Filterstr As String

If Form_frmDienstplan.HakenWa1 = True Then Filterstr = Filterstr & ",1"
If Form_frmDienstplan.HakenWa2 = True Then Filterstr = Filterstr & ",2"
If Form_frmDienstplan.HakenWa3 = True Then Filterstr = Filterstr & ",3"

if len(Filterstr) > 0 then
   Filterstr = "Wachabteilung IN (" & mid(Filterstr, 2) & ")"
end If

... jetzt funktioniert der Filter auch, wenn keine Checkbox aktiviert ist.

Falls das Formular mit diesem Code das Formular frmDienstplan ist, würde ich statt Form_frmDienstplan.HakenWa1 nur Me.HakenWa1 schreiben.


Oder mittels Hilfsklasse SqlTools:
Filterstr  = SqlTools.BuildCriteria("Wachabteilung", SQL_Numeric, SQL_In, Array(Abs(1 * Me.HakenWa1.Value), Abs(2 * Me.HakenWa2.Value), Abs(3 * Me.HakenWa3.Value)), , 0)

mfg
Josef

Xoar