Importation de données – Episode 2

On continue notre scénario d’importation de données dans Access. Dans cet épisode, nous allons tâcher d’identifier les nouvelles couleurs fournies par le fichier texte, pour les injecter dans la table… des couleurs.

Si vous avez manqué le début…

Ce feuilleton a commencé par cet article :

Hé oui, les épisodes se suivent dans l’ordre sur self-access.com, on n’est pas sur TF1 ni M6 ! 🙂

La fois précédente, nous en étions restés à ce résultat :

voitures_importer_fin.png

Les problèmes

Si vous vous souvenez, le fichier texte que nous avons importé dans Access comporte des couleurs, avec quelques défauts :

  • La couleur est donnée sous forme de texte, alors que dans Access, le champ [tbl Voitures].[Id Couleur] est un Numérique/Entier long.
  • Certaines couleurs fournies n’existent pas dans la table actuelle des couleurs, il va falloir les créer.
  • Par contre, il ne faut pas recréer une couleur qui existe déjà, comme le rouge.

On va donc devoir isoler les couleurs nouvelles (et seulement elles), pour les injecter dans la table tbl Voitures Couleurs.

Etape 1 : mise en place de la requête

  1. Commencez par créer une requête basée sur les tables tbl Voitures TEMP (la table temporaire créée par importation) et tbl Voitures Couleurs (la table qui donne la nomenclature des couleurs).
  2. Reliez le champ Coloris (table tbl Voitures TEMP) au champ Nom Couleur (table tbl Voitures Couleurs). Il s’agit bien de 2 champs Texte, sur lesquels on souhaite trouver des correspondances.
Attention
Ne reliez pas Coloris et Id Couleur : ces champs sont de types différents (un nombre, un texte). De toute façon, Access vous le signalera dès que vous exécuterez la requête !
  1. Glissez sur la grille de requête tous les champs des 2 tables.
    couleurs_requete.png
  2. Exécutez la requête.

Etape 2 : réglage de la jointure

Petit problème : le résultat de votre requête n’affiche pas toutes les voitures de la table temporaire. En y regardant bien, seules les voitures qui ont une couleur existante (dans la table des couleurs) sont affichées.

couleurs_requete_resultat.png

Le phénomène est normal : nous avons relié les 2 tables sur un champ et, par défaut, Access n’extrait que les lignes de chaque table pour lesquelles il y a correspondance (en SQL, il s’agit d’une jointure interne, ou INNER JOIN).

Mais ici, nous souhaitons toutes les lignes de la table temporaire Voitures, et les couleurs associées… s’il y en a. Pour modifier ce comportement :

  1. Double-cliquez sur le trait qui relie les tables.
  2. Dans la boîte de dialogue, faites le choix 2 (dans notre cas). Après validation, une flèche part de tbl Voitures TEMP vers tbl Voitures Couleurs. Ce qui rappelle qu’on souhaite TOUTES les voitures, et ÉVENTUELLEMENT les couleurs associées.
    couleurs_jointure.png
  3. Exécutez la requête. Ça se présente mieux, non ?
    couleurs_requete_resultat2.png

Etape 3 : liste des nouvelles couleurs

Dans notre nouvelle liste, nous obtenons toutes les voitures importées, avec un Id Couleur et un Nom Couleur lorsque ces voitures ont une couleur déjà référencée. Sinon, Id Couleur et Nom Couleur valent Null.

  1. Pour éliminer les voitures dont la couleur est référencée, ajoutez le critère Null sous le champ Id Couleur, par exemple.
    couleurs_null.png
  2. Il me reste encore 3 voitures bleues, et 1 noire. Il faut éliminer les doublons. Pour cela :
    1. Faites un clic du bouton droit sur le fond de la requête (1).
    2. Choisissez Propriétés (2) dans le menu contextuel.
    3. Dans la fenêtre Propriétés, réglez Valeurs distinctes = Oui.
      couleurs_distinctes.png
  3. Exécutez la requête. Argh, ça ne marche pas vraiment ! Les doublons sont toujours affichés…
    couleurs_distinctes_resultat1.png

Pas de problème ici non plus : c’est un comportement normal de la requête. Les valeurs distinctes s’appliquent à tous les champs de chaque ligne : Code / Marque / Modèle / Coloris et les autres. Comme tous les codes (colonne 1) sont différents, toutes les lignes ressortent encore.

Il ne faut conserver que les champs sur lesquels la distinction doit être faite. Dans notre cas, gardez seulement Coloris sur la grille de requête. Gardez aussi le champ Id Couleur qui contient un critère. Votre requête finale doit ressembler à ça :

couleurs_distinctes_finale.png

Et après exécution, vous devriez obtenir ceci :

couleurs_distinctes_resultat2.png

Vous venez de réussir à isoler les couleurs qui ne sont pas encore référencées dans la nomenclature des couleurs. On va pouvoir transférer ces données dans tbl Voitures Couleurs… Mais ça, ce sera au prochain épisode !

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *