我正在使用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
答案 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()从其他表单中检索它。