分享方式:


Form.Filter 事件 (存取)

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

語法

表達。篩選 (取消篩選類型)

expression 代表 Form 物件的變數。

參數

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

註解

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

使用 Filter 事件來:

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

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

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

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

範例

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

若要嘗試此範例,請將下列事件程序新增至包含 TotalDue 控制項的 [訂單] 表單。 嘗試使用使用 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 支援與意見反應