2015-10-20 78 views
-5

enter image description here爲什麼我的MS Access查詢不可更新

傢伙嗨,

這一直困擾着我爲晚。 Access表示此查詢不可更新。我怎樣才能得到這個更新?

當我刪除tblMasterContracts1時,它是可更新的,但這不符合我的目標。這是關係數據庫的侷限性嗎?

SQL:

SELECT tblBuildings.[Building Address] 
FROM (tblBuildings INNER JOIN (tblContacts 
    INNER JOIN tblContactsBuildings ON tblContacts.ContactID = tblContactsBuildings.ContactID) 
     ON tblBuildings.BuildingID = tblContactsBuildings.BuildingID) 
    INNER JOIN tblMasterContracts1 ON tblBuildings.BuildingID = tblMasterContracts1.BuildingID; 
+2

查詢的圖片沒用。顯示ACTUAL sql –

+0

這不是一個查詢,這是一個ER圖。即使它是一個查詢,你也必須解釋「不可更新」。 – patricksweeney

+1

@patricksweeney:訪問用戶知道「不可更新」意味着什麼(來自痛苦的體驗)。 – Heinzi

回答

0

Allen Browne組成,使查詢不可更新的情況的列表:

  • 它有一個GROUP BY子句。總計查詢總是隻讀的。

  • 它有一個TRANSFORM子句。交叉表查詢始終是隻讀的。

  • 它使用SELECT子句中的First(),Sum(),Max(),Count()等。聚合記錄的查詢是隻讀的。

  • 它包含一個DISTINCT謂詞。在查詢的屬性中將唯一值設置爲否。

  • 它涉及一個聯盟。聯合查詢總是隻讀的。

  • 它在SELECT子句中有一個子查詢。取消選中子查詢下的Show框,或使用域聚合函數。

  • 它在FROM子句的多個表上使用不同方向的JOIN。刪除一些表格。

  • JOIN中的字段未正確編入索引:JOINed字段中沒有主鍵或唯一索引。

  • 查詢的記錄集類型屬性是快照。在查詢的屬性中將記錄集類型設置爲「動態集」。

  • 查詢是基於是隻讀的另一個查詢(堆疊查詢。)

  • 你的權限是隻讀(訪問的安全性。)

  • 該數據庫以只讀方式打開,或者文件屬性是隻讀的,或者數據庫位於只讀介質上(例如CD-ROM,沒有寫權限的網絡驅動器)。

  • 查詢調用VBA函數,但數據庫不在一個值得信賴的位置,所以代碼無法運行。 (見的黃色框在此訪問2007頁的頂部。)

  • ,查詢輸出Calcluated領域(Access 2010中)的字段

(從http://allenbrowne.com/ser-61.html引用。)

正如您所看到的,這些條件無法通過單獨查看ER圖來驗證。作爲一種調試手段,我建議從查詢中刪除表並重新添加它們,直到查詢變爲不可更新。一旦發生這種情況,請檢查上面列表中您添加的表格。

+0

謝謝,我知道這個列表。只有第七點可能適用於我的查詢。你認爲什麼是一個很好的解決方法? –

0

這就是一個:在

的字段JOIN不正確索引:有在連接字段沒有主鍵或唯一索引。

你有1:N的3間關係左的表格,但沒有明確的關係tblMasterContracts1

所以你應該定義從tblMasterContracts1tblBuildings的外鍵。

此外,tblContactsBuildings應該有一個複合主鍵ContactIDBuildingID