開啟表單或報表時套用篩選
當您使用 Visual Basic for Applications (VBA) 程式碼來開啟表單或報表時,您可能會想要指定要顯示的記錄。 您可以透過數種方式指定要在表單或報表中顯示的記錄。 常見的方法是顯示自訂對話方塊,使用者會在其中輸入表單或報表基礎查詢的準則。 若要取得準則,請參閱對話方塊中的控制項。 下列各節說明三種方式,您可以使用在自訂對話方塊中輸入的準則來篩選記錄。
使用 wherecondition 引數
OpenForm或OpenReport方法或動作的wherecondition引數,是在使用者只提供一個值的情況下取得準則的最簡單方式。 例如,您可以讓表單顯示時提示使用者選取要列印的發票訂單編號。 如果使用的是事件程序,則可以在 OpenReport 方法中加入一個引數,套用只會顯示一筆記錄的篩選,如下列這一行程式碼所示:
DoCmd.OpenReport "Invoice", acViewPreview, , "OrderID = " & OrderID
篩選運算式中的 會 "OrderID = "
參考發票報表基礎查詢中的 OrderID 欄位。 運算式右側的 OrderID 是指使用者從對話方塊的 OrderID 清單中選取的值。 運算式會串連兩者,導致報表只包含使用者所選記錄的發票。
wherecondition 引數只適用於針對按鈕之 OnClick 事件所指定的事件程序,該按鈕會執行 OpenForm 或 OpenReport 方法。 如此一來,您便可以靈活使用任何數量的對話方塊開啟同一個表單或報表,也可以視使用者的需求套用不同的準則。 例如,使用者可以列印某位客戶的發票,或者只檢視某項特定產品的訂單。
使用 wherecondition 引數 來設定多個欄位的準則,但如果您這樣做,引數設定很快就會變得冗長且複雜。 在這些情況下,在查詢中指定準則可能比較容易。
使用查詢做為篩選準則
個別查詢有時候也稱為篩選查詢,它可以參照對話方塊中的控制項以取得其準則。 使用這個方法時,必須將 OpenForm 或 OpenReport 方法或動作的 filtername 引數設為您所建立之查詢的名稱,如此才能篩選表單或報表中的記錄。 篩選查詢必須包含您所開啟之表單或報表中,記錄來源的所有資料表。 另外,篩選查詢也必須包含您所開啟之表單或報表的所有欄位,或是將它的 OutputAllFields 屬性設為 Yes。
建立並儲存查詢以做為篩選使用之後,請將 OpenReport 方法或動作的 filtername 引數設為該篩選查詢的名稱。 每次執行 OpenReport 方法時,filtername 引數都會套用指定的篩選查詢。
使用查詢做為篩選來設定準則的優點和使用 OpenForm 或 OpenReport 方法的 wherecondition 引數相似。 篩選查詢同樣可以讓您靈活使用多個對話方塊開啟相同的表單或報表,並且視使用者的需求套用不同的準則。
直接參考表單或報表基礎查詢中的對話方塊控制項
您也可以直接在表單或報表的基礎查詢中參考對話方塊控制項,而不是透過 OpenForm 或 OpenReport 方法的引數。 使用此方法時, OpenForm 或 OpenReport 方法或動作不需要 wherecondition 或 filtername 自 變數。 相反地,每當您開啟表單或報表時,其基礎查詢會尋找對話方塊以取得其準則。 不過,如果使用者在 [資料庫] 視窗中開啟表單或報表,而不是透過對話方塊開啟,Access 會顯示參數方塊,提示使用者輸入對話方塊值。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應