Ms access MS Access-使用新记录打开表单并插入以前表单中的值

Ms access MS Access-使用新记录打开表单并插入以前表单中的值,ms-access,runtime-error,openargs,openform,Ms Access,Runtime Error,Openargs,Openform,我在MS Access数据库中有一个表单,它列出了带有订单号的订单,每页一个订单。表单底部有一个按钮,用于打开另一个表单,为订单添加项目 我正在尝试使用MS Access中的vb获取订单号,并自动将其放入新项目详细信息表单中的字段中。我尝试了不同的方法,但似乎推荐使用OpenArgs。但是详细信息表单不会打开,我会收到运行时错误。 以下是问题的详细信息-非常感谢您的建议: 所涉及的表格和字段包括: 带订单的表格为FRMPEDIDOAVIFIND 带有订单行的表单为frmPedidoAvifi d

我在MS Access数据库中有一个表单,它列出了带有订单号的订单,每页一个订单。表单底部有一个按钮,用于打开另一个表单,为订单添加项目

我正在尝试使用MS Access中的vb获取订单号,并自动将其放入新项目详细信息表单中的字段中。我尝试了不同的方法,但似乎推荐使用OpenArgs。但是详细信息表单不会打开,我会收到运行时错误。 以下是问题的详细信息-非常感谢您的建议:

所涉及的表格和字段包括: 带订单的表格为FRMPEDIDOAVIFIND 带有订单行的表单为frmPedidoAvifi dtlAdd(用于添加详细信息但不用于查看现有详细信息的单独表单)。 两种表单上订单号的字段均为PedidoAvifiNo。这是两个表中的数字字段,通过此字段通过一对多关系链接

主窗体:按钮弹出明细窗体,代码如下:

主窗体按钮上的代码:

Sub AddDetails_Click()
  Dim strDocName As String

    strDocName = "frmPedidoAvifi-dtlAdd"

    ' Open frmPedidoAvifi-dtl form in data entry mode and store PedidoAvifiNo in  the form's OpenArgs property.

    DoCmd.OpenForm strDocName, , , , acFormAdd, , [frmPedidoAvifiFind]![PedidoAvifiNo]

End Sub
详细表格:开放式物业

Private Sub Form_Open()
If Me.OpenArgs <> vbNullString Then
   Me.PedidoAvifiNo = Me.OpenArgs
End If

End Sub
Private子表单_Open()
如果Me.OpenArgs vbNullString,则
Me.PedidoAvifiNo=Me.OpenArgs
如果结束
端接头
测试1:在主窗体上选择一个订单号,以便记录显示。 按按钮添加订单行。-运行时错误“2465”找不到引用的字段“|”。Debug突出显示DoCmd行

测试2: 将openform行更改为: DoCmd.OpenForm strDocName,,acFormAdd,Me.PedidoAvifiNo 结果:-运行时错误2501 openForm操作已取消

谢谢,, 迈克·冈纳
Reus,西班牙

您收到的错误意味着您拼错了控件的名称
PedidoAvifiNo

键入
Me.
intellisense将为您提供可用字段的列表,查看与
PedidoAvifiNo
类似的内容,或检查属性。切换一个字母而不注意是很容易的


至于第二部分,您应该使用Load事件,而不是
frmpedidoavi dtlAdd
上的Open事件,因为这些控件在Open事件中还不可用。

您得到的错误意味着您拼错了控件的名称
PedidoAvifiNo

键入
Me.
intellisense将为您提供可用字段的列表,查看与
PedidoAvifiNo
类似的内容,或检查属性。切换一个字母而不注意是很容易的


至于第二部分,您应该在
frmpedidoavi dtlAdd
上使用Load事件,而不是Open事件,因为控件在Open事件中还不可用。

子窗体是在MS Access中处理此用例的好方法。子窗体很棒,但在需要大量控制的情况下,添加记录不是很好。@Remou:我想先看一个解释,解释一下为什么子窗体不能工作,然后再使用弹出窗体。@David-W-Fenton我没有说它不能工作,只是子窗体并不总是在需要大量控制的情况下添加数据的最佳方式。我完全支持子表单,但我并不总是使用它们来添加记录。我只是说,在主/子数据关系的情况下,子表单应该是第一个想到的UI实现,如果不起作用,您只会使用另一种方法(无论是弹出窗口,还是一对链接列表/详细信息子表单)。换句话说,从Access简化的方式开始,只有当简单的方式不够充分(或变得过于复杂)时,才会使事情复杂化。在MS Access中,子窗体是处理此用例的好方法。子窗体很棒,但在需要大量控制的情况下,添加记录不是很好。@Remou:我想先看一个解释,解释一下为什么子窗体不能工作,然后再使用弹出窗体。@David-W-Fenton我没有说它不能工作,只是子窗体并不总是在需要大量控制的情况下添加数据的最佳方式。我完全支持子表单,但我并不总是使用它们来添加记录。我只是说,在主/子数据关系的情况下,子表单应该是第一个想到的UI实现,如果不起作用,您只会使用另一种方法(无论是弹出窗口,还是一对链接列表/详细信息子表单)。换句话说,从访问变得简单的方式开始,只有当简单的方式不充分(或变得过于复杂)时,才会使事情复杂化。