【问题标题】:Update textbox during typing输入时更新文本框
【发布时间】:2012-08-16 11:33:54
【问题描述】:

在 Access 中,我有一个包含三个文本框的表单。 我正在尝试使用两者的组合更新一个名为 tbxCombinedName 的文本框:

  • 文本框 tbxLastName(人的姓氏)
  • 文本框 tbxFirstName(人的名字)

我的问题是:我使用什么文本框属性,所以当我在 tbxLastName 中输入文本时,CombinedName 文本框会立即更新,然后保存在表格中联系人

Microsoft's website,我发现在文本框输入时的步骤流程如下:

KeyDown → KeyPress → BeforeInsert → Change → KeyUp

我尝试使用 OnChange 和 OnKeyDown 属性,但无济于事。哪个属性与什么代码相结合,将允许 update-as-you-type 操作起作用?

这是我之前写的,没用:

Private Sub tbxLName_change()

Dim lastName As String
Dim nameCode As String

lastName = tbxLName.Value
Debug.Print lastName
nameCode = tbxNameCode.Value
nameCode = lastName
Debug.Print nameCode

End Sub

提前感谢您的所有帮助。

【问题讨论】:

    标签: ms-access textbox vba auto-update


    【解决方案1】:

    这是您应该引用 .text 属性的少数情况之一。

    在更改事件中:

    lastName = tbxLName.Text
    

    .text 属性仅在控件具有焦点并且引用控件的可见内容时可用。

    但是,这是一个数据库,一般规则是您不能不存储计算字段。可以通过查询轻松获得全名。

    【讨论】:

    • 查询能否将名字和姓氏处理成这种格式:LLLLLL_F? (LLLLLL 是姓氏的前 6 个字母。F 是名字的第一个字母)
    • 是的,没问题。 SELECT Left(LastName,6) & "_" & Left(FirstName,1) As NameRef FROM MyTable
    • 我花了几个小时试图弄清楚为什么 controlname.value 没有给出当前值。这对我帮助很大。
    【解决方案2】:

    只是几个注意事项:

    您可能希望使用 KeyPress,因为它提供了更改或取消用户按下的键的能力。

    在下面的例子中,只允许使用字母,小写字母是大写的:

    Private Sub tbxLName_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            Const ASCII_LOWER_RANGE = 65
            Const ASCII_UPPER_RANGE = 122
            Const ASCII_LOWER_A = 97
            Const ASCII_LOWER_Z = 122
            Const UPPER_MODIFIER = -32
            Const ASCII_CANCEL_CODE = 0
    
            Select Case KeyAscii
                Case ASCII_LOWER_RANGE To ASCII_UPPER_RANGE
                    If KeyAscii >= ASCII_LOWER_A And KeyAscii <= ASCII_LOWER_Z Then
                        KeyAscii = KeyAscii + UPPER_MODIFIER
                    End If
                Case Else
                    KeyAscii = ASCII_CANCEL_CODE  'Cancel Key Press
            End Select
    End Sub
    

    【讨论】:

    • ray023 这些不一样lastName = tbxLName.Text。默认属性为.value,与MS Access 中的.text 不同。 .text 属性在控件具有焦点时可用。
    • @Remou VB6/VBA 的细微差别之一?我只是要删除那部分。谢谢你告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多