Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 14h16   #1
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Par défaut variable globale dans requête

Bonjour,

J 'ai un souci de requête.



Par l'intermédiaire d'une fonction rubriques() déclarée dans un module, je récupère le critère (string) pour ma requête (valeur issue d'une variable globale issue d'un double-click dans une liste d'un formulaire).

C'est ok quand j'ai la sélection d'un seul critère.

Mais je voudrais donner la possibilité d'avoir plusieurs critères.
Or si j'essaie d'attribuer "A or B" à la fonction rubriques(), forcément, ce code ne marche pas.
Je pourrais créer plusieurs fonctions rubrique(), rubrique2(), rubrique3() etc mais ça ne fait pas propre d'autant que l'utilisateur peut sélection entre 1 et 5 critères.

Au final, je fais apparaitre dans le formulaire le résultat de cette requête.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h31   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Tu devrais essayer d'expliquer ce que tu veux faire (sans parler de la technique).
Cela permettrait sans doute de te proposer une solution technique : par exemple : en fonction des choix opérés par l'utilisateur, construire à la volée la source du formulaire.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h59   #3
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Citation:
Envoyé par ClaudeLELOUP Voir le message
Bonjour,

Tu devrais essayer d'expliquer ce que tu veux faire (sans parler de la technique).
Cela permettrait sans doute de te proposer une solution technique : par exemple : en fonction des choix opérés par l'utilisateur, construire à la volée la source du formulaire.
Dans le formulaire j'ai une liste (données provenance d'une table) qui permet de sélectionner 1 ou plusieurs références. En double-cliquant sur cette liste, l'utilisateur met à jour une autre liste qui lui permet de visualiser les références qu'il a sélectionné.

A partir de cette liste de sélection, je voudrais qu'un sous-formulaire fasse apparaitre la liste de données liées aux références choisies.

C'est pourquoi je cherche à mettre dans une requête les valeurs qui ont été placées par l'utilisateur dans la liste de sélection.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h40   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Voici un bout de code pour récupérer les valeurs qui ont été sélectionnées dans la liste :

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub LeBouton_Click()
Dim i As Integer
For i = 0 To Me.LaListe.ListCount - 1
   If Me.LaListe.Selected(i) = True Then
 
     'tu fais ici ce que tu dois, lorsqu'un item a été selectionné
     MsgBox Me.LaListe.ItemData(i)
   End If
Next i
End Sub
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h57   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Tu pourrais aussi regarder

Création d'un formulaire de recherche multicritères
ici : http://jeannot45.developpez.com/arti...multicriteres/

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h59   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Je ne pense pas que cela soit possible avec ta requête.
Le critère est :
Code :
WHERE rubriques_loi_eau.rubrique = rubriques()
A droite de l'opérateur de comparaison égale on ne peut pas mettre plus d'une valeur.

Il te faudrait quelque chose du genre :
Code :
WHERE rubriques_loi_eau.rubrique IN (valeur1, valeur2, valeur3)
Malheureusement il n'est pas possible d'introduire les valeurs valeur1, valeur2, valeur3 par l'intermédiaire d'une fonction.

La solution la plus simple (hormis l'utilisation d'une table pour stocker la sélection) est la modification du code SQL de la requête, comme dans ce tutoriel :
Concevoir une liste qui en alimente une autre

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 21h00   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
Citation:
Au final, je fais apparaitre dans le formulaire le résultat de cette requête
Dans ce cas, il suffit de filtrer le formulaire avec les rubriques, par exemple :

Code :
1
2
3
 
Me.filter = "rubriques_loi_eau.rubrique IN (" & Rubriques() & ")"
Me.filterOn = True
Avec Rubriques() renvoyant la liste des rubriques séparée par des virgules.

Voir aussi le tuto de Loufab sur l'opérateur IN.

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 10h47   #8
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Merci pour toutes ces propositions, je vais regarder ça. Un filtre peut-il être aussi utilisé pour faire un état ?
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h14   #9
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
pas de problème, la commande doCmd.OpenReport permet de passer une clause WHERE en paramètre d'ouverture du rapport.

philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 17h10   #10
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Citation:
Envoyé par philben Voir le message
Dans ce cas, il suffit de filtrer le formulaire avec les rubriques, par exemple :

Code :
1
2
3
 
Me.filter = "rubriques_loi_eau.rubrique IN (" & Rubriques() & ")"
Me.filterOn = True
Avec Rubriques() renvoyant la liste des rubriques séparée par des virgules.

Voir aussi le tuto de Loufab sur l'opérateur IN.

Philippe
Ça marche, merci
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h41.


 
 
 
 
Partenaires

Hébergement Web