2017-07-18 54 views
0

我有一个表单,它有很多控件。我想创建自定义过滤器,允许用户使用任何字段值作为搜索条件搜索表单上的任何记录。 例如:用户使用ID可以搜索记录或可使用等级等如何根据MS Access中的用户输入创建自定义过滤器

我已经wriiten的follwing代码现在搜索:

Private Sub CmdFind_Click() 
    Dim filterStr As String 
    Dim strWhere As String 

     filterStr = InputBox("Enter your filter criteria") 
     strWhere = "[SalesOrderNumber] = '" & filterStr & "' " 

     Me.Filter = strWhere 
     Me.FilterOn = True 

     End Sub 

然而,这仅搜索“SalesOrderNumber”。我希望功能也可以使用其他值进行搜索。 任何帮助,将不胜感激。 Thankyou

+0

评论http://new.allenbrowne.com/ser-62.html – June7

+0

我想用单一的文本控件,而不是多个 – sb25

+0

然后有一个组合框,用户可以选择要搜索的字段,另一个控件用于输入参数。如果第二个控件是组合框,则必须根据所选字段更改其RowSource。如果这些字段是不同的数据类型,则代码必须考虑这一点。所以你看这可能会变得相当复杂。我已经做到了。或者使用Find方法而不是设置Filter属性。但是这仅仅是第一个符合标准的记录。 – June7

回答

1

据我所知。你想要搜索多个字段。

在这种情况下,你可以使用OR子句:

Private Sub CmdFind_Click() 

    Dim filterStr As String 
     filterStr = InputBox("Enter your filter criteria") 

    Dim filters(0 To 2) As String 
     filters(0) = BuildCriteria("SalesOrderNumber", dbText, filterStr) 
     filters(1) = BuildCriteria("UserPhoneNumber", dbText, filterStr) 
     filters(2) = BuildCriteria("Comments", dbText, filterStr) 

    Me.Filter = Join(filters, " OR ") 
    Me.FilterOn = True 

End Sub 
+0

非常感谢您的帮助。它像魅力一样工作。这正是我所寻找的。: - – sb25

相关问题