ACCESS - 如何根据 SQL SELECT ANY 语句为 false

问题描述

如果满足一系列复杂的逻辑,我正在尝试使用 sql 将字段 [tblServiceSession].[First Prebooked] 更新为打开表单 [Forms]![frmNewServiceSessionPopUp]![Service Access ID] 上的当前记录的 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] 字段

非常感谢任何帮助。

解决方法

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

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

谢谢大家。