我必须对在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'内容直接保存会更好吗?
答案 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
有效,至少可以让您和我们更清楚地了解问题。