2010-09-21 32 views
0

Sur un formulaire dans un ADP d'accès il y a une combobox non liée qui affiche une liste des entreprises (le nom est affiché, l'id est le champ lié). Quand une entreprise est choisie, je veux afficher les informations d'abonnement dans un sous-formulaire (la source de données pour laquelle est la vue companySubscription) pour cette société. Je mets le lien Master Fields et lie la propriété child Fields du sous-formulaire à companyId. Fondamentalement, je l'ai mis en place comme this.Problèmes de liaison d'un sous-formulaire à un combobox sur la principale forme

En théorie, je pense que cela voudrait dire que lorsque je change la valeur dans la liste déroulante le sous-formulaire doit afficher les informations d'abonnement pour cette société. Cela ne fonctionne pas - le sous-formulaire affiche toujours toutes les données dans la vue companySubscription, quelle que soit la valeur de la combobox.

Aide!

+0

Non, ce n » est pas t switch – dmr

+0

Savez-vous comment changer l'enregistrement actuel du formulaire parent en fonction de ce qui est choisi dans la liste déroulante? – dmr

+1

@Hansup Le champ principal de lien ne doit pas nécessairement être un champ, il peut être un contrôle, et le contrôle peut même contenir du texte direct. Je l'ai souvent utilisé. – Fionnuala

Répondre

0

trouvé le réponse- avait un code d'un autre projet qui a contribué à: (Merci à this après)

Private Sub cmbSub_AfterUpdate() 
    ' Find the record that matches the control. 
    Dim rs As Object 

    Set rs = Me.Recordset.Clone 
    rs.FindFirst "[subID] = " & str(Nz(Me![cmbSub], 0)) 
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark 
End Sub 

et a dû le modifier pour une ADP

Private Sub ChooseCo_AfterUpdate() 
    ' Find the record that matches the control. 
    Dim rs As ADODB.Recordset 

    Set rs = Me.Recordset.Clone 
    rs.Find "[companyId] = " & Str(Nz(Me![ChooseCo], 0)) 
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark 
End Sub 
+0

C'est le code produit par l'assistant de zone de liste déroulante lorsque vous choisissez de créer une zone de liste déroulante FIND. Je ne connais pas la version d'ADP, mais le premier est l'un des pires morceaux de code généré automatiquement. Je le déchire en lambeaux dans ce post: http://stackoverflow.com/questions/3401645/how-do-i-bring-up-a-record-based-on-a-combobox-in-access/3418490#3418490 - Dans cet article, je trouve "un taux d'erreur d'au moins 2,5 problèmes par ligne de code créée". Ma critique est pour le code dans un MDB/ACCDB, mais 75% des critiques s'appliquent dans un ADP, aussi - c'est vraiment du code merdique. –