访问选择查询记录集不可更新

时间:2018-05-17 09:36:12

标签: ms-access

我有一个链接到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 ;

1 个答案:

答案 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 ;