根据其他组合框选择更新组合框值列表

时间:2019-09-23 14:17:17

标签: sql database vba ms-access

我有一个名为Devices的表。该表中的两个字段是Make和Model。

我正在创建一个表单,以将新设备添加到数据库中。

我希望用户从组合框中选择品牌和型号数据。出于数据完整性的目的,我希望将它们限制为数据库中已存在的现有品牌和型号(如果需要,可以选择添加新的品牌/型号)。

makeCombo由一个简单的查询(SELECT DISTINCT Devices.Make FROM Devices;)填充,并且有效。

我希望基于品牌的选择,将modelCombo更新到适当的值(例如:用户选择Dell作为品牌,并且modelCombo更新以将数据库中的所有Dell型号包含在内,并允许新型号,如果数据库中当前没有Dell设备)。

Devices表的常规格式:DeviceID是主键,Make和Model都是Devices表中的两个字段。

过去,我曾将这种VBA用于较小的任务/数据库,但是该数据库有数百条记录,并且很难对每个品牌/模型组合进行硬编码。

Private Sub combo1_Change()
    If combo1 = "op1" Then
        Me.combo2.RowSourceType = "Value List"
        Me.combo2.RowSource = "a; b; c"
    Else
        Me.combo2.RowSourceType = "Value List"
        Me.combo2.RowSource = "default"
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

我当然会在发布后找到答案。...

Private Sub makeCombo_AfterUpdate()
'enables the modelCombo for data selection
modelCombo.Enabled = True
'updates the modelCombo to reflect the appropriate data in the makeCombo
modelCombo.RowSource = "SELECT DISTINCT Devices.Model FROM Devices WHERE Devices.Make = makeCombo.Value"
modelCombo.Requery

End Sub

只需执行此操作,将modelCombo行源类型设置为Table / Query,即可完美运行。希望这可以帮助遇到相同问题的其他人!