在我的表單中,我通常在記錄末尾有空行,可以添加新記錄。雖然在我的一種形式中,我沒有這個空行。訪問窗體不顯示添加新記錄(空記錄) - 記錄源是一個視圖
在閱讀了關於它的一些問題後,我的表單的記錄源是一個視圖(我不能編輯/添加記錄)。
一些背景資料:
我訪問應用程序鏈接表和視圖從我的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