如何使用Dlookup for Multiple Criteria创建动态组合框

问题描述

"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

或者您可以从行源查询构建器以图形方式进行操作。以下是步骤。

  1. 组合框txtKategorie已修复。很好!
  2. 对于第二个组合框txtTyp,请执行以下步骤。
  3. 选择组合框txtTyp。在属性窗口中,选择Row Source,然后单击查询生成器...小的三个点。查看屏幕截图。
  4. 在查询构建器窗口中,从屏幕截图等数据表中构建查询,并为Kategorie列设置条件为[Forms]![Form1]![txtKategorie]。保存并关闭查询窗口。

enter image description here

现在txtKategorie事件中的组合框After Update现在写在下面的行中以重新查询txtTyp。你完成了!

Private Sub txtKategorie_AfterUpdate()
    Me.txtTyp.Requery
End Sub

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...