你可能會遇到無法在查詢資料表視圖中編輯資料以更改底層資料表資料的情況。 本文將幫助你了解何時可以編輯查詢資料,何時不能編輯查詢資料,以及如何改變查詢設計,以便編輯其底層資料。
本文內容
簡介
當你在 Datasheet 檢視中開啟查詢時,可能會發現自己想要編輯資料。 也許你發現錯誤,或是看到某些資訊已過時。 根據查詢的建立方式,你可以直接在查詢資料表中編輯資料。
如果你嘗試編輯查詢資料表的資料但沒有任何反應,或是 Windows 播放聲音但你的編輯沒有完成,那你就無法執行編輯。 也可能是查詢本身無法編輯,例如交叉表查詢。 也有可能只有你想編輯的欄位無法編輯——例如,該欄位是基於彙總函數,例如平均值。 不管怎樣,你都可能能做些什麼來啟用編輯功能。
除了在查詢資料表檢視中編輯資料外,你也可以使用更新查詢來更新資料表中的資料。 本文不涵蓋更新問題。
如需更新查詢的詳細資訊,請參閱建立與執行更新查詢一文。
通常,當你想在查詢資料表檢視中編輯資料時,你會希望變更能儲存在查詢所依據的資料表中。 如果你不想更改那些資料表中的資料,但仍想編輯資料並在完成後保留,你可以先用 make-table 查詢建立一個新的資料表,讓資料可以編輯。 你也可以用 make-table 查詢,將不允許編輯的查詢結果存成新資料表,然後再編輯該新資料表中的資料。 本文並未討論如何建立和執行製作表查詢。
欲了解更多關於 make-table 查詢的資訊,請參閱文章「 建立 make-table 查詢」。
我什麼時候可以在查詢中編輯資料?
當查詢僅基於一個資料表或兩個一對一關係的資料表時,你隨時可以編輯查詢中的資料。
注意
即使你可以編輯查詢資料,有些欄位可能無法編輯。 此類案件列於下節。
我什麼時候不能在查詢中編輯資料?
當你遇到以下情況時,你永遠無法編輯查詢中的資料:
查詢是一個交叉表查詢。
查詢是針對 SQL 的查詢。
你想編輯的欄位是計算過的欄位。 在這種情況下,你可能可以編輯其他欄位。
查詢基於三個或以上的資料表,且存在多對一多的關係。
注意
雖然此時無法編輯查詢資料表,但當表單的 RecordsetType 屬性設為 Dynaset (不一致匯報) 時,你可以編輯該表單的資料。
查詢包含一個 GROUP BY 子句。
如何?更改查詢以便編輯其資料?
下表列出無法編輯查詢的情況,並搭配方法使查詢資料表可供編輯。
| 當以下情況時,你無法編輯查詢資料表中的數值: | 為了讓查詢資料表可供編輯: |
|---|---|
| 查詢的 Unique Values 屬性設定為 「是」。 | 將查詢的 Unique Values 屬性設為 No。 請參考以下章節「 將 Unique Values 屬性設為 No」,了解如何設定此屬性。 |
| 查詢包含一個連結的 ODBC 資料庫資料表,且沒有唯一索引,或是沒有主鍵的 Paradox 資料表。 | 使用連結資料庫供應商提供的方法,為連結表新增主鍵或唯一索引。 |
| 你沒有底層資料表的更新資料權限。 | 指派更新資料權限。 |
| 查詢包含多個資料表或一個查詢,且在設計檢視中,資料表或查詢之間不會被連接線連接。 | 建立適當的連接。 請參閱「 建立連接」這一章節,了解如何建立連接點。 |
| 資料庫可以唯讀開啟,或位於唯讀磁碟機上。 | 關閉資料庫後重新開啟,但未選擇 「唯讀開啟」;或者,如果資料庫位於唯讀磁碟機上,則移除磁碟上的唯讀屬性,或將資料庫移至非唯讀磁碟機。 |
| 你嘗試更新的紀錄欄位已被刪除或被其他使用者鎖定。 | 等唱片解鎖。 鎖定紀錄一旦解鎖即可立即更新。 等待另一位使用者完成鎖定紀錄的操作。 |
| 查詢基於一對多關係的表格,而「多」側的連接欄位並非輸出欄位。 此時,連接欄位中來自「一」側的資料無法被編輯。 | 將關係中「多」側的連接欄位加入查詢輸出欄位。 請參考「 從「多」側新增連接欄位到查詢輸出欄位的章節,了解如何新增連接欄位。 |
| 從「多」側的連接欄位 (編輯資料) 後,會在「一」側。 | 按 SHIFT+F9 來提交你的變更並重新整理查詢。 |
| 在一對多關係的「一」側,表格中有一個空白欄位,且該連接是右外連接。 | 確保該領域在「單方面」有價值。 只有當「多」側的連接欄位有值時,才能編輯該欄位的「一」側。 |
| 你使用的是連結的 ODBC 資料庫資料表,且連結表唯一索引的所有欄位並非都在查詢輸出中。 | 將 ODBC 表格唯一索引中的所有欄位加到查詢輸出欄位。 請參閱「 從連結的 ODBC 表格新增獨特索引欄位」這一章節,了解如何新增欄位。 |
將 Unique Values 屬性設為 NO
- 在 [設計檢視] 中開啟查詢。
- 如果屬性 表 沒打開,按 F4 打開它。 在查詢設計網格中點擊一次,確保屬性表顯示的是查詢屬性而非欄位屬性。
- 在屬性表中,找到 「獨特值 」屬性框。 點擊旁邊的方框,點擊該方框中的箭頭,然後點選「否」。
建立連接
- 在 [設計檢視] 中開啟查詢。
- 對於你想要連接到另一個資料表或查詢的表格或查詢,將該表格或查詢的連結欄位拖曳到你想建立連接的表格或查詢中對應欄位。
欲了解更多關於建立連接的資訊,請參閱文章《 連接表與查詢》。
將「多」端的 join 欄位加入查詢輸出欄位
- 在 [設計檢視] 中開啟查詢。
- 在查詢設計器中,找到對應於相關一對多關係的連接。
- 雙擊一對多關係中「多」側的加入欄位。 連接欄位出現在欄位網格中,表示它現在是輸出欄位。
從連結的 ODBC 表格中新增唯一索引欄位
- 在 [設計檢視] 中開啟查詢。
- 在查詢設計器中,找到連結的 ODBC 資料表。
- 唯一的索引欄位會在欄位名稱旁有一個鍵符號。 雙擊尚未出現在欄位格子中的每個欄位。 每個欄位都會出現在場格中,表示它現在是輸出欄位。