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

Access Discussion :

Comment passer les opérateurs de comparaison comme paramètres dans une requête? [AC-2003]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Comment passer les opérateurs de comparaison comme paramètres dans une requête?
    - Je souhaite que ma requête affiche les enregistrements selon un critère sur le champ [Montant] de ma table TB_Vente.
    - J'ai placé un contrôle liste déroulante cmbList1 qui contient les valeurs (">=";"=";"<=") et un zone de texte strMontant sur mon formulaire frmVente.
    - Dans ma requête et dans le critère sur le champ [Montant] j'ai l'écriture suivante:
    Nz([Forms]![frmVente]![cmbListe1] & ([Forms]![frmVente]![strMontant] ;[Montant])

    Donc je veux que la requête me retourne les enregistrements dont le montant est >= 1000 si par exemple je choisis la valeur ">=" pour ma cmbListe1 et je rentre la valeur 1000 dans strMontant.

    Mais j'ai toujours l'erreur : cette expression présente une syntaxe incorrecte.
    J'ai essayé d'ajouter des cotes '' mais rien.
    Je ne veux pas 3 requêtes pour chaque opérateur de comparaison puisque j'ai d'autres critères a jouté

    Merci de votre aide!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    Le SQL qui utilise des paramètres ressemble à cela :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select TaTable.* from TaTable where TaTable.TonChamp=[paramValeur]

    Tu pourrais peut-être essayer :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select TaTable.* from TaTable where eval(TaTable.TonChamp & [paramOperateur] & [paramValeur])=true

    Je ne suis pas certain que cela marche et que eval soit autorisé dans du SQL. Et attention eval est considéré comme un risque pour la sécurité des applications car il exécute n'importe quoi comme commande.

    Si eval ne fonctionne pas tu pourrais sans doute la simuler avec une fonction public. Quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public EvaluerValeur(prmValeurReference as variant, prmOperateur as string, prmValeurCherche as variant) as boolean
       dim result as boolean:result=false
     
       if not isnull(prmValeurReference) and not isnull(prmValeurCherche) then
          select case prmOperateur
             case "=":result=prmValeurReference=prmValeurCherche
             case ">=":result=prmValeurReference>=prmValeurCherche
             ' et ainsi de suite
             case else
                 error 5 'juste pour attraper les cas que j'aurai manqué
         end select
       end if
     
        EvaluerValeur=result
    end function
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select TaTable.* from TaTable where EvaluerValeur(TaTable.TonChamp, [paramOperateur], [paramValeur])=true

    Sinon tu peux générer par code VBA ton SQL. Il y a plusieurs tutoriaux sur ce site à propos des formulaires de sélection multicritère.

    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.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Merci marot_r la fonction eval fera la faire!
    Encore merci!

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si tu penses en avoir fini, merci d'appuyer sur le bouto en bas de dicussion.

    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.

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

Discussions similaires

  1. Passer le contenu d'un TDJBCInput comme paramètre dans une routine
    Par ngatchou dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 09/02/2015, 14h36
  2. passer operateur de comparaison comme paramètre d'une fonction js
    Par meryazer dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2011, 11h44
  3. Comment passer des paramètres dans une requête XPATH
    Par SyLvErStOrM dans le forum BIRT
    Réponses: 18
    Dernier message: 29/04/2011, 11h08
  4. Réponses: 2
    Dernier message: 04/05/2006, 11h34
  5. Réponses: 1
    Dernier message: 21/03/2006, 14h29

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