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 :

Problème lien pére/fils


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut Problème lien pére/fils
    Bonjour,

    Je travaille sur Access 2007, je dispose de 2 tables.
    Une table Personnel (matricule, nom, prénom, ...) et une table Congés(matricule, nom, prénom, ...).La table congés est pour le moment vide.
    Les 2 tables sont reliées entre elles par le matricule.
    J'ai créer un formulaire lié à la table congés.
    Je souhaite que lorsque l'utilisateur sélectionne un nom dans une liste (j'ai réussi à créer une zone de liste déroulante allant chercher les valeurs dans la table personnel), le prénom se sélectionne automatiquement.
    Je pense qu'il faut faire une relation pére/fils mais je n'y arrive pas...
    Où je ne suis pas dans la bonne direction?...

    Merci pour votre aide.

  2. #2
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    tu n'es pas tout a fait dans la bonne direction ....

    Déja il est inutile de mettre 2 fois les noms et prénoms dans les 2 tables...
    que tu ne mettra que dans la table personnel.
    Les 2 tables sont liés par la relation sur le matricule.
    regarde cet exemple ou la table élève sera ta table salariés et la table notes sera ta tatable congés.

    Ensuite il s'agit de créer un formulaire personnel, avec un sous formulaire congés. Dans ce cas la relation père-fils par le matricule focntionnera.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Merci pour ton aide.

    J'ai supprimer le nom et prénom dans la table congés, et réalisé un premier formulaire contenant uniquement le champs nom (zone de liste déroulante), et j'ai inséré dans ce formulaire un sous formulaire, qui lui contient Matricule et les autres champs de la table congés. Dans les propriétés du sous formulaire, j'ai mis en champs pére et en champs fils matricule.
    Jusque là je pense avoir bon...
    Toutefois lorsque je choisis un nom dans ma liste, le numéro de matricule ne change pas...
    Où ai je fais une erreur?

    Merci d'avance pour ton aide.

  4. #4
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    Pour ta liste déroulante, mets une requête comme source de données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [TBL_employes].[matricule], [Nom] & " " & [prenom] AS Nam FROM TBL_employes ORDER BY [Nom] & " " & [prenom];
    Cette requête te permet d'avoir le nom et le prenom de l'employé. Il faut que tu indiques dans les propriétes qu'il y a deux colonnes, que la liste déroulante est liée à la colonne 1, en affichage pour les largeurs de colonnes tu indiques 0cm;2cm (c'est le truc classique pour une liste déroulante).

    sur la propriété après MAJ tu ecris en VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub listederoulante_AfterUpdate()
    Me.Filter = "TBL_employes.matricule=" & Me.listederoulante
    Me.FilterOn = True
    End Sub
    C'est a dire que tu filtres ton formulaire principal sur le matricule, et le sous formulaire affichera les données congés liées a ce matricule là.

    Une autre solution pourrait être de mettre le champ matricule dans ton formulaire principal, et de mettre le champ matricule à jour, en fonction de ta liste déroulante.

    Cette complication est liée au fait que ta liste déroulante est liée au nom de l'employé. Mais c'est plus élégant et visible pour l'utilisateur, que si tu mettais une liste déroulante basée sur le matricule.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Encore merci pour ton aide.

    J'ai essayé le code VBA que tu ma donné, le voici en relation avec mon projet:

    Private Sub listederoulante_AfterUpdate()
    Me.Filter = "Personnel.matricule=" & Me.listederoulante
    Me.FilterOn = True
    End Sub

    J'ai fait un peu de VBA lors de mes études, de souvenir il me semble que listederoulante_AfterUpdate() est le nom que le donne à la procédure?


    Lorsque je choisis un nouveau nom (j'ai réussi à obtenir une liste déroulante avec nom et prénom), ce message s'inscrit:
    Microsoft Office Access ne peut pas trouver l’objet « Private Sub listederoulante_AfterUpdate() me »

    Sais tu d'où viens le problème?
    Merci vraiment pour ton aide car ce projet est vraiment important pour moi.

  6. #6
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    tu y es presque ......

    (penses à mettre les balises code dans ta réponse quand tu tapes du code VB, le # qui s'affiche en haut et à gauche lorsque tu écris ton message)

    Tu ouvres ton formulaire en mode création, tu cliques droit sur ta liste déroulante, et tu cliques sur propriétés , sur l'onglet événement tu cliques les 3 petits points à coté de la ligne après MAJ. une boite s'ouvre te donnant 3 possiblités, tu choisis le générateur de code.

    Là Access ouvre la fenêtre Visual Basic en écrivant automatiquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MonChamp_After Update
     
    End sub
    et tu écris ton code entre ces deux lignes

    pour quitter Visual Basic tu clqiues sur fichier puis Fermer VB et retourner sur Access

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Désolé mais ca ne fonctionne pas...
    J'ai du faire quelque chose qui ne va pas...
    Je résume tout ce que j'ai réalisé:
    Création d'un premier formulaire avec une zone de liste déroulante allant chercher les valeurs du nom et du prénom dans la table personnel.
    Ajout d'un sous formulaire avec le matricule et les autres champs de la table congés.
    Lien entre ces 2 tables: matricule
    Lien pére: Matricule
    Lien fils: Matricule
    Code vb associé à la zone de liste (dans propriété, événement, aprés MAJ):
    #Private Sub Nom_AfterUpdate()
    Me.Filter = "Personnel.matricule=" & Me.Nom
    Me.FilterOn = True
    End Sub
    #

    Mon problème: le champs matricule dans le sous-formulaire prend toujours la même valeur (il ne change pas même lorsqu'on choisi un nouveau nom).

    Désolé de ne pas y arrivé malgré ton aide...
    Merci de m'aider une fois de plus!

  8. #8
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    Est ce que ton formulaire principal a bien comme source de données la table personnel ?

    Ajoutes pour voir un champ matricule dans le formulaire principal et vois si le matricule change bien lorsque tu modifies la liste déroulante (en changeant d'employé

    Push on, on va y arriver...

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    En fait, c'est bon ça fonctionne!
    Il s'agissait d'un probléme au niveau des types de champs...
    Merci encore pour ton aide!

  10. #10
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Désolé de solliciter une fois de plus votre aide, mais je rencontre un nouveau problème que j'ai du mal à comprendre...
    Le formulaire et sous-formulaire fonctionnent, je peux choisir un nom dans la liste déroulante et son matricule s'affiche automatiquement dans le sous-formulaire.
    Toutefois, un problème apparait dans la table personnel, en effet, lorsque je sélectionne un nom et que je remplis le sous-formulaire pour cette personne, les informations se stockent bien dans la table congés, mais la premiére ligne de ma table personnel est modifiée.
    Le nom de la première personne dans la table personnel est remplacé par le dernier matricule que j'ai utiliser dans le sous-formulaire.
    J'espere avoir été clair,car ce n'est pas facile à expliquer...
    D'où provient cette erreur?et comment y remédier?

    Merci...

  11. #11
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    ca devient sympa, car sans avoir vu ton application, je commence à la visualiser par coeur.

    Ta liste déroulante du formulaire principal est sans doute lié au nom de la table personnel. et comme la liste déroulante contient le matricule et le nom, mais la colonne liée est le matricule, tu envoies le matricule dans la table personnel, dans le champ nom.

    Cette liste déroulante, doit être indépendante. Dans les propriétés de ton controle 'liste déroulante' sur données, source controle efface le champ Nom (venant de la table employés)

  12. #12
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Géniaaaaaaaaaal ça marche!
    Effectivement lorsque tu m'explique cela parait logique et simple!
    Je pense que cette fois-ci je n'ai plus de problème!
    Merci beaucoup pour ton aide. Ca fait plaisir d'avoir de l'aide!
    Bonne journée.

  13. #13
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    On aime bien aider et partager nos connaissances (je suis passé par les mêmes étapes et je bute encore sur plein de problèmes dans Acces)

    Penses à mettre le tag résolu..

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 28/11/2012, 17h24
  2. Problème de récursivité : relation père fils multiple
    Par relbeghdadi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/01/2012, 12h37
  3. Treeview hiérarchique (lien pére-fils)
    Par ktorvik dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 04/08/2011, 14h58
  4. Problème père-fils avec un sous formulaire
    Par beegees dans le forum IHM
    Réponses: 4
    Dernier message: 27/05/2007, 13h07
  5. Réponses: 2
    Dernier message: 01/01/2007, 22h01

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