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 :

Requête avec critère vrai/faux avec en sortie faux une valeur nulle


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut Requête avec critère vrai/faux avec en sortie faux une valeur nulle
    Bonjour,

    Ceci est mon tout premier post sur le forum. Alors voilà, j'essaie d'effectuer une requête me permettant de ressortir les valeurs d'une colonne d'une base de donnée contenant les cases vides ou contenant le texte "SANS".

    Pour être plus précis, j'ai créé dans un formulaire une case à option dans laquelle je peux cocher afin de choisir entre 2 critères de recherche pour la colonne en question. Si la case est cochée, je dois rechercher dans la colonne les valeurs nulles et les cases contenant "SANS".
    J'ai essayé plusieurs manières d'effectuer cette tâche, mais j'obtiens toujours la même erreur.

    J'utilise la ligne suivante dans le critère de ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Abs([Formulaires]![stat]![OptionLTE]);"AVEC";"SANS" Ou Est Null)
    l'erreur est : "Cette expression présente une syntaxe incorrecte ou est trop complexe pour être évaluée. ..."

    Le problème vient de la partie 'Est null' puisque si j'ai seulement la valeur "SANS" dans le critère faux, cela fonctionne. Il me manque cependant tous les résultats ayant une case null. Or, lorsque j'insère seulement "SANS" Ou Est Null dans le critère de recherche sans utiliser la fonction vraiFaux, j'obtiens ce que je recherche, mais je ne peux plus choisir avec la case a cocher mon critère de recherche.

    Existe-t-il un moyen de réaliser ma requête en utilisant un bouton a option tout en recherchant des valeurs nulls ?
    si case cochée => recherche "AVEC"
    si case non cochée => recherche "SANS" ou Est Null


    P.S. Ma requête est utilisée pour réaliser plusieurs chose dans le formulaire dont recueillir des données pour des graphiques

    Merci d'avance !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 427
    Par défaut
    Bonjour.

    Personnellement je ferai quelque chose comme :

    un champ calculé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(isNull([TaSoure].[TonChamp]); "SANS"; [TaSoure].[TomChamp])
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz([TaSoure].[TonChamp]; "SANS")
    et comme crirère de ce champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Abs([Formulaires]![stat]![OptionLTE]);"AVEC";"SANS")
    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
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 427
    Par défaut
    Et je ne vois comment la valeur absolue d'une option peut retourner Vrai ou Faux attendu par le iff().

    Vrai en numérique vaut -1 et faux vaut 0 donc à priori tu n'auras jamais de cas vrai puisqu'une valeur absolue ne peut être que positive.

    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.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    C'est une des manières de faire que j'ai essayé et elle fonctionne (testé) puisque abs(-1)=1 et dans les 2 cas c'est équivalent à vrai

    sinon j'avais aussi fait:

    VraiFaux([Formulaires]![stat]![OptionLTE])<0;"AVEC";"SANS" Ou Est Null)

    Si je fais à la place:

    VraiFaux([Formulaires]![stat]![OptionLTE])<0;"AVEC";"SANS")
    tout fonctionne, mais il me manque les valeurs nulles qui sont de la même catégorie que "SANS".

    Et merci de ta réponse rapide
    J'ai cependant du mal a comprendre ou je dois mettre le champ calculé (la première ligne de code fournis) ainsi que la deuxième

    Merci d'avance !

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    Bonjour,
    marot_r t'a donné la solution avec Nz() qui teste si un champ est nul et pour lequel tu dois mettre une valeur dans le second paramètre (ici j'ai mis -1 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];-1)< 0;"AVEC";"SANS")
    Cela étant dit, je rejoins marot_r pour les valeurs des cases d'options qui vont de 1 à n, nul étant la valeur par défaut ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];0)>0;"AVEC";"SANS")

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    Bonjour,
    marot_r t'a donné la solution avec Nz() qui teste si un champ est nul et pour lequel tu dois mettre une valeur dans le second paramètre (ici j'ai mis -1 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];-1)< 0;"AVEC";"SANS")
    Cela étant dit, je rejoins marot_r pour les valeurs des cases d'options qui vont de 1 à n, nul étant la valeur par défaut ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];0)>0;"AVEC";"SANS")


    Bonjour tee_grandbois,
    je suis aussi daccord avec marot_r concernant les valeurs par défaut, avec la quantité d'essaie que j'ai fait, j'ai perdu le nord

    J'ai testé ton premier code ( avec le -1) il n'y a pas d'erreur, mais il me manque toutes les valeurs nulles dans mon résultat
    Je ne sais pas si j'ai omis quelque chose, mais j'ai seulement mis ton code dans le critère de ma requête.

    Les valeurs nulles dans les cases doivent être compilé avec les résultats "SANS" mais pas avec les valeurs "AVEC"
    Je ne sais pas si j'ai bien expliqué ce que je cherche à faire :S

    merci d'avance!!!!

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    J'ai testé ton premier code ( avec le -1) il n'y a pas d'erreur, mais il me manque toutes les valeurs nulles dans mon résultat
    mauvais choix, j'ai fait une erreur, désolé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];-1)>0;"AVEC";"SANS")
    as-tu essayé le second code ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    mauvais choix, j'ai fait une erreur, désolé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Nz([Formulaires]![stat]![OptionLTE];-1)>0;"AVEC";"SANS")
    as-tu essayé le second code ?
    Je viens de retester avec ta correction. J'ai seulement les "SANS" comme résultat peu importe l'état de mon bouton

    Je dois avouer que j'ai du mal a comprendre cependant comment les valeurs nulles pourraient sortir comme résultat de recherche

    Merci!

  9. #9
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    cela veut peut-être dire que [OptionLTE] n'est pas un groupe d'options ou que ces valeurs ne vont pas de 1 à n. Peux-tu faire une capture d'écran des propriétés de ce contrôle (et celles des boutons d'options si c'est bien un groupe) ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    La case à option est seulement oui/non

    le problème est d'y inclure les valeurs nulles des items ou la case est null

    voilà 3 captures d'écran de l'essentiel

    Nom : capture_optionLTE.png
Affichages : 2363
Taille : 44,0 Ko

    Nom : capture_requete.png
Affichages : 2620
Taille : 17,9 Ko

    Nom : colonne.png
Affichages : 2255
Taille : 2,9 Ko

    si la case à option est cochée (vrai), alors on recherche seulement les cases contenant "AVEC"
    si la case à option n'est pas coché (faux), alors on recherche seulement les cases contenant "SANS" ET les cases vides

  11. #11
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    il ne faut pas sélectionner l'étiquette mais le bouton rond

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    il ne faut pas sélectionner l'étiquette mais le bouton rond
    oui c'est mon erreur, je l'ai corrigé en même temps que tu as écrit ces lignes ;P

  13. #13
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    Ok, comme quoi, une simple capture d'écran fait avancer plus rapidement
    Ce n'est donc pas un groupe d'options puisque ta case n'est pas incluse dans un cadre de groupe d'options donc la valeur ne peut être que 0 ou -1 , donc True ou False.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([Formulaires]![stat]![OptionLTE]= Vrai;"AVEC";"SANS") ou VraiFaux([Formulaires]![stat]![OptionLTE]= Vrai;"AVEC";"")
    mais il va falloir ajouter & "" à la suite de [cartecell] sur la ligne champ:
    Images attachées Images attachées  

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    MERCI !!!!
    Ça fonction parfaitement !
    je prend bonne note de cette passe passe.

    Par contre j'ai plus ou moins compris pourquoi il faut spécifier dans le champ les cases vides

    mais merci beaucoup, cela faisait plusieurs jours que j'essayais de régler ce souci par moi même. Vive les forums !

  15. #15
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    Par contre j'ai plus ou moins compris pourquoi il faut spécifier dans le champ les cases vides
    la comparaison avec nul est compliqué, par exemple = Null ne fonctionne pas et on ne peut pas mettre non plus "Est null" dans un VraiFaux car ce serait interprété par Access comme une chaîne de caractères.
    Le VraiFaux n'accepte pas non plus plusieurs valeurs comme tu as tenté de le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Abs([Formulaires]![stat]![OptionLTE]);"AVEC";"SANS" Ou Est Null)
    Le fait d'ajouter &"" à un champ annule le nul , du coup c'est plus facile de comparer le champ avec un chaine de caractères y compris vide.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    VraiFaux(Abs(NZ([Formulaires]![stat]![OptionLTE];0));"AVEC";"SANS"
     
    Switch(  [Formulaires]![stat]![OptionLTE] is null;'Valeur Nulle';[Formulaires]![stat]![OptionLTE]=-1;'Avec';[Formulaires]![stat]![OptionLTE]=0;'Sans')
    Dernière modification par Invité ; 20/06/2018 à 19h01.

  17. #17
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 992
    Par défaut
    Bonsoir dysorthographie,
    merci pour ta proposition mais elle ne convient pas car le but n'est pas de trouver les valeurs possibles de [Formulaires]![stat]![OptionLTE] mais plutôt celles de [cartecell] qui peut contenir "AVEC", "SANS" ou nul : le but est de sélectionner, soit "AVEC" quand [OptionLTE] est coché, soit "SANS" ou nul quand [OptionLTE] n'est pas coché.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Oui j'ai certainement rein compris car ma proposition avec Switch permet de faire ce qu'on veut .

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

Discussions similaires

  1. [AC-2010] Etat avec Zone de texte avec critère
    Par ACNTOURAINE dans le forum IHM
    Réponses: 2
    Dernier message: 16/07/2014, 18h26
  2. [AC-2007] Requête sur table d'association avec critère de date
    Par Dapangma dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 06/05/2014, 11h13
  3. Réponses: 2
    Dernier message: 21/12/2007, 17h05
  4. [SQL-Server] SQRetourner une valeur NULL avec un mssql_fetch_array
    Par arnolem dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/08/2007, 17h22
  5. [VB6] pb avec critère sur find avec rs ADODB
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/08/2006, 16h45

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