循环运行一系列查询,为不同表中的每条记录添加一个表。 MS Access 2010

问题描述:

这里是我需要做的:循环运行一系列查询,为不同表中的每条记录添加一个表。 MS Access 2010

我有一系列的查询,我用它来创建一个项目的多列统计数据的最终报告。我为每个项目设置了一个表格。我需要做的是创建一个循环,用于运行项目的一系列查询,并使用最终查询将结果附加到“报告”表格。

我已经设置了所有Make Table查询和最终的Append查询。有两个查询需要密钥,其余查询取决于前两个查询的结果。所以,我需要在那两个查询中使用该键作为参数。我需要的是一个循环,它将为“Items”表中的每个键运行该键上的查询,然后循环。

我有一个模块设置来运行完整的查询集,但现在我需要为每个项目运行它。我的想法是,我需要一个“中的项目为我......”类型的循环,但我不知道该怎么做,在VBA

使用MS Access 2010中

据我知道你想运行查询保存在表中的多个查询。一些查询取决于父查询。

伪逻辑:

  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 

注:这只是一个伪答案,帮助您了解的可能性您的方案。