IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

variable globale dans requête [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 113
    Points : 52
    Points
    52
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    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.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 113
    Points : 52
    Points
    52
    Par défaut
    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.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Voici un bout de code pour récupérer les valeurs qui ont été sélectionnées dans la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 341
    Points : 23 800
    Points
    23 800
    Par défaut
    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    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 : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Je ne pense pas que cela soit possible avec ta requête.
    Le critère est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 113
    Points : 52
    Points
    52
    Par défaut
    Merci pour toutes ces propositions, je vais regarder ça. Un filtre peut-il être aussi utilisé pour faire un état ?

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    pas de problème, la commande doCmd.OpenReport permet de passer une clause WHERE en paramètre d'ouverture du rapport.

    philippe

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 113
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par philben Voir le message
    Dans ce cas, il suffit de filtrer le formulaire avec les rubriques, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SAGE X3V5]Variable globale dans requête SQL
    Par Zeroneurone dans le forum SAGE
    Réponses: 14
    Dernier message: 15/11/2012, 11h08
  2. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 10h55
  3. Variables globales dans une classe
    Par vanitom dans le forum C++
    Réponses: 16
    Dernier message: 14/01/2005, 14h40
  4. Variables globales dans fichiers entête
    Par benj_f04 dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 09h06
  5. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo