使用OpenArgs将多个文本框传递到另一个表单

问题描述 投票:-2回答:1

我试图通过解析字符串将3个文本框传递到不同的表单。我得到一个运行时错误13。

Private Sub txtFullName_Click()
    Const cstrForm As String = "frmInputInfo"
    DoCmd.OpenForm "frmInputInfo", acFormAdd, , , acDialog, _
        Me.txtFullName & "|" & Me.PATS_Job_Opening_ID & "|" & Me.NYCAPS_JobID
End Sub

Private Sub Form_Load()
    varSplitString = Split(Me.OpenArgs, "|")
    Me.[FullName].Value = varSplitString(0)
    Me.[PATS Job Opening ID].Value = varSplitString(1)
    Me.[NYCAPS_JobID].Value = varSplitString(2)
End Sub

和我们在表格加载我打字任何帮助将不胜感激

ms-access access-vba
1个回答
0
投票

您必须非常关注DoCmd.OpenForm选项列表中的所有逗号。在您和Access之间考虑哪些值适用于哪些选项之间会导致不一致,这太简单了。

在你的情况下,你打算将一个字符串Me.txtFullName & "|" & Me.PATS_Job_Opening_ID & "|" & Me.NYCAPS_JobID传递给OpenArgs。不幸的是你省略了一个逗号,所以Access认为你正在为WindowMode提供一个值,它应该是一个数字。因此,错误13:“类型不匹配”!

这样做可以消除任何关于哪个值与哪个选项混淆的混淆。

Dim strArgs As String
strArgs = Me.txtFullName & "|" & Me.PATS_Job_Opening_ID & "|" & Me.NYCAPS_JobID
Debug.Print strArgs ' make sure you got what you expect '
DoCmd.OpenForm FormName:="frmInputInfo", _
    DataMode:=acFormAdd, _
    WindowMode:=acDialog, _
    OpenArgs:=strArgs

同样在形式事件中,确保你在尝试OpenArgs之前为Split得到了一些东西。现在看来,如果表格在没有提供OpenArgs的情况下打开,你的代码将基本上尝试Split(Null, "|"),这将触发不同的错误。

您可以在拆分前进行测试,如下所示

If Len(Me.OpenArgs) > 0 Then
   ' do your split thing here '
End If
© www.soinside.com 2019 - 2024. All rights reserved.