2010-08-27 26 views
2

我已經定義了三個表Stores,InventoryItems和StoreItemRecords。我的StoreItemRecords表具有「指向」商店(StoreID)和InventoryItems(InventoryItemID)記錄的主鍵的外鍵列(StoreID,InventoryItemID)。列之間的列名稱相同。MS Access中的奇怪行爲

如果我運行這樣的查詢:

SELECT StoreID, InventoryItemID FROM StoreItemRecords; 

我得到一些奇怪的結果。我得到: 1,錘子 2,盒子釘子 3,其他一些項目名稱。

所以,我得到StoreID,因爲我應該。但是我也獲取庫存物料的名稱,而不是庫存物料的ID。此外,重要的是要注意,InventoryItemID列被定義爲NUMBER,而不是TEXT。

因此,不知何故,Access試圖通過提供InventoryItemName來代替InventoryItemID來幫助我,但我似乎無法找到導致此行爲或阻止它的任何方法。

[還有一個註釋。我已經寫了一些VBA代碼來填充StoreItemRecords表,並且在調試模式下,我可以「觀察」分配給該列的InventoryItemID值,並且我已驗證這些ID實際上正在放在那裏。]

有沒有人看過像這樣的行爲?我知道當有人指出我正在做這件事情時,我會感到非常愚蠢,但在這一點上,這是值得尷尬的。

在此先感謝您提供的任何幫助。

回答

5

我的錢在其中一個字段被設置爲訪問中的「查找表」。這些通常被認爲是不太有用的訪問功能,試圖幫助新手開發人員很難掌握數據庫的工作原理。

如果您在設計模式下進入表格,您應該能夠驗證是否在相關字段上設置了該值。如果將其關閉,並嘗試再次查詢

這是爲什麼他們是邪惡的

http://www.mvps.org/access/lookupfields.htm

+0

+1的鏈接他們是相當可怕的:) – Fionnuala 2010-08-27 10:40:37

+0

你的錢將已見成效。在發佈我的問題後,我注意到了Lookup業務,只是通過幫助文件瞭解如何關閉它。 我沒有明確創建查找字段。我相信Access在創建一個表單時使用了這個字段......我會在我去的時候解決這個問題。 非常感謝您的幫助。對於想要「幫助」我的數據庫軟件來說很奇怪。 ;-) – rogdawg 2010-08-27 13:23:35