我有一个链接到Sql Server的Access 2010表单,我正在使用一个正常工作的select查询,直到我添加一个Inner Join,然后该字段变得无法更新(Recordset不可更新)这是查询我我正在使用但不能检查字段是(这是一个复选框),如果我删除它的内部连接工作。列nm中可以有多个名称,所以要获取最新名称,我使用带有max的内连接给我最新的名称,否则它将在nm列中显示这两个名称。
SELECT tblA.Reference
TblA.Yes,
TblA.Nm,
TblA.PKID
FROM TblA
INNER JOIN (
SELECT
Reference,
max(PKID) AS TRANID
FROM TblA
GROUP BY Reference) AS TblB ON TblA.Reference = TblB.Reference AND
TblA.PKID = TblB.TRANID)
WHERE TblA.Reference Like "*" & [forms]![NewPayments]![Combo1] & "*" AND
TblA.Nm Like "*" & [forms]![NewPayments]![ClientName] & "*" AND
TblA.Account Like "*" & [forms]![NewPayments]![ACN] & "*" AND
TblA.Query Is Null ;
答案 0 :(得分:1)
如果您只想使用聚合来选择特定条目,则可以使用EXISTS
代替INNER JOIN
来保持查询的可更新性。
SELECT tblA.Reference
TblA.Yes,
TblA.Nm,
TblA.PKID
FROM TblA
WHERE EXISTS (
SELECT 1
FROM TblA As TblB
WHERE TblA.Reference = TblB.Reference
HAVING TblA.PKID = max(TblB.PKID)
) AND TblA.Reference Like "*" & [forms]![NewPayments]![Combo1] & "*" AND
TblA.Nm Like "*" & [forms]![NewPayments]![ClientName] & "*" AND
TblA.Account Like "*" & [forms]![NewPayments]![ACN] & "*" AND
TblA.Query Is Null ;