MS Access UPDATE查询失败,因为查询不是可更新的

哈维·法国

我想使用MS Access SQL更新tblBillingPlan具有ID主键的我想db_FeeType用我按查询分组计算的值来更新该字段

FROM子句引用qryGIT,它返回两列ID和FeeType。每个ID仅返回一行。

UPDATE tblBillingPlan 
SET tblBillingPlan.db_FeeType = 
( SELECT MAX(GI.FeeType)
   FROM qryGIT AS GI
  WHERE GI.id=tblBillingPlan.ID
  GROUP BY GI.ID
);

当我运行时,出现错误“查询不可更新”。我该如何解决?

我最初尝试:

 UPDATE tblBillingPlan 
SET tblBillingPlan.db_FeeType = 
( SELECT GI.FeeType
   FROM qryGIT AS GI
  WHERE GI.id=tblBillingPlan.ID
);

这是...的定义 qryGIT

SELECT Billing_plan.id
     , Billing_plan.name
     , IIf(Max([Fee]) Is Null Or Max([Fee])=Min([Fee])
          ,Max([Fee])
          ,"BP has BP Fee rows with different fee types") AS FeeType

FROM Billing_plan 
     LEFT JOIN Billing_plan_fee 
            ON Billing_plan.id = Billing_plan_fee.billing_plan_id

GROUP BY Billing_plan.id, Billing_plan.name;

请注意,Billing_plan_fee最多将有四行与给定的Billing_plan.id相匹配。

我还尝试使用TOP修饰符仅返回一行,这没有什么区别

UPDATE tblBillingPlanCPLAD 
SET tblBillingPlanCPLAD.FeeType = 

( SELECT TOP 1 GI.FeeType    -- TOP 1 made no differentce
   FROM GITAS GI
  WHERE GI.id=tblBillingPlan.ID
);

我将使用DAO记录集来执行此操作,但是我确定我曾经写过可以在Oracle和SQL Server中执行此操作的SQL。我很生锈

汉素

当Access抱怨不可更新时,Access Domain Aggregate函数可以提供帮助UPDATE在这种情况下,请使用DMax

UPDATE tblBillingPlan AS bp
SET bp.db_FeeType = 
    DMax(
        'FeeType',
        'qryGIT',
        'id=' & bp.ID
    );

但是,它DMax是特定于Access的,因此在Oracle或SQL Server中将无法使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Access中的“操作必须使用可更新的查询”错误

来自分类Dev

MS Access中的“操作必须使用可更新的查询”错误

来自分类Dev

必须是 MS Access 中的可更新查询错误

来自分类Dev

更新 MS Access 查询?

来自分类Dev

MS Access直通查询更新

来自分类Dev

SELECT查询中的MS Access“此记录集不可更新”

来自分类Dev

MS Access查询语法

来自分类Dev

MS Access:查询

来自分类Dev

ms access - 查询空行

来自分类Dev

在查询中查询?(MS Access)

来自分类Dev

MS Access sql - 更新查询语法

来自分类Dev

MS Access - 更新 SQL 查询错误 3061

来自分类Dev

MS Access SQL插入查询

来自分类Dev

MS Access 2013查询条件

来自分类Dev

MS Access SELECT查询DatePart

来自分类Dev

MS Access查询多个条件

来自分类Dev

MS Access查询中的性能

来自分类Dev

MS-Access查询参数

来自分类Dev

MS Access多联接查询

来自分类Dev

MS Access查询多个条件

来自分类Dev

MS Access查询中的性能

来自分类Dev

MS Access VBA 运行查询

来自分类Dev

Ms Access 查询以获取总和

来自分类Dev

MS Access 加入子查询

来自分类Dev

MS Access,更新查询不会更新链接表

来自分类Dev

在MS Access中访问数据库时更新查询

来自分类Dev

使用选择查询数据MS Access更新特定的表列

来自分类Dev

在MS-ACCESS中使用“查找”表进行更新查询

来自分类Dev

更新查询从 MS Access 到 Oracle 的多个连接