访问表单不显示添加新记录(空记录) - Recordsource 是一个视图

Posted

技术标签:

【中文标题】访问表单不显示添加新记录(空记录) - Recordsource 是一个视图【英文标题】:Access Form doesn't display the add new record (empty record) - Recordsource is a View 【发布时间】:2015-12-16 12:02:35 【问题描述】:

在我的表单中,我通常在记录末尾有一个空行,我可以使用它添加新记录。虽然在我的一种形式中,我没有这个空行。

在阅读了一些关于它的问题后,可能与我的表单的记录源是一个视图(我无法编辑/添加记录)有关。

一些背景:

我的访问应用程序具有来自我的 SQL 服务器的链接表和视图。旧项目是ADP project,而在ADP 项目中,您始终可以为views 设置unique table,以便向其中添加记录。

遗憾的是,Access 2013 没有此功能,我通过以与表格相同的方式链接视图来解决此问题(或者至少我认为我做到了)。对于必须编辑的视图(向其中添加记录),我将主键设置为视图字段(这些主键与唯一表的主键相同 - 从表中添加/编辑记录的表看法)。

这似乎有效,因为当我直接在 Access 中打开视图时,我可以向其中添加记录,并且这些记录也被添加到连接表(唯一表)中。

虽然我之前说过,在表单中我不能添加记录(不能手动使用空​​行或添加新记录按钮),而我可以直接在视图中添加。

以下 *** 问题:Microsoft Access form - cannot add new record 让我想知道答案中提供的列表 (http://allenbrowne.com/ser-61.html) 是否仍然有效/您可以直接在视图中添加记录的情况,因为它可能有与我的观点有关(因为它包含一个GROUP BY,它也被列为导致它只读)。如果是这样,我认为问题是什么,只是GROUP BY 还是其他问题?

有问题的观点:

SELECT dbo.tblInkreg.becode, dbo.tblInkreg.ionummer, dbo.tblInkreg.iovolgnr, dbo.tblInkreg.ioregel, dbo.tblInkreg.arcode, dbo.tblInkreg.eenhedenbesteld, dbo.tblInkreg.eenheidbesteld, dbo.tblInkreg.aantalbesteld, 
                  dbo.tblInkreg.eenhedengeleverd, dbo.tblInkreg.eenheidgeleverd, dbo.tblInkreg.aantalgeleverd, dbo.tblInkreg.crArtNr, dbo.tblInkreg.aromschrijving, dbo.tblInkreg.stukprijs, dbo.tblInkreg.prijs, dbo.tblInkreg.irbtwcode, 
                  dbo.tblInkreg.type, dbo.tblInkreg.bocheckedtmpacc, dbo.tblInkreg.regellevdat, dbo.tblInkreg.plandat, sub.voorraad - sub.gereserveerd AS vrijevoorraad, a.arLocatie, dbo.tblInkreg.verpakbelastprijs, a.arPALocatie
FROM     dbo.tblInkreg LEFT OUTER JOIN
                  dbo.tblPLInkoop ON dbo.tblInkreg.becode = dbo.tblPLInkoop.becode AND dbo.tblInkreg.arcode = dbo.tblPLInkoop.ArCode AND dbo.tblPLInkoop.Prioriteit = 1 LEFT OUTER JOIN
                  dbo.tblArtikelEenheden ON dbo.tblInkreg.arcode = dbo.tblArtikelEenheden.arcode AND dbo.tblInkreg.eenheidbesteld = dbo.tblArtikelEenheden.eenheid LEFT OUTER JOIN
                      (SELECT dbo.tblArtikel.arcode, ISNULL(SUM(dbo.tblVoorraadMutaties.besteld), 0) AS inbestelling, ISNULL(SUM(dbo.tblVoorraadMutaties.voorraad), 0) AS voorraad, 
                                         ISNULL(SUM(dbo.tblVoorraadMutaties.gereserveerd), 0) AS gereserveerd
                       FROM      dbo.tblArtikel LEFT OUTER JOIN
                                         dbo.tblVoorraadMutaties ON dbo.tblArtikel.arcode = dbo.tblVoorraadMutaties.arcode
                       WHERE   (dbo.tblArtikel.isvrdart = 1)
                       GROUP BY dbo.tblArtikel.arcode) AS sub ON dbo.tblInkreg.arcode = sub.arcode LEFT OUTER JOIN
                  dbo.tblArtikel AS a ON sub.arcode = a.arcode

【问题讨论】:

【参考方案1】:

首先,GROUP BY 将使查询变为只读。

您可能无法删除它,但仍让表单按预期运行,因此 - 很可能 - 您将不得不重新设计您的概念以及表单的运行方式。

【讨论】:

以上是关于访问表单不显示添加新记录(空记录) - Recordsource 是一个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱在子表单末尾添加新记录?

访问记录集(从 2 列)到 Word 模板(或空文档)

访问:下拉菜单在连续子表单的第一条记录中不显示值

什么基于可空表单字段的访问查询条件将返回我需要的内容?

空formset传递验证但不保存记录

使用组合框切换记录时访问显示第一条记录