ACCESS : LES RELATIONS (b)

6-Supprimer une relation

Il existe quelques raisons pour retirer une relation entre des tables ou des requêtes.

La première est que vous avez commis une erreur au moment de la création de la relation. Vous avez accidentellement choisi le mauvais champ au moment de la création de la relation. Ou, après une analyse plus approfondie, vous changez les relations entre les tables.

Pour vous permettre de modifier la structure d'une table reliée, il peut être nécessaire auparavant de retirer une relation. Access vous le précisera si c'est le cas.

  1. Cliquez sur la ligne qui relie les deux tables.
  2. Du menu Enregistrements, sélectionnez l'option Supprimer.
OU
  1. Appuyez sur la touche touche SUPPR du clavier.

7-Modifier les options d'une relation

  1. Cliquez sur la ligne qui relie les deux tables.
  2. Faites un double-clique sur cette ligne.
OU
  1. Du menu Conception des relations, dans l'onglet Outils, cliquez sur le bouton Modifier des relations Bouton modifier des relations

Les options de la relation vont ensuite apparaître. Vous pourrez les modifier et ensuite appuyer sur le bouton OK pour conserver ces modifications.

Il est maintenant temps de créer les relations entre les tables. Voici un cas particulier qui pourrait bien vous arriver au moment de la création de relations entre les tables de votre base de données.

7.1-Que faire lorsqu'Access refuse de créer une relation

Création d'une relation entre les tables Facture et Client.

  1. Placez le pointeur par-dessus le champ cli_id de la table Client.
  2. Cliquez sur le bouton gauche de la souris pour sélectionner le champ.
  3. En restant appuyé sur le bouton gauche de la souris, déplacez le pointeur par-dessus le champ fact_cli_id de la table Facture.
  4. Relâchez ensuite le bouton de la souris.

Vous devez maintenant choisir les options.

  1. Activez l'option Appliquer l'intégrité référentielle.
  2. Assurez-vous que la relation est de un à plusieurs.
  3. Cliquez sur le bouton bouton créer.

La relation ne fonctionnera pas !

fenêtre message index unique introuvable

Cela s'explique par le fait qu'il n'existe pas de clé primaire sur le champ cli_id.

Pour résoudre ce problème, ouvrez la table Client en mode création, sélectionnez le champ cli_id et ajoutez une clé primaire en cliquant sur le bouton bouton clé primaire

  1. Recommencer la création de la relation entre les champs cli_id et fact_cli_id en n'oubliant pas d'activer la case Appliquer l'intégrité référentielle.

La relation ne fonctionne toujours pas !

fenêtre message type de données

Cette fois ci le problème vient du type de données du champ fact_cli_id qui est de type Numérique et de taille Réel double, alors que le champ cli_id et de type NuméroAuto et de taille Entier long.

  1. Modifier la taille du champ fact_cli_id en Entier long et recommencez la création de la relation avec le champ cli_id.

Création d'une relation entre les tables Facture et Employe.

Il faut premièrement déterminer de quel type de relation il s'agit ou sa cardinalité.

  1. Une facture est générée par un seul vendeur.
  2. Un vendeur peut générer plusieurs factures.

Il s'agit d'une relation de type un à plusieurs.

Il faut maintenant créer la relation entre les tables Employe et Facture sur leur champ en commun.

  1. Placez le pointeur par-dessus le champ emp_id de la table Employe.
  2. Cliquez sur le bouton gauche de la souris pour sélectionner le champ.
  3. En restant appuyé sur le bouton gauche de la souris, déplacez le pointeur par-dessus le champ fact_emp_id de la table Facture.
  4. Relâchez ensuite le bouton de la souris.

Vous devez maintenant choisir les options.

  1. Activez l'option Appliquer l'intégrité référentielle.
  2. Assurez-vous que la relation est de un à plusieurs.
  3. Cliquez sur le bouton bouton créer.

La relation ne fonctionnera pas !

Comme mentionné ci-dessus, la relation entre les tables Facture et Employe ne fonctionnera pas. Le contenu de certains enregistrement sur le champ en commun (emp_id et fact_emp_id) ne respectent pas les règles d'intégrité. Pour vous en avertir, Access vous affichera le message suivant.

