访问选择查询记录集不可更新
Posted
技术标签:
【中文标题】访问选择查询记录集不可更新【英文标题】:Access Select Query recordset not Updateable 【发布时间】:2018-05-17 09:36:11 【问题描述】:我有一个链接到 Sql Server 的 Access 2010 表单,我正在使用一个可以正常工作的选择查询,直到我添加了一个内部联接,然后该字段变得无法更新(记录集不可更新)这是我的查询正在使用但无法检查字段 Yes(这是一个复选框),如果我删除内部连接它可以工作。 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 ;
【问题讨论】:
我已经阅读了一些关于这方面的内容,但是经过数小时的尝试得到我的结果后我仍然无法做到,这是否意味着我想要做的事情是不可能的?谢谢 嗯...你实际上并没有告诉我们你想做什么。我们不能神奇地使这个查询可更新,不。但是你没有从 TblB 中选择任何东西,所以我不知道你为什么在那里。 对不起,没有解释,列 nm 中可以有多个名称,因此要获取最新名称,我使用带有 max 的内部连接来给我最新名称,否则它将同时显示nm 列中的名称。 考虑编辑问题以包含它。这样就不会重复了。 【参考方案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 ;
【讨论】:
非常感谢您!再次抱歉我的问题不清楚!以上是关于访问选择查询记录集不可更新的主要内容,如果未能解决你的问题,请参考以下文章
由 INNER JOIN-ing 3 个表产生的记录集不可更新
SELECT 查询中的 MS Access“此记录集不可更新”