希望这是有道理的。我很沮丧,我无法弄清楚这一点。我有一个简单的Access 2010数据库。我内部有一个简单的表单,可以帮助用户输入一些特定的信息。此数据输入情况可以在数据库中的其他两种形式上发生。我没有拥有VBA代码具有硬编码控件引用的“帮助器”形式的两个副本,而是希望通过使用openArgs参数传递调用它的表单的名称来使其更具通用性。
当需要将值BACK转移到需要信息的表单时,帮助程序表单会尝试这样做:
Private Sub cmdOk_Click()
Dim theFormName As String
Dim theForm As Form
theFormName = Me.OpenArgs
Set theForm = Forms.Item(theFormName)
If Not IsNull(theForm.Name) Then
theForm.txtLongitude.Value = Me.lblLongitude.Caption
theForm.txtLatitude.Value = Me.lblLatitude.Caption
End If
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
正确填充变量theForm
,theForm.Name
返回表单的正确名称,以便部件正常工作。问题是theForm.<controlName>.Value
没有。当我运行代码时,我得到了一个
应用程序定义的或对象定义的错误(运行时错误2465)
我已经尝试了从当前打开表单到第二个打开表单的控件引用的各种排列,但我无法正确使用语法。我试过了:
theForm!txtLongitude.Value ("..can't find the field txtLongitude..")
theForm.Controls("txtLongitude").Value ("..cant find the field...")
答案 0 :(得分:1)
我有两个建议。如果有人工作,请告诉我,我会编辑我的答案,只包括有效的答案。
尝试更改theForm.txtLongitude.Value = Me.lblLongitude.Caption
到Forms!theForm!txtLongitude.Value = Me!lblLongitutde.Caption
和theForm.txtLatitude.Value = Me.lblLatitude.Caption
到Forms!theForm!txtLatitude.Value = Me!lblLatitude.Caption
如果你已经尝试过或者它没有工作,请尝试声明变量和&#34;拉动&#34;在将它们放入另一种形式之前,将一种形式的值排除在外。 (还要确保两者的数据类型相同。)
Private Sub Command4_Click() 将theFormName调暗为String 将形式变暗为表格
Dim txtLong As String
Dim txtLat As String
txtLong = Me.lblLongitude.Caption
txtLat = Me.lblLatitude.Caption
theFormName = Me.OpenArgs
Set theForm = Forms.Item(theFormName)
If Not IsNull(theForm.Name) Then
theForm.txtLongitude.Value = txtLong
theForm.txtLatitude.Value = txtLat
End If
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub