2011-04-23 29 views
0

我需要開發一個MSSQL數據庫的前端只是爲了修改幾個表。我決定僅僅因爲時間限制而使用Access 2003。 我使用ODBC上的鏈接表將它們存入Access,我正在設計表單,但我在創建接口時遇到問題,以允許用戶創建和刪除實體之間的新關聯。訪問2003 - 創建和刪除多對多關聯

我的數據庫結構爲:

product 
# productcode 
- name 

product_part 
* productcode 
* partnumber 
- position 

part 
# partnumber 
- comment 

有一個多到許多產品和部分(產品可以有許多地方和部分可以屬於很多產品)之間的關係,除了我不能找到任何簡單的方法讓用戶只需將新部件與產品關聯即可,只能查看現有部件。

我已經在Access中定義了關係,除了基數和參照完整性的選項是灰色的,我假設這是因爲它們是鏈接表?不知道這是否會影響任何東西。

我創建了一個帶有嵌入式子表單的產品表單,其中列出了所有關聯的部分及其位置(位置是關係的一個屬性,因爲它是上下文關係,但如果它能做出事情,我可以將它分散到它自己的表中更輕鬆)。

基本上我需要建立一個用戶界面機制,它將一個列表中的選定部分與顯示的產品或任何其他方式相關聯,以靈活地創建新的和刪除現有的關聯。我以爲Access會在某個嚮導的某處做某件事,但是如果它發生了,我就找不到它了。

任何幫助,將不勝感激。

回答

0

我發現我想做的事情不容易使用鏈接表,如果我使用本地訪問表(因爲它讓我正確定義關係),我可以輕鬆地做我想做的事情,但我無法用鏈接表做到這一點。

+0

呃,什麼?前端中的鏈接表繼承它們鏈接到的數據庫中的任何關係。唯一的區別是關係與鏈接表不在同一個數據庫中。 – 2011-05-07 21:33:22

+0

那麼訪問不會讓我使用任何依賴灰色功能的功能,而不是現在它很重要,我們放棄了前端解決方案的Access。 – bdxsinc 2011-06-19 08:54:03

+0

對我來說聽起來像是一個明智的決定,因爲你對Access的使用似乎並不熟悉。 – 2011-06-20 19:27:13

0

根據迄今爲止提到的情況來判斷,那麼根據您的最高表格(產品),這應該是一個簡單的問題。繼續子表單應該僅基於產品部件表。

如果你考慮這個問題,第三個表格實際上只是一個查找表,方便您不必手動輸入型號。

因此,將子子表單作爲一個連續的表單,併爲該零件編號的列創建一個從第三個表(零件)查找零件編號的組合框。所以這個組合老闆可以按照說明進行搜索和顯示,但實際上會自動將該零件號碼存儲在該列表中供您使用。

所以,雖然不需要任何類型的嚮導,但您當然不必編寫任何類型的代碼。只要確保子窗體的主子鏈接設置設置正確,訪問就會插入並維護用於鏈接回主產品表的產品代碼列。您絕對可以使用組合框嚮導在連續子窗體中創建組合框,您將使用該組合框來選擇零件表中的零件編號列和零件編號列。

結果將是一個表單,允許您添加新零件程序集或編輯現有零件。雖然訪問將爲您維護產品代碼列,但如果刪除主記錄,則需要在後端數據庫部分設置參照完整性和級聯刪除。正如您正確地指出的那樣,所有完整性功能都將設置在數據庫後端,而不是訪問前端部分。

+0

第三個表? 「部分」?重要的表格是「產品」和「零件」,「product_part」表格只是定義了兩者之間的關聯,而恰好恰好具有與該關係相關的屬性。 當基數是多對多時,我只需要制定出如何在實體A和實體B之間建立關聯,因爲嚮導創建的表單不會執行此操作,似乎只能執行一對多。 – bdxsinc 2011-04-23 15:18:38

+0

第三個表格部分僅僅是便利的表格。您構建的表單不會用於將零件添加到零件表中。表單將允許添加新產品代碼名稱,然後附加到product_parts列表(作爲子表單)。基於產品表格和連續子表格的主要表格基於product_part表格。沒有任何形式的問題需要基於稱爲零件的第三個表格。嚮導可以構建這兩種形式。對於使用組合框嚮導的部分,請繼續使用product_parts表單來獲取零件編號。完成後,將第二種形式放入主表單中。 (如果你遵循上面的話,很容易) – 2011-04-24 15:51:16

+1

Albert表示應該基於JOIN表(即product_part)和綁定到partnumber字段的組合框,並基於一條SQL語句繪製它來自零件表的數據。這是用於實現N:N關係編輯的bog標準Access設計。 – 2011-04-26 01:03:51