我正在寻找一些关于在更新查询中使用单独查询中的值的支持。背景是我有一个查询calle qry_AvgOfXCoeff,它计算tbl_ConvertToDouble.XCoeff的平均值。我想要做的是用第一个查询中计算的平均值替换任何大于0的Xcoeff值。目前我不能直接在更新查询中使用qry,因为我收到了可怕的“必须使用可更新的查询”#39;错误。
qry_AvgOfXCoeff:
SELECT Avg(tbl_ConvertToDouble.XCoeff) AS [Avg]
FROM tbl_ConvertToDouble;
现在我已经被告知我应该能够通过在更新查询中使用IN条件来做到这一点,但我真的很难接受这个,并且似乎无法找到我将如何实现这一点的任何示例。我已经按照下面的方式玩了一些代码,但请有人帮忙解决这个问题。这看起来很简单。
UPDATE qry_AvgOfXCoeff, tbl_ConvertToDouble SET tbl_ConvertToDouble.[Xcoeff]
WHERE (( ( tbl_ConvertToDouble.[xcoeff] ) IN (SELECT [qry_AvgOfCoeff].[Avg]
FROM [qry_AvgOfCoeff] AS Tmp
Where [tbl_ConvertToDouble].[Xcoeff] > 0) ))
ORDER BY tbl_calcreg.[xcoeff];
先谢谢你。
娜
答案 0 :(得分:1)
Access提供的域聚合函数可以帮助避免"操作必须使用可更新的查询"问题。在这种情况下,您可以使用DAvg()功能
UPDATE tbl_ConvertToDouble
SET XCoeff = DAvg("XCoeff", "tbl_ConvertToDouble")
WHERE XCoeff>0