我有一个简单的MS Access数据库,其中显示了有关收到的投诉的详细信息。我有4个表格如下:
第一个表被称为" tbl_Data"它显示了投诉细节等通用信息,
第二个表被称为" tbl_Tools"其中列出了所有工具编号和说明,
第3表被称为" tbl_Products"其中列出了所有产品编号和说明,
第4个表被称为" tbl_Material"其中列出了所有材料编号和说明。
我希望在frm_Complaints中有2个组合框,它根据第一个组合框中的数据从正确的表中获取PartNumber。
例如:第一个组合框将列出"工具","产品"和"材料"根据投诉的内容,如果我选择"工具",第二个组合框将查找" PartNo" in" tbl_Tools"只要。我已经尝试了Union Queries来合并所有3个表,但是无法编辑数据。有没有一种简单的方法在VBA中使第二个组合框只从正确的表中查找零件号,然后有一个第三个字段显示相应的描述? 见截图链接:
答案 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