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

Access Discussion :

FORMULAIRE RECHERCHE : lier les données d'un formulaire et d'un sous-formulaire


Sujet :

Access

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Points : 3
    Points
    3
    Par défaut FORMULAIRE RECHERCHE : lier les données d'un formulaire et d'un sous-formulaire
    Bonjour tout le monde !

    Je suis bloquée sur mon formulaire de recherche et je vais essayer d'expliquer mon problème le plus clairement possible.

    J'ai créé un premier formulaire qui me permet pour une entreprise donnée de rajouter des contacts à l'entreprise. La capture d'écran ci-joint monte le rendu de ma table Company : ce sont des entreprises avec des contacts qui lui sont liés.

    Nom : Capture7.PNG
Affichages : 367
Taille : 42,7 Ko

    Désormais je souhaite créer un formulaire de recherche qui lorsque l'on tape le nom de l'entreprise donne dans une 1ère zone de liste, l'entreprise et ses caractéristiques et dans un 2ème zone de liste, qui donne les contacts qui lui sont associés.

    Comme vous pourrez le voir dans les captures d'écran ci-jointes j'ai réussi à coder la 1ère zone de liste mais je n'arrive pas à trouver le bon code pour la 2ème zone de liste. J'aimerais faire en sorte que dès qu'un NumCompany de Company est appelé dans la recherche (à travers une recherche par nom de Company), le NumCompany de ma table Contact (les 2 tables sont liées une relation 1-infini) appelle aussi les contacts et ses caractéristiques et que ces derniers s'affichent dans la 2ème zone de liste.

    Nom : Capture8.PNG
Affichages : 365
Taille : 24,8 KoNom : Capture6.PNG
Affichages : 375
Taille : 38,2 Ko

    Pouvez-vous m'aider à résoudre mon problème de code afin de lier les deux tables lors de ma recherche svp ? Je pense que mon problème réside dans le Key=mySql.Column(0) mais je ne sais pas par quoi le remplacer...

    Merci beaucoup pour votre temps et votre aide

    Coralie

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Donc si je te suis bien, tu veux que les contacts apparaissent si on a une correspondance exacte entre le nom saisi par l'utilisateur et celui dans les données.

    Le résultat affiché sera donc
    • Liste 1 : 1 nom, celui de la seule entreprise qui correspond
    • Liste 2 : les contacts de cette entreprise


    C'est bien cela ?

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    C'est exactement cela !

    Enfin c'est la seule façon que j'ai trouvé de faire ce double affichage. Plus précisement, lorsque l'on commence à chercher une entreprise commençant par la lettre "C" par exemple :

    liste 1 affiche :
    - CA et ses caractéristiques
    - CO et ses caractéristiques

    liste 2 affiche :
    - Contacts de la Company CA
    - Contacts de la Company CO

    Et lorsque l'on affine en tapant "CA" par exemple dans la recherche, seuls restent les contacts qui nous interessent : ceux de la company CA. Il me semble que ce soit la méthode la plus simple.

    J'ai découvert en cherchant sur ce forum, la méthode INNER JOIN que je ne connaissais pas mais mon code ne marche décidément toujours pas ... Pouvez-vous m'indiquer si je suis sur la bonne voie et si oui ce qui cloche dans mon code svp ?

    J'ai modifié ma fonction MySearchName de mon code posté précedemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function mySearchName()
     
    Dim mySql As String
     
     
    mySql = " SELECT Company.NumCompany, Company.NameCompany, Contact.CivilityContact, Contact.LastNameContact FROM Company INNER JOIN Contact ON Contact.NumCompany = Company.NumCompany WHERE Company.NameCompany like " & Chr(34) & _
        Me.txtSearch.Text & _
        Chr(34) & " " & Chr(38) & " " & Chr(34) & Chr(42) & Chr(34)
     
     
    Debug.Print mySql
     
     
    Me.lstResults.RowSource = mySql
    Me.lstResults.Requery
     
    End Function

    Merci beaucoup d'avance pour votre aide !

    Coralie

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    L'idée est bonne mais le SQL me semble faux.

    Je te suggère de créer (avec l'éditeur de requête) une requête qui va te donner :
    Le nom de la compagnie et toutes les information sur lesquels tu souhaiterai filtrer et toutes les informations du contact.
    Il faudra faire une jointure entre la table des entreprises et celle des contacts.
    Avec l'éditeur de requête, tu glisses/déplaces le champ de la table des entreprises vers celles des contacts si Access ne le fait pas pour toi.

    Une fois que tu as obtenus cela, tu change l'affichage pour SQL (en haut à gauche de l'écran) et tu regardes ce que Access à conçu pour toi.
    Tu as juste à retranscrire cette information dans ton programme VBA.

    Cela fait tu peux appliquer exactement ce que tu as fais pour les entreprises aux contacts puisque tu as les informations sur l'entreprise.
    Donc au lieu de chercher à ce que la sélection de l'entreprise détermine la sélection des contacts, tu te contentes de chercher les contacts qui ont les mêmes critères que tes entreprises.
    Le résultat est le même et c'est BEAUCOUPS plus simple.

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/10/2013, 12h26
  2. Réponses: 2
    Dernier message: 02/06/2007, 17h21
  3. Réponses: 2
    Dernier message: 16/02/2007, 12h09
  4. formulaire qui transforme les données!
    Par xave dans le forum Langage
    Réponses: 11
    Dernier message: 03/07/2006, 11h58
  5. [VBA-E]Formulaire word, récupérer les données dans excel
    Par sablier dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 30/05/2006, 07h38

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