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
Moin,
nimm statt der Checkbox als Auswahl ein Listenfeld mit Mehrfachauswahl und stell darin alle Möglichkeiten zur Verfügung.
Das Gleichheitszeichen im Filterausdruck macht diesen ungültig (fehlerhaft).
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) & ")"
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.
Hallo,
eher nicht,
es fehlt(e) ein Sternchen bei der Berechnung..
... & -2 * (Me!Checkbox2)
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 (http://source.access-codelib.net/filedetails.php?repname=CodeLib+(Entwurf%2C+branches%2Fdraft)&path=%2Fdata%2FSqlTools.cls):
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
Danke, gute Idee