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 :

Passer un paramètre à une requête ?


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Passer un paramètre à une requête ?
    Bonjour à tous. Je suis un programmeur VB et là j'accroche dans quelque chose qui doit être tellement évident que je me sens nul. Ça fait 3 jours que je cherche comment passer un paramètre à une requête sans succès. Je m'explique.
    J'ai une table de clients chacun provenant d'une compagnie. Je veux faire un graphique simple simple simple me donnant le nombre de client par tranche d'âge pour la compagnie sélectionnée. Voici comment je procède. J'ai produit un formulaire avec une liste déroulante [liste_noms] qui contient tous les noms des compagnies dans la BD. J'ai mis un bouton qui, en le cliquant, me sort un état avec le graphique de la compagnie sélectionnée dans la liste (en théorie). Le problème c'est que je ne suis pas capable de passer le nom de la compagnie. À chaque fois, j'ai un pop-up me demandant [nom_compagnie]. Si je l'entre, tout fonctionne. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Par tranche d'âge"
    stLinkCriteria = "[nom_compagnie]=" & Me![liste_noms]
    DoCmd.OpenReport stDocName, , , stLinkCriteria
    J'ouvre l'état sans problème mais comme c'est pas à lui que je dois dire le nom de la compagnie mais à la requête, j'ai le pop-up me demandant le nom.

    DoCmd.OpenQuery ne permet pas stLinkCriteria Alors quoi faire?!
    -Un gars qui commence sérieusement à désespérer.

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut, et bienvenu.

    dans quel contexte utilise tu ta requete?
    parceque tu peux dans le QBE sous le champ [nom_compagnie] mettre dans la condition la valeur de la liste: Forms![monForm]![liste_noms]

    sinon en composant ta requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sSQL="SELECT * FROM maTable"
    sSQL=sSQL + " WHERE [nom_compagnie]='" & Me![liste_noms] & "'"
    objet.RecordSource=sSQL
    je viens de remarquer que tu as surement une erreur ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stLinkCriteria = "[nom_compagnie]=" & Me![liste_noms]
    c'est plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stLinkCriteria = "[nom_compagnie]='" & Me![liste_noms] & "'"
    si nom n'est pas une valeur mais un texte

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Donc, en gros :
    - tu as un formulaire, dans lequel il y a une zone de liste déroulante (ZDL) dans laquelle tu choisis une société. il contient également un bouton de commande (CMD) qui lance une procédure évènementielle qui ouvre un état
    - tu as une requête, qui contient un paramètre pour le nom de la société
    - tu as un état qui pointe sur cette requête.
    - tu n'arrives pas à passer le nom choisi dans la liste à ta requête.

    Solution :
    - modifie ta requête
    - supprime le paramètre
    - met en critère la ZDL du formulaire

    C'est fini.

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Ça y est presque... :)
    ÇA MARCHE!! Un gros merci à vous deux. Enfin, ça avance. Dernière petite chose. Mon état a besoin d'avoir le nom de la compagnie. Dans l'entête, j'ai mis un simple champ texte (nommé "titre") mais je ne comprend pas pourquoi je n'arrive pas à le modifier dynamiquement. Voici la ligne que j'utilise à partir de mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Reports]![Statistique par statut d'emploi]![titre] = "Compagnie ABC"
    J'ai un message comme de quoi j'ai mal orthographié (ce n'est pas le cas) ou que l'état n'est pas ouvert ou n'existe pas. Qu'st-ce qui cloche? Merci encore de votre aide!

  5. #5
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Au moment où cette ligne est exécutée, il faut que ton etat soit ouvert !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    Par défaut
    Bonjour,

    Je profite de ce topic pour poser une question en rapport avec le sujet.

    Sur le même principe que babu2001, je cherche à faire la même chose avec plusieurs zones de liste déroulante liées à une même requête. Si une zone de liste n'est pas renseignée, alors on ne prend pas en compte le champ dans la recherche.

    Exemple :

    J'ai en ZLD les champs "Chef de Projet", "Lieu", "Catégorie" dans mon formulaire.
    J'ai une requête sur table avec les 3 champs ci-dessus.
    Pour l'instant, mis à part en envisageant chaque cas (ici 2³ soit 8 cas) séparément, je ne vois pas trop comment avancer : si la ZDL "Lieu" n'est pas remplie, alors ma requête recherche un élement vide dans le champ Lieu :/ (je souhaiterais que la requête ignore ce champ s'il n'est pas renseigné)

    Merci d'avance !

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    flo_flo:
    je souhaiterais que la requête ignore ce champ s'il n'est pas renseigné
    alors ne ne faut pas que tu recherche un élement vide dans le champ.
    il faut pas du tout le mentionner dans les critères de ta requete.

  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Mais justement
    Mais justement. Puisque ma ligne est juste après
    DoCmd.OpenReport stDocName, l'état est ouvert et devrait accepté ma modif, non?

  9. #9
    Membre habitué Avatar de berti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 239
    Points : 175
    Points
    175
    Par défaut un peu de SQL
    j'ai eu ce problème lors d'une de mes conceptions. Je devais faire pas mal de tris sur une requête. La combine que j'avais trouvé c'était de passer chaque élément de trie dans une varaible. Après je teste la variable s'il était vide ou pas

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql = "SELECT NOM.nom, NOM.prenom, NOM.cp, FROM NOM "
    sql = sql & "WHERE (((NOM.nom) Like "a*") AND ((NOM.cp)="87000"));"
    dans le formulaire tu crées un champ nom commençant par et une liste par exemple pour le CP

    un peu de VB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if me![nomcommence] = "" then
    nom = ""
    else
    nom = "((NOM.nom) Like '" & me![nom] & "') AND " 
    end if
     
    if me![cpville] = "" then
    cp= ""
    else
    cp= "((NOM.cp) = " & me![cpville] & ") " 
    end if
    la requete donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql = "SELECT NOM.nom, NOM.prenom, NOM.cp, FROM NOM "
    sql = sql & "WHERE (" & nom & cp & ");"
    y a plus qu'a exécuter la requête.

  10. #10
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    @flo_flo

    Prévois dans tes listes une ligne 'Tous' qui a pour valeur *
    Et, dans tes critères, tu as un like (comme) sur ta zone

Discussions similaires

  1. [AC-2010] Passer paramètre à une requête dans un formulaire
    Par John Parker dans le forum IHM
    Réponses: 1
    Dernier message: 28/04/2015, 16h34
  2. [AC-2007] passer des paramètres à une requête en VBA
    Par symbabeauchat dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/11/2011, 22h38
  3. Réponses: 2
    Dernier message: 03/05/2006, 17h00
  4. [VBA-A]passer en paramètre une partie du nom de tables?
    Par pheno82 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/03/2006, 11h26
  5. Réponses: 6
    Dernier message: 12/03/2006, 17h30

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