簡體   English   中英

訪問表單無法傳遞視圖的主鍵(到 SQL 服務器)

[英]Access form fails to pass primary key of a view (to SQL server)

背景 - 設置:

  1. SQL 服務器表 (5)
  2. 在相同的表上查看,其中 Address 表的 ID 實際上是視圖的 PK
  3. INSTEAD OF 在視圖上觸發插入、更新和刪除
  4. INSTEAD OF UPDATE 觸發器檢查 4 個基表中的記錄,如果它不存在則創建它(更多背景:這解決了視圖更新失敗的問題,因為並非所有 5 個基表都有記錄)
  5. 使用鏈接表訪問 db 到 5 個表和視圖本身
  6. 顯示並允許編輯視圖的訪問表單

問題:表單中記錄的編輯失敗,因為地址表的 ID 作為 NULL 傳遞。 “無法將 NULL 值插入列...” 這來自上面描述的 INSTEAD OF UPDATE 觸發器。

為了解決這個問題,表單似乎必須在更新時將地址表的 PK 傳遞給視圖。 盡管在 Access 的鏈接表中顯示了 PK,但它並沒有被傳遞。

讓 Access 表單將視圖的 PK 傳遞給視圖中記錄的任何和所有更新需要什么?

我會采用不需要子記錄的設計。 (在查詢中使用左連接)。

在 Access 中編輯相關數據往往表明每個表單都基於一個表。 如果您將焦點從主窗體移動到子窗體,Access 會自動保存主記錄。

客戶沒有發票或沒有預訂旅行的事實應該無關緊要。 因此,大多數設計建議子記錄不應存在,因此,對此類數據的大多數查詢將是左連接。 這種方法將節省大量的工作。 我會嘗試避免對包含多個表的 sql 進行更新。 作為一般規則,每個表單都應該直接基於一個鏈接表。 如果用戶需要添加子記錄,則提供具有允許此操作的正確子表單的 UI。 結果是每個表單(和子表單)只更新一張表。

暫無
暫無

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

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