2 votes

Comportement bizarre dans MS Access

J'ai défini trois tables, Stores, InventoryItems et StoreItemRecords. Ma table StoreItemRecords possède des colonnes de clés étrangères (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 façon dans les deux tables.

Si je lance une requête comme celle-ci :

SELECT StoreID, InventoryItemID FROM StoreItemRecords;

J'obtiens des résultats bizarres. J'obtiens : 1, Marteau 2, Boîte de clous 3, un autre nom d'article.

Donc, je reçois le StoreID, comme je le devrais. Mais j'obtiens également le NOM de l'article en stock, et non l'ID de l'article en stock. Il est également important de noter que la colonne InventoryItemID est définie comme un NUMÉRO, et non comme un TEXTE.

D'une manière ou d'une autre, Access essaie de m'aider en fournissant InventoryItemName à la place de InventoryItemID, mais je ne parviens pas à trouver la cause de ce comportement ou un moyen de l'arrêter.

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

Quelqu'un a-t-il vu un tel comportement ? Je sais que je vais me sentir vraiment stupide lorsque quelqu'un me fera remarquer la bêtise que j'ai faite pour provoquer cela, mais, à ce stade, cela vaut la peine d'être embarrassé.

Merci d'avance pour toute aide que vous pourrez apporter.

5voto

Kevin Ross Points 5312

Je parie que l'un des champs est configuré comme une "table de recherche" dans Access. Ces tables sont généralement considérées comme une fonction peu utile d'Access, destinée à aider les développeurs novices 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 cela est défini sur les champs en question. Si c'est le cas, désactivez-le et réessayez la requête.

Voici un lien qui explique pourquoi ils sont mauvais

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X