2016-01-15 65 views
0

我有多個查詢,我試圖用來建立一個報告。我在做的方式是使用臨時表。在我構建它時,我注意到報告運行需要相當長的一段時間,因爲我爲每條記錄使用了2個條件。使用查詢訪問報告?

所以基本上我在做什麼是填充臨時表2倍的值

CompanyID |單價

現在我每個CompanyID做使用DLookup開始盤點一下,這是我的代碼...

rs2.movefirst 
with rs2 
    While Not .EOF 
     lngCompanyID = rs2("CompanyID") 
      lngUnitPrice = rs2("UnitPrice") 
      'GETTING BEGINNING INVENTORY VALUES 
      lngBegCount = Nz(DLookup("BegCount", "qryBegInv", "UnitPrice = " & lngUnitPrice & " AND CompanyID =" & CompanyID & ""), 0) 
      .Edit 
      rs2("BegInvCount") = lngBegCount 
      .Update 
      rs2.movenext 

    wend 
End with 

我看到的問題是,我期待了qryBEGINV約需10 -15秒加載,因爲我有超過30條記錄,運行報告需要幾分鐘的時間。有沒有辦法讓我更有效率?可能需要DLOOKUP ONCE值,然後過濾而不是查看它們並篩選每條記錄?

+1

從另一個臨時表開始填充qryBegInv的結果,以便您不重新創建每個循環迭代的結果集。 – nicomp

+0

@nicomp這是正確的 - 我只是openqry,將它追加到一個臨時表,並且每次查看錶而不是qry(這將節省大量時間)。如果您想回答問題而不是留下評論,我會將其標記爲完整。 – barry17

+1

完成。非常感謝。與Access玩得開心。 – nicomp

回答

1

從另一個臨時表開始填充qryBegInv的結果,這樣您就不會在每個循環迭代中重新創建結果集。