【问题标题】: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'的内容直接保存在数据库中会更好吗?

【问题讨论】:

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


    【解决方案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 个字符的事实。限制,因此没有保存。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2018-03-01
    • 2021-07-02
    • 2021-09-09
    • 1970-01-01
    • 2011-09-17
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多