ApplyFilter 方法會在 Visual Basic 中執行 ApplyFilter 巨集指令。
語法
運算式。ApplyFilter (FilterName, WhereCondition, ControlName)
expression 代表 DoCmd 物件的變數。
參數
| 名稱 | 必要/選用 | 資料類型 | 描述 |
|---|---|---|---|
| FilterName | 選用 | Variant | 字串運算式,是現用資料庫中篩選或查詢的有效名稱。 使用此方法來套用伺服器篩選時, FilterName 引數必須為空白。 |
| WhereCondition | 選用 | Variant | 字串運算式,是不含 WHERE 這個字的有效 SQL WHERE 子句。 |
| ControlName | 選用 | Variant |
註解
使用 ApplyFilter 動作將篩選、查詢或 SQL WHERE 子句套用至資料表、表單或報表,以限制或排序資料表中的記錄,或來自基礎資料表或表單或報表的查詢中的記錄。 如果是報表,則僅可以在由報表的 [OnOpen] 事件屬性所指定的巨集中使用此巨集指令。
僅在套用伺服器篩選時,才使用此動作來套用 SQL WHERE 子句。 伺服器篩選不能套用至預存程序的記錄來源。
注意事項
如果您已定義提供適當資料的篩選,請使用 FilterName 引數。 使用 WhereCondition 引數直接輸入限制準則。 如果您同時使用這兩個引數,Microsoft Access 會將 WHERE 子句套用至篩選的結果。 您必須使用其中一個引數,或兩者都使用。
您可以將篩選或查詢套用至表單檢視或資料工作表檢視中的表單。
您套用的篩選或 WHERE 條件會成為表單 Filter 屬性或報表 ServerFilter 屬性的設定。
儲存資料表或表單時,Access 會儲存該物件中目前定義的任何篩選,但下次開啟物件時不會自動套用篩選, (雖然會在) 儲存之前自動套用至物件的任何排序。
如果您想要先開啟表單時自動套用篩選器,指定含有 ApplyFilter 巨集指令或 DoCmd 物件的 ApplyFilter 方法包含表單的 OnOpen 事件屬性設定為事件程序的巨集。 您也可以使用 openform 巨集或 OpenReport 巨集指令或其對應的方法來套用篩選器。 表格第一次開啟時自動套用篩選,您可以使用含有 OpenTable 巨集指令,後面緊接著 ApplyFilter 巨集指令的巨集開啟的資料表。
您必須包含至少其中一個兩個 ApplyFilter 方法引數。 如果您輸入的值為這兩個引數時, WhereCondition引數會套用至篩選。
WhereCondition 引數的最大長度為 32,768 個字元 (與 [巨集] 視窗中的WhereCondition 動作引數不同,其最大長度為 256 個字元)。
範例
下列範例使用 ApplyFilter 方法,只顯示 [姓氏] 欄位中包含 “King” 名稱的記錄。
DoCmd.ApplyFilter , "LastName = 'King'"
下列範例示範如何使用 ApplyFilter 屬性來篩選選擇名為 tglFilter 的切換按鈕時顯示的記錄。
Private Sub tglFilter_Click()
With tglFilter
If .Value = True Then
.Caption = "P/T"
.StatusBarText = "only full-timers"
DoCmd.ApplyFilter , "[Hours]=40"
ElseIf .Value = False Then
.Caption = "All"
.StatusBarText = "only part-timers"
DoCmd.ApplyFilter , "[Hours]<40"
Else
.Caption = "F/T"
.StatusBarText = "all employees"
DoCmd.ShowAllRecords
.SetFocus 'to activate the button's statusbar-text
End If
End With
End Sub
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。