Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 17/12/2010, 12h47   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 0
Points : 0
Par défaut recherche dans plusieurs champs

bonjour,

J'ai un formulaire avec des champs indépendants qui me permettent d'effectuer des recherches dans une table. en Remplissant ou non l'ensemble de ces champs.
Je voudrait pouvoir rechercher dans deux champs en même temps.
Je m'explique :
Je remplit un champ 'nom' et je voudrait qu'il recherche dans la table toutes les correspondances dans les champs 'nom et 'nom de jeune fille' de ma table.
Le soucis et qu'il ne me sort que les enregistrements dont le nom ET le nom de jeune fille sont identiques à mon champ de recherche.
Or je voudrait qu'il me sorte les enregistrements dont le nom OU le nom de jeune fille sont identiques.
et là je ne vois pas ce que je dois changer dans mon code.

Voici le code (désolé c'est un peu lourd, il y a beaucoup de champs) :

Code sql :
1
2
3
SELECT Nz([Etat Contrat],"") AS Expr2, Nz([Nom],"") AS Expr3, Nz([Prénom],"") AS Expr4, Nz([Ville],"") AS Expr1, Nz([N° Sécurité Sociale],"") AS Expr5, Nz([Code Commercial],"") AS Expr6, Nz([Code Postal],"") AS Expr7, Nz([N°_Compagnie],"") AS Expr8, Nz([N°_Formule],"") AS Expr9, Nz([Date effet],"") AS Expr10, Nz([N° Adhérent],"") AS Expr11, Nz([PARS],"") AS Expr12, Nz([Impayé],"") AS Expr13, Nz([],"") AS Expr14, Nz([Reprise],"") AS Expr15
FROM Formule RIGHT JOIN (Compagnie RIGHT JOIN (Commercial INNER JOIN Clients ON Commercial.N° = Clients.Commercial) ON Compagnie.N° = Clients.Compagnie) ON Formule.N° = Clients.Formule
WHERE (((Nz([Etat Contrat],""))=Nz([Formulaires]![Recherche Clients]![Modifiable5],Nz([Etat Contrat],""))) AND ((Nz([Nom],""))=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],""))) AND ((Nz([Prénom],""))=Nz([Formulaires]![Recherche Clients]![Texte3],Nz([Prénom],""))) AND ((Nz([Ville],""))=Nz([Formulaires]![Recherche Clients]![Texte9],Nz([Ville]," "))) AND ((Nz([N° Sécurité Sociale],""))=Nz([Formulaires]![Recherche Clients]![Texte11],Nz([N° Sécurité Sociale]," "))) AND ((Nz([Code Commercial],""))=Nz([Formulaires]![Recherche Clients]![Texte13],Nz([Code commercial]," "))) AND ((Nz([Code Postal],""))=Nz([Formulaires]![Recherche Clients]![Texte15],Nz([Code Postal]," "))) AND ((Nz([N°_Compagnie],""))=Nz([Formulaires]![Recherche Clients]![Modifiable17],Nz([N°_Compagnie]," "))) AND ((Nz([N°_Formule],""))=Nz([Formulaires]![Recherche Clients]![Modifiable19],Nz([N°_Formule]," "))) AND ((Nz([Date effet],"")) BETWEEN Nz([Formulaires]![Recherche Clients]![Texte21],Nz([Date effet],"")) AND Nz([Formulaires]![Recherche Clients]![Texte23],Nz([date effet],""))) AND ((Nz([N° Adhérent],""))=Nz([Formulaires]![Recherche Clients]![Texte25],Nz([N° Adhérent],""))) AND ((Nz([PARS],""))=Nz([Formulaires]![Recherche clients]![Texte49],Nz([PARS],""))) AND ((Nz([Impayé],""))=Nz([Formulaires]![Recherche clients]![Cocher51],Nz([Impayé],""))) AND ((Nz([],""))=Nz([Formulaires]![Recherche clients]![Texte53],Nz([],""))) AND ((Nz([Reprise],""))=Nz([Formulaires]![Recherche clients]![Cocher55],Nz([Reprise],""))));

je ne vois pas ou je dois rajouter le champ 'nom de jeune fille'

Si quelqu'un a une idée je suis preneur ! ;-)
alexdj59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 13h59   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour,

A priori, c'est dans ce champ :
Code :
AND ((Nz([Nom],""))=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],"")))
Tu codera qqchose dans ce style (j'ai enlevé les parenthèse superflues

Code :
AND (Nz([Nom],"")=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],"") OR Nz([Nom de jeune fille],"")=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],""))
Merci de mettre ton SQL avac une balise code. C'est plus lisible
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 18h22   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 0
Points : 0
Déjà merci à dumas.blr, j'ai effectivement trouvé une solution en mettant un OR
seulement de ce fait je dois recopier toute la ligne de code 2 fois (de chaque côté du OR)
- 1 fois avec le champ nom plus tous les autres champs (saus nom de jeune fille) avec AND entre chaque champ
- 1 fois avec le champ nom de jeune fille plus les autres champs (sauf nom) avec AND entre les champs

