你可以使用 ApplyFilter 動作對資料表、表單或報告套用篩選器、查詢或 SQL WHERE 子句,來限制或排序表單中的紀錄,或底層表單或報告查詢中的紀錄。 對於報告,你只能在報告的 OnOpen 事件屬性指定的巨集中使用此動作。
注意
只有在套用伺服器篩選時,才能使用此巨集指令來套用 SQL WHERE 子句。 伺服器篩選無法套用至預存程序的記錄來源。
注意
Access Web 應用程式不提供 ApplyFilter 巨集指令。
設定
ApplyFilter 巨集指令具有下列引數。
| 巨集指令引數 | 描述 |
|---|---|
| 篩選名稱 | 限制或排序資料表、表單或報表之記錄的篩選或查詢名稱。 您可以在 [巨集建立器] 窗格的 [巨集指令引數] 區段內,將現有查詢的名稱或已儲存為查詢之篩選的名稱輸入 [篩選名稱] 方塊內。 註: 當你使用此動作套用伺服器過濾器時, Filter Name 參數必須為空。 |
| Where 條件 | 有效的 SQL WHERE 子句 (不含 WHERE) 或限制表格、表單或報告記錄的表達式。 註: 在 Where Condition 參數表達式中,表達式的左側通常包含底層表格或表單查詢的欄位名稱。 表達式的右側通常包含你想套用於此欄位以限制或排序記錄的條件。 例如,準則可以是另一個表單上的控制項名稱,該表單包含您希望第一個表單中的記錄會符合的值。 控制組名稱應完整限定,例如:Forms!Formname!控制名稱 欄位名稱應該包含在雙引號中,而字串文字應該包含在單引號中。 Where 條件引數的長度上限是 255 個字元。 如果需要輸入更長的 SQL WHERE 子句,請在 Visual Basic for Applications (VBA) 模組中使用 DoCmd 物件的 ApplyFilter 方法。 您可以在 VBA 中輸入最多 32,768 個字元的 SQL WHERE 子句陳述式。 |
注意
如果您已經定義提供適當資料的篩選,則可使用篩選名稱引數。 您可以使用 Where 條件引數直接輸入限制準則。 如果你同時使用兩個參數,Access 會對篩選結果套用 WHERE 子句。 您必須使用這兩個引數之一,或兩個都使用。
註解
你可以在表單檢視或資料表檢視中對表單套用篩選器或查詢。
您所套用的篩選或 WHERE 條件會成為表單或報表的 Filter 或 ServerFilter 屬性設定。
如果是資料表或表單,此巨集指令類似於按一下 [記錄] 功能表上的 [套用篩選/排序] 或 [套用伺服器篩選]。 功能表命令會將最近建立的篩選套用至資料表或表單,而 ApplyFilter 巨集指令則會套用指定的篩選或查詢。
在 Access 資料庫中,如果你在紀錄選單中指向篩選,然後執行 ApplyFilter 動作後點選進階篩選/排序,進階篩選/排序視窗會顯示你用這個動作選擇的篩選條件。
要移除篩選器並顯示 Access 資料庫中某表或表單的所有紀錄,您可以使用 Records 選單中的ShowAllRecords 動作或 Remove Filter/Sort 指令。 要移除 Access 專案中的 (.adp) 中的過濾器,您可以回到「伺服器依表單篩選」視窗,移除所有篩選條件,然後在工具列的紀錄選單點選「套用伺服器過濾器」,或將 ServerFilterByForm 屬性設為 False (0) 。
儲存資料表或表單時,Access 會儲存該物件中目前所定義的任何篩選,但是不會在下次開啟物件時自動套用篩選 (不過它會自動套用儲存物件之前即已套用至物件的任何排序)。 如果要在首次開啟表單時自動套用篩選,請指定包含 ApplyFilter 巨集指令的巨集,或包含 DoCmd 物件之 ApplyFilter 方法的事件程序,做為表單的 OnOpen 事件屬性設定。 您也可以使用 OpenForm 或 OpenReport 巨集指令或是其對應的方法來套用篩選。 若要在首次開啟資料表時自動套用篩選,可以使用包含 OpenTable 巨集指令且後面緊接著 ApplyFilter 巨集指令的巨集來開啟資料表。
範例
使用巨集來套用篩選
以下巨集包含一組動作,每個動作都會過濾客戶電話名單表單的紀錄。 它顯示了 ApplyFilter、 ShowAllRecords 和 GoToControl 動作的使用情況。 同時也顯示了如何利用條件來判斷表單中選項群組中選擇了哪個切換按鈕。 每個動作列對應一個切換按鈕,可選擇以 A、B、C 等開頭的記錄集合,或所有記錄。 這個巨集應該附加到 CompanyNameFilter 選項群組的 AfterUpdate 事件中。
| 條件 | [動作] | 引數:設定 | 註解 |
|---|---|---|---|
| [CompanyNameFilters]=1 | ApplyFilter | Where 條件:[CompanyName] Like "[AÀÁÂÃÄ]*" | 篩選以 A、À、Á、Â、Ã 或 Ä 開頭的公司名稱。 |
| [CompanyNameFilters]=2 | ApplyFilter | Where 條件:[CompanyName] Like "B*" | 篩選以 B 開頭的公司名稱。 |
| [CompanyNameFilters]=3 | ApplyFilter | Where 條件:[CompanyName] Like "[CÇ]*" | 篩選以 C 或 Ç 開頭的公司名稱。 |
| ...D 到 Y 的巨集指令列格式與 A 到 C 的格式相同... | |||
| [CompanyNameFilters]=26 | ApplyFilter | Where 條件:[CompanyName] Like “[ZÆØÅ]*” | 篩選以 Z、Æ、Ø 或 Å 開頭的公司名稱。 |
| [CompanyNameFilters]=27 | ShowAllRecords | 顯示所有記錄。 | |
| [RecordsetClone]。[紀錄計數]>0 | GoToControl | 控制項名稱:CompanyName | 如果傳回所選字母的記錄,則將焦點移到 CompanyName 控制項。 |