问题描述
我有一个主表单 (frmpurchases) 和一个子表单 (subfrmpurchases)。子表单上的字段 UPC 是一个包含 2 列的组合框,一个是数字(产品 ID),另一个是文本。我有一个 Not-In-List 事件来打开一个单独的表单来添加新产品。输入产品详细信息后,将执行以下代码行。
Private Sub Command4_Click()
On Error GoTo errline
If IsFormloaded("frmpurchases") = True Then
Forms!frmpurchases!subfrmpurchases.Form!UPC.Undo
Forms!frmpurchases!subfrmpurchases.Form!UPC.Requery
Forms!frmpurchases!subfrmpurchases.Form!UPC = Me.UPC
DoCmd.Close acForm,"ADDPRODUCT",acSaveYes
Forms!frmpurchases!subfrmpurchases.Form!Quantity.SetFocus
Else
DoCmd.Close acForm,acSaveYes
End If
errline:
Exit Sub
End Sub
发生了什么:
-产品添加成功
-在子表单字段 UPC 上,产品在那里(因为我已经设置了它,因此您不能移动到子表单中的新记录而将该字段留空),但组合框显示为空白。
-在 subfrmpurchases 的记录源(采购表)中,产品 ID 与在 subfrmpurchases 中输入的所有数据一起显示。
编辑:好的,所以我想通了。我忘了提到组合框 UPC 没有以正常方式填充数据。我使用一个类来调用行源,所以我需要引用类中的方法来重新查询组合框。
解决方法
您应该设置组合框绑定值(产品 ID),而不是显示的文本 (UPC)。所以:
Forms!frmPurchases!subfrmPurchases.Form!UPC.Value = Me!ProductID.Value