ApplyFilter 方法會在 Visual Basic 中執行 ApplyFilter 動作。
語法
表達。ApplyFilter (FilterName、WhereCondition、ControlName)
expression 代表 DoCmd 物件的變數。
參數
| 名稱 | 必要/選用 | 資料類型 | 描述 |
|---|---|---|---|
| FilterName | 選用 | Variant | 字串運算式,是現用資料庫中篩選或查詢的有效名稱。 使用此方法套用伺服器篩選時, FilterName 引數必須是空白的。 |
| WhereCondition | 選用 | Variant | 字串運算式,是不含 WHERE 這個字的有效 SQL WHERE 子句。 |
| 控制項名稱 | 選用 | 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 方法,只顯示 LastName 欄位中包含名稱 “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 支援與意見反應。