COMPETENCES

Créer une relation un à un

 

OBJECTIFS

- Requête création de table

 

Les requêtes actions

 

 

- Requête suppression

 

 

 

 

- Requête Ajout

 

 

 

 

- Requête mise à jour

 

CAS PAPETIERE- 5ème partie

LES REQUETES ACTIONS

 

CONNAISSANCES DE BASE

 

Les requêtes action permettent de modifier les données dans les tables alors que les requêtes sélection et opération ne modifient en rien les données stockées dans les tables.

 

Elles sont de quatre types :

 

Création de table

Permet de créer une nouvelle table à partir des enregistrements répondant à un critère de sélection

Ajout

Ajoute le contenu des enregistrements correspondant au critère de sélection à une table existante (ou nouvelle)

Mise à jour

Permet de mettre à jour le contenu d’un ou plusieurs champs pour les enregistrements sélectionnés correspondant au critère de sélection

Suppression

Permet de supprimer les enregistrements correspondant au critère de sélection

 

Pour créer une requête action, il faut :

·      créer une requête sélection (ou opération) pour sélectionner les enregistrements

·      Afficher le résultat de la requête sélection (pour contrôle)

·      Transformer la requête sélection (ou opération) en requête action par le menu Requête ou par les boutons de la barre d’outils requête

·      Exécuter la requête (menu Requête - Exécuter ou bouton éxécuter de la barre d’outils)

 

DANGER : UNE REQUÊTE ACTION MODIFIE LE CONTENU DES TABLES, PAR CONSEQUENT IL FAUT ÊTRE RIGOUREUX QUANT AU CRITERE DE SELECTION

 

I.                   CREATION ET EXECUTION D’UNE REQUÊTE CREATION DE TABLE

 

le theme

 

Dans la table CLIENT de la base de données PAPETIERE.MDB figure le champ ENCOURS (contenant le montant du crédit accordé aux clients). Ce champ constitue une donnée de situation (au même titre qu’un solde de compte ou un stock) et doit être régulièrement mis à jour. Par conséquent, vous allez :

·      créer AUTOMATIQUEMENT par requête une table « ENCOURS DE CREDIT » comprenant les champs suivants :
       - CODECLI
       - ENCOURS

·      ensuite supprimer le champ ENCOURS de la table CLIENT

·      enfin établir une relation entre la table CLIENT et la table ENCOURS DE CREDIT


A.                CREATION D’UNE REQUETE CREATION DE TABLE

Plutôt que de créer la structure de la table ENCOURS DE CREDIT, vous allez créer une requête Création de tables :

 

1.    Cliquez sur l’onglet Requête puis sur le bouton Nouveau

2.    Cliquez sur le bouton puis sélectionnez la table CLIENT

3.    Faites glisser les champs CODECLI et ENCOURSCLI dans la grille d’interrogation.

4.    Visualisez le résultat de la requête Sélection(bouton  ) (vous devez avoir 17 enregistrements et 2 champs)

5.    En mode création de requête, déroulez le menu Requête - Création de table ou cliquez sur le bouton  Type de requête  puis sur le bouton  

6.    Dans la boîte de dialogue Requête création, saisissez le nom de la nouvelle table : ENCOURS DE CREDIT


7.    Exécutez la requête (Menu Requête - Exécution ou bouton Exécuter de la barre d’outils Requête)
Un message d’alerte vous informe que 17 enregistrements vont être collés dans une nouvelle table :

Confirmez alors en cliquant sur Oui

8.    Enregistrez la requête sous le nom Création table Encours et fermez-la (la requête évidemment !)

 

A

ttention, si vous tentez une deuxième éxécution de la requête Création, Access affichera un message d’erreur car la table ENCOURS DE CREDIT a été créé lors de la 1ère éxécution. Pour signaler le danger, Le nom des requêtes action (dans la liste des requêtes) est précédé d’un point d’exclamation

 

9.    Vérifiez l’existence de la table ENCOURS DE CREDIT dans la liste des tables.

