我如何使用 Dlookup for Multiple Criteria 创建动态组合框
How do i use Dlookup for Multiple Criteria to create a dynamic Combobox
我有两个组合框来自:txtKategorie 和 txtTyp。
第一个 Combobox (txtKategorie) 的值是固定的!
我希望第二个 Combobox (txtTyp) 的值根据用户在第一个 Combobox 中的选择而改变。
如果用户选择“Datalogger”,第二个组合框应仅包含“Base Layer Classic”和“Base Layer Plus”,如图所示。
同样的想法也适用于“加速度计”。
我已将我的代码放入第一个组合框的更新后事件中:
If txtKategorie.Value = "Datalogger" And txtTyp.ListCount = 0 Then
i = 1
Do While txtTyp.ListCount < DCount("ID", "tblNomenklatur", "[Kat] = 'K'")
txtTyp.AddItem DLookup("[Typ]", "tblNomenklatur", "[ID] =" & i And "[Kat] = 'K'")
'And "[Kat] = 'K'"
i = i + 1
Loop
当表单打开时,只有第一个组合框“txtKategorie”有值。当用户选择 Datalogger 时,代码会检查 table 中有多少记录具有 [Kat] = "K" 以定义 Do While-Statement 将 运行 持续多长时间。然后“txtTyp.AddItem”-语句应将“Base Layer Classic”和“Base Layer Plus”添加到“txtTyp”组合框。但不幸的是,守则确实有效。包含两个标准的 Dlookup 语句存在问题。如果我删除两个标准中的任何一个,该代码可以工作,但显然会为第二个组合框提供错误的结果。如果我这样离开它,第二个组合框将保持为空。
有人知道我做错了什么吗?
您可以通过以下代码轻松完成。将 table 名称更改为您的 table 名称。
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
,请按照以下步骤操作。
- Select 组合框
txtTyp
。从 属性 windows select Row Source
然后单击查询生成器 ...
小三点。见截图。
- 在查询构建器中 window 从您的数据构建一个查询 table 就像截图一样,并为
Kategorie
列设置条件 [Forms]![Form1]![txtKategorie]
保存并关闭查询构建器 window.
现在,对于 After Update
事件中的组合框 txtKategorie
,请在下面的行中写入以重新查询 txtTyp
。你完成了!
Private Sub txtKategorie_AfterUpdate()
Me.txtTyp.Requery
End Sub
我已将我的代码放入第一个组合框的更新后事件中:
If txtKategorie.Value = "Datalogger" And txtTyp.ListCount = 0 Then
i = 1
Do While txtTyp.ListCount < DCount("ID", "tblNomenklatur", "[Kat] = 'K'")
txtTyp.AddItem DLookup("[Typ]", "tblNomenklatur", "[ID] =" & i And "[Kat] = 'K'")
'And "[Kat] = 'K'"
i = i + 1
Loop
当表单打开时,只有第一个组合框“txtKategorie”有值。当用户选择 Datalogger 时,代码会检查 table 中有多少记录具有 [Kat] = "K" 以定义 Do While-Statement 将 运行 持续多长时间。然后“txtTyp.AddItem”-语句应将“Base Layer Classic”和“Base Layer Plus”添加到“txtTyp”组合框。但不幸的是,守则确实有效。包含两个标准的 Dlookup 语句存在问题。如果我删除两个标准中的任何一个,该代码可以工作,但显然会为第二个组合框提供错误的结果。如果我这样离开它,第二个组合框将保持为空。 有人知道我做错了什么吗?
您可以通过以下代码轻松完成。将 table 名称更改为您的 table 名称。
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
,请按照以下步骤操作。 - Select 组合框
txtTyp
。从 属性 windows selectRow Source
然后单击查询生成器...
小三点。见截图。 - 在查询构建器中 window 从您的数据构建一个查询 table 就像截图一样,并为
Kategorie
列设置条件[Forms]![Form1]![txtKategorie]
保存并关闭查询构建器 window.
现在,对于 After Update
事件中的组合框 txtKategorie
,请在下面的行中写入以重新查询 txtTyp
。你完成了!
Private Sub txtKategorie_AfterUpdate()
Me.txtTyp.Requery
End Sub