2009-10-18 7 views
1

J'ai une application très simple avec deux tables, ParentTable et ChildrenTable. Chaque enfant de la table a une clé étrangère à un parent (la relation parent-enfant est un-à-plusieurs).Liaison d'un ListBox à une requête dans MS Access 2003

Lorsque j'affiche un formulaire avec des informations parents, je veux afficher un ListBox avec tous les enfants parents.

J'ai déjà un ListBox qui affiche tous les enfants, mais je ne suis pas sûr de savoir comment changer la requête afin que je ne vois que les enfants parents actifs (le parent dont je regarde la forme en ce moment). Il va comme ceci:

SELECT ChildrenTable.IdNumber, ChildrenTable.FirstName, ChildrenTable.LastName FROM ChildrenTable ORDER BY [FirstName]; 

Je suppose que je suis à la recherche de quelque chose comme:

WHERE ChildrenTable.ParentIdNumber == <active parent>.IdNumber 
+0

Pourquoi avez-vous choisi une zone de liste pour vos données enfant, au lieu du sous-formulaire plus évident? –

+0

@David - un sous-formulaire simplifierait-il ce problème? Pouvez-vous donner un exemple? –

Répondre

4

Un formulaire nommé frmParent comprend un contrôle de zone de texte nommé txtIdNumber qui affiche le IDnumber de ParentTable.

Ensuite, la requête de votre zone de liste rowsource peut faire référence à la valeur txtIdNumber:

SELECT c.IdNumber, c.FirstName, c.LastName 
FROM ChildrenTable AS c 
WHERE c.ParentIdNumber = Forms!frmParent!txtIdNumber 
ORDER BY c.FirstName; 

Vous pouvez mettre à jour la liste que vous vous déplacez à travers les enregistrements ParentTable dans frmParent en utilisant ce code pour de « Le courant sous forme "événement:

Private Sub Form_Current() 
    Me.YourListBoxName.Requery 
End Sub 
Questions connexes