我有一个表单(MS-Access 2003),它有三个组合框。第1(类别),第2(CatDetail),第3(NbrValue)。从1st获取更新后事件我没有问题填充第二个。当我尝试为第二个更新第三个类似的更新事件时,我的问题就出现了。这是我的代码。
表1(类别)
CategoryID Category Name
1 Vacation
2 DH
第一个组合框(类别)SQL
SELECT Category.CategoryID, Category.[Category Name]
FROM Category
ORDER BY Category.[Category Name];
更新第一个组合框的VBA(类别)后
Option Compare Database
Private Sub Category_AfterUpdate()
Me.CatDetail = Null
Me.CatDetail.Requery
Me.CatDetail = Me.CatDetail.ItemData(0)
End Sub
表2(CatDetail)
CatDetail ID CatDetail Category
1 Vac Day Used Vacation
2 Partial Vac Day Vacation
3 DH Gain DH
4 DH Used DH
第二个组合框SQL(CatDetail)
SELECT CatDetail.[CatDetail ID], CatDetail.[CatDetail Name], CatDetail.CategoryID
FROM CatDetail
WHERE (((CatDetail.CategoryID)=[Forms]![Combo Form]![Category]));
更新第二个组合框的VBA(CatDetail)后
Private Sub CatDetail_AfterUpdate()
Me.NbrValue = Null
Me.NbrValue.Requery
Me.NbrValue = Me.NbrValue.ItemData(0)
End Sub
这部分效果很好。我迷失了下一组以更新第3个组合框。
表3(价值)
ValueID Value CatDetail Name
1 -1 Vac Day Used
2 -0.5 Partial Vac Day
3 1 DH Gain
4 -1 DH Used
第3个组合框(NbrValue)SQL
SELECT Value.ValueID, Value.Value, Value.[CatDetail Name]
FROM [Value]
WHERE (((Value.[CatDetail Name])=[Forms]![Combo Form]![CatDetail]));
总结一下,我可以选择我的第一个组合框值。在该选择之后,第二个组合框将更新所有相应的值。麻烦在于第二个组合框上的更新后事件,因为我的第三个组合框返回空白。
答案 0 :(得分:1)
我一直这样做。在AfterUpdate()中设置依赖组合框的行源。
Sub Combo1_AfterUpdate()
comboBox2.RowSource = "SELECT .... WHERE FIELD = " & Combo1.Value
comboBox3.RowSource = "" ' Reset the third combo until after the 2nd is set.
End Sub
Sub Combo2_AfterUpdate()
comboBox3.RowSource = "SELECT .... WHERE FIELD = " & Combo2.Value
End Sub
如果查询实际上正在返回某些内容,这将有效。