如何使用组合框从不同的表中选择数据,具体取决于另一个组合框的值

时间:2017-11-09 11:44:35

标签: sql vba ms-access access-vba ms-access-2016

我有一个简单的MS Access数据库,其中显示了有关收到的投诉的详细信息。我有4个表格如下:

第一个表被称为" tbl_Data"它显示了投诉细节等通用信息,

第二个表被称为" tbl_Tools"其中列出了所有工具编号和说明,

第3表被称为" tbl_Products"其中列出了所有产品编号和说明,

第4个表被称为" tbl_Material"其中列出了所有材料编号和说明。

我希望在frm_Complaints中有2个组合框,它根据第一个组合框中的数据从正确的表中获取PartNumber。

screenshot1

例如:第一个组合框将列出"工具","产品"和"材料"根据投诉的内容,如果我选择"工具",第二个组合框将查找" PartNo" in" tbl_Tools"只要。我已经尝试了Union Queries来合并所有3个表,但是无法编辑数据。有没有一种简单的方法在VBA中使第二个组合框只从正确的表中查找零件号,然后有一个第三个字段显示相应的描述? 见截图链接:

screenshot2

2 个答案:

答案 0 :(得分:0)

作为我的评论,您可以通过ComboBox1_Change事件设置第二个ComboBox.List触发器。

Private Sub ComboBox1_Change()
    Select Case ComboBox1.ListIndex
        Case 0
            ComboBox2.List = ArrayTool
        Case 1
            ComboBox2.List = ArrayProducts
        Case 2
            ComboBox2.List = ArrayMaterial
    End Select
End Sub

或类似的东西:

Private Sub ComboBox1_Change()
    Select Case ComboBox1.Value
        Case "Tool"
            ComboBox2.List = ArrayTool
        Case "Products"
            ComboBox2.List = ArrayProducts
        Case "Material"
            ComboBox2.List = ArrayMaterial
    End Select
End Sub

答案 1 :(得分:0)

您绝对可以使用上述方法更改选择的表 -不只是选择不同的数组-在VBA中使用选择大小写,然后将SQL放入VBA中,就像您在Access中编写它一样,但要在语音标记中。在下面的情况下,情况会根据文本框(Me.Poltxt)(而不是组合框)的值的变化而变化,并且此代码位于较长的子例程中,该子例程由组合的更新触发此处未提及的包装盒-但原理相同。 元素1和元素2是2个不同的表。

Select Case Me.Poltxt.Value

Case "Pol1"
Me.Polcbo.RowSource = "SELECT [Elements 1].[ElemName] FROM [Elements 
1] ORDER BY [Elements 1].[ElemName];"


Case "Pol2"
Me.Polcbo.RowSource = "SELECT [Elements 2].[ElemName] FROM [Elements 2] ORDER 
BY [Elements 2].[ElemName];"                     

Case Else: Me.Polcbo.Value = "N/A"

End Select