2017-10-10 52 views
0

我已經把我的情況記錄源到SQL Server視圖。現在當我打開它當我在MS Access窗體的記錄源是SQL Server上,觀點是不可更新

DoCmd.OpenForm "frmDocuments", WhereCondition:=varWhere 
Forms!frmDocuments.SetFocus 

它將被打開,但它是不可更新的。我想知道,這是正常的嗎?我們在Access窗體中打開的每個視圖都不可更新。

我在網上讀如果我創建唯一索引視圖將是可更新的。

現在,當我試圖創建視圖索引使用此代碼

CREATE UNIQUE CLUSTERED INDEX i_Documents 
    ON qryDocuments([Owner Document Number]) 

我得到一個錯誤

「的模式束縛」

然後我嘗試創建視圖與模式結合時,收到錯誤

無法綁定架構視圖「測試」,因爲名稱「tblDiscipline」是架構綁定無效。名稱必須採用兩部分格式,而對象不能自行引用。

我已經使用的代碼如下圖所示:

CREATE VIEW qryDocuments 
WITH SCHEMABINDING 
AS 
    SELECT 
     tblDocuments.[Owner Document Number], tblDocuments.[Sazeh Document 
    Number], 
     tblDocuments.[Document Title], tblDocuments.[Project No], 
     tblDocuments.Originator, tblOriginator.[Originator Des], 
     tblDocuments.Zone, tblDocuments.Unit, tblDocuments.Discipline, 
     tblDiscipline.DiscDesc, tblDocuments.[Document Type], 
     tblDocumentType.[TYPE Description], tblDocuments.SheetNumber 
    FROM 
     tblDiscipline 
    RIGHT JOIN 
     ((tblDocumentType 
    RIGHT JOIN 
     tblDocuments ON tblDocumentType.TYPE = tblDocuments.[Document Type]) 
    LEFT JOIN 
     tblOriginator ON tblDocuments.Originator = tblOriginator.Originator) 
     ON tblDiscipline.DiscCode = tblDocuments.Discipline 
    GO 

請幫助 - 我該如何解決這個問題?

回答

1

讓我們從文本查詢牆的一些格式開始。注意我是如何使用alises這大大減少了代碼量,使得它容易得多,看看是怎麼回事。這些連接是別的。左右梳理這種模式表示這是由查詢工具編寫的。

SELECT d.[Owner Document Number] 
    , d.[Sazeh Document Number] 
    , d.[Document Title] 
    , d.[Project No] 
    , d.Originator 
    , o.[Originator Des] 
    , d.Zone 
    , d.Unit 
    , d.Discipline 
    , dis.DiscDesc 
    , d.[Document Type] 
    , dt.[TYPE Description] 
    , d.SheetNumber 
FROM tblDiscipline dis 
RIGHT JOIN tblDocuments d ON dis.DiscCode = d.Discipline 
RIGHT JOIN tblDocumentType dt ON dt.TYPE = d.[Document Type] 
LEFT JOIN tblOriginator o ON d.Originator = o.Originator 

現在,你實際上可以讀此查詢的錯誤消息是很清楚。具體看這部分。 「名稱必須採用兩部分格式」。如果不指定對象的模式,則無法架構綁定視圖。您可能需要查看這裏的文檔。 https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql在約「可更新視圖」的部分具體地看。

+0

謝謝,previouse問題解決了,但我得到錯誤「對於具有外連接的視圖無法創建索引它必須是內連接」現在我更改爲內連接並可以更新我的表單中的查詢。但我有一個問題,有沒有辦法創建索引與外連接視圖? –

+0

不,它不能有外連接。這點考慮一下吧。您將要求查詢引擎更新視圖中的某一行,但您正在更新的列實際上並不存在,因爲它在表中,如果來自左側表中的連接。在嘗試做事情時,您應該再次查看文檔。這裏是創建索引視圖的文檔。 https://docs.microsoft.com/en-us/sql/relational-databases/views/create-indexed-views –