Laten we er allereerst voor zorgen dat we het concept achter "cascading combo boxes" begrijpen. De logica werkt zo dat nadat u een selectie uit Combo1 hebt gemaakt, de beschikbare opties in Combo2 zullen veranderen, zodat het alleen items zijn die betrekking hebben op Combo1. Evenzo, nadat we een item uit Combo2 hebben geselecteerd, zullen de items in Combo3 alleen items zijn die gerelateerd zijn aan wat de gebruiker heeft geselecteerd in Combo2.
Dus allereerst moet elke combobox behalve Combo1 leeg zijn, of gerelateerd zijn aan de standaardwaarde van Combo1. Je zou het op beide manieren kunnen doen.
Vervolgens zou je in de AfterUpdate-gebeurtenis van Combo1 zoiets als dit moeten hebben:
Me.cboCombo2.RowSource = "SELECT MyFieldNames " & _
"FROM tblMyTable " & _
"WHERE SomeID = " & Nz(Me.cboCombo1) & _
"ORDER BY SomeValue"
Me.cboCombo2.Requery
Het is duidelijk dat MyFieldNames, tblMyTable en al die andere waarden afhangen van wat u daadwerkelijk zoekt, uw brontabel/querynaam en veldnamen, enz...
OK, dus nu zou Combo2 zich moeten vullen met gegevens die alleen relevant zijn voor wat je hebt geselecteerd in Combo1, aangezien we Combo1 gebruiken als filter in de bovenstaande SQL.
Als dat er goed uitziet, doe dan min of meer exact hetzelfde voor Combo3. Mogelijk moet u filteren op waarden uit beide combo's, of u kunt wegkomen door alleen die waarde in Combo2 te gebruiken, afhankelijk van uw dataset.
Schuim, spoel, herhaal. Ik denk dat je dat 50 keer moet doen als je 50 combo's hebt, maar zo is het gedaan.
Zie dit artikel voor meer informatie:http://www.fmsinc .com/microsoftaccess/forms/combo-boxes/cascading.html