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
1
尝试使用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
4
非常感谢有关使用QueryDefs集合的信息!我一直在想这个问题 .
我使用包含查询参数的表,以不同的方式,不使用VBA .
例如:SELECT a_table.a_field FROM QueryParameters,a_table WHERE a_table.a_field BETWEEN QueryParameters.a_field_min AND QueryParameters.a_field_max
4 回答
我刚测试了这个,它在Access 2010中有效 .
假设您有一个带参数的SELECT查询:
您以交互方式运行该查询,并提示您输入[startID]和[endID] . 这是有效的,所以你将该查询保存为[MemberSubset] .
现在,您可以基于该查询创建UPDATE查询:
您以交互方式运行该查询,并再次提示您输入[startID]和[endID]并且它运行良好,因此您将其保存为[MemberSubsetUpdate] .
您可以通过将[startID]和[endID]值指定为[MemberSubsetUpdate]的参数来从VBA代码运行[MemberSubsetUpdate],即使它们实际上是[MemberSubset]的参数 . 这些参数值“滴入”到需要它们的位置,查询确实可以在没有人为干预的情况下工作:
尝试使用QueryDefs . 使用参数创建查询 . 然后使用这样的东西:
非常感谢有关使用QueryDefs集合的信息!我一直在想这个问题 .
我使用包含查询参数的表,以不同的方式,不使用VBA .
例如:SELECT a_table.a_field FROM QueryParameters,a_table WHERE a_table.a_field BETWEEN QueryParameters.a_field_min AND QueryParameters.a_field_max
QueryParameters是一个包含两个字段a_field_min和a_field_max的表
如果在GROUP BY子句中包含查询参数字段,并且在HAVING子句中的参数字段中包含FIRST运算符,它甚至可以与GROUP BY一起使用 .
你也可以使用TempVars - 注意'!'语法是必不可少的