使用源代码管理更改文本框的内容

时间:2014-01-09 14:54:17

标签: ms-access textbox access-vba ms-access-2003

我必须对在Access 2003上运行的程序进行一些更改。

我有一个表单,单击某个按钮将根据所选内容(图像研究)更改文本框的文本。 最初,此文本框链接到另一个隐藏文本框,其中包含此图像的原始路径(数据库/未编辑的那个)。

我的问题包括以下内容:当我希望链接到数据库的文本框更改为与其他文本框(包含最新路径)匹配,从而允许Access保存更改时,它只是不起作用。链接到数据库的文本框只是空白。

以下是我在VBA中使用的代码:

Public Sub SearchForImage(ByVal txtName As String, ByVal txtAuto As String)
    On Error Resume Next
    Dim B As String

    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        Me.Controls(txtName).SetFocus
        Me.Controls(txtName).Text = ""
        B = .SelectedItems(1)
    End With
    Me.Controls(txtAuto).SetFocus
    Me.Controls(txtAuto).Text = ""
    Me.Controls(txtAuto) = B
End Sub

这允许我更改文本(连同另一部分不受问题影响的代码[它只是在输入新值之前使文本变为空白])。 “txtName”表示我发送给函数的不同文本框(这些文本框没有以任何方式链接到数据库),“txtAuto”表示使用源控件链接到数据库的文本框。

有没有人知道为什么我不能改变这个值?是因为文本框与源控件链接?将数据库中的'B'内容直接保存会更好吗?

1 个答案:

答案 0 :(得分:0)

我不确定我是多么了解你要做的事情。但是,我认为您应该使用这些控件'.Value属性而不是.Text,然后您不需要先.SetFocus

'On Error Resume Next ' <-- avoid this whenever possible
Dim B As String
With Application.FileDialog(1) ' msoFileDialogOpen
    .AllowMultiSelect = False
    If .Show = True Then
        B = .SelectedItems(1)
        Me.Controls(txtName).Value = B
    End If
End With
Me.Controls(txtAuto).Value = B

这可能不完全符合您的要求。但是,如果没有On Error Resume Next有效,至少可以让您和我们更清楚地了解问题。