begin process at 2012 02 17 02:55:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

vendredi 3 octobre 2008 à 12:13:20 | créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

Bonjour à tous,

Je ne suis pas une grosse bete en développement, et aurai donc besoin de vos lumières en vba sur ACCESS...

Dans un premier formulaire, l'utilisateur sélectionne (par checkbox) les filtres qu'il veut utiliser, et précise leur valeur dans un textbox associé.

lorsqu'il appuie sur un bouton, ca lance un datalist.
Le but est, vous l'avez bien compris, de renseigner le rowsource du datalist en fonction des filtres sélectionnés, s'il y en a!

J'ai essayé de créer un tableau avec une boucle "FOR"... mais je ne m'en sors pas! Je me vois faire des "IF" partout pour savoir quel filtre et combien sont sélectionnés! (bah oui, je sais... dsl)

En vous remerciant tous d'avance pour l'aide apportée.....

vendredi 3 octobre 2008 à 12:41:21 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

lillith212

Membre Club
Bonjour,

Alors désolée mais il va falloir être un peu plus détailler...
Les informations que tu veux mettre dans ta list, elles sont stockées ou?
Une requete de selection pourrai peut etre t'aider en mettant en paramètre les valeurs saisie par l'utilisateur. Cependant, des erreurs ne peuvent-elles pas survenir si ton utilisateur effectu une mauvaise saisie? Attention à gerer ceci aussi...
Pour la requête :
Select (champs)
From (table)
Where champs = valeursaisie par l'utilisateur
Le tout bien sur codé en vba
Voila bon courage et n'hesite pas à soumettre ton code

S.L.B.


-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- Le bon t

vendredi 3 octobre 2008 à 20:49:01 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

Salut, et merci de répondre.

(En effet, excuse, j'ai l'aissé le message un peu rapidement, pris par le temps)

En fait, oui, j'ai une base de donnée sur laquelle je fais une requete (code vba) afin d'afficher les données dans un datalist. J'ai bien pensé à la requete paramétrée, mais si le paramètre n'est pas ou mal renseigné, la requete va planter.

C'est pourquoi je suis parti dans un mélange de boucles FOR et IF pour essayer de gérer tout ca....mais ca devient très vite une usine à gaz! (et c'est franchement pas très beau à voir!!!!)

Je me dis donc que je pars dans une mauvaise voie, et il me semble qu'il faut carrément que je change de méthode!

principe :
5 filtres facultatifs, on clique sur le bouton, et le datalist s'alimente comme désiré.

comment feriez vous ca?.... peut être en utilisant un autre controle?

Merci encore pour tous vos commentaires...

samedi 4 octobre 2008 à 17:23:55 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

LIBRE_MAX

Salut,
t' as raison de dire que c' est très duffucile à gérer.
Cependant c' est pas très difficile.Le tout est d' être
en bon terme avec la logique.
-J' ai 5 CheckBox par les quels je veux savoir si le filtre associé doit être pris ou pas en charge.
 
Prenons l' exemple de trois filtres:
If Check1 Then
   xFiltre1=TextBox1.Texte
Else
  xFiltre1=""
End If

If Check2 Then
   xFiltre2=TextBox2.Texte
Else
  xFiltre2=""
End If

If Check3 Then
   xFiltre3=TextBox3.Texte
Else
  xFiltre3=""
End If

Vient ensuite ma requete, qui de toute façon sera de la forme:

sQuery="SELECT * FROM MATABLE"

Ensuite je dois savoir si des critère ou pas.
Le problère ici est de savoir s' il y' aura un WHERE au début et surtout à quel niveau.Et s' il y' aura oui ou non un ou plusieurs AND.

Pour ça je dois impérativement passer par des tests.Voir des tests imbriqués.

If xFiltre1<>"" Or xFiltre2<>"" Or xFiltre3<>"" Then
    'là je sais que j' ai au moins un filtre.
    'Le ou lesquels ?
    If xFiltre1<>"" Then
        sQuery=sQuery & " WHERE chp1=" & xFiltre1
        If xFiltre2<>"" Then _
            sQuery=sQuery & " And chp2=" & xFiltre2
        If xFiltre3<>"" Then _
            sQuery=sQuery & " And chp3=" & xFiltre3
         
    Else
       If xFiltre2<>"" Then
           sQuery=sQuery & " WHERE chp2=" & xFiltre2
            If xFiltre3<>"" Then _
                sQuery=sQuery & " And chp3=" & xFiltre3
       Else
          If xFiltre3<>"" Then _
               sQuery=sQuery & " WHERE chp3=" & xFiltre3
        End If

