使用源代码管理更改文本框的内容
Posted
技术标签:
【中文标题】使用源代码管理更改文本框的内容【英文标题】:Change content of a textbox with a source control 【发布时间】:2014-01-09 14:54:16 【问题描述】:我必须对在 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”代表通过源代码管理链接到数据库的文本框。
有没有人知道为什么我不能改变 this 的值?是因为文本框与源代码管理链接吗?将'B'的内容直接保存在数据库中会更好吗?
【问题讨论】:
【参考方案1】:我不确定我对你想要做什么的理解程度。但是,我认为您应该使用那些控件的.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
活跃,至少它可以让您和我们对问题有更清晰的认识。
【讨论】:
非常感谢,这有助于纠正错误。问题还来自一些图像路径超过 255 个字符的事实。限制,因此没有保存。以上是关于使用源代码管理更改文本框的内容的主要内容,如果未能解决你的问题,请参考以下文章