États: Utiliser une liste à sélection multiple pour limiter les enregistrements
d'un état |
Author(s) Dev Ashish |
|
Utiliser une liste à sélection multiple pour limiter les enregistrements
d'un état.
(Q) Comment limiter l'impression de mon état aux
enregistrements que j'ai choisi dans une liste à sélection multiple?
(A) Une des solutions est d'énumérer la collection ItemsSelected
et de modifier la requête sur laquelle est basée l'état en fonction de ces
choix.
Par exemple, avec une liste (à sélection multiple) sur
un formulaire avec un champ texte field txtCriteria. La colonne liée à la
liste est un champ de type Autonumber. Je dispose d'un bouton qui
génère la variable Criteria, j'assigne par la suire txtCriteria à cette variable (purement
pour visionnement, car on peut passer la valeur à la requête directement), je modifie
la requête SQL, le QueryDef, et j'ouvre la requête elle-même. Le code ressemble
à quelque chose comme:
Private Sub btnTestQuery_Click()
Dim vItm As Variant
Dim stWhat As String
Dim stCriteria As String
Dim stSQL As String
Dim loqd As QueryDef
stWhat = "": stCriteria = ","
For Each vItm In Me!mslbxTest.ItemsSelected
stWhat = stWhat & Me!mslbxTest.ItemData(loItm)
stWhat = stWhat & stCriteria
Next vItm
Me!txtCriteria = CStr(left$(stWhat, Len(stWhat) - Len(stCriteria)))
Set loqd = CurrentDb.QueryDefs("qryMultiSelTest")
stSQL = "SELECT EmployeeID, LastName, FirstName, TitleOfCourtesy, "
stSQL = stSQL & "Title FROM Employees WHERE EmployeeID"
stSQL = stSQL & " IN (" & Me!txtCriteria & ")"
loqd.SQL = stSQL
loqd.Close
DoCmd.OpenQuery "qryMultiSelTest"
End Sub
|