Application.BuildCriteria 方法 (Access)

BuildCriteria 方法返回一个分析的条件字符串,如它在查询设计网格中以“按窗体筛选”或“按窗体服务器筛选”模式显示的那样。 例如,您可以设置窗体的 筛选器ServerFilter 属性根据用户的不同标准。 使用 BuildCriteria 方法为 FilterServerFilter 属性构造字符串表达式参数。 字符串

语法

表达式BuildCriteria (FieldFieldTypeExpression)

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
Field 必需 String 要为其定义条件的字段。
FieldType 必需 Integer 固有常量,指示字段的数据类型。 可以设置到 DAO DataTypeEnum 值中的一个。
Expression 必需 String 一个字符串表达式,它标识要进行语法分析的条件。

返回值

String

备注

BuildCriteria 方法使您可以轻松地构造基于用户输入筛选条件。 它分析 表达式 参数的方式与在查询设计网格( 按窗体筛选服务器按窗体筛选 模式)中输入表达式时分析表达式参数的方式相同。

例如,通过对 OrderDate 字段设置条件,对 Orders 表创建查询的用户可能会将结果集限制为在 1995 年 1 月 1 日之后下达的订单。 用户可能会在 OrderDate 字段下的“条件”行中输入如下表达式:

1-1-95

Microsoft Access 会自动对这个表达式进行语法分析并返回以下表达式:

#1/1/95#

BuildCriteria 方法提供相同的分析从 Visual Basic 代码。 例如,若要返回之前正确分析字符串,可以提供 BuildCriteria 方法的下列参数:

Dim strCriteria As String 
strCriteria = BuildCriteria("OrderDate", dbDate, ">1-1-95")

由于需要以正确分析的形式提供 Filter 属性的条件,因此可以使用 BuildCriteria 方法构造正确分析的字符串。

如果这些条件引用同一字段,请使用 BuildCriteria 方法构造具有多个条件的字符串。 例如,可以将 BuildCriteria 方法与以下参数一起使用,以构造具有与 OrderDate 字段相关的多个条件的字符串:

strCriteria = BuildCriteria("OrderDate", dbDate, ">1-1-95 and <5-1-95")

此示例返回以下条件字符串:

OrderDate>#1/1/95# And OrderDate<#5/1/95#

但是,如果要构造一个引用多个字段的条件字符串,您必须创建各字符串并将它们连接起来。 例如,如果要构造一个筛选器以显示运费少于 50 美元的订单放在 1-1-95 后记录的条件,您需要使用两次 BuildCriteria 方法,并连接结果字符串的结果。

示例

下面的示例提示用户输入产品名称的前几个字母,然后用 BuildCriteria 方法来构造基于用户输入的条件字符串。 接下来,此过程提供此字符串作为参数的产品窗体的 Filter 属性。 最后,将 FilterOn 属性设置为应用的筛选器。

Sub SetFilter() 
 Dim frm As Form, strMsg As String 
 Dim strInput As String, strFilter As String 
 
 ' Open Products form in Form view. 
 DoCmd.OpenForm "Products" 
 ' Return Form object variable pointing to Products form. 
 Set frm = Forms!Products 
 strMsg = "Enter one or more letters of product name " _ 
 & "followed by an asterisk." 
 ' Prompt user for input. 
 strInput = InputBox(strMsg) 
 ' Build criteria string. 
 strFilter = BuildCriteria("ProductName", dbText, strInput) 
 ' Set Filter property to apply filter. 
 frm.Filter = strFilter 
 ' Set FilterOn property; form now shows filtered records. 
 frm.FilterOn = True 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。