共用方式為


Access) (Form.ApplyFilter 事件

發生在將篩選套用至表單時。

語法

運算式ApplyFilter (CancelApplyType)

expression 代表 Form 物件的變數。

參數

名稱 必要/選用 資料類型 描述
Cancel 必要 整數 設定決定 ApplyFilter 事件會發生。 將 Cancel 引數設定為 True 會取消 ApplyFilter 事件,並且不會將篩選套用至表單。
ApplyType 必要 整數 會傳回已套用之篩選的類型。

註解

發生此事件時若要執行巨集或事件程序,請將 OnApplyFilter 屬性設定為巨集的名稱或 [事件程序]。

使用 ApplyFilter 事件來:

  • 請確定正在套用的篩選準則正確無誤。 例如,您可能想要確定任何套用至 Orders 窗 體的篩選都包含限制 OrderDate 字 段的準則。 若要這樣做,請檢查表單的 FilterServerFilter 屬性值,以確定 WHERE 子句運算式中包含此準則。

  • 在套用篩選之前,變更表單的顯示。 例如,套用特定篩選時,您可能會想要停用或隱藏此篩選所顯示之記錄不適用的部分欄位。

  • 復原或變更您在 Filter 事件發生時 所採取的動作。 例如,當使用者建立篩選準則時,您可以停用或隱藏表單上的某些控制項,因為您不希望這些控制項包含在篩選準則中。 在套用篩選之後,您可以啟用或顯示這些控制項。

ApplyFilter事件程序或宏中的動作會在套用或移除篩選之前發生,或是在 [進階篩選/排序]、[依表單篩選] 或 [依表單伺服器篩選] 視窗關閉之後,但在重新顯示表單之前發生。 您在新建立的篩選準則中輸入的準則,可供 ApplyFilter 事件程序或宏作為 FilterServerFilter 屬性的設定。

注意事項

使用者執行下列其中一項作業時,不會發生 ApplyFilter 事件:

  • 使用宏中的 ApplyFilter、OpenReport 或 ShowAllRecords 巨集指令,或 Visual Basic 中 DoCmd 物件的對應方法,套用或移除篩選。
  • 使用DoCmd物件的Close巨集指令或 Close 方法,關閉 [進階篩選/排序]、[依表單篩選] 或 [依表單伺服器篩選] 視窗。
  • 在宏或 Visual Basic (中設定 FilterServerFilter 屬性或 FilterOnServerFilterByForm 屬性,雖然您可以在 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 支援與意見反應