Vba 基于另一个组合框填充字段
我有一个表单(MS Access 2003),它有三个组合框。第一(类别)、第二(CatDetail)、第三(NBR值)。我可以用1号的更新后事件填充2号。我的问题出现在我尝试为第二个运行类似的更新事件以更新第三个时。这是我的密码 表1(类别) 第一个组合框(类别)SQL 更新第一个组合框(类别)的VBA后 表2(详细信息) 第二个组合框SQL(CatDetail) 更新第二个组合框(CatDetail)的VBA后 这部分效果很好。我迷失在下一集中,无法更新第三个组合框 表3(价值) 第三个组合框(NBR值)SQLVba 基于另一个组合框填充字段,vba,ms-access,Vba,Ms Access,我有一个表单(MS Access 2003),它有三个组合框。第一(类别)、第二(CatDetail)、第三(NBR值)。我可以用1号的更新后事件填充2号。我的问题出现在我尝试为第二个运行类似的更新事件以更新第三个时。这是我的密码 表1(类别) 第一个组合框(类别)SQL 更新第一个组合框(类别)的VBA后 表2(详细信息) 第二个组合框SQL(CatDetail) 更新第二个组合框(CatDetail)的VBA后 这部分效果很好。我迷失在下一集中,无法更新第三个组合框 表3(价值) 第三个组合
总之,我可以选择我的第一个组合框值。选择之后,第二个组合框将更新为所有相应的值。问题在于第二个组合框上的更新后事件,因为我的第三个组合框返回为空。我一直在这样做。在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
如果查询确实返回了某些内容,这将起作用。第三个组合框的SQL是什么?对不起。。。第三个组合框SQL…>选择Value.ValueID、Value.Value、Value。[CatDetail Name]>FROM[Value]>WHERE(((Value.[CatDetail Name])=[Forms]![Combo Form]![CatDetail Name]);在更新第二个组合框后,是否使用SQL查询第三个组合框的结果?在即时窗口中(设置CatDetail的值后)键入
?[Forms]![组合形式]![CatDetail]
我已经观看了即时windoe,没有任何事件显示。
SELECT Category.CategoryID, Category.[Category Name]
FROM Category
ORDER BY Category.[Category Name];
Option Compare Database
Private Sub Category_AfterUpdate()
Me.CatDetail = Null
Me.CatDetail.Requery
Me.CatDetail = Me.CatDetail.ItemData(0)
End Sub
CatDetail ID CatDetail Category
1 Vac Day Used Vacation
2 Partial Vac Day Vacation
3 DH Gain DH
4 DH Used DH
SELECT CatDetail.[CatDetail ID], CatDetail.[CatDetail Name], CatDetail.CategoryID
FROM CatDetail
WHERE (((CatDetail.CategoryID)=[Forms]![Combo Form]![Category]));
Private Sub CatDetail_AfterUpdate()
Me.NbrValue = Null
Me.NbrValue.Requery
Me.NbrValue = Me.NbrValue.ItemData(0)
End Sub
ValueID Value CatDetail Name
1 -1 Vac Day Used
2 -0.5 Partial Vac Day
3 1 DH Gain
4 -1 DH Used
SELECT Value.ValueID, Value.Value, Value.[CatDetail Name]
FROM [Value]
WHERE (((Value.[CatDetail Name])=[Forms]![Combo Form]![CatDetail]));
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