Il faut attentivement lire le message pour comprendre ce qui arrive. Dans notre cas, c'est la deuxième phrase qui explique la situation : Les données de la table « Facture » ne respectent pas les règles d'intégrité référentielle.

fenêtre message intégrité référentielle

Et c'est vrai. Le dernier enregistrement de la table n'a pas de contenu valide dans le champ fact_emp_id. C'est pour cette raison qu'Access refuse de créer une relation permanente entre ces deux tables.

Pour cet exemple, vous connaissez la cause du problème. Il suffit de mettre une valeur appropriée pour cet enregistrement pour régler le problème.

Mais que faire lorsque vous ne connaissez pas la cause du problème ?

Access vous offre un outil indispensable pour s'assurer du bon fonctionnement des relations. Il s'agit de la requête de Non correspondance.

La partie qui suit consiste à créer une requête de non correspondance qui détermine la cause du problème entre les tables Facture et Employe.

assistant requête1
  1. Fermez la zone des relations en sélectionnant du menu Fichier l'option Fermer.
  2. Dans l'onglet des requêtes, cliquez sur le bouton bouton assistant requête.
  3. De la liste des requêtes possibles, choisir Assistant Requête de non correspondance.
  4. Cliquez sur le bouton bouton OK.

Pour déterminer les enregistrements qui ne correspondent pas entre les deux tables, il faut premièrement indiquer à Access le nom des deux tables à relier suivi du nom des champs en commun des deux tables.

Pour indiquer à Access le nom de la première table à relier qui cause un problème de relation :

assistant requête2
  1. De la liste des tables, sélectionnez la table Facture.
  2. Cliquez sur le bouton bouton suivant.

Il faut maintenant indiquer le nom de la seconde table qui cause un problème de relation.

assistant requête3
  1. De la liste des tables, sélectionnez la table Employe.
  2. Cliquez sur le bouton bouton suivant.

Il faut ensuite montrer à Access quels sont les champs en commun des deux tables.

assistant requête4
  1. De la table Facture, cliquez sur le champ fact_emp_id.
  2. De la table Employe, cliquez sur le champ emp_id.
  3. Cliquez sur le bouton bouton ajouter-retrait.
  4. Cliquez sur le bouton bouton suivant.

Access vous demande ensuite quels sont les champs que vous voulez voir dans la requête. Pour les besoins de l'exemple, sélectionnez tous les champs.

assistant requête5
  1. Cliquez sur le bouton bouton ajouter tous.
  2. Cliquez sur le bouton bouton suivant.

Pour terminer, Access vous demande le nom à donner à la requête. Pour le moment, ne changez pas le nom de la requête.

assistant requête6
  1. Cliquez sur le bouton bouton terminer.
  2. Access affiche le résultat de la requête.

Les factures 14 et 15 n'ont pas de valeurs valides dans le champ emp_id. La facture 14 à un numéro de vendeur impossible puisqu'il y a seulement 7 employés dans l'entreprise. Pour la facture 15, il n'y a aucun numéro de vendeur. Une relation est impossible si le contenu d'un champ en commun est vide.

assistant requête7

Pour les deux factures, entrez le numéro de vendeur 7 au champ emp_id. Après cette correction, il vous est maintenant possible de créer une relation "permanente" entre ces deux tables.

  1. Fermez la requête.
  2. Retournez à la section des relations.

Refaite la relation entre les tables Employe et Facture sur leur champ en commun (emp_id et fact_emp_id).

Les deux tables sont maintenant reliées sur un champ en commun. Vous pouvez maintenant créer les relations entre les tables de cette base de données telles que sur l'image précédente.

8-Les relations de plusieurs à plusieurs

Access vous permet de créer facilement des relations de type un à un et de un à plusieurs avec l'option d'intégrité référentielle.

Cependant, la création de relations de type plusieurs à plusieurs nécessitent plus de travail.

Prenons l'exemple de la création d'une relation entre les tables Facture et Article. Avant tout, il faut déterminer de quel type de relation il s'agit.

Il est impossible de faire directement une relation de type plusieurs à plusieurs. Il faut créer une table intermédiaire qui contient la clé primaire des deux tables.

