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

VBA Access Discussion :

Source d'un contrôle de formulaire = "contrôle d'un sous-formulaire" ? [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut Source d'un contrôle de formulaire = "contrôle d'un sous-formulaire" ?
    Bonjour,

    J'essaye en vain de faire en sorte que la source de la zone texte "parentidtextZTX" de mon formulaire ait une formule qui va chercher la clé de l'enregistrement sélectionné dans le sous-formulaire du cadre "PrimaireSFM".

    Auriez vous une idée du code VBA a utilisé ?

    Quand je met directement "=[PrimaireSFM].[Formulaire]![Profession_IdTxt]" dans la propriété "Source contrôle" de mon champ "parentidtextZTX", cela fonctionne.

    Mais lorsqu'en VBA je mets le code suivant, cela inscrit "#Nom*?" dans le champ "parentidtextZTX" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("F__Home").Controls("[ParentIdTxtZTX]").ControlSource = "=[PrimaireSFM].[Formulaire]![Profession_IdTxt]"
    Comme vous le voyez j'inscris en VBA le même code que dans la propriété du champ. Alors pourquoi cela ne fonctionne il pas SVP ?

    - "F__Home" est le nom du formulaire principal
    - "[ParentIdTxtZTX]" est le champ sur lequel je souhaite changer la source.
    - "[PrimaireSFM]" est le cadre du sous-formulaire contenant la clé que je souhaite récupérer.
    - "[Profession_IdTxt]" est la clé du sous formulaire.

    Pour vous situez mon projet :

    J'ai deux sous-formulaire dans mon formulaire. Le premier contient la liste des enregistrements. Le second contient le formulaire de saisie de l'enregistrement sélectionné dans le premier sous-formulaire.
    L'utilisation des propriétés "Parent/enfant" du sous-formulaire ne peut se faire qu'avec son formulaire principal. J'ai donc créé un champ texte qui doit récupérer la clé de l'enregistrement du premier sous-formulaire.
    Je pourrais mettre en dur "=[PrimaireSFM].[Formulaire]![Profession_IdTxt]" dans la propriété "Source contrôle" de mon champ "parentidtextZTX" mais mon formulaire principal d'affiche pas toujours les mêmes sous-formulaire. Donc une fois çà peut être "=[PrimaireSFM].[Formulaire]![Profession_IdTxt]" ou "=[PrimaireSFM].[Formulaire]![Tiers_IdTxt]" ou "=[PrimaireSFM].[Formulaire]![Contrat_IdTxt]" ou ...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    J'ai trouvé une solution qui, je pense, ne peut être que temporaire :

    Dans mon code VBA qui défini la requête qui sert de source au premier sous-formulaire, j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     & FormEnCoursSourceInitialeSTR & "." & FormEnCoursChampCleSTR & " AS CleTxt, "
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            ChaineSqlSTR = "SELECT DISTINCTROW " & FormEnCoursSourceInitialeSTR & "." & FormEnCoursChampCleSTR & " AS CleTxt, " & FormEnCoursSourceInitialeSTR & ".*, R__Select_LocalSelect.* " _
                           & "FROM " & FormEnCoursSourceInitialeSTR & " " _
                           & "LEFT JOIN R__Select_LocalSelect " _
                           & "ON " & FormEnCoursSourceInitialeSTR & "." & FormEnCoursChampCleSTR & " = " _
                           & "R__Select_LocalSelect.Select_CleidTxt " _
                           & WhereSqlSTR
    Cela permet d'avoir dans la source du premier sous-formulaire toujours le champ "CleTxt" quel que soit le sous formulaire présent dans le cadre.

    De ce fait, je met directement "=[PrimaireSFM].[Formulaire]![CleTxt]" dans la propriété "Source contrôle" de mon champ "parentidtextZTX" et cela fonctionne.


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    Bon j'ai trouvé. En fait "=[PrimaireSFM].[Formulaire]![Profession_IdTxt]" est le texte qu'Access met automatiquement dans la propriété du champ lorsqu'on met "=[PrimaireSFM].Form![CleTxt]" dans le générateur.

    Mais lorsqu'on met nous même ce premier, il n'en veut pas. Bizarre mais c'est comme çà. Donc en VBA il faut mettre comme le générateur.

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

Discussions similaires

  1. [AC-2003] MàJ de sous-formulaires imbriqués à partir d'un sous-formulaire
    Par jeanpierre78 dans le forum IHM
    Réponses: 1
    Dernier message: 20/11/2011, 17h38
  2. [AC-2003] Sous formulaire et contrôle onglets
    Par Chagui dans le forum Access
    Réponses: 4
    Dernier message: 26/07/2010, 18h10
  3. Réponses: 2
    Dernier message: 02/08/2009, 11h52
  4. [AC-2003] Formulaire, sous-formulaire et contrôles
    Par Shankara dans le forum IHM
    Réponses: 6
    Dernier message: 15/05/2009, 13h48
  5. sous formulaires dans contrôle onglet
    Par mic220879 dans le forum Access
    Réponses: 1
    Dernier message: 31/01/2007, 21h03

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