2013-08-16 24 views
-1

我正在努力學習vba爲我爲我工作的公司開發的系統。然而,這是一個陡峭的學習曲線。具體來說,我希望自動化一系列MS Access 2013報告,而不是在每次我要發送報告時輸入報告的新ID#。您可以使用vba在訪問查詢中引用單個字段中的單個條目嗎?

我可以通過查詢獲取所需的所有id#列表,但我想知道是否有某種方法讓vba按順序遍歷每條記錄,將id#分配給一個變量(和/或者把它放在一個當前控制報告形式的未綁定控件中),然後生成報告的pdf(最終我想自動給該報告發送電子郵件)。

真的,這是但是如果成功的話,它可以在將來節省數不清的時間,到目前爲止,我所能做的只是從vba打印一份報告給pdf,但我必須將數據輸入到表單中,沒有節省任何時間

任何想法都會很棒。對vba很新穎。

謝謝。

回答

2

網絡上應該有大量的DAODatabase.Openrecordset()Recordset.Movenext循環的代碼示例。

嘗試創建一個全局IDNo變量(數據庫中的模塊標頭中的PublicFriend變量)和數據庫模塊中的ID()函數,返回IDNO變量的值,並使用該函數在該報告的查詢來篩選記錄。

對於通過您的Recordset的每個循環,將相應的數據分配給IDNo全局變量,然後執行DoCmd.OpenReport

您應該在recordset中爲每個record獲取一份報告,並根據ID進行過濾。

0
Dim db as Database 
Dim rec1 as Recordset 
Dim rec2 as Recordset 

Set db = CurrentDB 
set rec1 = db.OpenRecordset ("Select IDNum from TableWithIDs") 

Do While rec1.EOF = False 
set rec2 = db.OpenRecordset("Select * from ReportTable Where IDNum = " & rec1(0) & "") 

... Process report based on the query results of rec2 

set rec2 = nothing 
rec1.MoveNext 
Loop 
相關問題