我以前问了相关问题,但没有解决问题。所以,我将再次发布更多细节。
我有一个形式frmMain
,其中包含一个子表单frmSub
。 frmSub
包含一个combobox subCombo
。在subCombo
的Not_in_List事件中,我有以下代码:
If msgbox ("Do you want to add this data in list?", vbYesNo) = VbYes then
DoCmd.OpenForm "frmList", acNormal,,, acFormAdd, acDialog, NewData &";"
Response = acDataErrContinue
DoCmd.CancelEvent
Me.ActiveControl.Undo
End if
这将打开frmList
,我成功添加了这个新数据,在那里的保存按钮中,我有代码来更新subCombo
的行源:
DoCmd.Save
Me.Refresh
'make new data available in subCombo on frmMain
Forms!frmMain.frmSub.form.subCombo.Requery
但是最后一行代码不起作用。因此,subCombo不受影响。我不确定是什么导致了这个问题。如果你能提供帮助,我将不胜感激。
Refer to Form and Subform properties and controls
你需要
Forms!frmMain!frmSub.Form!subCombo.Requery
请注意额外的.Form
好吧,问题终于解决了!
事实证明,我不需要从subCombo
重新查询frmList
,因为它是以acDailog
模式打开的,并且暂停了Not_in_List
subCombo
事件的前一个代码。相反,我把me.subCombo.Requery
放在End If
线之前的Not_in_List
线上,它就像一个魅力。最终代码如下:
`If msgbox ("Do you want to add this data in list?", vbYesNo) = VbYes then`
`DoCmd.OpenForm "frmList", acNormal,,, acFormAdd, acDialog, NewData &";"`
`Response = acDataErrContinue`
`DoCmd.CancelEvent`
`Me.ActiveControl.Undo`
`End if`