【问题标题】:Update combo box value list based on other combo box selection根据其他组合框选择更新组合框值列表
【发布时间】:2019-09-23 14:17:17
【问题描述】:

我有一个名为 Devices 的表。此表中的两个字段是品牌和型号。

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

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

makeCombo 由一个简单的查询 (SELECT DISTINCT Devices.Make FROM Devices;) 填充,并且可以正常工作。

我想根据品牌的选择,将 modelCombo 更新为适当的值(例如:用户选择 Dell 作为品牌,并且 modelCombo 更新以包含数据库中的所有 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

【问题讨论】:

    标签: sql database vba ms-access


    【解决方案1】:

    当然我在发帖后几分钟就找到答案了....

    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 并且它工作得很好。希望这可以帮助遇到同样问题的其他人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多