2015-12-16 43 views
0

在我的表單中,我通常在記錄末尾有空行,可以添加新記錄。雖然在我的一種形式中,我沒有這個空行。訪問窗體不顯示添加新記錄(空記錄) - 記錄源是一個視圖

在閱讀了關於它的一些問題後,我的表單的記錄源是一個視圖(我不能編輯/添加記錄)。

一些背景資料:

我訪問應用程序鏈接表和視圖從我的SQL服務器。舊項目爲ADP project,在ADP項目中,您始終可以爲views設置unique table,以便您可以向其添加記錄。

很遺憾,Access 2013沒有這個功能,我通過與表格相同的方式連接視圖來解決這個問題(或者至少我認爲我是這麼做的)。對於必須進行編輯的視圖(向其中添加記錄),我將主鍵設置爲視圖字段(這些主鍵與唯一表的主鍵相同 - 從表中獲取添加/編輯記錄的表視圖)。

這似乎工作,因爲當我直接在Access中打開視圖,我可以添加記錄,並且這些記錄也被添加到連接的表(唯一表)中。

雖然就像我之前說過的那樣,我不能在視圖中直接添加記錄(不能手動添加空行或添加新記錄按鈕)。

以下stackoverflow問題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 

回答

0

首先,GROUP BY將使查詢只讀。

您可能無法刪除它,並且仍然具有按照您的預期操作的形式,因此 - 可能 - 您將不得不重新設計您的概念以及表單的運作方式。