【问题标题】:Passing Values Between Forms using OpenArgs使用 OpenArgs 在表单之间传递值
【发布时间】:2017-09-21 21:02:18
【问题描述】:

*****已编辑

所以我有一个名为“NewInvoice”的表格。此表单编辑包含以下内容的“发票”表;发票号码、客户、订单日期。在这个表单中,我有一个按钮,可以打开一个名为“InvoiceItem”的子表单。这将编辑一个包含发票编号、项目代码、尺寸等的同名表。

目前,我的按钮有一个事件过程如下。


私有子 CreateInvoiceItem_Click()

DoCmd.OpenForm "InvoiceItem", OpenArgs:="InvoiceNumber"

结束子


(我使用按钮并在单独的窗口中打开表单的原因是因为当我将子表单插入父表单时,子表单中的级联组合框会损坏)

现在我遇到问题的地方是设置表单加载命令。我想要发生的是,当单击按钮时,在父表单中填写的 InvoiceNumber 会自动填写子表单。


私有子Form_Load()

**** 需要的代码****

结束子

【问题讨论】:

  • 有几种方法可以做到这一点。最简单的方法是构建表单/子表单排列,不需要代码。对于其他方法,您做了哪些研究?当您开发具有特定问题的代码时,请发布问题。
  • 嗯,我在网上浏览了一些地方,发现了一些我不太了解的解决方案。对我来说最重要的是我不只是想简单地复制其他人的代码并让它工作,我想知道要使用哪些工具以及代码实际在做什么,以便我可以将其应用于其他情况。所以是的,我可以使用一个直接连接的子表单,但是这个解决方案对我不起作用,因为在连接的子表单中我有我编码的级联组合框。当我尝试将它们用作主表单中的子表单时,这些又不起作用。
  • 如果 RowSource 是结构正确的 SQL 语句,组合框将起作用。在第二个(依赖)组合框的 SQL 语句中不要使用表单名称,只需引用第一个(主)组合框的名称,如:SELECT fieldname FROM tablename WHERE ID = [combobox name];。这确实假设两个组合框都在子表单上。最好将数据控件命名为与其绑定的字段不同的名称,例如 cbxID

标签: forms ms-access autofill openargs


【解决方案1】:

因此,请尝试按照问题评论中的说明修复组合框。此外,建议在 GotFocus 事件中重新查询依赖组合框的代码。请记住,具有查找别名的级联组合框在连续或数据表形式中效果不佳。

如果你真的想将值传递给独立的表单,OpenArgs 是一个不错的方法。

可能需要将表单打开到新的记录行。

DoCmd.OpenForm "InvoiceItem", , , , acFormAdd, acDialog, Me!InvoiceNumber

需要确保表单在新记录中的代码。

Private Sub Form_Load()
If Me.NewRecord Then Me!InvoiceNumber = Me.OpenArgs
End Sub

【讨论】:

  • 我为我沉默了这么久而道歉。目前正在完成我的最后一个学期,还有很多工作要做。我保证当我回到这个项目时我会调查这个!非常感谢您的意见!
  • Thx.. 我试图在打开表单时做同样的事情......并且收到错误 2448“无法分配值”
【解决方案2】:

我发现最好的方法是在您打开的表单中添加一个 Public sub,然后在您打开表单时将您需要的任何参数传递给此函数。因此,要执行您想要执行的操作,请将这样的函数添加到您正在打开的表单中;

Public Sub SetUpForm(InvoiceNumber as Long)

    txtInvoiceNumber.Value = InvoiceNumber

End Sub

其中 txtInvoiceNumber 是表单上您希望将值放入的控件。

然后从你的按钮;

DoCmd.OpenForm "InvoiceItem"
Forms!InvoiceItem.SetUpForm InvoiceNumber

这会将发票编号的值传递给您正在打开的表单上的控件。这也为您控制流程提供了更大的灵活性,因为您可以将多个参数传递给子程序,并且您可以在子程序中执行任意数量的任务。

【讨论】:

  • 我为我沉默了这么久而道歉。目前正在完成我的最后一个学期,还有很多工作要做。我保证当我回到这个项目时我会调查这个!非常感谢您的意见!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
相关资源
最近更新 更多