我正在开展A2课程,我们正在使用访问权来创建数据库管理系统。对于我系统的一部分,我有一个查询,用于计算用户在给定时间段内租用的项目数。现在,我需要更新此值并将其插入users表。
在用户表中,有一个名为“GamesRentedThisMonth”的字段。我做了一个计算这个值的查询。我已经设置了查询的关系,将UserID链接到User表。
UPDATE Users INNER JOIN UserGamesRentedThisMonth ON (Users.ID = UserGamesRentedThisMonth.UserID)
SET Users.GamesRentedThisMonth = UserGamesRentedThisMonth.CountOfOrderID
设计视图:
我甚至试图检查查询:
UPDATE Users INNER JOIN UserGamesRentedThisMonth ON (Users.ID = UserGamesRentedThisMonth.UserID) SET Users.GamesRentedThisMonth = 5;
仍会产生错误。
答案 0 :(得分:1)
在某些情况下,没有像GavinP在他的回答中描述的那样创建临时表,但Access支持“域聚合函数”,它通常可用于解决该问题。在您的情况下,您可以这样使用create
函数:
DLookUp()
答案 1 :(得分:0)
您无法在Access中的更新中使用摘要查询。这是一种痛苦。不幸的是,自JET 4以来就是如此。 "通常"避免这种情况的方法是首先创建一个带有求和值的临时表,然后在连接中使用它到目标更新查询。在你的情况下,就像将UserGamesRentedThisMonth查询生成一个make表查询创建tblTemp并将原始查询更改为
UPDATE Users INNER JOIN tblTemp ON (Users.ID = tblTemp.UserID)
SET Users.GamesRentedThisMonth = tblTemp.CountOfOrderID
希望有所帮助。