End If
  
  C' est vrai que ça devient un peu plus compliqué avec 5 filtres ou plus, mais ça te donnes au moins une idée du comment procèder.
  

 								

[] Ce qui va sans dire. va mieux en le disant.


samedi 4 octobre 2008 à 17:27:14 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

LIBRE_MAX

oups!
t' as raison de dire que c' est très difficile à gérer.
Cependant c' est pas impossible !


[] Ce qui va sans dire. va mieux en le disant.


lundi 6 octobre 2008 à 14:20:05 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

Milles merci pour ton message...

En effet, en  reprennant ca en début de semaine, cela parait bien moins tordu! hi!

C'est même plutot simple!!

Encore merci pour ton aide!

lundi 6 octobre 2008 à 15:36:41 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

...j'ai encore un ptit hic....
tout se passe plutot bien, sauf qu'au moment de s'afficher, le datalist me demande de préciser le paramètre du filtre renseigné!
ci-dessous le code pour 7 filtres:


<code>
If Form_Général.checkan Then
   xfiltre1 = Form_Général.listan.value
Else
  xfiltre1 = ""
End If

If Form_Général.checkmois Then
   xfiltre2 = Form_Général.listmois.value
Else
  xfiltre2 = ""
End If

If Form_Général.checkresp Then
   xfiltre3 = Form_Général.listresp.value
Else
  xfiltre3 = ""
End If

If Form_Général.checkcli Then
   xfiltre4 = Form_Général.txtcli.value
Else
  xfiltre4 = ""
End If

If Form_Général.checkplan Then
   xfiltre5 = Form_Général.txtplan.value
Else
  xfiltre5 = ""
End If

If Form_Général.checkactiv Then
   xfiltre6 = Form_Général.txtactiv.value
Else
  xfiltre6 = ""
End If

If Form_Général.checkra Then
   xfiltre7 = Form_Général.txtra.value
Else
  xfiltre7 = ""
End If

req1 = "SELECT * FROM [stock kam+]"

If xfiltre1 <> "" Or xfiltre2 <> "" Or xfiltre3 <> "" Or xfiltre4 <> "" Or xfiltre5 <> "" Or xfiltre6 <> "" Or xfiltre7 <> "" Then
    If xfiltre1 <> "" Then
        req1 = req1 & " WHERE Année=" & xfiltre1
        If xfiltre2 <> "" Then _
            req1 = req1 & " And mid(Date_pass_exe,4,2)=" & xfiltre2
        If xfiltre3 <> "" Then _
            req1 = req1 & " And Resp_plan=" & xfiltre3
        If xfiltre4 <> "" Then _
            req1 = req1 & " And Num_client=" & xfiltre4
        If xfiltre5 <> "" Then _
            req1 = req1 & " And Num_plan=" & xfiltre5
        If xfiltre6 <> "" Then _
            req1 = req1 & " And Num_Activite=" & xfiltre6
        If xfiltre7 <> "" Then _
            req1 = req1 & " And Num_RA=" & xfiltre7

        Else
            If xfiltre2 <> "" Then
                req1 = req1 & " Where mid(Date_pass_exe,4,2)=" & xfiltre2
            If xfiltre3 <> "" Then _
                req1 = req1 & " And Resp_plan=" & xfiltre3
            If xfiltre4 <> "" Then _
                req1 = req1 & " And Num_client=" & xfiltre4
            If xfiltre5 <> "" Then _
                req1 = req1 & " And Num_plan=" & xfiltre5
            If xfiltre6 <> "" Then _
                req1 = req1 & " And Num_Activite=" & xfiltre6
            If xfiltre7 <> "" Then _
                req1 = req1 & " And Num_RA=" & xfiltre7
            Else
                If xfiltre3 <> "" Then
                    req1 = req1 & " Where Resp_plan=" & xfiltre3
                If xfiltre4 <> "" Then _
                    req1 = req1 & " And Num_client=" & xfiltre4
                If xfiltre5 <> "" Then _
                    req1 = req1 & " And Num_plan=" & xfiltre5
                If xfiltre6 <> "" Then _
                    req1 = req1 & " And Num_Activite=" & xfiltre6
                If xfiltre7 <> "" Then _
                    req1 = req1 & " And Num_RA=" & xfiltre7
                Else
                    If xfiltre4 <> "" Then
                        req1 = req1 & " Where Num_client=" & xfiltre4
                    If xfiltre5 <> "" Then _
                        req1 = req1 & " And Num_plan=" & xfiltre5
                    If xfiltre6 <> "" Then _
                        req1 = req1 & " And Num_Activite=" & xfiltre6
                    If xfiltre7 <> "" Then _
                        req1 = req1 & " And Num_RA=" & xfiltre7
                    Else
                        If xfiltre5 <> "" Then
                            req1 = req1 & " Where Num_plan=" & xfiltre5
                        If xfiltre6 <> "" Then _
                            req1 = req1 & " And Num_Activite=" & xfiltre6
                        If xfiltre7 <> "" Then _
                            req1 = req1 & " And Num_RA=" & xfiltre7
                        Else
                            If xfiltre6 <> "" Then
                                req1 = req1 & " Where Num_Activite=" & xfiltre6
                            If xfiltre7 <> "" Then _
                                req1 = req1 & " And Num_RA=" & xfiltre7
                            Else
                                If xfiltre7 <> "" Then
                                    req1 = req1 & " Where Num_RA=" & xfiltre7
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
End If

