sql >> Databáze >  >> RDS >> Mysql

Kaskádové pole se seznamem přístupových formulářů v rozevírací nabídce nic nezobrazuje

Nejprve se ujistěte, že rozumíme konceptu „kaskádových kombinovaných boxů“. Logika běží tak, že po provedení výběru z Combo1 se možnosti dostupné v Combo2 změní tak, že se jedná pouze o položky související s Combo1. Podobně poté, co vybereme položku z Combo2, budou položky v Combo3 pouze položky související s tím, co uživatel vybral v Combo2.

Za prvé, každé pole se seznamem kromě Combo1 by mělo být prázdné nebo by mělo souviset s výchozí hodnotou Combo1. Můžete to udělat tak či tak.

Dále v události AfterUpdate Combo1 byste měli mít něco takového:

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

Je zřejmé, že MyFieldNames, tblMyTable a všechny tyto další hodnoty budou záviset na tom, co skutečně hledáte, na názvu vaší zdrojové tabulky/dotazu a názvech polí atd...

Dobře, takže nyní by se Combo2 mělo naplnit daty, která jsou relevantní pouze pro to, co jste vybrali v Combo1, protože používáme Combo1 jako filtr ve výše uvedeném SQL.

Pokud to vypadá dobře, udělejte víceméně přesně to samé pro Combo3. Možná budete muset filtrovat hodnoty z obou kombinací, nebo vám může stačit použití této hodnoty v Combo2, v závislosti na vaší datové sadě.

Napěňte, opláchněte, opakujte. Předpokládám, že to budete muset udělat 50krát, pokud máte 50 komb, ale tak se to dělá.

Další informace naleznete v tomto článku:http://www.fmsinc .com/microsoftaccess/forms/combo-boxes/cascading.html




  1. MYSQL OR vs výkon IN

  2. Proč by se řádky shodovaly, ale nebyly by změněny pomocí příkazu aktualizace mysql?

  3. Rozdělte časové období na jeden řádek za měsíc na serveru SQL

  4. Jak přidat název do záhlaví formuláře v aplikaci Access