簡體   English   中英

MS Access SQL 根據查詢更新鏈接表列

[英]MS Access SQL Update Linked table column based on query

我有一個鏈接表,我需要在其中更新現有行中的列

當我(以編程方式)執行引用 select 查詢的更新查詢時,它不起作用,但如果我執行引用填充查詢的表的相同查詢,它確實有效。 下面的例子

我找不到這是為什么。 我使用 Select 查詢進行了訪問更新查詢,並彈出錯誤“操作必須使用可更新查詢”。 我查了一下,得到了不同的解釋。 有人對此有見識嗎? 是否有關於通過引用 select 查詢來更新鏈接表的特殊規則?

UPDATE Table1, Query1 
SET Table1.Filename = Query1.Filename 
WHERE (Table1.Client = Query1.Client AND Table1.Id = Query1.Id);

UPDATE Table1, Table2 
SET Table1.Filename = Table2.Filename 
WHERE (Table1.Client = Table2.Client AND Table1.Id = Table2.Id);

要使查詢可更新,有一長串需要滿足的條件。 基本思想是查詢中的所有數據必須干凈地從 map 到一個真正的 object,在顯示時沒有計算任何內容。

主鍵 ID 在查詢中的所有表中必須是唯一且明確定義的。

Alan Browne 發布了一份清單,其中應包含您需要查找的內容。

"

為什么我的查詢是只讀的?

如果您無法編輯查詢中的數據,此列表可以幫助您確定其不可更新的原因:

  • 它有一個 GROUP BY 子句。 Totals 查詢始終是只讀的。

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

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

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

  • 它涉及一個 UNION。 聯合查詢始終是只讀的。

  • 它在 SELECT 子句中有一個子查詢。 取消選中子查詢下的顯示框,或改用域聚合 function。

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

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

  • 查詢的 Recordset Type 屬性是 Snapshot。 在查詢的屬性中將記錄集類型設置為“動態集”。

  • 該查詢基於另一個只讀查詢(堆疊查詢)。

  • 您的權限是只讀的(訪問安全。)

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

  • 該查詢調用了 VBA function,但數據庫不在受信任的位置,因此代碼無法運行。 (請參閱此 Access 2007 頁面頂部的黃色框。)

  • 查詢輸出的字段是計算字段 (Access 2010.)

"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM