Forms: Limiter le contenu d'une liste (combo ou zone de liste) |
Author(s) Dev Ashish |
|
Limiter le contenu d'une liste (combo ou zone de liste).
(Q) Comment peut-on limiter le contenu d'une liste par un
critère basé sur la valeur d'un autre contrôle (éventuellement, une autre
liste)?
(A) Une façon facile est d'assigner un énoncé dynamique
SQL à la propriété RowSource du contrôle à restreindre, à partir du
contrôle possédant le critère.
Supposons deux combo box, cbxCombo1 et cbxCombo2. Le RowSourceType
de cbxCombo1 est "Field List" et son RowSource est la table
Category. cbxCombo2 possède rien sous RowSource.
Dans ce cas, ajouter le code suivant dans la procédure
événementielle AfterUpdate du contrôle
cbxCombo1 pour assigner la propriété RowSource requise pour cbxCombo2.
Private Sub cbxCombo1_AfterUpdate()
Dim strSQL As String
strSQL = "Select " & Me!cbxCombo1
strSQL = strSQL & " from Categories"
Me!cbxCombo2.RowSourceType = "Table/Query"
Me!cbxCombo2.RowSource = strSQL
End Sub
Pour filtrer les enregistrements d' un combo
ou d'une zone de liste basés sur la valeur choisie d'un autre combo,
vous pouvez également utiliser un requête sauvegardée qui utilise un
paramètre basé sur la valeur du premier contrôle:
Select PeopleID, PeopleName from tblPeople Where PeopleID =
Forms!FormName!NameOfFirstControl;
Et alors, il vous faut utiliser un Requery sur le second combo,
dans la procédure événementielle AfterUpdate du premier contrôle.
Private Sub NameOfFirstControl_AfterUpdate()
Me!NameOfSecondControl.Requery
End Sub
|