2012-03-19 42 views
1

因此,這個問題的根源可能在於數據庫設計不佳,這種設置的一些方式是從舊版本繼承的。我只是想不出一個更好的方法來做到這一點。訪問VBA避免與主鍵衝突時向鏈接表添加記錄

我有四個表由相同的字段鏈接:[OBJECTID]。每個表都鏈接到控制數據的訪問表單。這些表格是獨立的,因爲數據是地理引用的,需要單獨映射,但是默認情況下它們會相互繼承幾個字段。

大多數情況下,這些表格處於一對一對一的關係,但有時候,只有第一個表格的數據,並且偶爾只有數據第二,第三和第四種形式。

現在,第一個表中的[OBJECTID]字段被設置爲數據類型自動編號,以便其他表中的所有後續鏈接記錄都可以繼承該編號。對於沒有通過Form1輸入Tbl1中的記錄的情況,僅分配一個與當前號碼不衝突的號碼就很容易了,但是如何避免分配可能與將來產生的[OBJECTID]衝突的號碼由Tbl1中的自動編號字段?

對不起,如果這是混亂!在此先感謝幫助我認真考慮這一點....

回答

0

如果設計是正確的,則應該與tbl1和表2/3/4之間的參照完整性有關係。既然你提到occasionally, there is only data for the second, third and fourth form這意味着我們在這裏沒有參照完整性: - /。

我將識別所有4個表共用的字段,並用這些表創建一個「主」表,這意味着主表必須填寫。然後你創建一個1到0,1的關係到其他4個表,外部連接,他們的PK beeing然後一個長整數。

對於表單1到4的來源,請在MainTable和T1/2/3/4之間使用外部聯接。 「子表」將繼承主表的PK。

希望我不太模糊。

+0

是的,這是絕對有道理的。我將製作一個只有一個字段的主表,其中所有其他字段的自動編號爲OBJECTID。謝謝! – mizmay 2012-03-19 20:58:25

+0

不,實際上我最終創建了一個表,它存儲了最後分配的號碼並跟蹤了OBJECTID,而不是自動編號。然後創建一個全局函數來分配它,如下所示:http://www.techonthenet.com/access/modules/sequential_nbr.php – mizmay 2012-03-19 21:14:38

+0

如果您需要加入4個子表格,MainTbale概念會更容易,特別是因爲Jet並不容易擁有完整的外連接。 – 2012-03-20 06:53:21