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 :

Form recherche : enregistrements avec champs vide manquants [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Par défaut Form recherche : enregistrements avec champs vide manquants
    Bonjour,

    j'ai un formulaire de recherche multicritères.

    Lorsque j'effectue une recherche cela semble fonctionner correctement.

    En revanche à l'ouverture, et lorsque je RAZ les filtres,
    je n'ai pas l'intégralité de mes enregistrements.

    Les enregistrements dont le champs [ART_memo] est vide n'apparaissent pas.


    Ci-aprés la formule de la requête source :
    Citation Envoyé par formule
    Comme VraiFaux(EstNull([Formulaires]![F1_ART]![filtreMemo]);"*" & Null & "*";"*" & [Formulaires]![F1_ART]![filtreMemo] & "*")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T8_ART.ART_idART, T8_ART.ART_memo
    FROM T8_ART
    WHERE (((T8_ART.ART_memo) Like IIf(IsNull([Formulaires]![F1_ART]![filtreMemo]),"*" & Null & "*","*" & [Formulaires]![F1_ART]![filtreMemo] & "*")));
    Sa fait un moment, que j'essai de retourner la formule dans tous les sens, mais j'arrive pas à trouver ce qui pose problème

  2. #2
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    Fais un Debug.Print pour vérifier la valeur retour de la fonction IIf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print IIf(IsNull([Formulaires]![F1_ART]![filtreMemo]),"*" & Null & "*","*" & [Formulaires]![F1_ART]![filtreMemo] & "*")
    Bon DEV
    .

  3. #3
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 954
    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 954
    Par défaut
    bonsoir,
    En revanche à l'ouverture, et lorsque je RAZ les filtres,
    je n'ai pas l'intégralité de mes enregistrements.
    ce que tu souhaites obtenir n'est pas clair: si tu veux afficher tous les enregistrements sans filtre, il faut mieux supprimer la clause WHERE.
    De plus, Null ne peut pas être une valeur de comparaison: [Monchamp] = Null ou [Monchamp] like Null ou [Monchamp] like "*Null*" ne te renverra jamais rien sauf si il y a vraiment écrit "Null" dans ton champ (et à condition d'utiliser la troisième syntaxe avec les guillemets)

    Pour tester si un champ contient la valeur nulle il faut toujours utiliser la fonction Isnull() qui renverra Vrai si le champ est nul (et non pas vide comme souvent écrit dans les posts) ou Faux si il ne l'est pas:
    syntaxes correctes: WHERE IsNull([Monchamp]) pour avoir les valeurs nulles
    ou WHERE Not IsNull([Monchamp]) pour avoir les non nulles

    Si tu veux afficher les enregistrements qui correspondent au critère du filtre et également les valeurs nulles, il faut 2 lignes de critères en utilisant OR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T8_ART.ART_idART, T8_ART.ART_memo
    FROM T8_ART
    WHERE ((IsNull(T8_ART.ART_memo)) OR (T8_ART.ART_memo Like "*" & [Formulaires]![F1_ART]![filtreMemo] & "*"));
    ou si c'est ton filtre qui est vide et que tu veux afficher TOUS les enregistrements, il faut enlever & Null & "*" dans ton expression et supprimer les nuls de ton champ avec Nz():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T8_ART.ART_idART, T8_ART.ART_memo
    FROM T8_ART
    WHERE Nz(T8_ART.ART_memo) Like IIf(IsNull([Formulaires]![F1_ART]![filtreMemo]),"*","*" & [Formulaires]![F1_ART]![filtreMemo] & "*");

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Par défaut
    Citation Envoyé par star Voir le message
    Bonjour,
    Fais un Debug.Print pour vérifier la valeur retour de la fonction IIf
    Debug.Print IIf(IsNull([Formulaires]![F1_ART]![filtreMemo]),"*" & Null & "*","*" & [Formulaires]![F1_ART]![filtreMemo] & "*")
    .
    Merci mais, il s'agit d'une requête manuelle et d'un formulaire... je ne sais pas comment utiliser debug de cette façon :/

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    [...] ou si c'est ton filtre qui est vide et que tu veux afficher TOUS les enregistrements, il faut enlever & Null & "*" dans ton expression et supprimer les nuls de ton champ avec Nz():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T8_ART.ART_idART, T8_ART.ART_memo
    FROM T8_ART
    WHERE Nz(T8_ART.ART_memo) Like IIf(IsNull([Formulaires]![F1_ART]![filtreMemo]),"*","*" & [Formulaires]![F1_ART]![filtreMemo] & "*");
    MERCI !
    Sa fonctionne parfaitement maintenant

    Je ne connaissais pas la fonction Nz()
    Merci encore...

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

Discussions similaires

  1. [AC-2007] Recherche Multicritères avec champs vide
    Par plop001 dans le forum Access
    Réponses: 1
    Dernier message: 15/01/2015, 17h35
  2. [AC-2000] Récupérer un enregistrement avec champ vide
    Par Remus91 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/07/2009, 15h20
  3. Affichage enregistrements avec champs vides
    Par Tybot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/11/2008, 10h10
  4. [stringtokenizer] probleme avec champs vides
    Par gege2mars dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2004, 08h25
  5. Pb de tri avec champs vide
    Par Invité dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2004, 17h42

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