如何在 Access 中进行查询将 tempvar 识别为有效字段(参数)

Posted

技术标签:

【中文标题】如何在 Access 中进行查询将 tempvar 识别为有效字段(参数)【英文标题】:How to make a query in Access recognize a tempvar as a valid field (parameter) 【发布时间】:2019-07-19 18:21:46 【问题描述】:

我正在努力在 Access 中设置一个将自动运行附加查询的宏。查询将向特定表添加新行,新行的数据基于日期(周结束)。目前,我认为每个查询都会提示请求数据的结束日期。我真的不想运行宏让提示多次显示以输入相同的日期。

根据我从其他板上找到的信息,我应该能够通过在宏中使用 SetTempVar 操作定义一个 tempvar 来完成此操作,并从弹出的输入框中提取变量。我将输入框的结果格式化为日期。宏的其余部分设置为对每个查询运行 OpenQuery 操作。在查询本身中,我用应该是对 tempvar 的引用 ([TempVars]![EndDate]) 替换了用于先前提示的参数 ([Enter End Date]) 的点。

宏代码:

SetTempVar
      Name: EndDate
Expression: CDate(InputBox("Enter the end date of the week being added:","End Date","Enter Date"))

OpenQuery
Query Name: qryBizDByPersonAppend
      View: Datasheet
 Date Mode: Edit

OpenQuery
Query Name: qryBizDByTypeAppend
      View: Datasheet
 Date Mode: Edit

OpenQuery
Query Name: qryBizDByWhereAppend
      View: Datasheet
 Date Mode: Edit


Code for one of the queries:

TRANSFORM Count(tblCombined.Calendar) AS CountOfCalendar
SELECT [TempVars]![EndDate] AS [End]
FROM tblCombined
WHERE (((tblCombined.StartTime) Between #1/1/2019# And #12/31/2019#) AND ((tblCombined.Type) In ("Advisor Meeting","Advisor Training","Employee Group Presentation","Employer HR Meeting","Client Group Presentation","Client Group Webinar","Employee Group Presentation","Employee Group Webinar","Benefit Fair","Added Time")) AND ((tblCombined.Canceled) Is Null) AND ((tblCombined.DateScheduled)<=[TempVars]![EndDate]))
GROUP BY [TempVars]![EndDate]
PIVOT tblCombined.Calendar;

当我运行宏时,我收到一条错误消息,指出 [TempVars]![EndDate] 在执行 OpenQuery 操作后未被识别为有效字段或表达式。之前使用单独提示的参数可以正常工作。

【问题讨论】:

我认为具有动态标准的 CROSSTAB 需要使用 PARAMETERS 子句。 【参考方案1】:

查询无法识别临时变量的原因是它没有在任何地方定义(在实际字段中或作为“参数”)。通过在每个查询中指定它,我能够让 temp var 作为参数工作。 Screenshot of tempvar defined in query as parameter.

【讨论】:

以上是关于如何在 Access 中进行查询将 tempvar 识别为有效字段(参数)的主要内容,如果未能解决你的问题,请参考以下文章

Access 2013 - 对所有查询和/或所有表进行文本搜索

如何在 Access 中对表的所有列进行 UNION ALL

传递查询如何在Access中使用SQL Server数据库引擎进行查询

传递查询如何在Access中使用SQL Server数据库引擎进行查询

excel中如何进行语句查询

如何将字段添加到 Access 2003 查询以显示基于另一个字段的结果?