BuildCriteria 方法

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

BuildCriteria 方法返回一個(gè)經(jīng)過語法分析的條件字符串,就像在查詢設(shè)計(jì)網(wǎng)格、在“按窗體篩選”“按窗體服務(wù)器篩選”模式中顯示的那樣。例如,可能需要基于用戶提供的各種條件設(shè)置窗體的 FilterServerFilter 屬性??梢允褂?BuildCriteria 方法為 FilterServerFilter 屬性構(gòu)造字符串表達(dá)式參數(shù)。String 型。

expression.BuildCriteria(Field, FieldType, Expression)

expression     必需。返回“應(yīng)用于”列表中的一個(gè)對象的表達(dá)式。

Field     必需 String 型。字符串表達(dá)式,用于標(biāo)識要為其定義條件的字段。

FieldType   必需 Integer 型。固有常量,指示字段的數(shù)據(jù)類型??梢栽O(shè)置為 DAO DataTypeEnum 值之一。

Expression     必需 String 型。字符串表達(dá)式,標(biāo)識要進(jìn)行語法分析的條件。

說明

BuildCriteria 方法返回一個(gè)字符串。

BuildCriteria 方法能夠很容易地基于用戶的輸入為篩選構(gòu)造條件。此方法分析 expression 參數(shù)的方式,就像將表達(dá)式輸入到查詢設(shè)計(jì)網(wǎng)格、按窗體篩選或按窗體服務(wù)器篩選模式中時(shí)對表達(dá)式進(jìn)行語法分析一樣。

例如,用戶基于“訂單”表創(chuàng)建的查詢可以將結(jié)果集限制在 1995 年 1 月 1 日以后的訂單,方法是對“訂購日期”字段設(shè)置條件。用戶可在“訂購日期”字段下的“條件”行中輸入如下表達(dá)式:

>1-1-95

Microsoft Access 會自動對這個(gè)表達(dá)式進(jìn)行語法分析并返回以下表達(dá)式:

>#1/1/95#

BuildCriteria 方法從 Visual Basic 代碼中提供了相同的語法分析。例如,若要正確返回前面所示的經(jīng)過語法分析的字符串,可以為 BuildCriteria 方法提供如下的參數(shù):

Dim strCriteria As String

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

因?yàn)樾枰哉_的、經(jīng)過語法分析的形式為 Filter 屬性提供條件,所以可以使用 BuildCriteria 方法來構(gòu)造語法正確的字符串。

也可以使用 BuildCriteria 方法來構(gòu)造具有多重條件的字符串,只要這些條件引用相同的字段。例如,使用具有以下參數(shù)的 BuildCriteria 方法可以構(gòu)造一個(gè)具有與“訂購日期”字段相關(guān)的多重條件的字符串:

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

該示例返回如下條件字符串:

訂購日期>#1/1/95# And 訂購日期<#5/1/95#

但是,如果要構(gòu)造一個(gè)引用多個(gè)字段的條件字符串,則必須分別創(chuàng)建各字符串,然后將它們連接起來。例如,要建立篩選條件,以顯示 1995 年 1 月 1 日以后、運(yùn)費(fèi)少于 50 元的訂單記錄,就需要使用兩次 BuildCriteria 方法,并將兩次的結(jié)果字符串連接起來。

示例

下面的示例提示用戶輸入產(chǎn)品名稱的前幾個(gè)字母,然后使用 BuildCriteria 方法構(gòu)造基于用戶輸入的條件字符串。接下來,此過程將該字符串作為參數(shù)提供給“產(chǎn)品”窗體的 Filter 屬性。最后,設(shè)置 FilterOn 屬性以應(yīng)用篩選。

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