0

我有一个主表单,当您单击一个按钮时,它会打开另一个表单,其中包含列表框中的值。我想要的是单击其中一个值并让该值以另一种形式填充文本框。

我尝试了几种不同的方法,这就是我目前正在尝试开始工作的方法。

在主窗体中:

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 从大量数据中提取并且加载速度有点慢。因此,我不能有几秒钟的空白屏幕。如果有办法将关闭延迟几秒钟,那可能会奏效。

任何帮助表示赞赏。谢谢。

4

1 回答 1

0

我尝试了很多在表单之间移动数据的方法。openargs 的问题太多了。

当我在表单之间使用信息来提取调用表单名称时,我发现它要容易得多。然后我就可以访问呼叫表格上的几乎所有信息。如果需要更新组合框或列表框、更改文本、重新查询等,我还可以将数据推送回调用表单。

Private Sub Form_Load()

    Set frmPrevious = Screen.ActiveForm

    Me.tbText.value = frmPrevious.cbPassTest.value

End Sub

将该代码放入您正在调用的表单的 LOAD() 中,然后您就可以提取您需要的内容。

于 2013-02-12T01:01:31.757 回答