AgriPhilou
Messages postés4Date d'inscriptiondimanche 30 décembre 2007StatutMembreDernière intervention 2 janvier 2008
-
1 janv. 2008 à 16:17
AgriPhilou
Messages postés4Date d'inscriptiondimanche 30 décembre 2007StatutMembreDernière intervention 2 janvier 2008
-
2 janv. 2008 à 20:43
Bonjour,
Dans une requête comment écrire une condition Where qui va lire une liste à sélection multiple pour y extraire les données (comme dans [a,b,c] etc .....
il faut placer le code dans un nouveau champ ?
Exemple :
Dans la liste à sélection multiple : sélection de A - B - C - G
requête : tout les enregistrements liés à A-B-C-G.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 janv. 2008 à 16:20
Dans Access, je ne sais pas trop... je n'utilise jamais. Mais bon, ça devrait ressembler à ça.
Tu mets un bouton à côté de ta listbox que tu cliques une fois les sélections faites dans cette liste.
Private Sub CommandButton1_Click()
Dim strSQL As String
strSQL = "Select * From MaTable " & GetMyWhere("NomDuChamp", ListBox1, False)
MsgBox strSQL
End Sub
Puis dans un module, tu mets cette Function
Function GetMyWhere(Champ As String, Liste As Object, Numérique As Boolean) As String
Dim I As Integer, strTemp As String
'Lecture des sélections de la liste
For I = 0 To Liste.ListCount - 1
If Liste.Selected(I) Then 'sélectionné
'si le paramètre "Numérique" est vrai
If Numérique Then
strTemp = strTemp & Champ & "=" & CLng(Liste.List(I)) & " OR "
'sinon c'est du texte et on doit ajouter des apostrophes
Else
strTemp = strTemp & Champ & "='" & CLng(Liste.List(I)) & "'" & " OR "
End If
End If
Next
'On enlève le dernier OR
GetMyWhere = "WHERE " & Left(strTemp, Len(strTemp) - 4)
End Function
Bien sûr, cette Function peut être améliorée. On pourrait permettre les dates et insérer des # au lieu des apostrophes. De plus, on pourrait doubler les apostrophes si le champ peut contenir des apostrophes lui-même ... À toi de voir. La base est là tout de même.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 janv. 2008 à 14:33
Le mieux, ce serait que tu te crées une Function qui générera une clause Where comprenant toutes les sélections de la liste et retournera une clause Where toute bâtie. Ensuite, tu colles cette clause à ton Select.
Dans cette Function, tu devras lire toutes les sélections et utiliser OR pour les séparer.
En espérant être assez clair (?)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.