List1.RowSource = req1
</code>



ci-dessous, "RA34208" est la valeur du filtre renseigné!






Mis à part ca, le datalist s'alimente correctement si je rerenseigne la valeur

Si qqun à une idée du pourquoi du comment..... Je suis tout ouie! merci
lundi 6 octobre 2008 à 16:51:27 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

Réponse acceptée !

pour info....
J'ai trouvé, c'est une erreur dans mon code!

tout mes champs filtrés sont des string, donc par ex :
<code>
req1 = req1 & " Where Num_client=""" & xfiltre4 & """"
</code>

merci encore "LIBRE_MAX"!

lundi 6 octobre 2008 à 17:20:15 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

LIBRE_MAX

Salut,
j' étais sur le point de te demander plus de précision au sujet
la valeur du filtre demandée :-)
Tant mieux alors si tout est ok.
Pour ne pas repartir les "mains vides", une suggestion pour simplifier l' écriture pour les champs string , une simple quote de part et d' autre suffira :
req1 = req1 & " Where Num_client='" & xfiltre4 & "'"

Bonne continuation.



[] Ce qui va sans dire. va mieux en le disant.


lundi 6 octobre 2008 à 18:25:20 | Re : créer une requète en fonction d'une sélection de filtres (ACCESS/VBA)

setfocus

c'est vrai, tu as raison!
... J'en ai pris note!
bye



Cette discussion est classée dans : vba, access, fonction, créer, filtres


Répondre à ce message

Sujets en rapport avec ce message

Créer un objet image dans access en vba [ par Led0b ] Je voudrais savoir comment créer un objet image et récupérer une image dans cette objet à partir de son chemin d'accès.J'ai utiliser la fonction getob Créer un menu tout simple en VBA(ACCESS)DEBUTANT [ par seblebatou ] Bonjour,j'ai regardé dans les autres sujets j'ai vu des super menus mais moi je veux juste faire un menu avec fichier edition affichage...en VBA(ACCES programmation VBA avec ACCESS 2000 [ par michel_b ] j ai un probleme avec la roulette de la souris dans les formulaires en effet quand je l utilise elle fait défiler les enregistrements mais il y a des appel de fonction .NET de access VBA [ par quineman ] Peut on appeler du code .NET d'une application MS access (et donc dans du code VBA)Merci Fonction replace en VBA access [ par WrestlingMan ] Voila : j'ai un petit souci ! En effet, j'ai réalisé une requête d'insertion pour un formulaire de saisie de résultats de tests sportifs ! Le problème access créer une fonction de recherche [ par angenoir62 ] Bonjour à tous, Je fais appel à vous et vos connaissances car je me noie dans tous ce que je peux trouver sur le net par rapport à mes recherches. Vo Création fichier en vba [ par yenaac9476 ] Bonjour tout le monde, La question a sûrement déjà été posée mais je ne la trouve pas. Pour créer un fichier excelle en VBA, j'utilise la fonction W acceder à du code .NET via access [ par quineman ] Bonjour,Je suis en train de créer une application access et j'ai besoin de créer des pdf. Puis je utiliser des fonctions .NET dans une base access ?Pa Création de tableau sous VB 6.0 [ par yuri67 ] Bonjour, Actuellement en stage dans une entreprise, il m’es demandé de réaliser un fichier (access, excel ou autre) contenant une base de donnée afi execution vba depuis access sur un fichier excel [ par westfaliajapy ] J'ai crée une macro dans access qui execute des commandes de mise en forme dans un fichier excel.Aucun problèmes dans 90% des cas, mais je me heurte à


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales