我有一个主窗体,其中包含两个其他子窗体。当子窗体(A)上的文本框值发生变化时,我想将子窗体(B)上的文本框的值设置为等于子窗体(A)上更改的文本框。
因此,对于Access来说,我做了一些谷歌搜索,看起来这可以用一些VBA实现这一点。所以在子表单(A)的文本框'更新'事件之后我添加了这个VBA。
Private Sub ID_AfterUpdate()
Me.Parent.Forms.formA.textboxDestination.Value = Me.textboxSource.Value
End Sub
我正在使用代码生成器执行此操作。然后我保存并运行表单。什么都没发生。没有错误..没有什么我甚至不确定那段代码是否正在运行。我甚至不确定如何在Access中调试VBA。有人可以帮助我吗?
谢谢!
答案 0 :(得分:2)
当用户更改其值时,将触发控件的更新后事件。如果ID绑定到自动编号字段,则db引擎将在您添加新记录时提供其值。但是,由于用户未进行此更改,因此不会触发更新后事件。
出于一般调试目的,您可以添加Debug.Print或MsgBox语句。
Debug.Print "my event fired"
MsgBox "my event fired"
在VB编辑器的立即窗口中查看Debug.Print的输出。您可以使用Ctrl + g键盘快捷键从主Access窗口转到此处。
另一种技术是在代码的一行设置断点。右键单击代码行,然后从上下文菜单中选择Toggle-> Breakpoint。或者单击左边距,以便出现红点以标记断点。或按F9键。或者从VB Editor的主菜单中选择Debug-> Toggle Breakpoint。
您还可以单独在一行上键入Stop
以触发中断模式。但是,您需要稍后将其删除。我提到的那些其他断点是临时的,不会保存在代码模块中。
然而,你进入中断模式,然后可以使用F8键一次一行地执行代码。这将显示执行哪些行。您还可以在中断模式下随时通过键入问号,变量名称,然后在立即窗口中输入Enter键来检查变量的值:
? MyVariable
浏览VB Editor的主菜单以查找其他调试选项。例如,监视窗口允许您在单步执行代码时监视所选变量的值。
答案 1 :(得分:1)
在您要更改的文本框的更新属性上,输入以下内容:
[Forms]![frmContainingValueYouWantToChange]![txtTextboxYouWantToChange] = "newValueHere"
告诉我们你是怎么过的?
答案 2 :(得分:1)
您不必指定父表单的名称。
Me.Parent.CONTROLNAME.Value是一种工作代码。
此致
答案 3 :(得分:0)
我知道这是6年前,但我认为这里的错误是您正在将formA
的值更新为同一formA
。
Me.Parent.Forms.formA
实际上是Me
因为你打电话的原因:
更新'事件后子表单(A)的文本框
它应该是formB
,并且应该放在“Form”之后(并且“Value”这个词不是强制性的):
Private Sub textboxSource_AfterUpdate()
Me.Parent.formB.Form.textboxDestination.Value = Me.textboxSource.Value
End Sub
您可以在这里了解更多信息如何Refer to Form and Subform properties and controls
此致