首页 > 解决方案 > ACCESS - 如何根据 SQL SELECT ANY 语句为 false 更新特定记录中的字段

问题描述

[Forms]![frmNewServiceSessionPopUp]![Service Access ID]如果满足一系列复杂的逻辑,我正在尝试使用 SQL 将打开表单上当前记录的字段 [tblServiceSession].[First Prebooked] 更新为 TRUE 。

这是我迄今为止生成的 SQL:

SELECT tblServiceSession.REQUESTID, tblServiceSession.[FIRST PREBOOKED]
FROM tblServiceSession
WHERE (((tblServiceSession.[FIRST PREBOOKED])=True) AND (((([tblServiceSession].[RequestID])=[Forms]! 
[frmNewServiceSessionPopup]![RequestID]))=
Any (SELECT tblServiceSession.[FIRST PREBOOKED] 
FROM tblServiceSession 
WHERE tblServiceSession.[FIRST 
PREBOOKED] = true)));

因此,上面的 SQL 使用“ANY”并查询所有共享相同 [requestID] 的一系列记录,然后仅过滤 [First Preebooked] = TRUE 的记录。

我想要做的是让上面的 SQL 查询产生一个真/假值,然后使用结果来确定是否运行下面的更新查询。基本上,如果上述查询中返回任何记录 (TRUE),则不执行任何操作 ELSE (FALSE),运行以下 SQL:

UPDATE tblServiceSession SET tblServiceSession.[FIRST PREBOOKED] = True
WHERE (((tblServiceSession.[SERVICE ACCESS ID])=Eval("Forms!frmNewServiceSessionPopUp!cboServiceAccessID")) 
AND ((tblServiceSession.ATTENDED)<>"counsellor rescheduled" 
Or (tblServiceSession.ATTENDED)<>"counsellor cancellation") 
AND ((tblServiceSession.[SERVICE TYPE])="scheduled") AND ((tblServiceSession.[SERVICE PROVIDED])="individual" 
Or (tblServiceSession.[SERVICE PROVIDED])="Family" 
Or (tblServiceSession.[SERVICE PROVIDED])="Couple"));

上面的 SQL 是一个简单的更新查询,带有一些限定条件,用于更新[First Prebooked]同一个打开表单上当前记录的字段[Forms]![frmNewServiceSessionPopUp]![Service Access ID]

很感谢任何形式的帮助。

标签: sqlms-accesssql-updateany

解决方案


以下评论帮助我在第二个查询中实现 DCount() 函数并引用第一个查询:“您使用 VBA 吗?您的代码是什么?对第一个查询进行记录计数并相应地继续。要么使用 DCount()域聚合函数或打开记录集。”

我能够将更新查询的条件设置为 DCount() 并且仅在小于 1 时更新!

感谢大家。


推荐阅读