我有一个Access 2016表单,其中包含5个标记为txtprod,txtpri,txtcnt,txtph,txtmfg的文本框。我还查询了我的表格,了解产品名称,价格,数量,电话和制造商字段。
在我的表单5个文本框中,我希望能够在您键入时自动搜索并自动填充列表。
我遵循了这些教程 https://www.youtube.com/watch?v=SJLQqwMOF08 https://www.youtube.com/watch?v=MwaRFjgwBW8
我的表单有一个表单加载:
* Private Sub Form_Load() 昏暗的任务作为字符串 task =“SELECT * FROM pricingdata” 我!details.RowSource =任务 结束Sub *
我的文本框名称此事件“正在更改”
* Private Sub txtprod_Change() 昏暗的任务作为字符串 task =“SELECT * FROM [pricingdata] WHERE([Product Name] LIKE'”& Me.txtprod.Text&“');” 我!details.RowSource =任务 结束Sub *
我只需1个文本框即可完美搜索。但是当我将以下代码添加到我的制造商文本框事件“on change”时,它无法正常工作。
* Private Sub txtmfg_Change() 昏暗的任务作为字符串 task =“SELECT * FROM [pricingdata] WHERE([Manufacturer] LIKE'”& Me.txtmfg.Text&“');” 我!details.RowSource =任务 结束Sub *
现在,当我输入我的产品名称文本框时,它搜索产品就好了。当我开始在“制造商”文本框中输入内容时,它完全忽略了我在“产品名称”文本框中输入的内容,并开始搜索,因为我只在“制造商”文本框字段中键入文本。
如何进行此设置,以便所有5个文本框字段中的所有文本都有助于应用于我的列表的搜索过滤器?
答案 0 :(得分:0)
像这样的东西。 。 。
Private Sub ComboSelect_Change()
' You need to use String delimiters if you want to use a Text Field like:
' Me.Filter "[ATextFieldInRecordSource] = """ & Me.FilterComboBox & """"
' For a Numeric Field, use something like this:
' Me.Filter "[ANumericFieldInRecordSource] = " & Me.FilterComboBox
' Me.FilterOn = True
Me.[Customer_Query subform1].Form.Filter = "[Company_Name] Like '*" &
Replace(Me.ComboSelect.Text, "'", "''") & "*'"
Me.[Customer_Query subform1].Form.FilterOn = True
End Sub
Notice a few things:
The subform is named Customer_Query subform1’
The combobox is named ComboSelect’
Finally, the ‘like clause’ is used in combination with the wildcard character.
Like '*" & Replace(Me.ComboSelect.Text, "'", "''") & "*'"
在组合框中键入文本时,会动态重新查询子表单中的结果。