Sql server 访问表单没有';t显示添加新记录(空记录)-Recordsource是一个视图

Sql server 访问表单没有';t显示添加新记录(空记录)-Recordsource是一个视图,sql-server,forms,ms-access,view,Sql Server,Forms,Ms Access,View,在我的表单中,我通常在记录的末尾有一个空行,我可以用它添加一个新记录。虽然在我的表格中,我没有这条空行 在阅读了一些关于它的问题后,我的表单的记录源可能与视图有关(我无法编辑/添加记录) 一些背景: 我的access应用程序已从我的SQL server链接了表和视图。旧项目是一个ADP项目,在ADP项目中,您始终可以为视图设置一个唯一表,以便向其中添加记录 不幸的是,Access 2013没有这个功能,我通过以与表相同的方式链接视图修复了这个问题(或者至少我认为我做到了)。对于必须编辑的视图(向

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

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

一些背景:

我的access应用程序已从我的SQL server链接了表和视图。旧项目是一个
ADP项目
,在ADP项目中,您始终可以为
视图
设置一个
唯一表
,以便向其中添加记录

不幸的是,Access 2013没有这个功能,我通过以与表相同的方式链接视图修复了这个问题(或者至少我认为我做到了)。对于必须编辑的视图(向其中添加记录),我将主键设置为视图字段(这些主键与唯一表的主键相同,即从视图中添加/编辑记录的表)

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

尽管如我之前所说,在表单中,我不能添加记录(不能手动使用空行或添加新记录按钮),而我可以直接在视图中添加记录

下面的stackoverflow问题:让我想知道答案()中提供的列表是否仍然有效/如果您可以直接在视图中添加记录,则可能与我的视图有关(因为它包含一个
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

首先,
groupby
将使查询为只读

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