Access) (DoCmd.ApplyFilter 方法
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 方法,只顯示 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 支援與意見反應。