如何在MS ACCESS中从另一个查询中传递PARAMETERS到查询中(不用VBA)?

问题描述 投票:0回答:1

在MS Access中,我有一个关于开始和结束日期的长逻辑查询(我们称它为query_1).当你运行这个查询时,你会被要求提供开始日期和结束日期。

PARAMETERS start_date datetime, end_date datetime;

query_1是一个 "基础 "查询。我想创建许多查询,从query_1中获取一些信息。我如何从其他查询中提供start_date和end_date给query_1?

我试过用这个方法,但没有成功。

Where query_1.start_date = ## and query_1.end_date = ##

有什么办法可以做到这一点吗?

===编辑。

query1

PARAMETERS id number;
SELECT * FROM table1
WHERE table1.id = id

query2.查询结果:问了1次id。

SELECT * FROM query1

结果:问了1次id

PARAMETERS id number;
SELECT * FROM query1

结果:问了1次ID

SELECT * FROM query1
WHERE id = 13

结果:问了1次ID

PARAMETERS id number;
SELECT * FROM query1
WHERE id = 13

结果:问了1次ID

PARAMETERS id number;
SELECT * FROM query1
WHERE query1.id = 13

结果:问了1次ID

PARAMETERS id number;
SELECT * FROM query1
WHERE query1.id = id

结果:问了1次ID

PARAMETERS id1 number;
SELECT * FROM query1
WHERE query1.id = id1

结果:问了1次id,问了1次id1(大多数人提供的都是相同的)。

PARAMETERS id1 number;
SELECT * FROM query1
WHERE query1.id = query2.id1

结果:问了1次id,问了1次id1,问了1次query2.id。

PARAMETERS query1.id1 number;
SELECT * FROM query1
WHERE query1.id = query2.id1

结果:询问1次id,询问1次id1,询问1次query2.id。

sql ms-access parameters
1个回答
1
投票

Access 将把请求传递给 "基础 "查询,所以只需用通常的方式指定参数。

PARAMETERS start_date datetime, end_date datetime;
Select * From query_1 Where query_1.start_date = start_date and query_1.end_date = end_date

你可能需要重新命名参数或查询字段以避免混淆。

对于固定的参数。

Select * From query_1 Where query_1.start_date = #2019/01/01# and query_1.end_date = #2019/12/31#

编辑。

上面的方法是行不通的 因为Access总是会先尝试解析参数 然后用应用的任何过滤器来运行查询

你可以做的,是先设置参数,然后打开查询。

DoCmd.SetParameter "id1", 13
DoCmd.OpenQuery "query2"

另一种方法是查看 TempVars 并在query1中应用这些内容。

如何使用VBA从表单中创建TempVars并在查询中使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.