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 :

Requete select, problème avec "or is null" [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Requete select, problème avec "or is null"
    Bonjour à tous,

    Je sèche sur une requête de sélection depuis un bon moment et j'espère que vous pourrez m'aider.
    J'ai créé un formulaire "recherche" qui me permet d'afficher les enregistrements d'une table en fonction de certains critères.

    Exemple :
    Une table ayant une colonne "fruitslegumes" contenant des enregistrements "carotte", "tomate",... et aussi des enregistrements vides.

    Dans mon formulaire j'ai une textbox "fruitlegSEARCH" dans laquelle je saisis la valeur recherchée.

    Dans la requête source de mon formulaire, j'ai écrit comme condition sur le champ "fruitlegumes" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [forms]![Recherche]![fruitlegSEARCH].[value] & "*" Ou Est Null
    Donc si le champ fruitlegSEARCH est vide, il me renvoie tous les enregistrements + les lignes vides, et si le champ contient "car" il renvoie toutes les carottes + les lignes vides.

    Moi je voudrais que lorsque le champ fruitlegSEARCH est vide il renvoie tous les enregistrements + les lignes vides (c'est ok), mais que lorsqu'il est non vide, il ne renvoie que ce qui se rapporte au texte saisi (en l'occurence que les carottes, et pas les lignes vides).

    Voilà j'espère avoir été clair et que qqun saura m'aider.

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour sinifroth,

    Tu trouveras, ici : http://cjoint.com/?0kCpIKQd5yv, une petite base .mdb qui permet la création d'une liste dynamique en fonction d'une saisie : si j'ai bien compris, il s'agit de ce que tu souhaites faire, en final.

    Le truc, c'est que tu dois tester la valeur de fruitlegSEARCH, pour lancer une requête ou une autre, mais tu ne peut pas résoudre ton problème en une seule requête.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Merci pour ta réponse Richard.
    Aie aie aie... je voulais absolument le faire en une seule requete, parce que j'ai pris l'exemple d'un champ fuitslegumes, mais en réalité il y en a une trentaine comme ça, et cela me parait irréalisable de créer autant de requêtes que de possibilités...
    Si qqun a une autre solution je suis prenneur.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé ce genre de chose comme condition dans ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(estnull([forms]![Recherche]![fruitlegSEARCH].[value]);Comme "*" Ou Est Null;Comme "*" & [forms]![Recherche]![fruitlegSEARCH].[value] & "*")
    Dans ma tête je pensais à tester si le champ fruitlegSEARCH est renseigné :
    - si non : affiche toutes les valeurs + les lignes vides
    - si oui : affiche uniquement les valeurs contenant la chaine saisie dans fruitlegSEARCH

    Mais cela ne fonctionne pas...

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Le
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(condition ; valeur si vrai ; valeur si faux)
    à l'intérieur de la clause WHERE indique d'AFFECTER une valeur (si vrai ou faux), pas de ré-exécuter une fonction LIKE. Je m'étonne, même, que ce soit accepté en saisie.

    Je pense que tu n'as pas d'autre choix que d'avoir autant de requêtes que de champs de tables dont il faut retrouver s'ils contiennent une chaîne de caractères saisis dans un formulaire.

    De toutes manières, même si cela était possible, ta requête serait difficilement maintenable, compte tenu de tous les ET et OU.

    Enfin, si j'ai bien compris ce que tu veux faire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Salut Richard,

    Merci pour ce complément d'info. Grâce à ta base tu m'as mis sur la voie et j'ai trouvé un bout de code qui fonctionne pour ce que je veux faire avec 2 champs. Le voici : http://cjoint.com/?3kCwkCo57wJ

    Pour l'appliquer aux nombreux champs recherche il y a un gros boulot mais au moins c'est faisable. Je vais demander à l'utilisateur si on ne peut pas réduire les critères de recherche ou les grouper.

    Si tu n'as rien à ajouter je clôture le sujet. Merci encore

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

Discussions similaires

  1. Requete select count(*) avec having max()
    Par Goupo dans le forum Langage SQL
    Réponses: 10
    Dernier message: 09/03/2009, 12h50
  2. Requete select : jointure avec champs null
    Par Tidus159 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 06/06/2008, 13h31
  3. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59
  4. Requete select imbriqués avec plusieurs références
    Par GAlion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/08/2004, 14h06
  5. [struts][JSP][select] problème avec le select
    Par redge_touch dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/01/2004, 10h05

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