Combobox.requery在其他表单的子表单中不起作用

时间:2019-03-22 09:56:37

标签: ms-access access-vba

我之前问过相关问题,但是并不能解决问题。因此,我将再次发布更多详细信息。

我有一个表单frmMain,其中包含子表单frmSubfrmSub包含一个组合框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保持不受影响。 我不确定是什么引起了这个问题。如果您能提供帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

Refer to Form and Subform properties and controls

您需要

Forms!frmMain!frmSub.Form!subCombo.Requery

请注意其他.Form

答案 1 :(得分:0)

好,问题终于解决了!

结果表明,我不需要从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`