Where

Résolu
AgriPhilou Messages postés 4 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 2 janvier 2008 - 1 janv. 2008 à 16:17
AgriPhilou Messages postés 4 Date d'inscription dimanche 30 décembre 2007 Statut Membre Derniè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.

Merci.

Philippe
@+  

8 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
1 janv. 2008 à 19:23
Déplacé sur vbfrance...











<hr />
-My Blog-
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 janv. 2008 à 16:33
heuuu, en quel langage tout ça ??????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
1 janv. 2008 à 16:55
Bonjour et bonne année

En réponse de ce que j'ai compris de votre question;

Query.Active:=false;
Query.SQL.Clear;
Query.SQL.Add( 'Select * from NomTable.db');
Query.SQL.Add ('WHERE (Upper(NomChamp) LIKE "%'+ AnsiUpperCase(A)+'%")');
Query.SQL.Add ( AND +'(Upper(NomChamp) LIKE "UpperCase(strtoint(B))")');
Query.SQL.Add (AND+'(Upper(NomChamp) LIKE "%'+ AnsiUpperCase(C)+'%")');
.
.
Query.Active:=true;

Bonne programmation et bonne chance.

haftari.fouad
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AgriPhilou Messages postés 4 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 2 janvier 2008
1 janv. 2008 à 18:52
Bonsoir,
Je travaille dans Access donc VBA.

Merci de votre aide.

Philippe
@+
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.
0
AgriPhilou Messages postés 4 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 14:43
Merci,

Tu as un exemple plus précis ?
Ma liste contient les codes A,B,C,F etc champ "code"

Mon sous formulaire et lié au champ "Mescodes"

Philippe
@+
0
AgriPhilou Messages postés 4 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 20:43
Je te remercie beaucoup, je vais faire des essais, mais je crois que c'est bien parti.

Philippe
@+
0
Rejoignez-nous