我试图通过解析字符串将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
和我们在表格加载我打字任何帮助将不胜感激
您必须非常关注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