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 :

Requête basée sur une liste déroulante [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut Requête basée sur une liste déroulante
    Bonjour à tous,

    Me revoilà avec tout un lots de questions après qlq semaines de vacances!!
    J'utilise ce code sur le clic d'une des 2 listes d'un sous-formulaire. Si on prends comme exemple que Liste1= "Source de la Figure", Liste2 affiche alors toutes les sources déjà entrées. Puis quand on clique sur la Source souhaitée dans Liste2, un tri est effectué sur tous les enregistrements pour ne laisser que ce dont on vient de sélectionner la source. J'utilise ce code pour l'événement "Sur Clic" de Liste2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![FormPrincipal]![SousForm].Form.RecordSource = "SELECT * FROM [TblFigures] WHERE (RechercheMot(Nz([" & Me!Liste1.Value & "], ''), """ & Me.Liste2.Value & """) = True);"
    Le problème:
    Quand une source ce termine par un point (.), le tri ce fait mais aucun enregistrement n'apparait, comme si aucun enregistrement n'avait été trouvé!

    Comment contourner ce problème?

    Merci à vous

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Quand tu parles de source, tu parles de l'élément sélectionné dans la liste pour faire la recherche ?

    Si oui, le . est-il indispensable ? Il est probbale qu'il crée une expression régulière incorrecte mais je ne m'y connais pas bien dans ce domaine.

    Si non, le plus simple serait de la faire sauter avant de commencer ta recherche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonCritere=left(TonCritere,len(TonCritere)-1)
    va couper le dernier caractère de la chaîne TonCritere.

    A+

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    Oui, je parles de l'élément sélectionné dans la liste pour faire la recherche.
    Oui, le . est indispensable car il fait parti de la notation classique des articles scientifiques. Exemples:

    Jébrak, M. et Marcoux, E., 2008. Géologie des ressources minérales, Ressources naturelles et Faune, Québec, 667 p.

    En fait je cherche plutôt le moyen de faire en sorte que l'expression Me.Liste2.Value soit uniquement reconnue comme du texte et donc que les points ou autres caractères n'interviennent pas (par exemple, une parenthèse fermée sans parenthèse ouverte avant renvois aussi une recherche vide!). Exemples:

    a)Pettijohn (1975) Sedimentary Rocks, Harper and Row, and Schmid (1981) Geology, 9, 40-43; b)Fisher (1966) Earth Sci. Rev., 1, 287-298

    Merci quand même, je vais essayer mais ça ne résous pas tout malheureusement.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    OK, donc le problème se situe bien dans les expressions régulières. Il me semble qu'il y a un tutoriel là dessus sur ce site.

    Sinon essaye un truc tout bête, avant ta recherche, double les caractères qui t'embête. Ex : "." devient ".."

    Aussi regarde s'il n'existe pas une astuce de caractère spécial pour du genre \[TonCaractère] pour expliquer qu'il faut prendre le caractère tel qu'il est et pas comme un masque de recherche.

    Pour ce genre de manipulations, la commande Replace est très pratique.

    A+

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    J'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    VariableTest = Replace(Me.Liste2.Value, ".", "..")
    MsgBox VariableTest
    Forms![LeToutEnUn]![FormFigures_Files_Indep].Form.RecordSource = "SELECT * FROM [TblFigures_Files] WHERE (RechercheMot(Nz([" & Me!Liste1.Value & "], ''), """ & VariableTest & """) = True);"
    Mais évidemment la recherche ne marche plus car Access recherche maintenant les Sources avec 2 points!!!!

    Aussi regarde s'il n'existe pas une astuce de caractère spécial pour du genre \[TonCaractère] pour expliquer qu'il faut prendre le caractère tel qu'il est et pas comme un masque de recherche.
    ---> c'est justement ce que je recherche depuis le début.

    Merci quand même

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    "Bon sang...mais c'est bien sur!" - Coluche
    "Pourquoi faire simple, quand on peut faire compliqué?" Proverbe Shadok

    En fait il me suffisait d'écrire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms![LeToutEnUn]![FormFigures_Files_Indep].Form.RecordSource = "SELECT * FROM [TblFigures_Files] WHERE TblFigures_Files.Source LIKE """ & Me.Liste2.Value & """;"
    Hé oui, un simple LIKE ou un = est c'est bon!!!

    Merci quand même pour tes réponses marot_r

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Note qu'ave Like si tu as une sous-chaîne tu vas rammasser l'info.

    Par exemple si tu cherches "cola" tu va ramasser "autocolant", "chocolat" et "Pepsi cola".

    A+

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    Oui oui je sais bien merci mais ça ne pose aucun problème ici.
    Chaque source est tellement différente (concaténation du champ Autheur, Année, Titre, Titre de la revue, ....) que je ne peux pas avoir ce genre de problème.

    Merci pour le remarque qd même

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

Discussions similaires

  1. [XL-2007] Realiser un graphique sur la base d'une liste déroulante
    Par TRESOALEX dans le forum Excel
    Réponses: 5
    Dernier message: 05/10/2012, 23h43
  2. [AC-2003] Requête sur une liste déroulante
    Par Williamm dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/07/2011, 15h08
  3. Controle de saisie sur une liste déroulante
    Par antier dans le forum IHM
    Réponses: 3
    Dernier message: 07/12/2005, 05h42
  4. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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