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

IHM Discussion :

recherche dans plusieurs champs


Sujet :

IHM

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 4
    Points
    4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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([N°],"") 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([N°],""))=Nz([Formulaires]![Recherche clients]![Texte53],Nz([N°],""))) 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 ! ;-)

  2. #2
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour,

    A priori, c'est dans ce champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND ((Nz([Nom],""))=Nz([Formulaires]![Recherche Clients]![Texte0],Nz([Nom],"")))
    Tu codera qqchose dans ce style (j'ai enlevé les parenthèse superflues

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 çà ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    toujours pas d'idée ??

  5. #5
    Invité
    Invité(e)
    Par défaut
    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

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    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

Discussions similaires

  1. [MySQL] Resultat d'une recherche dans plusieurs champs
    Par guigui48 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/06/2010, 14h55
  2. Requête a/ recherche dans plusieurs champs de la table
    Par 810mcu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/11/2007, 20h05
  3. Filtrer un formulaire - Recherche dans plusieurs champs
    Par LaurentD dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/11/2007, 11h19
  4. Réponses: 7
    Dernier message: 26/10/2006, 15h13
  5. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37

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