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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MS ACCESS中从另一个查询中传递PARAMETERS到查询中(不用VBA)?相关的知识,希望对你有一定的参考价值。

在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。

答案

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并在查询中使用它们。

以上是关于如何在MS ACCESS中从另一个查询中传递PARAMETERS到查询中(不用VBA)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load

在 ASP/C# 网页中从 MS Access 数据库中查询连接表

在 Access 中从另一个表的数据创建一个表

在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期

Ms access Select 带有限制选项的查询

MS Access Report RecordSource 是一个带有参数的查询。如何传递参数值?