Access (的 Form.Filter 事件)
當 使用者選擇 [依表單篩選]、[ 進階篩選/排序] 或 [依表單伺服器 篩選] 來開啟篩選視窗時發生。
語法
運算式。Filter (Cancel、 FilterType)
expression 代表 Form 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
Cancel | 必要 | Integer | 設定可決定是否要開啟 [篩選] 視窗。 將 Cancel 引數設定為 True (1) 會防止開啟篩選視窗。 您也可以使用 DoCmd 物件的 CancelEvent 方法來取消開啟篩選視窗。 |
FilterType | 必要 | Integer | [篩選] 視窗的使用者嘗試開啟。 FilterType 自變數可以是下列其中一個內部常數:
|
註解
若要發生此事件時執行巨集或事件程序,將 OnFilter 屬性設定為巨集名稱或 [事件程序]。
使用 Filter 事件來:
移除表單任何舊篩選。 若要這樣做,將表單的 Filter 或 ServerFilter 屬性設定為零長度字串 ("") 中的 篩選器 巨集或事件程序。 如果您想要確定無關的準則不會出現在新的篩選中,這特別有用。 例如,當您使用 [依 選 取範圍篩選] 功能時,您 (表單中選取的文字所使用的準則) 會新增至 Filter 或 ServerFilter 屬性 WHERE 子句運算式,並同時出現在 [依表單 篩選 ] 視窗和 [ 進階篩選/排序 ] 視窗或 [依表單 篩選] 視窗中。 您可以使用 Filter 事件來移除這些舊的準則。
輸入新的篩選器的預設設定。 若要這樣做,設定 Filter 或 ServerFilter 屬性包含這些準則。 例如,您可能想要產品表單的所有篩選器只顯示目前產品 (未選取 Products表單中已中止控制項的產品) 。
使用您自己的自訂篩選] 視窗而不是其中一個 Microsoft Access 篩選視窗。 Filter 事件發生時,您可以開啟您自己的自訂表單和使用此表單上的項目設定 Filter 或 ServerFilter 屬性及篩選原始表單。 當使用者關閉這個自訂表單時,請將原始表單的 FilterOn 或 ServerFilterByForm 屬性設定為 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 支援與意見反應。