2012-04-18 70 views
1

我已經創建了一個顯示用戶詳細信息的表單,數據已被分成三個表(table1,table2,table3) table1有foriegn鍵鏈接到其他表格當涉及3個表時,在表單中創建新記錄

當只插入table1時,默認的上一個,下一個和新的記錄選擇器工作正常。但是在插入其他兩個表後,表單無法創建新記錄。

我相信它是因爲table2和table3試圖鏈接到table1中的foriegn鍵。

當按下「新記錄」時,它返回一個「你不能去指定的記錄。」

回答

1

正如一位用戶已經指出的那樣,存儲過程(如果可用)絕對是製作多表項和編輯的首選方式。這基本上是一個交易,交易通常允許你在遇到錯誤時回滾。

Access 2010 has stored procedure capabilities內置到數據庫引擎中,但Access的先前版本沒有。其他流行的數據庫服務器(如SQL Server和MySQL)也具有存儲過程功能。要在其中一個數據庫中運行/調用存儲過程,您必須使用傳遞查詢或使用ADO。

訪問在表單級別上有一個選項可以將您的Recordset Type更改爲Dynaset Inconsistent Updates。這允許表單忽略查詢中的關係,這是您記錄集的基礎,但您的關係窗口中定義的任何關係仍將受到尊重。你可以看到一個討論,在這裏:http://www.utteraccess.com/forum/Dynaset-Inconsistent-Upd-t1664392.html

正如在討論中指出,我還設計我的數據錄入表格,以便它們是建立在只即使我使用查詢單個表。然後,我使用子表單處理相關表中的數據。我認爲這在MS Access中是非常標準的設計實踐。在.NET等環境中設計的軟件可能更容易違反此規定,因爲開發人員通常不得不爲所有CRUD操作編寫代碼。這給開發者更大的靈活性。

+0

謝謝!那就是我正在尋找的東西。 – Imran 2012-04-19 00:01:22

0

我不確定你使用的是什麼控件,但是我推薦爲crud操作編寫存儲過程。這是更新多個表的好方法