Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

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.

'**************** Code Start *************
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
'**************** Code End *************

 

     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

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer