访问:父表单中的事件

时间:2013-08-11 15:26:19

标签: vba ms-access

我仍在摆弄MS Access,这让我发疯。我目前的问题如下:我重新创建了记录导航栏作为子窗体并将其添加到我的mainform。此代码用于子表单

...
Private WithEvents frmParent As Access.Form
...

Private Sub Form_Load()
   ...
   Set frmParent = Me.Parent
   frmParent.OnCurrent = "[Event Procedure]"
   frmParent.Recordset.MoveLast
   frmParent.Recordset.MoveFirst
   ...
End Sub

Private Sub frmParent_Current()
   If frmParent.CurrentRecord = frmParent.Recordset.Count Then
       Me.butNext.Enabled = False
   Else
       Me.butNext.Enabled = True
   End If
   If frmParent.CurrentRecord = 1 Then
       Me.butPrevious.Enabled = False
   Else
       Me.butPrevious.Enabled = True
   End If
End Sub
...
Other MainForm Events...

由此产生一些问题。第一:MainForm没有发生任何事件。第二:不时(特别是在错误之后)vba失去了对mainform的引用。我可以使用CopyMemory的Win32 API解决方法,但这似乎有点矫枉过正。

我一如既往地感谢任何帮助。

非常感谢

乔恩

1 个答案:

答案 0 :(得分:1)

实际上这似乎是Access中的一个错误...只要为有问题的父表单创建一个代码文件,即使它保持空白并且一切正常。

编辑:我必须纠正自己。这是预期的行为。取自Litwin等人:Access 2002 Desktop Developer's handbook,p。 508

  

...如果您使用WithEvents变量来响应表单的事件,则表单必须具有关联的模块。也就是说,如果HasModule属性为False,则Access不会为表单引发事件,因此表单外部任何期望对表单事件作出反应的代码都不会被Access调用。