【问题标题】:Filter form based on unbound control value基于未绑定控制值的过滤形式
【发布时间】:2015-07-22 07:12:27
【问题描述】:

我有一个绑定到查询的表单,除了一个未绑定的字段。这个想法是用户将在该文本框中输入一个值,然后按一个按钮来调出记录。我有一些我认为可以基于互联网工作的代码。当我使用DoCmd.ApplyFilter(filter_string) 时,我会弹出一个询问要过滤的值(这不是我想要的)。当我继续粘贴时,表格没有填写。当我使用Me.Form.Filter = filter_string 时,有时表格会填满,但总是使用相同的记录,而不管filter_string 说什么。一个例子filter_string

filter_string = "InventoryDetailsID = 'B01MFC000100/01'"

我有另一个类似的表单,它不是填充现有查询,而是生成查询(具有 5 个连接)并从结果记录集中填充表单。它工作得很好,但速度很慢,因为它每次都必须运行查询。这就是为什么我想使用一种方法,我生成一次查询,然后过滤它。

编辑

哦,我还尝试在每次运行查询方法中使用一种变体,在该方法中查询已生成的查询(我要过滤的查询)。我正在使用:

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

【问题讨论】:

    标签: forms ms-access ms-access-2013


    【解决方案1】:

    在这一行之后:

    Me.Filter = filter_string 
    

    添加这个:

    Me.FilterOn = True
    

    我也同意,每次都运行查询方法肯定是矫枉过正。过滤器应该为您提供您所寻求的功能。您只需在设置后“打开它”即可。

    【讨论】:

    • 嗯。它仍在弹出弹出窗口,但仍未找到记录。
    • 您可以发布您的完整代码以及您的过滤器字符串的Debug.Print 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多