MS Access 子表单数据条目在插入 SQL 时被锁定

Posted

技术标签:

【中文标题】MS Access 子表单数据条目在插入 SQL 时被锁定【英文标题】:MS Access sub-form data entry locked on inserting SQL 【发布时间】:2017-09-17 13:32:55 【问题描述】:

当我插入以下 SQL 字段时,我无法将任何条目编码到主表单上的子表单数据网格。如果我删除此列,系统允许我创建新的数据记录。有人可以看看这个问题吗!

预付款余额

(SELECT SUM(NZ(T1.AdvancePayment,0)-
            NZ(([GrossInv-WorksCertified-61110]*
            [SubCon-BasicInfo].[Advance-409130-%]/100),0)) 
   FROM [InvoiceMaster] AS T1 
  WHERE T1.[SubConName]=[InvoiceMaster].[SubconName] 
    AND T1.[ID]<=[InvoiceMaster].[ID])

【问题讨论】:

【参考方案1】:

在查询中使用计算会使基础记录集不可更新。 请参阅this question 了解为什么查询(以及基于它们的表单)有时不可更新的出色列表。

在数据表表单中包含计算的正确方法是在设计视图中打开它,向其中添加一个新的文本框控件,然后将控件控件源设置为等于 = 等号,后跟您的计算。

您还需要将子查询重写为域聚合或使用组合框来使用查询。

重写示例: DSUM("NZ(InvoiceMaster.AdvancePayment,0)- NZ(([GrossInv-WorksCertified-61110]*[SubCon-BasicInfo].[Advance-409130-%]/100),0)", "InvoiceMaster", "[SubConName] = """ &amp; [InvoiceMaster].[SubconName] &amp; """ AND ID = " &amp; [InvoiceMaster].[ID])

【讨论】:

我按照您的建议尝试了。但是文本框给了我“#Name?”有什么解决方法吗? 查看编辑。也许最简单的方法是将查询分配给组合框,然后确保组合框选择第一个值。 很好地尝试了您的建议,但未能成功。能否请您告诉我如何默认选择第一个值。 见this page

以上是关于MS Access 子表单数据条目在插入 SQL 时被锁定的主要内容,如果未能解决你的问题,请参考以下文章

将 MS-Access 表单结果导出到 Excel?

在 MS Access 数据表子表单中导航和更新

MS Access VBA - 在数据表子窗体中显示动态构建的 SQL 结果

MS Access 2010:未绑定的组合框不会更新

MS access运行SQL不插入数据,没有错误

MS Access 中的多行插入语句