為 Recordset 中的數(shù)據(jù)指定篩選條件。
設置和返回值
設置或返回變體型值,該值包含以下某項內容:
? | 條件字符串 — 由一個或多個用 AND 或 OR 操作符連接的子句組成的字符串。 |
? | 書簽數(shù)組 — 指向 Recordset 對象中記錄的唯一書簽值數(shù)組。 |
? | 以下某個 FilterGroupEnum 值。 |
常數(shù) |
說明 |
AdFilterNone |
刪除當前篩選條件并恢復查看的所有記錄。 |
AdFilterPendingRecords |
允許只查看已更改且尚未發(fā)送到服務器的記錄。只能應用于批更新模式。 |
AdFilterAffectedRecords |
允許只查看上一次 Delete、Resync、UpdateBatch 或 CancelBatch 調用所影響的記錄。 |
AdFilterFetchedRecords |
允許查看當前緩沖區(qū)中的記錄,即上一次從數(shù)據(jù)庫中檢索記錄的調用結果。 |
AdFilterConflictingRecords |
允許查看在上一次批更新中失敗的記錄。 |
說明
使用 Filter 屬性可選擇性地屏蔽 Recordset 對象中的記錄,已篩選的 Recordset 將成為當前游標。這將影響基于當前游標返回值的其他屬性,如 AbsolutePosition、AbsolutePage、RecordCount 和 PageCount,因為將 Filter 屬性設置為特定值可將當前記錄移動到滿足新值的第一個記錄。
條件字符串由 FieldName-Operator-Value 格式(如“LastName = 'Smith'”)的子句組成??梢詣?chuàng)建用單獨的 AND(如“LastName = 'Smith' AND FirstName = 'John'”)或 OR(如“LastName = 'Smith' OR LastName = 'Jones'”)子句連接而成的混合子句。對于條件字符串請遵循以下規(guī)則:
? | FieldName 必須為 Recordset 中的有效字段名。如果字段名包含空格,必須用方括號將字段名括起來。 |
? | Operator 必須使用的操作符為:<、>、<=、>=、<>、= 或 LIKE。 |
? | Value 是用于與字段值(如 'Smith'、#8/24/95#、12.345 或 $50.00)進行比較的值。字符串使用單引號而日期使用井號 (#),對于數(shù)字,可以使用小數(shù)點、貨幣符號和科學記數(shù)法。如果 Operator 為 LIKE,Value 則可使用通配符。只允許使用星號 (*) 和百分號 (%) 通配符,而且必須為字符串的尾字符。Value 不可為 Null。 |
? | AND 和 OR 在級別上沒有先后之分。可使用括號將子句分組。但不能象以下示例那樣先將由 OR 聯(lián)接的子句分組,然后將該組用 and 聯(lián)接到其他子句。 |
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
? | 與之相反,可以構造如下形式的篩選: |
(LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')
? | 在 LIKE 子句中,可在樣式的開頭和結尾使用通配符(如 LastName Like '*mit*'),或者只在結尾使用通配符(如,LastName Like 'Smit*') 。 |
通過僅允許查看(例如)上次調用 UpdateBatch 方法時受到影響的記錄,篩選常量使得在批更新模式時所發(fā)生的單個記錄沖突更易于解決。
設置 Filter 屬性本身可能會因與基本數(shù)據(jù)發(fā)生沖突(如某記錄已被其他用戶刪除)而失敗。在此情況下,提供者將返回對 Errors 集合的警告但不停止程序執(zhí)行。只有在所有需要的記錄上發(fā)生沖突時才產(chǎn)生運行時錯誤。使用 Status 屬性可定位發(fā)生沖突的記錄。
將 Filter 屬性設置為零長度字符串 ("") 與使用 adFilterNone 常量具有同樣效果。
一旦設置 Filter 屬性,當前記錄位置將移動到 Recordset 中已篩選記錄子集中的第一個記錄。類似地,清除 Filter 屬性后,當前記錄位置將移動到 Recordset 的第一個記錄。
有關可與 Filter 屬性一起使用創(chuàng)建數(shù)組的書簽值的解釋,請參考 Bookmark 屬性。