【问题标题】: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 列中的名称。
  • 考虑编辑问题以包含它。这样就不会重复了。

标签: ms-access


【解决方案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 ;

【讨论】:

  • 非常感谢您!再次抱歉我的问题不清楚!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2018-08-01
  • 1970-01-01
相关资源
最近更新 更多