【问题标题】:'Search as you type' with KeyPress Event使用 KeyPress 事件“键入时搜索”
【发布时间】:2019-05-20 10:22:46
【问题描述】:

我有一个表单来执行查询。有一个搜索栏可以从您可以选择的本地表中搜索项目(供应商),并且最终结果将基于该表。

我有以下物品:

  • 文本框“txt_Vendor_Search”(“搜索栏”)
  • 按钮“bt_vendor_search”(执行搜索的按钮)
  • ListBox "ltVendorSearchResults"(搜索结果应该显示在这里)
  • 表“dfoSelectedVendors”(所有供应商都保存在这里)

我有一个显示搜索结果的按钮。

Private Sub bt_vendor_search_Click()
    Dim strSearchSQL As String
    
    strSearchSQL = "SELECT Vendor, [Vendor Name] FROM vend_data WHERE " & _
      "Len(vend_data.Vendor) = 6 And ([Vendor Name] LIKE '*" & Me.txt_Vendor_Search & _
      "*' OR Vendor LIKE ""*" & Me.txt_Vendor_Search & "*"")"
    'Update the Row Source of the ListBox
    Me.ltVendorSearchResults.RowSource = strSearchSQL
    Me.ltVendorSearchResults.Requery

End Sub

为了实现实时搜索,我选择了 TextBox 的 KeyPress 事件:

Private Sub txt_Vendor_Search_KeyPress(KeyAscii As Integer)  
    bt_vendor_search_Click
End Sub

使用调试器,我发现每次键入内容时都会触发 KeyPress 事件。 TextBox 的 AfterUpdate 事件也执行按钮的过程。

这不是很重要,因为我可以按下按钮或 Enter,但它会是我表单的一个花哨的补充。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    两件事:

    1. 使用 On Change 事件 (txt_Vendor_Search_Change()) 代替 KeyPress 事件。

    2. 使用Text 属性(Me.txt_Vendor_Search.Text)代替Value 属性(Me.txt_Vendor_Search 使用默认属性,即Value)。

    那么它应该可以工作了。

    【讨论】:

    • 对这些更改如何工作的一些解释会非常好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多