我正在使用MS Access VBA根据另一个表上的计数值更新数据库文件中的表,该表引用回我想要更新的表 .
Table 1: request
- Columns: requestID, requestStatus
Table 2: requestItem
- Columns: requestItemID, requestID, requestItemStatus
1个请求可以有n个请求项,但1个请求项只能包含在1个请求中 .
如果请求的所有请求项都有"complete" requestItemStatus ,我想更新 request 表,同时将请求的 requestStatus 更新为"complete" .
我第一次尝试了以下内容:
Update request SET request.request_status_id = "complete" WHERE COUNT(SELECT requestItem.* FROM requestItem WHERE requestItem.requestID = request.requestID) = COUNT(SELECT requestItem.* FROM requestItem WHERE requestItem.requestID = request.requestID AND requestItem.request_item_status_id = "complete")
但是VBA抱怨SQL语句不能在表达式中使用聚合函数(COUNT()=) .
我该怎么办?谢谢你的帮助!我很感激 .
2 回答
查询可以表示为“如果没有任何子请求项具有完整的状态,则将请求设置为完整”,即:
Stuartd上面提到的可能是最简单的方法 . 如果您只想更新空白或<>完成的实际记录,则可以使用以下选项 . 我希望这有帮助!确保首先在测试环境中尝试 .