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 selection avec cbobox sur liste valeurs [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Requete selection avec cbobox sur liste valeurs
    Bonjour,

    Je bute sur un problème de selection basé sur une valeur retournée depuis un formulaire par une combobox.

    Cette combobox est batie à partir d'une liste déroulante contenant 4 valeurs texte sans valeur par défaut. Si aucun choix n'est sélectionné, elle renvoie donc une valeur nulle.

    J'intègre cette cbo dans la zone de critère d'une requète sélection et je voudrais avoir tous les enregistrements de la table quand aucun choix n'a été fait. Sans intégrer la cbo, on peut l'obtenir par "comme "*""

    J'ai regardé dans l'excellent tutoriel de Jeannot45 mais pas trouvé la réponse!

    Voila en SQL la requete:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T100_fusion.niveaufusion, T100_fusion.typefusion
    FROM T100_fusion
    WHERE (((T100_fusion.niveaufusion)=IIf(IsNull([Formulaires]![F110_ListeFusion]![cboniveau]),(T100_fusion.niveaufusion) Like "* ",[Formulaires]![F110_ListeFusion]![cboniveau])));

    Si vous avez des idées, elles seront les bienvenues

    Pierre dit Pedro

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,
    As-tu lu le tuto sur l'opérateur LIKE ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (((T100_fusion.niveaufusion)=IIf(IsNull([Formulaires]![F110_ListeFusion]![cboniveau LIKE "* ",[Formulaires]![F110_ListeFusion]![cboniveau])));
    Lorsque le moteur Jet va interprété il fera :

    Si F110 est null alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (T100_fusion.niveaufusion)=(T100_fusion.niveaufusion) LIKE "* "
    Pense-tu que c'est cohérent ?

    Concernant ton opérateur Like :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...(T100_fusion.niveaufusion) LIKE "* ",[...
    ça veut dire que tu vas rammener tout les enregistrement dont niveaufusion contient "Des caractères" suivit "d'un espace".

    Est-ce ce que tu souhaites faire ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Merci de se pencher sur les devoirs mal faits!
    Effectivement tes remarques sont très pertinentes:

    Pour la première, si la cbo renvoit un "null", il ne faut garder que un like "*" ou peut etre seulement un "*" ou *. J'ai parcouru le tuto concernant LIKE mais pas encore tout digéré!

    Pour la seconde, tout à fait exact il faut peut etre "*" mais surement pas "* "! En conclusion, il faut recopier le texte des commandes dans word ou autre pour distinguer clairement s'il n'y a pas un espace en trop qui traine.

    Moyennant quoi, ces deux remarques corrigées, cela ne marche toujours pas.

    J'ai aussi essayé de ne plus avoir de null dans la table (une valeur par defaut du genre "non défini"), d'ajouter une valeur possible dans la cbo qui serait "tous" et qui renverrai un caractère générique du genre *: echec aussi!

    Si tu as encore du temps à me consacrer, j'avancerai sans doute plus vite, sinon il me faut un peu de temps pour étudier la doc que tu me recommandes de lire. Je découvre d'ailleurs que la documentation fournie est une vraie mine de renseignements.

    Merci beaucoup pour ces remarques.

    Pedro

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Avec du temps et beaucoup de tatonnements, voila une solution qui fonctionne, peut etre pas très académique!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T100_fusion.niveaufusion, T100_fusion.typefusion
    FROM T100_fusion
    WHERE (((T100_fusion.niveaufusion)=IIf([Formulaires]![F110_ListeFusion]![cboniveau]="---Tous---",([T100_fusion].[niveaufusion]),[Formulaires]![F110_ListeFusion]![cboniveau])));
    Elle suppose bien sur que niveaufusion ne soit jamais null dans T100 et que "---Tous---" soit la valeur par défaut de la cbo.

    A+

    Pedro

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,
    En effet comparer le champ à sa propre valeur est une astuce valide mais qui a le désavantage de nécessiter l'interprétation d'une condition peut-être inutile. Sur de grosses tables cela peut être pénalisant.

    Dans le code fourni ci-dessous, si la combo est "Tous" on renvoi True, simplement. Dans le cas contraire on applique la condition Combo=Champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE iif([Forms]![F110_ListeFusion]![cboniveau]="---Tous---",true,[T100_fusion].[niveaufusion])=[Forms]![F110_ListeFusion]![cboniveau]);
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Pb considéré résolu
    Effectivement c'est plus court, logique et cela me convient tout à fait!

    Mille merci pour l'aide

    A+

    Pierre

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/02/2008, 10h09
  2. Réponses: 5
    Dernier message: 10/12/2007, 15h24
  3. requete avec parametre sur liste deroulante
    Par warix dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/09/2007, 09h34
  4. Réponses: 4
    Dernier message: 20/06/2006, 11h02
  5. requete select avec AS remplacement de valeur
    Par pi3141563 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/04/2004, 22h15

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