none
Concevoir une liste qui en alimente une autre, d'un formulaire vers un sous-formulaire RRS feed

  • Question

  • Bonjour

    Dans le but de faire évoluer une base de donnée (de type gestion de collections ...... Initialement mono- collection que je désire faire évolué en multi-collection) et après un certain nombre de recherches je suis tombé sur un excelent Tuto "[B]Concevoir une liste qui en alimente une autre[/B]" (http://argyronet.developpez.com/office/access/selectitemlistAB/) qui décrit et correspond exactement à mes besoins.

    J'ai réalisé le Pas à Pas pour bien la comprendre avant d'implanter cette méthode dans ma propre base.

    Toutefois si la  méthode est opérationnelle sur un formulaire unique, mon besoin est que "cmbCatégorie" mette à jour "cmbMetiers" qui ce trouve sur un sous-formulaire (appelé "SFMetier", le formulaire accueillant "cmbCatégorie" s'appelle quand à lui "FCatégorie")

     

    D'approche autodidacte je possède des manques dans mon approche et progresse de manière irrégulière en fonction des besoins de l'évolution des bases que je réalise. J'ai bien conscience, après un certain temps de recherche que la solution ce trouve à partir de la ligne : ...cmbMetier3.RowSource = SQL en y insérant "Forms!" .... Mais je ne suis pas arrivé à l'implanter dans cet exemple. Pourriez vous m'aider SVP.

    Je vous remercie d'avance de l’intérêt que vous pourrez porter à mon problème

     

    Cordialement

    Descriptif des éléments :

    Les tables : TBLCategorie (Clé primaire IDCategorie) et TBLMetier (Clé primaire IDMetier)

    Les listes de choix : cmbCategorie3 et cmbMetier3

    Les formulaires : FCategorie et SFMetier

     

    Voici le code :

     

    Private Sub cmbCategorie3_AfterUpdate()

    ''SELECT TBLCategorie.IDCategorie, TBLCategorie.Categorie FROM TBLCategorie ORDER BY TBLCategorie.Categorie;

    ''SELECT TBLMetier.IDMetier, TBLMetier.Metier FROM TBLMetier ORDER BY TBLMetier.Metier;

    Dim lngIDCat   As Long

    Dim SQL        As String

      '' Vérifie que l'on a cliqué sur une catégorie pour éviter le NULL

      If Not IsNumeric(Me!cmbCategorie3) Then Exit Sub

      '' Affecte la valeur de IDCategorie à la variable lngIDCat

      lngIDCat = Me!cmbCategorie3

      '' Construit la chaîne SQL avec la catégorie concernée

      SQL = "SELECT IDMetier, Metier, IDCategorie FROM TBLMetier WHERE IDCategorie =" & lngIDCat & " ORDER BY Metier"

       MsgBox "Vous venez de changer de collection"

      '' Affecte la chaîne SQL à la liste des métiers

    cmbMetier3.RowSource = SQL

      '' Déverrouille la liste des métiers

    cmbMetier3.Enabled = True

      '' Donne le focus la liste des métiers

    cmbMetier3.SetFocus

      '' Déroule la liste des métiers

      Me!cmbMetier3.Dropdown

    End Sub




    • Déplacé ArgyronetModerator jeudi 23 juin 2011 09:12 813ccd24-203b-4f8a-98e2-c3145ec491d5 (Origine :Office 2010)
    dimanche 19 juin 2011 16:26

Réponses

  • Bonjour,

    Le principe est le même sauf qu'il faut préfixer l'appel de la mise à jour de la propriété RowSource, soit :

    Form_SFMetier.cmbCatégorie.RowSource = SQL

    Pour l'objet "Form_SFMetier" soit "accessible" d'un point de vue objet , il faut qu'il existe au moins une procédure VBA au sein de celui-ci.


    Argy


    jeudi 23 juin 2011 09:09
    Modérateur