Låt oss först och främst se till att vi förstår konceptet bakom "cascading combo boxes". Logiken fungerar på ett sådant sätt att efter att du har gjort ett val från Combo1 kommer de tillgängliga alternativen i Combo2 att ändras så att de endast är relaterade till Combo1. På samma sätt, efter att vi har valt ett objekt från Combo2, kommer objekten i Combo3 endast att vara objekt relaterade till vad användaren valde i Combo2.
Så först och främst bör varje kombinationsruta förutom Combo1 vara tom, eller bör vara relaterad till standardvärdet för Combo1. Du kan göra det hur som helst.
Därefter, i AfterUpdate-händelsen av Combo1, bör du ha något i stil med detta:
Me.cboCombo2.RowSource = "SELECT MyFieldNames " & _
"FROM tblMyTable " & _
"WHERE SomeID = " & Nz(Me.cboCombo1) & _
"ORDER BY SomeValue"
Me.cboCombo2.Requery
Uppenbarligen kommer MyFieldNames, tblMyTable och alla dessa andra värden att bero på vad du faktiskt letar efter, din källtabell/fråga namn och fältnamn, etc...
OK, så nu borde Combo2 fyllas på med data som bara är relevant för det du valde i Combo1, eftersom vi använder Combo1 som ett filter i SQL ovan.
Om det ser OK ut, gör mer eller mindre exakt samma sak för Combo3. Du kan behöva filtrera på värden från båda kombinationerna, eller så kanske du kan komma undan med att bara använda det värdet i Combo2, beroende på din datauppsättning.
Löddra, skölj, upprepa. Jag antar att du kommer att behöva göra det 50 gånger om du har 50 kombinationer, men det är så det görs.
För ytterligare referens, se den här artikeln:http://www.fmsinc .com/microsoftaccess/forms/combo-boxes/cascading.html