我仍在摆弄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解决方法,但这似乎有点矫枉过正。
我一如既往地感谢任何帮助。
非常感谢
乔恩
答案 0 :(得分:1)
实际上这似乎是Access中的一个错误...只要为有问题的父表单创建一个代码文件,即使它保持空白并且一切正常。
编辑:我必须纠正自己。这是预期的行为。取自Litwin等人:Access 2002 Desktop Developer's handbook,p。 508
...如果您使用WithEvents变量来响应表单的事件,则表单必须具有关联的模块。也就是说,如果HasModule属性为False,则Access不会为表单引发事件,因此表单外部任何期望对表单事件作出反应的代码都不会被Access调用。