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 :

Recherche multicritère et gestion du null [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Recherche multicritère et gestion du null
    Bonjour à tous,

    Je suis en train de créer un formulaire de recherche multicritère et la requête qui va avec en me basant sur le tutoriel de Claude LELOUP.

    Je le trouve très abordable au vu de mes connaissances, mais il me semble qu'il a une limite ou en tout cas un parti pris que je ne parviens pas à contourner.

    Je souhaiterais que lorsqu'un des critères n'est pas utilisé par la requête (champ de mon formulaire de recherche laissé null), les enregistrements qui contiennent un nul dans le champ correspondant de ma table soient quand même affichés.

    Par exemple, si je filtre uniquement sur une liste déroulante (Service de l'organisation = Service 1) et que j'ai également un critère sur ma date, Access croise les deux et je perds tous les enregistrements Service 1 qui n'ont pas de date.

    Nom : Illus.jpg
Affichages : 388
Taille : 65,0 Ko

    Syntaxe pour le service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme VraiFaux([Formulaires]![F_Search]![LstAG].[ListIndex]=-1;"*" & [Formulaires]![F_Search]![LstAG] & "*";[Formulaires]![F_Search]![LstAG])
    Syntaxe pour la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >=VraiFaux(EstNull([Formulaires]![F_Search]![TxtDateStart]);#1/01/1990#;[Formulaires]![F_Search]![TxtDateStart]) Et <=VraiFaux(EstNull([Formulaires]![F_Search]![TxtDateEnd]);#1/01/2100#;[Formulaires]![F_Search]![TxtDateEnd])
    Cette syntaxe parvient à faire fi d'un null dans les champs date de mon formulaire de recherche. Par contre, je souhaiterais que si aucune date n'a été encodée dans ma table [T_Action]![ForeseenDate], ces enregistrements soient quand même affichés par la requête.

    En résumé, tant que je n'agis pas sur un champ de mon formulaire de recherche, le champ correspondant de ma requête doit également m'afficher les null.

    A titre d'information, mon seul champ obligatoire est le champ du Service de l'organisation.

    Voyez-vous un moyen de contourner ce problème ?

  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 : 282 192
    Points
    282 192
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Merci Claude !

    Quoi de mieux que l'amélioration d'une solution par la personne à l'origine même de cette solution .

    J'essaye d'appliquer tous ces enseignements et reviens vers toi quelle qu'en soit l'issue.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Rebonjour,

    J'ai passé les dernières heures à retourner le fil de discussion dans tous les sens. Je parviens à faire fonctionner les critères liés à des champs zones de liste déroulante, mais pas moyen pour les zones de textes et date. Je n'ai pas encore essayé les cases à cocher.

    Mes relations me semblent pourtant correctes.

    Nom : RelationsRequête.jpg
Affichages : 452
Taille : 66,4 Ko

    En SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Action.IDAction, T_Action.RefAG, T_AG.AGShort, T_Action.ForeseenDate, T_Action.RefThemeStrat, T_Theme_Strat.ThemeStratTitle, T_Action.RefTarget, [T-Target].TargetTitle, T_Action.RefThemeAG, T_Theme_AG.ThemeAGTitle, T_Action.RefTargetAG, T_Target_AG.TargetAGTitle, T_Action.Description, T_Action.Message, T_Action.ExtInternet, T_Action.ExtSocialMedia, T_Action.ExtBrochure, T_Action.ExtAffichage, T_Action.ExtEcrans, T_Action.ExtPublicite, T_Action.ExtCommuniquePresse, T_Action.ExtConférencePresse, T_Action.ExtCourrier, T_Action.ExtMassMailing, T_Action.ExtSalon, T_Action.IntIntranet, T_Action.IntSocialMedia, T_Action.IntFininfoPapier, T_Action.IntFininfoElectronique, T_Action.IntMNL, T_Action.IntBrochure, T_Action.IntSeminaire, T_Action.IntAffichage, T_Action.IntCourrier, T_Action.IntMassMailing, T_Action.ChannelComment, T_Action.DependanceCSC, T_Action.DependanceAutre, T_Action.Budget, T_Action.Comments, T_Action.Contact, T_Action.Status, T_Action.Postponed, T_Action.Delayed, T_Action.Evaluation
    FROM [T-Target] RIGHT JOIN (T_Theme_Strat RIGHT JOIN (T_Theme_AG RIGHT JOIN (T_Target_AG RIGHT JOIN (T_AG RIGHT JOIN T_Action ON T_AG.IDAG = T_Action.RefAG) ON T_Target_AG.IDTargetAG = T_Action.RefTargetAG) ON T_Theme_AG.IDThemeAG = T_Action.RefThemeAG) ON T_Theme_Strat.IDThemeStrat = T_Action.RefThemeStrat) ON [T-Target].IDTarget = T_Action.RefTarget
    Je procède de la manière suivante :

    Pour les zones de liste déroulante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Formulaires]![F_Search]![LstTheme] Ou [Formulaires]![F_Search]![LstTheme] Est Null
    Pour les zones de texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [Formulaires]![F_Search]![TxtMessage] & "*" Ou [Formulaires]![F_Search]![TxtMessage] Est Null
    Pour les zones de date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >=VraiFaux(EstNull([Formulaires]![F_Search]![TxtDateStart]);#1/01/1900#;[Formulaires]![F_Search]![TxtDateStart]) Ou [Formulaires]![F_Search]![TxtDateStart] Est Null Et <=VraiFaux(EstNull([Formulaires]![F_Search]![TxtDateEnd]);#1/01/2100#;[Formulaires]![F_Search]![TxtDateEnd]) Ou [Formulaires]![F_Search]![TxtDateEnd] Est Null
    Où suis-je dans le faux ?

  5. #5
    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 : 282 192
    Points
    282 192
    Par défaut
    Peux-tu poster ta db
    - sans données confidentielles ;
    - dans un format Access2000 ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    J'ignore pourquoi, mais plus rien ne fonctionnait. Mon problème n'était pas dû à la syntaxe. J'ai fait un test et ma requête ne reconnaissait même plus les champs de mon formulaire de recherche.

    Je pense que c'est en ordre, j'avoue ne pas avoir pris le temps de tester tous les cas de figure car j'ai une bonne trentaine de critères.

    Pour mes cases à cocher, je laisse la possibilité à l'utilisateur de cocher toute une série de cases qui étaient à cocher à l'encodage. En gros, quand il la coche dans le formulaire de recherche, l'utilisateur veut voir apparaître seulement les enregistrements pour lesquels cette case a été cochée. S'il n'y touche pas, la requête doit alors afficher les deux valeurs possibles donc TOUS les enregistrements (et non pas uniquement ceux où la case n'avait pas été cochée à l'encodage).

    J'ai utilisé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([Formulaires]![F_Search]![CochExtInternet]=-1;-1;[ExtInternet])
    Elle semble fonctionner, mais comme c'est un peu différent de ce qui est renseigné dans ce post, je préfère soulever la question.

    Merci en tout cas à Claude LELOUP et bravo à lui pour ses explications très claires et illustrées.

  7. #7
    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 : 282 192
    Points
    282 192
    Par défaut
    Finalement, tu es dépanné ou pas ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    J'en ai l'impression, mais pour passer le sujet en résolu, j'attendais juste d'avoir confirmation que mon critère "case à cocher" était fiable et que ça ne marchait pas par un concours de circonstance

  9. #9
    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 : 282 192
    Points
    282 192
    Par défaut
    Ça a l'air bon.

    Le mieux est que tu essaies et reviens si problème, mais avec une db exemple, car avant de proposer, j'aime bien d'abord tester.

    À +
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Copywriter
    Inscrit en
    Juillet 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Copywriter
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Aucun couac constaté. Je passe le topic en résolu. Merci encore.

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

Discussions similaires

  1. Recherche Multicritère ACCESS avec gestion de photos
    Par johanaquatique dans le forum IHM
    Réponses: 5
    Dernier message: 18/06/2009, 09h21
  2. Réponses: 8
    Dernier message: 04/08/2006, 01h51
  3. Réponses: 2
    Dernier message: 01/10/2005, 18h42
  4. Gestion des null
    Par Bruno75 dans le forum Décisions SGBD
    Réponses: 19
    Dernier message: 20/09/2004, 13h34
  5. recherche multicritères
    Par onlineduel dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2004, 16h15

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