10.Vérifiez la structure de la table ( affichez la table ENCOURS CREDIT en mode création : les propriétés des champs CODECLI et ENCOURS sont les mêmes que dans la table CLIENT. Mais ACCESS n’a pas défini de clé primaire. par conséquent définissez la clé primaire pour le champ CODECLI

 

B.                SUPPRESSION DU CHAMP ENCOURS DANS LA TABLE CLIENT

 

Comme le champ ENCOURS fait partie d’une nouvelle table, vous devez le supprimer de la table CLIENT :

 

1.    Ouvrez la table CLIENT en mode création,

2.    Sélectionnez la ligne de champ : ENCOURS

3.    Supprimez le champ

 

C.                ETABLIR UNE RELATION ENTRE LA TABLE CLIENT ET LA TABLE ENCOURS DE CREDIT

 

Comme UN client n’a qu’UN seul encours de crédit et inversement, la relation entre les tables CLIENT et ENCOURS DE CREDIT sera du type UNE à UNE. Le champ commun au deux tables est CODECLI.

 

travail a faire :

 

Créez la relation entre les deux tables.

 

 

 

Le coin des Pros

 

La structure de la table CLIENT ayant été modifiée, les requêtes, les formulaires ou les Etats fondés sur la table CLIENT ne se mettent pas automatiquement à jour. Conséquence : si une requête, un état ou un formulaire utilise le champ ENCOURS, il faudra faire des modifications

 

APPLICATION :

 

Au cours des TD précédents(CAS PAPETIERE : 3ème partie - UTILISER ACCESS AVEC PLUSIEURS TABLES - Troisième sous-partie : Créer une zone de liste modifiable)

vous avez créé le formulaire « 2 Saisie/Modification des clients » fondé sur la requête « REQUETE FORMULAIRE CLIENT »

 

Comme ces éléments font référence au champ ENCOURS, vous allez les modifier « en cascade »

 

1.    Modifier la requête « REQUETE FORMULAIRE CLIENT »

2.    Dans la requête en mode création, supprimez le champ ENCOURS qui n’est plus valide

3.    Ajouter la table ENCOURS DE CREDIT (menu Requête - Ajouter une table)

4.    Faites glisser le champ ENCOURS (de la table ENCOURS DE CREDIT) vers la grille d’interrogation avant le champ PLAFOND

5.    Vérifiez le résultat de la requête

6.    Enregistrez et fermez la requête.

 

7.    Modification du formulaire « 2 Saisie/Modification des clients » :

·      Ouvrez ce formulaire en mode Modification/création

·      Vérifiez la source du contrôle « ENCOURS » :

J   Sélectionnez le contrôle ENCOURS

J   Affichez les propriétés du contrôle (Menu Affichage propriétés) En principe, la source correspond au champ ENCOURS de la requête donc il n’y a rien à faire.

 

Passez à la rubrique « Le coin des experts » OU fermez le formulaire puis passez directement au II CREATION D’UNE REQUETE MISE A JOUR, D’UNE REQUETE SUPPRESSION

 

Le coin des experts

Profitons du formulaire « 2 Saisie/modification des clients » pour découvrir de nouveaux « trucs » :

 

Le champ ENCOURS représente une Donnée de situation (comme cela a pu être dit précédemment) dont la valeur augmente à chaque nouvelle commande et diminue avec les réglements reçus des clients). Par conséquent, ce champ doit être mis à jour avec une requête action.

 

Pour éviter que l’utilisateur du formulaire ne saisisse une valeur dans le champ ENCOURS, on va le protéger en paramétrant certaines propriétés :

1.    Sélectionner le contrôle ENCOURS (si ce n’est pas déjà fait)

2.    Affichez la fenêtre des propriétés (si ce n’est pas déjà fait)

3.    Paramétrez les propriétés indiquées ci-dessous :

 

Légende encadrée 3: Oui : Le curseur s’ arrêtera sur le contrôle 
Non : le curseur ne s’arrêtera pas sur le contrôle 
Demander explication au G.F.I.
Légende encadrée 3: Oui : le contrôle ne peut pas être mis à jour (on empêche la saisie ou la modification)
Non : le contrôle peut être mis à jour
Légende encadrée 3: Oui : le contrôle apparaît normalement
Non : le contrôle est grisé (entièrement inaccessible)

 

Remarque :

 

- La propriété Visible : permet de cacher un contrôle ou de le rendre visible

- La propriété Afficher a pour options :

            * Toujours : le contrôle est affiché tant à l’écran qu’à l’imprimante

            * A l’écran : le contrôle est affiché à l’écran mais n’est pas imprimable

            * A l’impression : le contrôle est imprimable mais n’est pas affiché à l’écran

 

5. Vérifiez les modifications en affichant le formulaire en mode Formulaire et essayez de changer la valeur du champ ENCOURS

 

II.                CREATION D’UNE REQUETE MISE A JOUR, D’UNE REQUETE SUPPRESSION

 

AU PREALABLE :

 

Vous allez effectuez une copie de la base de données PAPETIERE.MDB et travailler sur cette copie.

Plutôt que d’utiliser l’explorateur de WINDOWS, vous allez utiliser la commande COMPACTER d’ACCESS. Cette commande permet de réduire la taille d’une base de données. Le compactage se fait dans un nouveau fichier.

 

PROCEDURE :

 

1.    Fermez la base de données PAPETIERE.MDB (indispensable)

