Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2011, 11h59   #1
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
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 :
Forms![FormPrincipal]![SousForm].Form.RecordSource = "SELECT * FROM [TblFigures] WHERE (RechercheMot(Nz([" & Me!Liste1.Value & "], ''), """ & Me.Liste2.Value & """) = True);"
La fonction RechercheMot est explicitée ici: http://grenier.self-access.com/?post...-de-mot-entier

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
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 21h01   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
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 :
TonCritere=left(TonCritere,len(TonCritere)-1)
va couper le dernier caractère de la chaîne TonCritere.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 08h47   #3
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
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.
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 14h17   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h07   #5
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
J'ai essayé ça:
Code :
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!!!!

Citation:
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
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h48   #6
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
"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 :
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
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 16h34   #7
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 16h41   #8
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
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
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web