Ca donne un truc du genre :
Code :
1
2
WHERE (((Nz([Etat Contrat],""))=Nz([Formulaires]![Recherche Clients]![Modifiable5],Nz([Etat Contrat],""))) AND ((Nz([Nom],""))=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],""))) AND ((Nz([Prénom],""))=Nz([Formulaires]![Recherche Clients]![Texte3],Nz([Prénom],""))) AND ((Nz([Ville],""))=Nz([Formulaires]![Recherche Clients]![Texte9],Nz([Ville]," "))) AND ((Nz([N° Sécurité Sociale],""))=Nz([Formulaires]![Recherche Clients]![Texte11],Nz([N° Sécurité Sociale]," "))) AND ((Nz([Code Commercial],""))=Nz([Formulaires]![Recherche Clients]![Texte13],Nz([Code commercial]," "))) AND ((Nz([Code Postal],""))=Nz([Formulaires]![Recherche Clients]![Texte15],Nz([Code Postal]," "))) AND ((Nz([N°_Compagnie],""))=Nz([Formulaires]![Recherche Clients]![Modifiable17],Nz([N°_Compagnie]," "))) AND ((Nz([N°_Formule],""))=Nz([Formulaires]![Recherche Clients]![Modifiable19],Nz([N°_Formule]," "))) AND ((Nz([Date effet],"")) BETWEEN Nz([Formulaires]![Recherche Clients]![Texte21],Nz([Date effet],"")) AND Nz([Formulaires]![Recherche Clients]![Texte23],Nz([date effet],""))) AND ((Nz([N° Adhérent],""))=Nz([Formulaires]![Recherche Clients]![Texte25],Nz([N° Adhérent],""))) AND ((Nz([PARS],""))=Nz([Formulaires]![Recherche clients]![Texte49],Nz([PARS],""))) AND ((Nz([Impayé],""))=Nz([Formulaires]![Recherche clients]![Cocher51],Nz([Impayé],""))) AND ((Nz([],""))=Nz([Formulaires]![Recherche clients]![Texte53],Nz([],""))) AND ((Nz([Reprise],""))=Nz([Formulaires]![Recherche clients]![Cocher55],Nz([Reprise],""))));
OR (((Nz([Etat Contrat],""))=Nz([Formulaires]![Recherche Clients]![Modifiable5],Nz([Etat Contrat],""))) AND ((Nz([Nom de Jeune fille],""))=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],""))) AND ((Nz([Prénom],""))=Nz([Formulaires]![Recherche Clients]![Texte3],Nz([Prénom],""))) AND ((Nz([Ville],""))=Nz([Formulaires]![Recherche Clients]![Texte9],Nz([Ville]," "))) AND ((Nz([N° Sécurité Sociale],""))=Nz([Formulaires]![Recherche Clients]![Texte11],Nz([N° Sécurité Sociale]," "))) AND ((Nz([Code Commercial],""))=Nz([Formulaires]![Recherche Clients]![Texte13],Nz([Code commercial]," "))) AND ((Nz([Code Postal],""))=Nz([Formulaires]![Recherche Clients]![Texte15],Nz([Code Postal]," "))) AND ((Nz([N°_Compagnie],""))=Nz([Formulaires]![Recherche Clients]![Modifiable17],Nz([N°_Compagnie]," "))) AND ((Nz([N°_Formule],""))=Nz([Formulaires]![Recherche Clients]![Modifiable19],Nz([N°_Formule]," "))) AND ((Nz([Date effet],"")) BETWEEN Nz([Formulaires]![Recherche Clients]![Texte21],Nz([Date effet],"")) AND Nz([Formulaires]![Recherche Clients]![Texte23],Nz([date effet],""))) AND ((Nz([N° Adhérent],""))=Nz([Formulaires]![Recherche Clients]![Texte25],Nz([N° Adhérent],""))) AND ((Nz([PARS],""))=Nz([Formulaires]![Recherche clients]![Texte49],Nz([PARS],""))) AND ((Nz([Impayé],""))=Nz([Formulaires]![Recherche clients]![Cocher51],Nz([Impayé],""))) AND ((Nz([],""))=Nz([Formulaires]![Recherche clients]![Texte53],Nz([],""))) AND ((Nz([Reprise],""))=Nz([Formulaires]![Recherche clients]![Cocher55],Nz([Reprise],""))));
Ca fonctionne bien quand j'utilise la requete directement mais si j'ouvre un formulaire avec cette requete comme filtre. Il me dit que le filtre est trop long

Y aurait-il une solution pour contourner çà ?
alexdj59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 19h04   #4
Invité de passage
 
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 0
Points : 0
toujours pas d'idée ??
alexdj59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 20h20   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 947
Points : 30 947
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il serait bon d'expliquer comment tu utilises cette requête dans ton formulaire (en détaillant), si tu veux avoir de l'aide des membres du forum.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 23h08   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 0
Points : 0
L'idée est juste d'avoir un formulaire de recherche qui m'en ouvre un autre ayant des champs identiques.

Alors en fait, j'ai un formulaire qui contient des champs vides (indépendants) que je remplie et j'ai ajouté un bouton qui exécute une macro quand je clic dessus.

cette macro ouvre mon forlulaire (liste des clients) avec comme filtre ma requête (dont le code est détaillé plus haut).
J'ai donc dans ma macro : Ouvrir un formulaire ; Nom de formulaire : Liste des clients ; Filtre : ma requête ; condition where : rien ...

Le pb c'est qu'il me dit que le filtre est trop long pour etre exécuté (en même temps c'est pas faux ;-) )

Par contre si j'ouvre ma requête directement, il me demande de remplir les champs que j'apelle dans la comparaison (logique) et là çà fonctionne sans problème.

Y a t-il une solution pour exécuter cette requête autrement que par la macro.
J'avais pensé à mettre du code VBA sur le clic du bouton mais je n'ai pas trouvé le code pour ouvrir un formulaire avec comme condition where tout ce que j'ai dans ma reqête ; et en même temp je n'ai aucune idée si çà fonctionnerait
alexdj59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web