2017-09-13 5 views
1

Je voudrais recréer quelques requêtes Access existantes dans une nouvelle base de données afin de pouvoir les modifier un peu. Le problème que je rencontre est que certaines des tables interrogées ne semblent pas exister dans la base de données actuelle. Ces tables se terminent tous avec un 1.La requête d'accès s'exécute sur une table qui n'existe pas dans la base de données

Par exemple, INV_MTL_ITEM_LOCATIONS est une table importée dans la base de données, mais INV_MTL_ITEM_LOCATIONS_1 est interrogé, même si elle ne se présente pas dans le panneau tables à gauche.

Est-ce un type de fonctionnalité de duplication que je ne connais pas? La requête s'exécute sans aucune erreur.

Répondre

2

Non, la requête s'exécute sur une table d'alias. En fait, il suffit d'interroger INV_MTL_ITEM_LOCATIONS

En utilisant SQL, vous pouvez créer un alias pour une table. Cela est particulièrement utile lorsque vous interrogez la même table deux fois dans une requête, mais que vous l'utilisez généralement pour raccourcir les requêtes.

Votre requête sera probablement ressembler à quelque chose comme ceci:

SELECT something 
FROM INV_MTL_ITEM_LOCATIONS AS INV_MTL_ITEM_LOCATIONS_1 

Access crée automatiquement ces alias lorsque vous utilisez le générateur de requêtes et si vous ajoutez la même table plus d'une fois. Lors de la suppression de la table sans alias, l'autre reste aliasé.

Ceci est tout à fait normal, et pour autant que je sache, jamais un problème.

0

La réponse d'Erik l'explique parfaitement.
Mais pour être exhaustif, vous pouvez réellement créer une requête sur une table qui n'est pas dans la base de données en cours (ni une table liée).
Voici un exemple:

SELECT * 
FROM History IN 'c:\test\mySecretBackend.accdb' 

Vous pouvez également créer que, compte tenu de la conception, juste en

  1. définissant la propriété de base de données source de la requête à c:\test\mySecretBackend.accdb
  2. cliquez sur Afficher la table