我有一个主要表单,当您单击一个按钮时,它会在列表框中打开另一个带有值的表单。我想要的是单击其中一个值并使该值填充另一个表单中的文本框。
我尝试了几种不同的方法,这就是我目前正在尝试开始工作的方法。
主要形式:
Private Sub txtFindInvoice_AfterUpdate()
If IsNull(Me.OpenArgs) = False Then
txtFindInvoice = strSelectedInvoice
End If
End Sub
第二种形式:
Private Sub lstInvoices_Click()
DoCmd.OpenForm "SummaryByInvoice1", acNormal, , , , , lstInvoices.Value
Forms!SummaryByInvoice1.Refresh
DoCmd.Close acForm, "frmSearchByMonth"
End Sub
主窗体是“SummaryByInvoice1”,打开的窗体是“frmSearchByMonth”。文本框为txtFindInvoice,列表框为lstInvoices。
我认为,即使我在SummaryByInvoice1的代码中引用我在此处设置的OpenArgs值,该表单实际上并未重新打开,因此OpenArgs仍然被读取为空白。
我在打开frmSearchByMonth时尝试关闭SummaryByInvoice1,这解决了问题。然而,这不是一个可行的选择,因为frmSearchByMonth从大量数据中提取并且加载速度有点慢。因此,我几秒钟就不能有空白屏幕。如果有办法延迟关闭几秒钟,那可能会有效。
感谢任何帮助。感谢。
答案 0 :(得分:0)
我尝试了很多方法在表单之间移动数据。 openargs有太多问题。
当我在表单之间使用信息来拉取调用表单名称时,我发现它更容易。然后,我可以访问调用表单上的几乎所有信息。如果需要更新Combo或List框,更改文本,重新查询等,我还可以将数据推送回调用表单。
Private Sub Form_Load()
Set frmPrevious = Screen.ActiveForm
Me.tbText.value = frmPrevious.cbPassTest.value
End Sub
将该代码放入您正在调用的表单的LOAD()中,然后您可以将所需内容拉出来。