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 :

Simplifier la syntaxe "VraiFaux" dans une requête


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Simplifier la syntaxe "VraiFaux" dans une requête
    Bonjour!

    Dans une requête de Access 2002, je voudrais simplifier mon expression en ne répétant pas à chaque fois le nom du champ.

    C-à-d:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([Contact]comme "*malade*" ou [Contact]comme "*CHSLD*" ou [Contact]comme "*avis*","Rejeté",Null)
    J'ai beau cherché, je ne trouve pas.

    Merci de votre aide!

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir

    Je n'ai aucune idée de la syntaxe, ni même si ça peut marcher, mais tu pourrais essayer peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    VraiFaux([Contact] IN Array("*malade*" ;"*CHSLD*";"xxxx";"xxx" .....)
    Bon Courage

    Didier71

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Je crois que l'on est sous Access.....

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui Chtulus, on est bien en Access 2002. Je tente de créer une expression dans le champ d'une requête (pas en SQL). Ma question manque-t'elle de précision?

    Merci Didier71 pour ta réponse.

    Mais "array" ne semble pas fonctionner en mode requête et l'opérateur "IN" semble fonctionner avec des valeurs complète mais pas avec des valeurs partielles (*x*). À moins que la syntaxe ne soit pas encore correcte.

    Merci!

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Salut Fafma67,

    Tu n'étais pas visé par mon intervention

    Mais Didier71, oui

    Bonne soirée
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonjour !

    Je sais qu'on est sous Access, d'ailleurs, j'avais bien prévenu que je ne savais pas si ça marchait, en particulier le IN

    Pour ma part, j'ai déja passé des tableaux (Array) en paramètres dans des fonctions, et ça marche...
    Ensuite, il faut utiliser les fonctions Lbound() et Ubond() pour parcourir les valeurs du tableau..(mais en VBA, pas en mode requête.)
    Peut être que pour ce cas il faudrait créer une fonction de ce genre...
    et l'appeler dans le requeteur....

    Bon courage..

    Didier71

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour

    Avec VraiFaux, je penses que tu n'a pas d'autres solutions que la répétition.
    Amicalement

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    bonjour,

    Pourquoi ne pas créer tout simplement ta propre fonction en VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function ContactValide(monContact as string) as boolean
         ContactValide = vbfalse
         if monContact like "*malade*" then 
            contactValide = vbtrue
            exit function
         endif
         if .....
     
    end function
    J'ai fait simple.

    Pour l'appel c'est comme une fonction native.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vraifaux(ContactValide([Contact]);"je suis vrai";"je suis faux")
    Petite précision concernant In, ça fonctionne très bien mais avec des valeurs compléte,
    On ne mélange pas les jokers du like avec le in. Ceux-ci étant 2 OPERATEURS. Un peut comme si vous vouliez faire == ou =+ ou encore AND OR... Inutile de surcharger avec un tableau (array) il suffit de regarder la doc.

    Donc le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf([nom] In ("CHLSD","malade"),"oui","non") AS Expr1
    fonctionne.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour!

    Merci Loufab pour ta solution, j'en comprend le principe mais à la base je ne suis pas programmeur. Et comme j'utilise régulièrement ce genre d'expression, j'aurais souhaité trouver une solution me permettant de continuer d'utiliser les champs calculés.

    J'ai continué mes recherches mais nada pour l'instant.

    Merci à tous!

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Et tu ne trouvera rien, les solutions sont dans le post.

    Soit la répétition avec iif, soit une fonction que tu utiliseras comme une native.

    De loin je préfére une fonction propriétaire à des répétitions.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci!
    Alors je vais me débrouiller avec ça.

    Merci pour votre temps et votre aide!

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

Discussions similaires

  1. [PowerShell] double quotes et variables dans une ligne de script Powershell
    Par Aenean dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/12/2014, 17h55
  2. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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