访问VBA尝试从另一个表单引用文本框

时间:2010-12-16 20:14:49

标签: ms-access vba access-vba

我正在使用Access VBA,我正在尝试修改现有代码以添加弹出框。此弹出框是另一种形式,当用户单击此表单上的按钮时,我希望填充基本表单上的文本框。之后弹出窗口消失,然后我需要从基本表单上的文本框中访问该值。

序列应该是这样的:
1)基本表单按钮单击调用模式弹出窗口
2)点击弹出窗口上的按钮将值保存到基本表格的文本框,然后返回控制 3)然后基础形式使用该值来做某事。

我有一些代码,但它无法正常工作。任何人都可以看到这里遗漏的东西,并帮助我纠正?

基本表格

Sub base()
    DoCmd.OpenForm "PaperType", , , , , acDialog

    MsgBox Me.TheAnswer           'This line gives a null error
End Sub

弹出窗体

Private Sub btnRolls_Click()
    'Me.Tag = 1
    Forms!ReceiptDetail_sfrm!TheAnswer = 1
    Me.Visible = False
End Sub

Private Sub btnSheets_Click()
    'Me.Tag = 4
    Forms!("ReceiptDetail_sfrm").TheAnswer = 4
    Me.Visible = False
End Sub

3 个答案:

答案 0 :(得分:8)

你可以这样做,你可能需要这样的东西:

Private Sub btnRolls_Click() Forms!ReceiptDetail_sfrm!TheAnswer = 1 Forms!ReceiptDetail_sfrm.Refresh Me.Visible = False End Sub

我做了很多次你正在做的事情。我现在没有工作来检查我的代码,但这是可行的。

答案 1 :(得分:4)

我倾向于隐藏弹出窗口,然后从中读取:

主要表格:

Private Sub base()
   DoCmd.OpenForm "PaperType", , , , , acDialog
   'code waits for modal hide here
   Me!TheAnswer = Forms("PaperType").SomethingOnThatFormThatStoresTheValue
   DoCmd.Close acForm, "PaperType", acSaveNo
   MsgBox Me.TheAnswer
End Sub

<强>弹出

Private Sub btnRolls_Click
   'may be hidden control
   Me.SomethingOnThatFormThatStoresTheValue = TheValueToRead
   Me.Visible = False
End Sub

确保A)您的弹出窗口无法从表单本身关闭,或者B)您的调用代码将处理尝试读取不再加载(或两者)的内容的错误。

答案 2 :(得分:-2)

显然,正确答案是:“不要这样做!”。我没有尝试在表单之间传递数据,而是在Access中创建了一个表,其中1个记录中只有1个字段。然后我使用DoCmd.RunSQL将值存储在那里,并使用DLOOKUP()从其他表单中检索它。