共用方式為


Access (的 Form.Filter 事件)

使用者選擇 [依表單篩選]、[ 進階篩選/排序] 或 [依表單伺服器 篩選] 來開啟篩選視窗時發生。

語法

運算式Filter (CancelFilterType)

expression 代表 Form 物件的變數。

參數

名稱 必要/選用 資料類型 描述
Cancel 必要 Integer 設定可決定是否要開啟 [篩選] 視窗。 將 Cancel 引數設定為 True (1) 會防止開啟篩選視窗。 您也可以使用 DoCmd 物件的 CancelEvent 方法來取消開啟篩選視窗。
FilterType 必要 Integer [篩選] 視窗的使用者嘗試開啟。 FilterType 自變數可以是下列其中一個內部常數:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

註解

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

使用 Filter 事件來:

  • 移除表單任何舊篩選。 若要這樣做,將表單的 FilterServerFilter 屬性設定為零長度字串 ("") 中的 篩選器 巨集或事件程序。 如果您想要確定無關的準則不會出現在新的篩選中,這特別有用。 例如,當您使用 [依 取範圍篩選] 功能時,您 (表單中選取的文字所使用的準則) 會新增至 FilterServerFilter 屬性 WHERE 子句運算式,並同時出現在 [依表單 篩選 ] 視窗和 [ 進階篩選/排序 ] 視窗或 [依表單 篩選] 視窗中。 您可以使用 Filter 事件來移除這些舊的準則。

  • 輸入新的篩選器的預設設定。 若要這樣做,設定 FilterServerFilter 屬性包含這些準則。 例如,您可能想要產品表單的所有篩選器只顯示目前產品 (未選取 Products表單中已中止控制項的產品) 。

  • 使用您自己的自訂篩選] 視窗而不是其中一個 Microsoft Access 篩選視窗。 Filter 事件發生時,您可以開啟您自己的自訂表單和使用此表單上的項目設定 FilterServerFilter 屬性及篩選原始表單。 當使用者關閉這個自訂表單時,請將原始表單的 FilterOnServerFilterByForm 屬性設定為 True (1) 以套用篩選。 取消 Filter 事件會防止 [存取篩選] 視窗開啟。

  • 防止出現或 [ 依表單篩選] 或 [ 依表單伺服器篩選] 視窗中所用的特定表單上的控制項。 如果您在 Filter 事件程序或宏中隱藏或停用控制項,則控制項會在 [依表單篩選 ] 或 [ 依表單 伺服器篩選 ] 視窗中隱藏或停用,而且無法用來設定篩選準則。 您然後可以使用 ApplyFilter 事件來顯示或套用篩選之後,或從表單中移除篩選時啟用此控制項。

範例

下列範例示範如何在使用者嘗試建立篩選時停用Orders表單上的TotalDue控制項,讓使用者無法在此欄位上篩選。 任何具有 TotalDue 值且符合其他篩選準則的記錄,一律會顯示在篩選的表單上。 This example also forces the user to use the Filter By Form window and not the Advanced Filter/Sort window.

若要嘗試此範例,請將下列事件程序新增至包含TotalDue控制項的Orders表單。 嘗試使用使用TotalDue控制項的 [進階篩選/排序] 視窗來建立篩選。 Also try creating the same filter by using the Filter By Form window.

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer) 
    If FilterType = acFilterByForm Then 
        Forms!Orders!TotalDue.Enabled = False 
    ElseIf FilterType = acFilterAdvanced Then 
        MsgBox "The best way to filter this form is to use the " _ 
            & "Filter By Form command or toolbar button.", vbOKOnly + vbInformation 
        Cancel = True 
    End If 
End Sub

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應