问题描述
"Advanced Apache Cassandra Analytics Now Open For All" 我有一个来自的两个组合框:txtKategorie和txtTyp。 第一个组合框(txtKategorie)的值是固定的! 我希望第二个组合框(txtTyp)的值根据用户在第一个组合框中选择的内容进行更改。 如果用户选择“ Datalogger”,则第二个组合框应仅包含“ Base Layer Classic”和“ Base Layer Plus”,如在图像中可以看到的。 “加速度计”也是如此。
我已将代码放入第一个组合框的AfterUpdate事件中:
If txtKategorie.Value = "Datalogger" And txtTyp.ListCount = 0 Then
i = 1
Do While txtTyp.ListCount < DCount("ID","tblNomenklatur","[Kat] = 'K'")
txtTyp.AddItem DLookup("[Typ]","[ID] =" & i And "[Kat] = 'K'")
'And "[Kat] = 'K'"
i = i + 1
Loop
打开表单时,只有第一个组合框“ txtKategorie”具有“值”。当用户选择Datalogger时,代码将检查表中有多少条记录具有[Kat] =“ K”来定义Do While语句将运行多长时间。然后,“ txtTyp.AddItem”声明应将“ Base Layer Classic”和“ Base Layer Plus”添加到“ txtTyp”组合框。但不幸的是,《守则》确实起作用。包含拖曳条件的Dlookup-Statement存在问题。如果我删除两个条件之一,则代码可以工作,但显然会给第二个组合框提供错误的结果。如果我这样离开,第二个组合框将保持空白。 有人知道我在做什么错吗?
解决方法
您可以通过以下代码轻松完成此操作。用表名更改表名。
Private Sub txtKategorie_AfterUpdate()
Me.txtTyp.RowSource = "SELECT DISTINCT Table1.Typ FROM Table1 WHERE Table1.Kategorie='" & Me.txtKategorie & "'"
Me.txtTyp.Requery
End Sub
或者您可以从行源查询构建器以图形方式进行操作。以下是步骤。
- 组合框
txtKategorie
已修复。很好! - 对于第二个组合框
txtTyp
,请执行以下步骤。 - 选择组合框
txtTyp
。在属性窗口中,选择Row Source
,然后单击查询生成器...
小的三个点。查看屏幕截图。 - 在查询构建器窗口中,从屏幕截图等数据表中构建查询,并为
Kategorie
列设置条件为[Forms]![Form1]![txtKategorie]
。保存并关闭查询窗口。
现在txtKategorie
事件中的组合框After Update
现在写在下面的行中以重新查询txtTyp
。你完成了!
Private Sub txtKategorie_AfterUpdate()
Me.txtTyp.Requery
End Sub