我有一个绑定到查询的表单,除了一个我保持未绑定的字段。这个想法是用户将在该文本框中输入一个值,然后按一个按钮调出记录。我有一些我认为可以基于互联网工作的代码。当我使用DoCmd.ApplyFilter(filter_string)
时,我会得到一个弹出窗口,询问要过滤的值(这不是我想要的)。当我继续粘贴它时,表单不会被填充。当我使用Me.Form.Filter = filter_string
时,无论filter_string
说什么,有时表单都会填充,但始终使用相同的记录。示例filter_string
是
filter_string = "InventoryDetailsID = 'B01MFC000100/01'"
我有另一种类似的形式,它不是填充现有的查询,而是生成查询(带有5个连接)并从结果记录集中填充表单。它运行得很好,但速度很慢,因为它每次都必须运行查询。这就是为什么我想使用一种方法,我生成一次查询,然后过滤它。
修改
哦,我也尝试在run-the-query-every-time方法中使用一个变体,在那里我查询已经生成的查询(我正在尝试过滤的那个)。我正在使用:
query_string = "SELECT * FROM qry_ISBN_All WHERE InventoryDetailsID LIKE '" & Me.InventoryDetailsID & "';"
但我收到错误Run-time error '3061' Too few parameters, expected 1
编辑II
Private Sub btn_Seek_Click()
Dim temp As String
filter_string = "InventoryDetailsID = '" & Me.InventoryDetailsID & "'"
Me.temp = filter_string
Me.FilterOn = True
Me.Form.Filter = filter_string
Me.FilterOn = True
'DoCmd.ApplyFilter (filter_string)
' Dim query_string As String
' query_string = "SELECT * FROM qry_ISBN_All WHERE InventoryDetailsID LIKE '" & Me.InventoryDetailsID & "';"
End Sub
给出了典型的过滤字符串。它打印到表单控件Me.temp
。
答案 0 :(得分:1)
这一行之后:
Me.Filter = filter_string
将其添加到:
Me.FilterOn = True
同样我同意,每次进场肯定是矫枉过正时运行查询。过滤器应为您提供所需的功能。你只需要打开它就可以了。设置后。