sql >> Database teknologi >  >> RDS >> Mysql

Adgangsformular overlappende kombinationsboks viser intet i rullemenuen

Lad os først og fremmest sikre os, at vi forstår konceptet bag "cascading combo boxes". Logikken kører på en sådan måde, at efter du har foretaget et valg fra Combo1, vil de tilgængelige muligheder i Combo2 ændre sig, så de kun er elementer relateret til Combo1. På samme måde, efter at vi har valgt et element fra Combo2, vil elementerne i Combo3 kun være elementer, der er relateret til det, brugeren valgte i Combo2.

Så først og fremmest skal hver kombinationsboks udover Combo1 være tom eller være relateret til standardværdien for Combo1. Du kan gøre det på begge måder.

Dernæst, i AfterUpdate-begivenheden i Combo1, skulle du have noget som dette:

Me.cboCombo2.RowSource = "SELECT MyFieldNames " & _
                           "FROM tblMyTable " & _
                           "WHERE SomeID = " & Nz(Me.cboCombo1) & _  
                           "ORDER BY SomeValue"
Me.cboCombo2.Requery

Det er klart, MyFieldNames, tblMyTable og alle disse andre værdier vil afhænge af, hvad du rent faktisk leder efter, dit kildetabel/forespørgselsnavn og feltnavne osv...

OK, så nu skulle Combo2 fyldes op med data, der kun er relevante for det, du valgte i Combo1, da vi bruger Combo1 som et filter i SQL'en ovenfor.

Hvis det ser OK ud, skal du gøre mere eller mindre det samme for Combo3. Du skal muligvis filtrere på værdier fra begge kombinationer, eller du kan muligvis slippe afsted med bare at bruge den værdi i Combo2, afhængigt af dit datasæt.

Skum, skyl, gentag. Jeg formoder, at du bliver nødt til at gøre det 50 gange, hvis du har 50 kombinationer, men det er sådan, det gøres.

For yderligere reference, se denne artikel:http://www.fmsinc .com/microsoftaccess/forms/combo-boxes/cascading.html




  1. Oprettelse af en taltabel i MySQL

  2. Sådan defineres unikt indeks på flere kolonner i efterfølger

  3. MySQL - find forskel mellem rækker i samme tabel

  4. Hvordan importerer du en stor MS SQL .sql-fil?