【问题标题】:Query with subquery is not updateable. Is there a work-around?带有子查询的查询不可更新。有解决办法吗?
【发布时间】:2019-12-27 22:59:35
【问题描述】:

我正在使用 Microsoft Access 中的数据库,这是我正在尝试寻找解决方案的场景:

公司发送申请以申请更多容量。应用程序可以包含多个较小的容量,这些容量加起来就是应用程序的总容量。应用程序存储在表 tApplication 中,与应用程序关联的容量存储在 tCapacity 中。

我希望提供有关应用程序的信息,包括总容量。因此,我有一个包含以下数据源的表单:

SELECT tApplication.ID,tApplication.CompanyID, tApplication.statusID,
(SELECT SUM(tCapacity.Capacity) FROM tCapacity WHERE tApplication.ID = tCapacity.ApplicationID) AS TotalCapacity
FROM tApplication;

此查询为我提供了我需要的信息,但它妨碍我编辑记录集中的任何内容(使用子查询显然会使您的查询在 Microsoft Access 中不可更新)。有没有解决的办法?我一直在尝试将应用程序和容量存储在同一张表中的想法,但我不确定这是一个好的设计选择。

【问题讨论】:

  • 选项: 1) DSum() 查询或文本框中的域聚合函数; 2) 子窗体; 3) 列表框。
  • 以子表单显示第二个表 - 毕竟,这看起来是要添加或更改的数据。因此您的主窗体可以显示信息,但在子窗体中您可以显示子表的行以进行编辑或添加新行。
  • 发布您找到的解决方案作为答案并接受它,以便对其他人有用。

标签: sql database ms-access recordset


【解决方案1】:

我使用了 DSUM(),效果很好。感谢 June7。

SELECT tApplication.ID,tApplication.CompanyID, tApplication.statusID,
DSUM( "tCapacity.Capacity" , "tCapacity", "tCapacity.ApplicationID = " & tApplication.ID) AS TotalCapacity
FROM tApplication;

【讨论】:

    【解决方案2】:

    试试这两个选项:

    进行表查询 Make-Table 查询就像 Select 查询一样,只是它们的结果被放入一个新表而不是数据表视图中。您指定表名并创建它。如果表存在,则将其替换。要创建 Make-Table 查询,请在设计模式下打开查询 (qryCustomerSales),然后从 Query 菜单中选择 Make-Table Query

    使用附加查询而不是生成表查询 生成表查询的替代方法是追加查询。附加查询允许您将查询中的记录插入到现有表中。如果您只有一步过程,通常没有太大区别。但是,如果您有多个步骤,附加查询具有明显的优势。

    更多信息: https://www.fmsinc.com/MicrosoftAccess/query/non-updateable/index.html#Example2

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多