2010-08-27 7 views
2

J'ai défini trois tables, Stores, InventoryItems et StoreItemRecords. Ma table StoreItemRecords contient des colonnes de clé étrangère (StoreID, InventoryItemID) qui «pointent vers» les clés primaires des enregistrements Stores (StoreID) et InventoryItems (InventoryItemID). Les colonnes sont nommées de la même manière entre les tables.Comportement bizarre dans MS Access

Si je lance une requête comme ceci:

SELECT StoreID, InventoryItemID FROM StoreItemRecords; 

-je obtenir des résultats bizarres. Je reçois: 1, marteau 2, boîte de clous 3, un autre nom d'article.

Donc, je reçois le StoreID, comme je devrais. Mais j'obtiens aussi le NOM de l'article en stock, pas l'ID de l'article en stock. En outre, il est important de noter que la colonne InventoryItemID est définie comme NUMBER et non comme TEXT. Donc, d'une manière ou d'une autre, Access tente de m'aider en fournissant le nom InventoryItemName à la place de InventoryItemID, mais je n'arrive pas à trouver la cause de ce comportement ou de quelque façon que ce soit de l'arrêter.

[une note de plus. J'ai écrit du code VBA pour remplir la table StoreItemRecords et, en mode débogage, je peux "regarder" les valeurs InventoryItemID assignées à la colonne, et j'ai vérifié que les ID sont réellement mis là.]

Est-ce que quelqu'un a vu un comportement comme celui-ci? Je sais que je vais me sentir vraiment stupide quand quelqu'un me fait remarquer la chose loufoque que je fais pour causer cela mais, à ce stade, cela en vaut la peine.

Merci d'avance pour toute aide que vous pouvez fournir.

Répondre

5

Mon argent est sur l'un des champs en cours d'installation en tant que "table de recherche" dans l'accès. Ceux-ci sont généralement considérés comme une caractéristique d'accès peu utile pour aider les développeurs débutants qui ont du mal à comprendre le fonctionnement d'une base de données.

Si vous allez dans la table en mode conception, vous devriez être en mesure de vérifier si elle est définie dans les champs en question. Si elle est éteindre et essayer à nouveau la requête

Voici un lien sur pourquoi ils sont mal

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

+0

+1 Ils sont assez horribles – Fionnuala

+0

:) Votre argent aurait payé. J'ai remarqué l'activité Lookup après avoir posté ma question, et j'ai parcouru les fichiers d'aide pour apprendre comment l'éteindre. Je n'ai pas créé explicitement le champ de recherche. Je crois qu'Access l'a créé quand j'ai utilisé ce champ dans un formulaire ... Je vais le comprendre au fur et à mesure. Merci beaucoup pour votre aide. C'est bizarre de traiter avec un logiciel de base de données qui veut "m'aider" tellement. ;-) – rogdawg