如何在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 数据库中查询连接表