Filter listbox met multiselect listbox

Status
Niet open voor verdere reacties.

mvdkooij

Gebruiker
Lid geworden
30 mrt 2007
Berichten
52
Hallo allemaal,

Wie kan mij helpen:
Ik heb een formulier waarin ik twee listboxen heb en een button. Eén listbox (lstTransponder) gebruik ik om data weer te geven en de 2e listbox (lstCategory) gebruik ik om lstTransponder te filteren.
Nu werkt dat met onderstaande code prima, maar wat ik wil is dat ik juist NIET in lstTransponder wil zien wat ik in lstCategory selecteer.

Of te wel de code "<>" moet er in in combinatie denk ik met AND, maar ik krijg het niet voor elkaar.

Wie kan me helpen?

Code:
Private Sub btnQuery_Click()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String

Set db = CurrentDb()
Set qdf = db.QueryDefs("Query1")

For Each varItem In Me!lstCategory.ItemsSelected
   strCriteria = strCriteria & ",'" & Me!lstCategory.ItemData(varItem) & "'"
Next varItem

If Len(strCriteria) = 0 Then
   MsgBox "You did not select anything from the list" _
          , vbExclamation, "Nothing to find!"
   Exit Sub
End If

strCriteria = Right(strCriteria, Len(strCriteria) - 1)

strSQL = "SELECT * FROM tbl_Transponder " & _
         "WHERE tbl_Transponder.AIRLINE <>" & strCriteria & " ORDER BY datum;"
         
qdf.SQL = strSQL

DoCmd.Requery "lstTransponder"

Set db = Nothing
Set qdf = Nothing
End Sub
 
Ik heb geen flauw idee wat je aan het doen bent. Je gebruikt een procedure om meerdere waarden uit de keuzelijst te halen, maar ik maak me sterk dat de WHERE die je in de query gebruikt gaat werken. Heb je meerdere waarden geselecteerd, en wil je die filteren (of juist weglaten) dan moet je het filter opbouwen met WHERE In(waarde 1, waarde 2, waarde3) of WHERE Not In(waarde 1, waarde 2, waarde3). Heb je maar één categorie, dan kan het een heel stuk simpeler, dan kun je gewoon de Value uitlezen. Er vanuit gaande dat ik het goed gezien heb, zou ik het zo doen:
Code:
For Each varItem In Me.lstCategory.ItemsSelected
    If Not strCriteria = "" Then strCriteria = strCriteria & ","
    strCriteria = strCriteria & "'" & Me.lstCategory.ItemData(varItem) & "'"
Next varItem
strSQL = "SELECT * FROM tbl_Transponder WHERE AIRLINE Not In(" & strCriteria & ") ORDER BY datum;"
 
Hallo Octafish,

Ik zie net dat ik de verkeerde code bij WHERE gebruikt heb bij het posten in dit forum. Die werkt ook inderdaad niet :eek:
Maar wat je gestuurd hebt werkt dus THANKS! :thumb:

OPGELOST
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan