我有一个查询这是相当大的,在加盟十几张桌子,我想拉回来基于一个id字段记录( 例如 : between nStartID and nEndID
)。
我创建了两个参数和测试他们的标准,他们工作得很好。
问题是,我需要运行此主查询插入查询,需要他们在哪里的参数,在主查询。 所以,我需要编程的参数传递给它。
任何人有一个线索,这可怎么办呢?
谢谢。
我有一个查询这是相当大的,在加盟十几张桌子,我想拉回来基于一个id字段记录( 例如 : between nStartID and nEndID
)。
我创建了两个参数和测试他们的标准,他们工作得很好。
问题是,我需要运行此主查询插入查询,需要他们在哪里的参数,在主查询。 所以,我需要编程的参数传递给它。
任何人有一个线索,这可怎么办呢?
谢谢。
我只是测试这一点,它在Access 2010中工作。
假设你有一个带参数的SELECT查询:
PARAMETERS startID Long, endID Long;
SELECT Members.*
FROM Members
WHERE (((Members.memberID) Between [startID] And [endID]));
你交互式运行查询,它会提示您输入[startID]和[endID所。 这样的作品,所以你保存了该查询为[MemberSubset。
现在,您创建基于查询的更新查询:
UPDATE Members SET Members.age = [age]+1
WHERE (((Members.memberID) In (SELECT memberID FROM [MemberSubset])));
你交互式运行查询,并再次提示您输入[startID]和[endID所]和它工作得很好,所以你将它保存为[MemberSubsetUpdate。
您可以从VBA代码通过指定[startID]和[endID所]值作为参数[MemberSubsetUpdate]运行[MemberSubsetUpdate],即使他们实际上的[MemberSubset]参数。 这些参数值“涓滴”到需要的地方,且查询并无需人工干预工作:
Sub paramTest()
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("MemberSubsetUpdate")
qdf!startID = 1 ' specify
qdf!endID = 2 ' parameters
qdf.Execute
Set qdf = Nothing
End Sub
尝试使用QueryDefs。 创建参数查询。 然后,使用这样的:
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("Your Query Name")
qdf.Parameters("Parameter 1").Value = "Parameter Value"
qdf.Parameters("Parameter 2").Value = "Parameter Value"
qdf.Execute
qdf.Close
Set qdf = Nothing
Set dbs = Nothing
非常感谢有关使用QueryDefs收集的信息! 我一直想知道这一段时间。
我做了一个不同的方式,不使用VBA,通过使用包含查询参数表。
例如:选择a_table.a_field FROM QueryParameters,a_table WHERE a_table.a_field BETWEEN QueryParameters.a_field_min和QueryParameters.a_field_max
凡QueryParameters是一个表有两个字段,a_field_min和a_field_max
它甚至可以与GROUP BY使用,如果包含在GROUP在HAVING子句中的参数字段的查询参数字段BY子句,和运营商。
您还可以使用TempVars的 - 注意“!” 语法是必不可少的