發生在將篩選套用至表單時。
語法
表達。ApplyFilter (Cancel、ApplyType)
expression 代表 Form 物件的變數。
參數
| 名稱 | 必要/選用 | 資料類型 | 描述 |
|---|---|---|---|
| Cancel | 必要 | 整數 | 設定決定 ApplyFilter 事件會發生。 將 Cancel 引數設定為 True 會取消 ApplyFilter 事件,並且不會將篩選套用至表單。 |
| 應用類型 | 必要 | 整數 | 會傳回已套用之篩選的類型。 |
註解
發生此事件時若要執行巨集或事件程序,請將 OnApplyFilter 屬性設定為巨集的名稱或 [事件程序]。
使用 ApplyFilter 事件來:
請確定正在套用的過濾器正確無誤。 例如,您可能想要確定套用至 「訂單」 表單的任何篩選器都包含限制 「訂單日期」 欄位的準則。 若要這樣做,請檢查表單的 Filter 或 ServerFilter 屬性值,以確保此準則包含在 WHERE 子句運算式中。
在套用篩選之前,變更表單的顯示。 例如,套用特定篩選時,您可能會想要停用或隱藏此篩選所顯示之記錄不適用的部分欄位。
復原或變更您在 發生篩選 事件時採取的動作。 例如,您可以在使用者建立篩選條件時停用或隱藏表單上的某些控制項,因為您不希望這些控制項包含在篩選條件中。 在套用篩選之後,您可以啟用或顯示這些控制項。
ApplyFilter 事件程序或巨集中的動作會在套用或移除篩選之前,或關閉「進階篩選器/排序」、「依表單篩選」或「依表單篩選伺服器」視窗之後,但在重新顯示表單之前發生。 您在新建立的篩選器中輸入的準則可供 ApplyFilter 事件程序或巨集使用,作為 Filter 或 ServerFilter 屬性的設定。
注意事項
使用者執行下列其中一項作業時,不會發生 ApplyFilter 事件:
- 使用巨集中的 ApplyFilter、OpenReport 或 ShowAllRecords 動作,或使用 Visual Basic 中 DoCmd 物件的對應方法,套用或移除篩選。
- 使用 DoCmd 物件的 [關閉] 動作或 [關閉] 方法來關閉 [進階篩選/排序]、[依表單篩選] 或 [依表單篩選伺服器] 視窗。
- 在 巨集 或 Visual Basic (中設定 Filter 或 ServerFilter 屬性或 FilterOn 或 ServerFilterByForm 屬性,不過您可以在 ApplyFilter 事件程式或巨集) 中設定這些屬性。
範例
下列範例顯示當套用的篩選器將記錄限制為僅那些已付款的訂單時,如何隱藏 Orders 表單上的 AmountDue、Tax 和 TotalDue 控制項。
若要嘗試此範例,請將下列事件程序新增至包含 AmountDue、Tax 和 TotalDue 控制項的 Orders 表單。 接著再執行只列出已付款之訂單的篩選。
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
If Not IsNull(Me.Filter) And (InStr(Me.Filter, "Orders.Paid = -1")>0 _
Or InStr(Me.Filter, "Orders.Paid = True")>0)Then
If ApplyType = acApplyFilter Then
Forms!Orders!AmountDue.Visible = False
Forms!Orders!Tax.Visible = False
Forms!Orders!TotalDue.Visible = False
ElseIf ApplyType = acShowAllRecords Then
Forms!Orders!AmountDue.Visible = True
Forms!Orders!Tax.Visible = True
Forms!Orders!TotalDue.Visible = True
End If
End If
End Sub
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。