是否有可能以编程方式传递参数在Microsoft Access更新查询?(Is it possibl

2019-09-03 09:29发布

我有一个查询这是相当大的,在加盟十几张桌子,我想拉回来基于一个id字段记录( 例如between nStartID and nEndID )。

我创建了两个参数和测试他们的标准,他们工作得很好。

问题是,我需要运行此主查询插入查询,需要他们在哪里的参数,在主查询。 所以,我需要编程的参数传递给它。

任何人有一个线索,这可怎么办呢?

谢谢。

Answer 1:

我只是测试这一点,它在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


Answer 2:

尝试使用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


Answer 3:

非常感谢有关使用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子句,和运营商。



Answer 4:

您还可以使用TempVars的 - 注意“!” 语法是必不可少的



文章来源: Is it possible to pass parameters programmatically in a Microsoft Access update query?