带有KeyPress Event的“键入时搜索”表单不起作用

时间:2019-05-20 10:22:46

标签: vba ms-access access-vba

我正在MS-Access中建立一个主表单,从中可以执行查询和所有内容。作为其中的一部分,我希望有一个搜索栏,可以从您可以选择的本地表中搜索商品(供应商),并以最终结果为依据。 因此,在我的表格上,我有以下项目:

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

我让Button可以显示一些搜索结果

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事件来执行Button的Procedure,这也很好。

这不是超级重要,因为我可以按一下按钮或Enter键,但这对我的表单来说是很不错的补充,因此,如果有人可以帮助我解决此问题,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

两件事:

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

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

然后它应该工作。