您可以使用 ApplyFilter 巨集指令,將篩選、查詢或 SQL WHERE 子句套用到 資料表、表單 或 報表,以限制或排序資料表中的記錄,或來自基礎資料表或是表單或報表之查詢的記錄。 如果是報表,此巨集指令只能用於由報表之 OnOpen 事件屬性所指定的巨集中。
附註: 只有在套用伺服器篩選時,才能使用此巨集指令來套用 SQL WHERE 子句。 伺服器篩選無法套用至預存程序的記錄來源。
附註: Access Web 應用程式不提供 ApplyFilter 巨集指令。
設定
ApplyFilter 巨集指令具有下列引數。
巨集指令引數 |
描述 |
篩選名稱 |
限制或排序資料表、表單或報表之記錄的篩選或查詢名稱。 您可以在 [巨集建立器] 窗格的 [巨集指令引數] 區段內,將現有查詢的名稱或已儲存為查詢之篩選的名稱輸入 [篩選名稱] 方塊內。 附註: 使用此巨集指令套用伺服器篩選時,篩選名稱引數必須是空白的。 |
Where 條件 |
有效的 SQL WHERE 子句 (沒有 WHERE 一字),或是限制資料表、表單或報表之記錄的運算式。 附註: 在 Where 條件引數運算式中,運算式左邊通常包含來自基礎資料表或是表單或報表之查詢的欄位名稱。 運算式右邊則通常包含要套用至此欄位以限制或排序記錄的準則。 例如,準則可以是另一個表單上的控制項名稱,該表單包含您希望第一個表單中的記錄會符合的值。 控制項的名稱應該完整,例如: 表單!formname!controlname 欄位名稱應該包含在雙引號中,而字串文字應該包含在單引號中。 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 資料庫中移除篩選,並顯示資料表或表單的所有記錄,可以使用 ShowAllRecords 巨集指令或 [記錄] 功能表上的 [移除篩選/排序] 命令。 若要在 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].[RecordCount]>0 |
GoToControl |
控制項名稱:CompanyName |
如果傳回所選字母的記錄,則將焦點移到 CompanyName 控制項。 |