2014-08-29 68 views
0

這裏是我需要做的:循環運行一系列查詢,爲不同表中的每條記錄添加一個表。 MS Access 2010

我有一系列的查詢,我用它來創建一個項目的多列統計數據的最終報告。我爲每個項目設置了一個表格。我需要做的是創建一個循環,用於運行項目的一系列查詢,並使用最終查詢將結果附加到「報告」表格。

我已經設置了所有Make Table查詢和最終的Append查詢。有兩個查詢需要密鑰,其餘查詢取決於前兩個查詢的結果。所以,我需要在那兩個查詢中使用該鍵作爲參數。我需要的是一個循環,它將爲「Items」表中的每個鍵運行該鍵上的查詢,然後循環。

我有一個模塊設置來運行完整的查詢集,但現在我需要爲每個項目運行它。我的想法是,我需要一個「中的項目爲我......」類型的循環,但我不知道該怎麼做,在VBA

使用MS Access 2010中

回答

0

據我知道你想運行查詢保存在表中的多個查詢。一些查詢取決於父查詢。

僞邏輯:

  1. 運行和執行父查詢
  2. 如果結果存在檢索值
  3. 開始循環,直到父查詢具有值
    1. 檢索/構建子查詢
    2. 執行子查詢
  4. 結束循環

一些僞代碼:

dim MyDb as Dao.Database 
dim myRs as Dao.Recordset 

set mydb = currentdb 

dim SQL_PARENT as string 
sql_parent = "" ' Retrieve your parent query here 
sql_parent = vba.replace(sql_parent, "searchkey", "replace_key") ' Replace keys 
' or if you have the keys in a table then use the dlookup() function to replace keys 

set myrs = mydb.openRecordSet(sql_parent) 
'do error trapping here 

dim iResult = nz(myrs("ResultField"),"") 
'follow the parent query operation 

'construct the sub queries 
dim RS_SUB as DAo.Recordset 
dim SQL_SUB as string 

dim I as integer 
for i = 1 to total of your query collection 
    sql_sub = query_collection(i) 
    sql_sub = vba.replace(sql_sub,"searchkey",iResult) 
    set rs_sub = mydb.openrecordset(sql_sub) 

next i 

注:這只是一個僞答案,幫助您瞭解的可能性您的方案。

相關問題