Il faut ensuite créer deux relations de type un à plusieurs entre les tables Facture, Article et la table intermédiaire en utilisant le champ de la clé primaire des deux tables.

assistant requête8

N'oubliez pas d'activer l'option d'intégrité référentielle et aussi l'option de mise à jour en cascade.

Pour qu'une relation fonctionne, vous devez avoir le même type d'informations dans les deux tables reliées.

L'option "Mettre à jour en cascade" s'assure que l'information se retrouve aussi dans l'autre table. Il vous est donc inutile de vous préoccuper d'avoir l'information dans les deux tables. Access s'en occupe pour vous.

8.1-Sortir de l'écran des relations

Si vous voulez conserver les relations entre les tables, vous devez premièrement les sauvegarder avant de quitter le mode de relations.

  1. Cliquez sur le bouton bouton enregistrer.
  2. Du menu Fichier, sélectionnez l'option Fermer.

9-Création d'une facture

C'est ici que toutes les relations entre les tables seront mises en avantage. Le prochain exercice consiste à la création d'une requête qui contient toutes les tables reliées.

  1. Dans l'onglet Requêtes du menu Créer, cliquez sur le bouton bouton creation requête.
  2. Sélectionnez de la liste des tables: Facture, L_Fact_Art, Article, Client et Employe.
  3. Cliquez sur le bouton Fermer.

Chaque ajout d'une table à la requête, rajoute également les relations avec les autres tables. Ces relations sont définies avec les options d'intégrité référentielle.

  1. De la liste des champs possibles, sélectionnez dans l'ordre les champs suivants :

fact_id (L_Fact_Art), fact_cli_id (Facture), fact_emp_id (Facture), art_id (L_Fact_Art), art_quantite (L_Fact_Art), art_pu (Article).

Il faut au moins que l'un des champs dans une relation soit affiché.

Pour vous démontrer l'avantage de relier les tables, le dernier champ à ajouter est un champ calculé. Il va prendre l'information de deux différentes tables (art_quantite de la table Laision_fact_Art et art_pu de la table Article) pour trouver le total de la transaction.

Puisqu'il est possible de trouver le total à partir des informations des tables, il est inutile d'avoir un champ «Total» dans l'une des tables.

  1. Placez le curseur dans la case vide à la droite du champ art_pu.
  2. Écrivez le texte suivant: Total:[art_quantite] * [art_pu]

Comme pour tous les champs calculés, il faut lui donner un nom (Total). Il faut ensuite séparer le nom de la formule en écrivant un ":". Il reste qu'à écrire la formule. Ce champ va donner le total de chacun des items de la facture.

10-Saisie de factures

Après avoir complété les opérations précédentes pour la création de relations entre les différentes tables de la base de données, il reste à voir le résultat en entrant quelques facture et à expliquer le fonctionnement des options choisies. Pour entrer les données :

  1. Cliquez sur le bouton bouton affichage feuille de données.

Dès que le curseur est passé au champ suivant, un chiffre est apparu dans le premier champ. Pourquoi ?

C'est à cause de la relation entre ce champ et celui de fact_id de la table Facture. Non seulement la relation est de type « 1 à plusieurs », mais il y a aussi l'option « Mettre à jour en cascade ».

C'est cette option qui force Access à voir le contenu du champ fact_id et de le recopier dans le champ fact_id. Pas besoin d'entrer l'information à chaque fois que vous commencer une nouvelle facture.

  1. Entrez les informations pour les autres champs à votre choix.

L'avantage des relations, lorsqu'il y a redondance d'information, c'est de pouvoir saisir l'information qu'une seule fois et que cette information se répercute dans plusieurs tables en même temps. Il est inutile de réécrire l'information sur le client ou sur le produit puisqu'Access a accès à cette information grâce aux relations entre les tables.

Le prochain exercice consiste à ajouter un second item à la même facture.

  1. Dans le champ fact_id, entrez le même numéro de facture de l'enregistrement précédent.
  2. Entrez les informations pour les autres champs à votre choix.

C'est ainsi qu'il est possible d'ajouter plusieurs items à la même facture. Vous pourrez utiliser cette technique pour d'autres tables qui ont une relation de type « 1 à plusieurs ».