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 :

Critère de requête : Comme avec comme réponse Est Null / Est Pas Null / * [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut Critère de requête : Comme avec comme réponse Est Null / Est Pas Null / *
    Bonjour,

    J'ai une requête Access qui va chercher des valeurs de critère pour certains champs en utilisant le code de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme [Forms]![Formulaire Sylvie (Divers)]![Modifiables69]
    Et cela fonctionne très bien pour les champs ou la réponse est soit 0,1,2 ou encore du texte du style "Laurent","Juin"...


    Mon problème, j'ai un "Comme sur le critère d'un champ date, ou j'aimerais choisir "Est Null" ou "Est Pas Null" ou Tout afficher

    Dans mon formulaire Formulaire Sylvie (Divers), j'ai donc créer une liste déroulante Modifiable69, avec comme valeur "Est Null","Est Pas Null", "*"

    Mais cela ne fonctionne pas ! J'ai l'impression que le comme n'accepte pas ces valeurs...

    Pourriez-vous m'éclairer ?

    Grand merci :-)

    EDIT
    Je viens d'essayer cela, mais non...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIF (Comme [Forms]![Formulaire Sylvie (Divers)]![Modifiables69]="Est Null";Est Null;IIF(Comme [Forms]![Formulaire Sylvie (Divers)]![Modifiables69]="Est Pas Null";Est Pas Null;"*"))

  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,

    Explique plutôt – avec des mots et non du code – ce que tu veux faire dans ton formulaire. Il y a probablement mieux à faire que ta liste déroulante !

    Pour t'aider à expliquer, montre une image de ton 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 habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    J'ai une requête avec plusieurs champs [NOM], [NOMBRE ENFANTS], [DATE DE DECES]...

    Pour éviter que l'utilisateur édite la requête pour par exemple n'afficher que les personnes ayant 3 enfants, j'utilise en amont un formulaire qui lui demande les différents critères. j'ai par exemple sur ce formulaire une liste déroulante avec des chiffres allant de 0 à 6 pour le nombre d'enfants, donc si l'utilisateur sélectionne 3 et lance la requête, le résultat affichera les noms des personnes ayant 3 enfants. Et jusque là, tout va bien :-)

    Mon problème se situe au niveau de la date de décès...

    Pour n'afficher que les personnes 'vivante', je tape comme critère du champ [DATE DE DECES] : Est Null et évidemment si je ne veux que les décédés, je tape comme critère : Est Pas Null, et si je veux tout, je ne rentre rien comme critère.

    Mais j'aimerais aussi que l'utilisateur puisse choisir de lui même, donc en créant une liste déroulante sur le formulaire avec comme valeur "Est Null", "Est Pas Null" et "*", mais je n'y arrive pas, cela ne fonctionne pas ?!

  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
    Je suppose que [DATE DE DECES] contient une date sa valeur est soit une date (si malheurement il est décédé), soit 00:00:00 (s'il est encore en sursis) tu dois donc demander si la valeur est #00:00:00# dans ton critère.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Non, si la personne est décédée, il y a effectivement une date, autrement RIEN... donc je dois jouer avec des Est Null, Est Pas Null

    Ps : La base de données est importante, donc impossible de changer le format de la date...

  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,

    Essaie avec une expression qui teste le champ [DATE DE DECES] différemment selon le contenu de la liste modifiable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PremVrai([Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Null"; EstNull([DATE DE DECES]);
             [Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Pas Null"; Pas EstNull([DATE DE DECES]);
             Vrai; Vrai)
    Ensuite mettre Vrai comme critère dans la colonne de cette expression.

    L'expression prend en charge trois cas de figures, dans cet ordre:
    Si Modifiable69 contient "Est Null", on teste le champ [DATE DE DECES] avec la fonction EstNull.
    Si Modifiable69 contient "Est Pas Null", on teste le champ [DATE DE DECES] avec la fonction EstNull dont on inverse le résultat avec Pas.
    Enfin, si on n'est dans aucun des deux cas précédents, on renvoie Vrai (pour le cas "*").

    A+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    CELA FONCTIONNE !!!!!

    Il renvoi -1 pour la condition choisie, mais bon cela ne changera pas le monde :-)

    GRAND MERCI

    Ps : Pourquoi n'est-il pas possible de mettre des Est Null des un critère "Comme" directement dans la requête ?

  8. #8
    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
    Citation Envoyé par Crachover Voir le message
    Ps : Pourquoi n'est-il pas possible de mettre des Est Null des un critère "Comme" directement dans la requête ?
    Parce que Est Null est un opérateur SQL au même titre que LIKE (Comme en français)

    Tu aurai le même genre de problématique, si tu voulais filtrer trois cas sur le nombre d'enfants:
    - moins de trois enfants (>0 et <3)
    - trois enfants (=3)
    - plus de trois enfants (>3)
    Les opérateurs utilisés pour effectuer les comparaisons ne sont pas les mêmes pour les trois cas de figure.

    A+

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Ok :-)

    Une dernière question : j'essaye d'afficher "Vrai" au lieu de -1, mais je n'y arrive pas, sais-tu m'aider ? Je croyais qu'en rajoutant simplement des guillemets cela fonctionnerait, mais non...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PremVrai([Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Null"; EstNull([DATE DE DECES]);
             [Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Pas Null"; Pas EstNull([DATE DE DECES]);
             "Vrai"; "Vrai")
    Merci pour tes lumières :-)

    Ps : Y a-t-il un nombre limite de critères avec PremVrai ?

  10. #10
    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
    Pour la première question:
    Ce n'est pas un véritable problème: Vrai (True) vaut -1
    Et d'une manière générale, une valeur entière différente de zéro est considérée comme Vrai.
    Donc le critère fonctionne.

    Maintenant, peut-on faire afficher Vrai/Faux ?
    Oui, pour cela il faut qu'Access reconnaisse le type de la colonne.
    On va donc forcer le type de donnée avec CBool:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CBool(PremVrai([Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Null"; EstNull([DATE DE DECES]);
                   [Forms]![Formulaire Sylvie (Divers)]![Modifiable69]="Est Pas Null"; Pas EstNull([DATE DE DECES]);
                   Vrai; Vrai))
    Vérifier que la requête fonctionne toujours, la sauver, puis (important) la fermer.
    Ouvrir la requête en mode création.
    Sélectionner la colonne en cliquant dans l'expression CBool(PremVrai(...etc...))
    Afficher la fenêtre de propriétés.
    Choisir le format Vrai/Faux.
    Sauver la requête et l'exécuter.
    Remarque: De cette manière on change la manière d'afficher, mais la valeur restera toujours -1.

    Pour la deuxième question:
    Citation Envoyé par Crachover
    Y a-t-il un nombre limite de critères avec PremVrai
    Non, il n'y a pas de limite, à la différence de IIf.
    Pour plus d'information sur PremVrai, faire une recherche sur Switch (nom natif en anglais) dans l'aide d'Access.

    A+

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    Merci pour tes explications et tes solutions :-)

    Bon Dimanche

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/05/2012, 09h48
  2. Requête sql avec jointure et table vide (ou tuple nulle)
    Par Aenur56 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/04/2010, 14h10
  3. Requête sélection avec comme critère: champ vide
    Par droxyme dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/10/2007, 10h24
  4. Requête avec comme critère de recherche un %
    Par Poussy-Puce dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/03/2006, 20h15
  5. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35

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