通过VBA更新另一个表单的文本框中的值

时间:2015-02-19 00:19:09

标签: forms reference access-vba controls ms-access-2010

希望这是有道理的。我很沮丧,我无法弄清楚这一点。我有一个简单的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

正确填充变量theFormtheForm.Name返回表单的正确名称,以便部件正常工作。问题是theForm.<controlName>.Value没有。当我运行代码时,我得到了一个

  

应用程序定义的或对象定义的错误(运行时错误2465)

我已经尝试了从当前打开表单到第二个打开表单的控件引用的各种排列,但我无法正确使用语法。我试过了:

theForm!txtLongitude.Value ("..can't find the field txtLongitude..")
theForm.Controls("txtLongitude").Value ("..cant find the field...")

1 个答案:

答案 0 :(得分:1)

我有两个建议。如果有人工作,请告诉我,我会编辑我的答案,只包括有效的答案。

  1. 尝试更改theForm.txtLongitude.Value = Me.lblLongitude.CaptionForms!theForm!txtLongitude.Value = Me!lblLongitutde.CaptiontheForm.txtLatitude.Value = Me.lblLatitude.CaptionForms!theForm!txtLatitude.Value = Me!lblLatitude.Caption

  2. 如果你已经尝试过或者它没有工作,请尝试声明变量和&#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