因此,我有 6 個查詢,我想在每個月底將它們全部運行一次。 (我對 SQL 了解一點,但它們只是使用 Access 的設計視圖建構的)。因此,在接下來的幾天裡,也許我會運行 5 月的 6 個查詢,因為 5 月剛結束。我只想要剛結束的月份的數據,因此查詢將 Criteria 設定為月份名稱(例如,五月)。現在,每個月更改所有這些內容並不需要花費太多時間,但是有什麼方法可以自動執行此操作嗎?目前,它們都設定為四月,我想在幾天後運行它們時將它們全部更改為五月。每個月,我想輸入月份(也許在表單的文字方塊中或其他地方,如果你知道更好的方法)一次,並讓它更改所有 6 個查詢,而無需手動打開所有 6 個查詢,滾動到正確的字段並更改條件。
注意(關於VBA):我使用過 Excel VBA,所以我了解 VBA 的基礎知識,但我並不真正了解 Access 的任何特定內容(除了幾次看到程式碼之外)。而且,其他不了解 Access VBA 的人也會使用它。所以,我想我已經找到了類似的問題/答案可以在 VBA 中執行此操作,但我寧願以其他方式執行此操作。如果稍後需要稍微重新設計查詢,可能是由根本不了解 Access VBA 的人進行的,那麼如果可能的話,最好有一個不涉及 VBA 的解決方案。
答案1
有一個簡單的方法可以讓查詢在運行時詢問月份:在查詢中,將 [Enter Month] 放在您現在擁有月份名稱的位置。
查詢執行時,將出現一個對話方塊以輸入月份。您可以在方括號中放入任何您想要的文字 - 不必說“月份”;這只是定義了對話框將顯示的內容。這種技術稱為「參數查詢」。
透過一個步驟執行所有 6 個查詢將需要 VBA 程式碼 - 但程式碼非常簡單。您的最終用戶不需要了解有關 VBA 的任何資訊 - 他們只需要打開表單並點擊一個按鈕。
建立一個表單,在其上放置一個按鈕。在該按鈕的屬性清單中,選擇“事件”選項卡,然後選擇“單擊時”事件。點選 On Click 事件的「...」按鈕。
這將開啟 VBA 程式碼窗口,並將遊標置於正確的位置 - Private Sub Command0_Click - 其中 Command0 是按鈕的名稱。輸入代碼,如圖所示...
用正確的名稱取代您的查詢,並根據需要重複該程式碼行多次。打開表單並點擊按鈕現在將立即執行所有查詢。
下一步
最後的改進是輸入一次參數並使其自動應用於所有查詢。這需要幾個步驟。
在VBA程式碼視窗中,建立一個程式碼「模組」。右鍵單擊視窗的“項目”窗格並選擇“插入/模組”:
在新模組中,新增以下程式碼:
gstrMonth 是一個全域變數字串,用於保存月份名稱。函數 GetMonth 將在查詢中用於檢索該值。
現在將 Form1 程式碼變更為:
子「AskForMonth」顯示一個對話框,供使用者輸入月份名稱。此輸入被指派給 gstrMonth 變數。
在 Command0(按鈕)程式碼中,我們在執行查詢之前新增 AskForMonth。再次,使用正確的查詢名稱為每個查詢重複「DoCmd」行。
最後一步是透過呼叫函數「GetMonth」來替換查詢中的參數。在查詢條件中輸入“GetMonth()”,而不是[輸入月份]。
我希望這能鼓勵您使用 VBA 的一些功能來自動執行 Access 任務!