2.    Activez le menu Fichier - Compacter une base de données ACCESS affiche une première boîte de dialogue dans laquelle vous sélectionnez le nom de la base à compacter  soit PAPETIERE.MDB sur le lecteur A:

3.    Dans la deuxième boîte de dialogue Compacter sous... saisissez le nom de la base compactée :

 

         PAPETIERERAC.MDB

 

Une fois l’opération achevée, ouvrez la base de données PAPETIERERAC.MDB, c’est dans cette base de données que vous allez effectuer diverses requêtes action.

 

A.                Création d’une requête Mise à jour

 

Le directeur commercial de la société PAPETIERE a décidé de majorer de 10% le prix unitaire des articles de papeterie. Vous êtes chargé de modifier les prix unitaires.

 

Plutôt que de calculer manuellement les prix unitaires pour les articles de  papeterie et de les saisir vous allez, grâce à une requête Mise à jour, faire la modification automatiquement.

 

MODE OPERATOIRE :

 

1.    Créer une nouvelle requête fondée sur les tables PRODUITS et CATEGORIE

2.    Faites glisser les champs CODEART, DESIGNART, LIBELLECAT et PUHT

3.    Mettez le critère : Papeterie pour le champ LIBELLE CATEGORIE


4.    Visualisez la requête en mode Feuille de données pour vérifier que vous n’avez que les enregistrements relatifs aux articles de papeterie

5.    En mode création, sélectionnez le type de requête « Mise à jour » dans le menu requête (ou cliquez sur le bouton

6.    Dans la grille d’interrogation, saisissez la formule suivante sur la ligne mise à jour et en dessous du champ Prix unitaire :

 

[PUHT]*1.10

 

7.    Exécutez la requête (Menu Requête Exécuter et visualisez le résultat : les prix ont augmentés de 10% (de 12,60 F ils sont passés à 13,86 F)

Avant exécution de la requête

Ramette papier multi usages

45.00 F

Papeterie

Papier qualité photo /20

58.00 F

Papeterie

 

     Après exécution de la requête

Ramette papier multi usages

49.50 F

Papeterie

Papier qualité photo /20

63.80 F

Papeterie

 

8.    Enregistrez la requête sous le nom : REQ MISE A JOUR TARIF

9.    Fermez la requête

10.Exécutez de nouveau la requête : Que se passe-t-il ?

B.                CREER UNE REQUETE SUPPRESSION

 

On veut supprimer la commande n° 4 (qui a été annulée par le client) :

 

1.    Créez une nouvelle requête fondée sur la table commande

2.    Faites glisser tous les champs

3.    Saisissez le critère de sélection en dessous du champ NOCOM : 4

4.    Visualisez la requête

NOCOM

DATECOM

CODECLI

00004

19/03/2001

6

 

5.    En mode création, activez le menu Requête – Suppression ou cliquez sur le bouton

6.    Exécutez la requête. Un message vous informe que la suppression va être définitive :

Confirmez la suppression en cliquant sur oui

Mais un message d’erreur s’affiche :

 

Annulez l’opération en cliquant sur le bouton Non

 

Remède :

 

Lors de la création des relations entre la table commande (côté UN de la relation) et la table LIGNE COMMANDE (Côté PLUSIEURS) Vous avez demandé à ACCESS d’appliquer l’intégrité référentielle : Pour pouvoir supprimer une enregistrement de la table côté UN, il faut d’abord supprimer les enregistrements liés de la table côté PLUSIEURS.

 

Dans l’exemple il faudrait créer deux requêtes :

- la première pour supprimer les enregistrements de la table LIGNE COMMANDE pour lesquels le champ NO COM=4

- la deuxième pour supprimer les enregistrements de la table LIGNE COMMANDE pour lesquels le champ NO COM=4

 

C’EST LOURD A FAIRE !

 

Heureusement, il existe une autre possibilité :

·      Enregistrez la requête sous le nom : REQ SUPPRESSION D’UNE COMMANDE

·      Fermez la requête

·      Cliquez sur le menu Edition - Relation

·      Double cliquez sur la relation (sur le trait) entre COMMANDE et LIGNE COMMANDE

·      Cochez la case Effacer  en cascade (ainsi quand on supprimera une commande, toutes les lignes de commandes seront automatiquement supprimées)

J   Validez puis fermez la fenêtre Relation

J   Dans la fenêtre Base de données, sélectionnez la requête REQ SUPPRESSION D’UNE COMMANDE

J   Exécutez la requête en cliquant sur le bouton Ouvrir (La suppression est effective)

J   Ouvrez successivement les tables COMMANDE et LIGNE COMMANDE pour vérifier que la commande n° 4 a bien été supprimée.

 

Autoformation ACCESS 2000 - Retour au sommaire

  © Brikoboutikstt  (accueil)                                                                    webmestre