Vous êtes sur la page 1sur 123
Informatique B ases de données TD ACCESS Travail Dirigé : "Facturati on" Marc SOUQUES souques@ensat.fr

Informatique

B ases de données

TD ACCESS

Informatique B ases de données TD ACCESS

Travail Dirigé : "Facturati on"

TD ACCESS Travail Dirigé : "Facturati on" Marc SOUQUES souques@ensat.fr Version du 14 avril 2011 Ce

Marc SOUQUES

souques@ensat.fr

Version du 14 avril 2011

Ce documen t appartient à :

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Table des Matières

CH1.

BASE DE DONNEES "FACTURATION"

5

1.

CAHIER DES CHARGES POUR APPLICATION "FACTURATION"

5

2.

MODELE PHYSIQUE AVEC SES LIENS SUR LE SGBD A CCESS

5

CH2.

LES TABLES DE BASE

 

6

1.

CONCEPTION ET CONSTRUCTION DE LA BASE DE DONNEES

6

2.

CREER LES TABLES SIMPLES

6

A. Créer

la

table

Client

7

B. Créer

la

table

Produit

8

3.

CREER LES TABLES COMPLEXES

9

A. Deux régles de base pour créer des tables

10

B. Etude des Commandes

 

11

C. Créer la table CommandeEnTete

12

D. Créer la table CommandeLigneProduit

14

E. Conventions de nommage dans les Tables

16

F. Importer des données d'Excel dans Access

16

G. Exporter des données d'Access vers Excel

16

4.

SECURITE DE L'UTILISATION DE L'APPLICATION

17

5.

U TILISER LES TABLES EN MODE INTERACTIF

18

A. Rechercher des données

18

B. Remplacer des données

 

18

C. Tester les boutons…

18

6.

D EFINIR LES RELATIONS ENTRE LES TABLES

19

A. Importance des relations dans un SGBD Relationnel

21

B. Des régles dans les relations

21

C. Tester l'Intégrité Référentielle des Relations

22

7.

RESUME DES T ABLES

 

23

CH3.

LES REQUETES DE BASE

24

1.

REQUETE SELECTION

 

24

A. Requête simple sur une seule table

24

B. Requête multitable simple avec Relation

27

C. Requête multitable avec calcul par enregistremen t

29

D. Erreur à éviter dans les requêtes

31

E. Les fonctions du langage VBA pour les Requêtes

32

F. Exercices à faire

 

35

G. Requête avec calcul sur "Regroupement" d'enregistrements

36

H. Exercices à faire

 

36

2.

RESUME DES REQUETES

37

CH4.

LES FORMULAIRES DE BASE

38

1.

FORMULAIRE U NITAIRE BASE SUR UNE TABLE

38

A. Créer un Formulaire Colonne simple

38

B. Utiliser un formulaire

 

38

C. Modifier un formulaire

39

2.

FORMULAIRE T ABULAIRE BASE SUR UNE REQUETE

43

A. Créer la requête source du futur Formulaire

43

B. Créer un formulaire Tabulaire basé sur la requête

44

C. Ajouter des contrôles

 

44

D. Exercices à faire

45

3.

RESUME DES FORMULAIRES

45

CH5.

LES TABLES AVEC LISTES DEROULANTES DE CHOIX POUR CLE ETRANGERE

46

1.

T ABLES ACTUELLES BASIQUES

46

2.

CHAMP CLE ETRANGERE AVEC LISTE DEROULANTE DE C HOIX

46

A. Modifier propriétés Liste de choix des champs clés étrangères

47

B. Exercice à faire…

 

49

CH6.

BILAN DE L'APPLICATION

51

1.

D ES

TABLES

 

51

2.

D ES REQUETES

 

51

3.

D ES FORMULAIRES

51

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

CH7.

FACTURATION: EXTENSIONS A FAIRE SEUL

52

1.

CAHIER DES CHARGES POUR LES TABLES

52

A. Table simple

52

B. Table complexe

52

2.

CAHIER DES CHARGES POUR LES REQUETES

53

A. Requête simple

53

B. Requête multitable

53

3.

CAHIER DES CHARGES POUR LES FORMULAIRES

55

A. Formulaire simple

55

B. Formulaire Tabulaire basé sur une requête

55

C. Formulaire "Produit" à compléter

55

CH8.

L'ETAT

56

1.

CREER UN ETAT

56

A. Etat basé sur une table

56

B. Etat basé sur une requête

57

2.

RESUME DES E TATS

60

CH9.

LES FORMULAIRES COMPLEXES

61

1.

FORMULAIRE AVEC SOUS-FORMULAIRE

61

2.

FORMULAIRE AVEC SOUS FORMULAIRE COMPLEXE

63

A. Version basée sur 2 Tables (pour FP) et 2 Tables (pour

63

B. Version basée sur 3 niveaux de

64

C. Version avec 2 sous formulaires de même

64

3.

FORMULAIRE AVEC GRAPHIQUE

67

A. Graphique simple basé sur une Table

67

4.

FORMULAIRE MENU PRINCIPAL

69

5.

RESUME SUR LES FORMULAIRES

70

CH10.

LES MACROS

72

1.

MACRO DE DEMARRAGE AUTOMATIQUE : AUTOEXEC

72

2.

MACROS POUR OUVRIR FORMULAIRES ET ETATS

72

A. Créer la macro

72

B. Attacher une macro à un événement d’un contrôle Bouton

73

CH11.

LES RECHERCHES

74

1.

RECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MONO RESULTAT

75

A. Rechercher un client sur son Nom Prénom par liste déroulante

75

B. Auto-Actualiser la liste déroulante sur sa définition

77

2.

RECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MULTI RESULTATS

77

A. Rechercher des clients sur leur ville par liste déroulante

77

3.

RECHERCHE MONO CRITERE, MULTI VALEURS DU CRITERE, MULTI RESULTATS

80

4.

RECHERCHE MULTI CRITERES, MONO VALEUR DU CRITERE, MULTI RESULTATS

80

CH12.

LES FORMULAIRES COMPLEXES SUITE

82

1.

SOUS FORMULAIRE BASE SUR REQUETE AVEC CALCULS

82

CH13.

INTRODUCTION AUX BASES DE DONNEES ET A ACCESS

83

1.

U N SYSTEME DE GESTION DE BASES DE DONNEES

83

2.

U NE

APPLICATION DE BASE DE D ONNEES

83

3.

U NE

BASE DE DONNEES

83

4.

ACCESS

84

 

A. Choix entre Access et Excel pour développer une application ?

84

CH14.

CORRECTION EXTENSION: LES TABLES

85

A. Créer la table Categorie

85

B. Modifier la table Produit

85

C. Créer la table Fournisseur

86

D. Créer la table Intermédiaire ProdFour

86

E. Tirer les Relations avec Intégrité Référentielle:

88

F. Modèle Conceptuel de Données (MCD) à la source du Modèle Physique Access

88

CH15.

CORRECTION EXTENSION: LES REQUETES

89

A. Requête simple

89

B. Requête multitable

89

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

CH16.

CORRECTION EXTENSION : FORMULAIRES

91

A. Formulaire simple

91

B. Formulaire Tabulaire basé sur une requête

91

C. Formulaire produit à compléter

91

CH17.

DES ERREURS A NE PAS FAIRE

92

CH18.

GESTION DES IMAGES DEPENDANTES D'ENREGISTREMENTS D'UNE TABLE

93

1. IMAGES ET T ABLE : VERSION1 BASEE SUR CHAMP OLE

93

 

A. Gérer un champ OLE

93

B. Gérer un contrôle de formulaire pour afficher l'image

93

2. IMAGES ET T ABLE : VERSION 2 BASEE SUR CHAMP TEXTE ET MACRO D'AFFECTATION

94

3. IMAGES ET T ABLE : VERSION 3 BASEE SUR CHAMP TEXTE ET PROCEDURE-VBA D'AFFECTATION

97

4. RESUME :SAISIR, STOCKER, MODIFIER ET SUPPRIMER DES IMAGES DANS DES ENREGISTREMENTS DE

99

CH19.

LES TABLES AVEC CHAMPS A LONGUEUR VARIABLE

100

1. CHAMP DE TYPE MEMO

100

2. CHAMP DE TYPE PIECE JOINTE

100

3. CHAMP AVEC PLUSIEURS VALEURS

101

 

A. Démarche Classique Relationnelle

102

4. FORMULAIRE BASE SUR UN MODELE DE FORMULAIRE

105

 

A. Créer un modèle de formulaire

105

B. Créer un formulaire basé sur un 'modèle' de formulaire

105

CH20.

LES MODES D'UTILISATION DE L'APPLICATION

106

1. MODE UTILISATEUR : CONFIGURATION DU DEMARRAGE

106

2. MODE PARTAGE DE DONNEES ENTRE PLUSIEURS UTILIS ATEURS EN RESEAU LOCAL

107

CH21.

LES MACROS AVANCEES

108

1. T ESTER LES EVENEMENTS DECLANCHANT DES MACROS DANS UN FORMULAIRE

108

2. MACRO CONDITIONNELLE ATTACHEE A UN EVENEMENT

109

3. REFERENCE DES ACTIONS DES MACROS

111

CH22.

MODIFICATION DES DONNEES DES TABLES

113

1. MODIFICATION MANUELLE

113

2. MODIFICATION AUTOMATIQUE PAR REQUETE

114

 

A. La requête action

114

B. La requête action paramétrée par formulaire

115

3. MODIFICATION AUTOMATIQUE PAR MACRO

117

 

A. Mise à jour Automatique Invisible du stock de Produit sur événement Saisie de la Quantité commandée

117

CH23.

TRAITEMENTS DE SYNTHESE

120

1.

FORMULAIRE T ABLEAU CROISE DYNAMIQUE (TCD)

120

A. Créer la requête source du futur formulaire

120

B. Créer le formulaire TCD basé sur la requête

121

CH24.

LA BASE DE DONNEES FINALE

123

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ch1. Base de données "Facturation"

A partir d’un cahier des charges définissant le sujet de l'application, création de la base de données.

1. Cahier des charges pour application "Facturation"

Gérer une application commerciale de facturation pour PME. Il existe des ensembles de Clients, de Commandes et de Produits.

Un Client

fait référence à au plus

plusieurs () Commandes.

Une Commande fait référence à au plus

1

seul Client.

Une Commande fait référence à au plus

Un Produit fait référence à au plus plusieurs Commandes (où il est commandé) Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée.

plusieurs Produits (commandés).

2. Modèle Physique avec ses liens sur le SGBD Access

Structure de la base de données à créer.

le SGBD Access Structure de la base de données à créer. Ci-dessous, les champs des tables

Ci-dessous, les champs des tables avec les VALEURS assurant les Relations.

Clé primaire Clé primaire SANS doublon SANS doublon Clé primaire SANS doublon basée sur 2
Clé primaire
Clé primaire
SANS doublon
SANS doublon
Clé primaire
SANS doublon
basée sur
2 champs
Clé primaire
Clé
SANS doublon
étrangère
AVEC
doublons
Légende :

Clé primaire mono ou multi champClé SANS doublon étrangère AVEC doublons Légende : Clé étrangère liée à une clé primaire Clé

Clé étrangère liée à une clé primaire

Clé Clé étrangère étrangère AVEC AVEC doublons doublons
Clé
Clé
étrangère
étrangère
AVEC
AVEC
doublons
doublons

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ch2. Les Tables de base

Objectif du TD :

Construire une Base de Données de FACTURATION basée sur plusieurs Tables :

- Client

- Produit

- Commande

- Produit Commandé

pour commencer

1. Conception et Construction de la Base de données

Lorsque l'on veut construire une Maison, on doit procéder en 3 temps :

 

a)

Créer sur le papier un Plan Conceptuel sans aspect technique des différentes Pièces qui composent

la future Maison et gérer les Liens et Interdépendances qui existent entre ces Pièces.

b)

Créer sur le papier un Plan Logique, à partir du Plan Conceptuel, en y ajoutant les éléments

techniques (type de matériaux, épaisseur isolation, câblage électrique, réseau eau, chauffage, …).

 

c)

Construire sur le Terrain la

Maison Physique

, à partir du Plan Logique.

En informatique, pour construire une Base de Données, on procède de même en 3 temps :

a)

Créer sur le papier un

Modèle Conceptuel

(sans aspect technique) des différentes Entités qui

composent la future Base de Données et gérer les Associations (liens) qui existent entre ces Entités.

b)

techniques (Clé primaire, Clé étrangère, Relations d'une Base de Données RELATIONNELLE)

Relation s d'une Base de Données RELATIONNELLE) Créer sur le papier un Modèle Logique , à

Créer sur le papier un Modèle Logique

, à partir du Modèle Conceptuel, en y ajoutant les éléments

c)

Construire sur l'Ordinateur (Access) la

Base de Données Physique

, à partir du Modèle Logique.

(Voir éventuellement Cours de Modélisation présentant ces 3 modèles)

Base de Données Physique qui
Base de Données Physique qui
Base de Données Physique

Base de Données Physique

Base de Données Physique qui

qui

Ce TD vise à utiliser ACCESS pour créer directement sur ordinateur une

mais il est recommandé de se documenter sur les cours de Modélisation des Données

permettent de créer Modèles Conceptuels de Données (MCD) et Modèles Logiques de Données (MLD).

Vous trouverez plus loin dans ce document (fin Chapitre 14) le MCD (Modèle Conceptuel des Données) correspondant à la base de données Access développée dans ce TD.

Notre démarche consiste, pour la partie concernant les Données, à établir au fur et à mesure quelques

règles simples

pour définir les Tables de notre application de Facturation.

Démarrer ACCESS .

Clic sur Base de donnée vide, Clic sur pour choisir un dossier puis nommer l'application ESSAI (l'extension accdb signifie Access Data Base c'est le format 2007 et 2010) et bouton Créer.

- Si besoin, compréhension et configuration de l'environnement de travail :

Bouton

configuration de l'environnement de travail : Bouton Office ( Fichier en Version 2010) puis Options Access
configuration de l'environnement de travail : Bouton Office ( Fichier en Version 2010) puis Options Access

Office (Fichier en Version 2010) puis Options Access :

- Standard : Définir le dossier de données par défaut pour ouvrir ou enregistrer des bases

- Base de données active : Cocher Compacter lors de la fermeture (pour réduire la taille du fichier accdb)

- Personnaliser : Définir les icones de la barre d'accès rapide en haut d'écran et valider OK.

2. Créer les Tables Simples

d'écran et valider OK . 2. Créer les Tables Simples Nous allons créer les tables Client

Nous allons créer les tables Client et Produit qui sont simples car chaque enregistrement ne fait pas référence à au plus 1 seul enregistrement d'une autre table. Un Client ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Produit commandé.

Un Produit

ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Client.

Fermer la table ouverte par défaut.

Onglet Créer, Bouton

Fermer la table ouverte par défaut. Onglet Créer , Bouton Création de Table pour être en

Création de Table pour être en mode 'Création'

- ACCESS 2007 – 2010 - Travail dirigé Facturation – A. Créer la table Client
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
A. Créer la table Client
Voir exemple en bas de page
Nom du Champ
Type de données
Propriétés
Un nombre qui s’incrémente
Num Client
NuméroAuto
automatiquement à
chaque nouveau
client saisi : 1 puis 2 puis 3
Nom
Texte
(Attention : le type
Texte est limité à
255 caractères !)
Taille : 25
Format : > (conversion en Majuscule)
Null interdit : OUI (saisie obligatoire)
Chaine vide autorisée : NON
(Null = VIDE)
Si besoin de plus de 255
caractères, utiliser le
Prénom
Texte
Taille : 15
Null interdit : OUI
Chaine vide autorisée : NON
type Mémo (taille illimitée)
Adresse
Texte
Taille : 30
Fonction
Date() retournant la
Code Postal
Texte (pas Num car on
ne fait pas de calcul sur
les codes postaux !)
Taille : 5
Null interdit : NON donc
saisie facultative
date du jour. On peut la
trouver par
, Fonction,
Fonction intégrées,
Date/heure, Date
Ville
Texte
Taille : 25, Format : > (Majuscule)
Valeur par défaut : TOULOUSE
Date Entrée
Date/Heure
Format : Date, abrégé
Valeur par défaut : Date( )
Afficher le sélecteur : À certaines dates

Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque enregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans 2

enregistrements de ce champ sont interdites (pas de doublons: 2 personnes ne doivent pas avoir le même

numéro de client

Définir une clé primaire sur le champ: Num Client en sélectionnant ce champ puis barre d’outils

3).

en sélectionnant ce champ puis barre d’outils 3 ). Clé primaire (Cela bascule automatiquement la propriété

Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Client : Oui SANS doublon).

Convention personnelle pour Nom de la Clé primaire : Num + (Nom de table) = Num Client

On souhaite que le couple

Nom Prénom

soit unique, interdire 2 fois LECLERC Alain. Clic sur Index :

unique, interdire 2 fois LECLERC Alain . Clic sur Index : Donner librement un Nom à

Donner librement un Nom à un Index : NomPrenom

Choisir dans la liste déroulante les 2 champs à indexer : Nom puis Prénom Sélectionner la ligne NomPrenom et saisir Unique : Oui pour éviter les doublons sur ce couple de champs

Enregistrer

éviter les doublons sur ce couple de champs Enregistrer la table (disquette de la barre outils
éviter les doublons sur ce couple de champs Enregistrer la table (disquette de la barre outils

la table (disquette de la barre outils 'Accès rapide') : Client

de la barre outils 'Accès rapide') : Client Passer en mode Feuille de données Ok pour
de la barre outils 'Accès rapide') : Client Passer en mode Feuille de données Ok pour

Passer en mode Feuille de données

Ok pour message erreur ci-dessus, pour éviter le doublon MUILLARD Marc, modifier l'enregistrement

3 en DURAND Alain pour avoir :

pour saisir 3 Clients comme ci-dessus :

Alain pour avoir : pour saisir 3 Clients comme ci-dessus : Passer en mode Création pour

Passer en mode Création

saisir 3 Clients comme ci-dessus : Passer en mode Création pour consulter la structure de la

pour consulter la structure de la table puis fermer (croix à droite) la table Client.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

B. Créer la table Produit Onglet Créer, Bouton Création de Table pour être en mode
B. Créer la table Produit
Onglet Créer, Bouton
Création de Table pour être en mode 'Création'
Nom du Champ
Type de données
Propriété du champ
Si
besoin
de
plus
de
255
caractères,
Num Produit
Texte
Taille : 6
utiliser le type Mémo (taille illimitée)
Désignation
Texte
Taille : 60
Prix Ht
Monétaire
(pour afficher €uros)
Valide si : >=3
Message si erreur :Vérifier le minimum (>=3 €)
Taux Tva
Numérique
Taille :
Réel simple
(Touche F1
pour l’Aide)
Format : Pourcentage
(%)
Ici, le Num Produit n'est pas en NuméroAuto
car on veut gérer notre propre Numérotation :
Valeur par défaut : taper 0.196 pour obtenir
3 lettres pour
la
marque du produit et
3 chiffres pour le rang du produit dans la marque
(ACE002 pour le 2° produit de marque ACER)
0,196 (virgule à la place du point)
Valide si : 0.196 Ou 0.055
Message si erreur : Vérifier le taux

(Prix Ttc = Prix Ht * (1+Taux Tva)). On ne stocke pas

dans une Table un champ calculé car on risque l'erreur d'avoir calculé et stocké un PrixTtc sur un ancien Prix Ht : exemple

Le Prix Ttc est une valeur calculée

Prix Ht = 100 ; Prix Ttc = 119.6 puis modif Prix Ht = 95 et Prix Ttc = 119.6 faux car non modifié

On calculera donc le Prix Ttc (sur les actuels Prix Ht et Taux Tva) chaque fois que l'on en aura besoin même si cela prend un peu (si peu) de temps-machine.

Règle : La Table stocke des informations de base (non calculées)

Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque enregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans deux enregistrements de ce champ sont interdites (pas de doublons: 2 produits ne doivent pas avoir le même numéro de produit). Définir une clé primaire sur le champ: Num Produit en sélectionnant ce champ puis barre d’outils

Produit en sélectionnant ce champ puis barre d’outils Clé primaire (Cela bascule automatiquement la propriété

Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Produit : Oui SANS doublon).

Convention personnelle pour Clé primaire : Num + (Nom de table) = Num Produit On souhaite que la Désignation du produit soit unique, interdire 2 fois Imprimante laser Canon type 1. On veut donc un index sans doublon (unique) sur le seul champ Désignation Compléter la description du champ Désignation avec :

Désignation

Texte

Indexé : Oui sans doublons

Ici, il est inutile de passer par Clic sur Index car l'index est ici MONO-Champ.
Ici, il est inutile de passer par Clic sur Index
car l'index est
ici MONO-Champ.
Par contre, le résultat est bien stocké dans les index :
ATTENTION :
Num Produit
Texte
Indexé : Oui sans doublons car Clé Primaire
Désignation
Texte
Indexé : Oui sans doublons
sans être Clé primaire

La clé primaire est le champ qui identifie chaque enregistrement de la table, c'est cette information qui est utilisée dans une autre table pour pointer (référencer) vers la table Produit. Enregistrer la table : Produit puis Fermer la table :

Remarque : Les noms des tables sont notés au singulier (Client, Produit) sans préfixe Tab Produits

Faire un effort dans le choix des noms des tables pour que le nom corresponde au contenu de la table :

Les produits

Catalogue produit

Produits vendus

Visualisation en mode feuille de données

Ouvrir la table Produit par double-clic sur Produit :

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

- ACCESS 2007 – 2010 - Travail dirigé Facturation – Passer en mode Création par le

Passer en mode Création par le bouton

Passer en mode Feuille de données par le même bouton de barre d' outils :

(en haut à gauche) de l'onglet Accueil :

outils : (en haut à gauche) de l'onglet Accueil : (en haut à gauche) Saisir :

(en haut à gauche)

Saisir : (remarque les erreurs volontaires sont en italique et souligné ci-dessous) Num Produit Désignation
Saisir : (remarque les erreurs volontaires sont en italique et souligné ci-dessous)
Num Produit
Désignation
Prix Ht
Taux Tva
Erreur
CAN001
Imprimante laser
Canon type 1
1 puis 300
19.6%
Erreur sur le Prix
MIC001
Initiation
à
15
20.6% puis 5.5%
ACCESS
pour
erreur
Erreur sur la Tva
La tva sur les livres est à 5.5%
erreur
erreur
les Nuls
CAN001
Imprimante
1000
19.6%
Erreur sur Num Produit
détectée seulement après saisie
de Taux Tva (doublon dans clé
primaire avec le 1° enregistrement) :
erreur
modifier ce Num Produit en
CAN002
EPS001
Imprimante
75
19.6%
Erreur sur Désignation
(doublon sur propriété "OUI
sans doublon"), modifier cette
Désignation avec Imprimante
Jet encre Epson série1

Remarque sur le champ Num Produit : les 3 premières lettres correspondent à la marque du produit. CAN pour Canon, EPS pour Epson, MIC pour l'éditeur Microapplication

Il y a vérification automatique de l’unicité (Unique) de la clé Primaire de Num produit.

l’unicité (Unique) de la clé Primaire de Num produit. Remarque : les Données saisies sont enregistrées

Remarque : les Données saisies

sont enregistrées automatiquement (pas besoin d'enregistrer sauf la

mise en forme ou les définitions des champs des tables).

Elargir la colonne Désignation

(modification de la mise en forme).

la colonne Désignation (modification de la mise en forme). Fermer la table : (l'enregistrement de la

Fermer la table : (l'enregistrement de la mise en forme de la table est proposé) Ouvrir la table : elle est triée sur la clé primaire : Num Produit

table : elle est triée sur la clé primaire : Num Produit symbole sur une vierge
table : elle est triée sur la clé primaire : Num Produit symbole sur une vierge

symbole

sur une

vierge

indique

la

Ajouter un enregistrement par ce bouton dans la dernière ligne de la

(ce

enregistrements) et tester l’erreur sur le taux de TVA:

des

ligne

table signalée par

position

pour

ajouter

CAN003

Imprimante Canon couleur

300

33.33% puis 19.6%

Supprimer l'enregistrement ci-dessus en le sélectionnant préalablement par la colonne grisée à gauche de Num Produit puis Suppr du clavier. Fermer la table :

3. Créer les Tables Complexes

Nous allons créer les tables pour gérer les Commandes de Produits faites par les Clients.

Il y a 2 aspects complexes concernant les Commandes de Produits :

a) Chaque enregistrement d'une table1 fait référence à au plus

1 seul

- Une Commande

fait référence à au plus

1 seul Client.

enregistrement d'une table2.

b) Chaque enregistrement d'une table1 fait référence à au plus

N

chaque enregistrement d'une table2 fait référence à au plus N

 

enregistrements d'une table2 et enregistrements d'une table1.

- Une Commande un Produit

fait référence à au plus fait référence à au plus

N Produits qui sont commandés

N Commandes où il est commandé.

et

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

A. Deux régles de base pour créer des tables

Si on ne dispose pas d'une analyse des données sous forme de

et

De manière

Modèle Conceptuel de Données (MCD)

Modèle Logique de Données (MLD)

très simplifiée et limitée

, on peut utiliser les règles suivantes directement dans Access.

, il existe 2 types principaux de relation entre 2 tables :

Relation Père - Fils

et

Relation Frère - Sœur

1) Relation Père - Fils :

et Relation Frère - S œ ur 1) Relation Père - Fils : PERE FILS 1
et Relation Frère - S œ ur 1) Relation Père - Fils : PERE FILS 1
PERE FILS 1 Père. x x x x valeur de l'identification du Père. x x
PERE
FILS
1 Père.
x
x
x
x
valeur de l'identification du Père.
x
x
x
Clé primaire
SANS doublon
Père sans fils ou ayant
perdu son ou ses fils
Fils de père
inconnu
Table Père

Un Père peut avoir de 0 à N Fils, un Fils peut avoir de 0 à Pour gérer cette relation, on ajoute dans la table Fils

un champ Ref Père contenant la

Clé étrangère AVEC doublons
Clé étrangère
AVEC doublons
Ref Père contenant la Clé étrangère AVEC doublons Table Fils Convention perso pour nom Clé étrangère

Table Fils

Convention perso pour nom Clé étrangère : Ref

+ (Nom de la table liée) = Ref Père (en italique bleu)

Convention perso pour nom Clé primaire : Num + (Nom de la table) = Num Fils

(en gras rouge)

Demander à voir éventuellement exemple diapositive :

"PV et sa Voiture"

.

2) Relation Frère - Sœur Un Frère peut avoir de 0 à N Sœurs, une Sœur peut avoir de 0 à N Frères. Pour gérer cette relation, on ajoute une nouvelle table intermédiaire avec

relation, on ajoute une nouvelle table intermédiaire avec un champ Ref Frère contenant la valeur de
relation, on ajoute une nouvelle table intermédiaire avec un champ Ref Frère contenant la valeur de

un champ Ref Frère contenant la valeur de l'identification de Frère

Clé primaire SANS doublon
Clé primaire
SANS doublon

un champ Ref Soeur contenant la valeur de l'identification de Sœur

contenant la valeur de l'identification de S œ ur D'éventuels champs dépendants de frère ET s

D'éventuels champs dépendants de frère ET sœur.

champs dépendants de frère ET s œ ur . Clé étrangère AVEC doublons Clé étrangère AVEC
champs dépendants de frère ET s œ ur . Clé étrangère AVEC doublons Clé étrangère AVEC

Clé étrangère

AVEC doublons

Clé étrangère

s œ ur . Clé étrangère AVEC doublons Clé étrangère AVEC doublons FRERE SOEUR x x

AVEC doublons

FRERE SOEUR x x x x x x x x Clé primaire SANS doublon
FRERE
SOEUR
x
x
x
x
x
x
x
x
Clé primaire
SANS doublon
SOEUR x x x x x x x x Clé primaire SANS doublon Table Frère Table

Table Frère

x x x x x x Clé primaire SANS doublon Table Frère Table Croisement : Frère

Table Croisement : Frère - Sœur

doublon Table Frère Table Croisement : Frère - S œ ur Table S œ ur Autre

Table Sœur

Autre présentation non informatique de la table Croisement Frère - Sœur

A l'aide de ces 2 règles de base, nous allons gérer les Commandes de Produits faites par les Clients.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

B. Etude des Commandes

1) Relation Père – Fils

– B. Etude des Commandes 1) Relation Père – Fils Un Client fait référence à au
Un Client fait référence à au plus fait référence à au plus N Commandes. Une
Un Client
fait référence à au plus
fait référence à au plus
N Commandes.
Une Commande
1
seul Client.
Convention :
gras +
souligné
Table Commande
indique une
Table Client
clé primaire

2) Relation Frère – Sœur

Table Client clé primaire 2) Relation Frère – S œ ur Une Commande fait référence à

Une Commande

fait référence à au plus

N Produits

qui

sont commandés.

Un Produit

fait référence à au plus

N Commandes

qui le commandent.

Table Commande Table Produit
Table Commande
Table Produit

Table Croisement : Commande - Produit

On nomme généralement cette table de Croisement en mixant les noms des 2 tables croisées, par exemple : ComProd ou ProdCom

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

C. Créer la table CommandeEnTete

Un Client

fait référence à au plus

plusieurs () Commandes.

Une Commande fait référence à au plus

1

seul Client.

Nous sommes donc dans la règle Père – Fils vue précédemment.

Un Père

fait référence à au plus fait référence à au plus

plusieurs Fils

Un Fils

1

seul Père

Donc nous gérerons un champ Ref Client dans la table Commande pour pointer vers le champ Num Client Clé primaire de la table Client. Ce champ Ref Client est appelé Clé étrangère car il sera relié plus tard à Num Client.

On gère ici la partie fixe de la Commande, le haut de la commande, son
On gère ici la partie fixe
de la Commande, le haut de la commande, son En-tête, sans prendre en
compte les produits commandés car ils sont en nombre variable.
Nom du Champ
Type de données
Propriétés
Un nombre qui s’incrémente
automatiquement à chaque nouvelle
Num Commande
NuméroAuto
commande saisie : 1 puis 2 puis 3
Ref Client
Numérique
Taille : Entier long ;
PAS de valeur par défaut
(pour futur lien vers Num
Client
de table CLIENT)
Null interdit : OUI donc saisie obligatoire d'1 valeur de
Chaine vide autorisée : NON
(pour future compatibilité avec Num Client de la table
Client qui est NuméroAuto donc en Numérique-Entier long)
Date Commande
Date/Heure
Format : Date, abrégé (jj/mm/aaaa)
Valeur par défaut : Date( ) (=date du jour)
Afficher le sélecteur : À certaines dates
Date Echéance
Date/Heure
Format : Date, abrégé
Valeur par défaut : Date( ) + 30
Afficher le sélecteur : À certaines dates
Aujourd'hui
+ 30 jours
Payée
Oui/Non
Valeur par défaut : Non

Total Commande : NE PAS gérer car ce n'est pas une DONNEE mais un CALCUL

Remarque : Dans cette table CommandeEnTete, le nom Ref Client est choisi librement.

Je prends la règle

(Num Client est souvent utilisé mais confusion possible avec le nom et le rôle de Num Client qui est clé primaire de la table CLIENT)

'Ref'+NomTable liée

pour la Clé étrangère mais d'autres solutions sont possibles.

Définir la clé primaire sur le champ : Num Commande

Enregistrer la table : CommandeEnTete Passer en mode Feuille de données : Donnée existant dans
Enregistrer la table : CommandeEnTete
Passer en mode Feuille de données :
Donnée existant dans la clé
primaire Num Client de la
table Client
Saisir :
Table Client
Num Commande
Ref Client
Date Commande
Date Echéance
Payée
1 (Automatique)
3
(saisir une date)
(saisir une date)
Cocher pour Oui
2 (Automatique)
3
(valider date)
(valider date)
Rien pour Non
3 (Automatique)
1
(valider date)
(saisir une date)
Cocher pour Oui

Il y a 3 CommandeEnTete.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

a)

La Commande 1 fait référence à un seul client (le 3) par le champ Ref Client.

Num Commande Ref Client Date Date Echéance Payée Commande 1 3 b) Le Client 3
Num Commande
Ref Client
Date
Date Echéance
Payée
Commande
1
3
b) Le Client 3 fait référence à plusieurs Commandes (la 1 et la 2) par le champ Ref Client
Num Commande
Ref Client
Date
Date Echéance
Payée
Commande
1
3
2
3

C'est par cette technique que l'on respecte le cahier des charges :

Une Commande fait référence à au plus

1

seul Client.

Un Client

fait référence à au plus

plusieurs () Commandes.

Fermer la table CommandeEnTete.

Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire.

Gestion de la saisie dans la clé étrangère Ref Client :

Pour le champ Ref Client, pour le moment, la saisie est faite au clavier en tapant manuellement 3 par exemple.

En réalité, pour

on ne peut faire référence pour Ref Client de la table CommandeEnTete qu'à 1 des 3 clients identifiés (1, 2, 3) dans la clé primaire Num Client de la table Client.

Une erreur consisterait pour Ref Client à saisir un numéro

Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Client par une liste déroulante ne proposant QUE les Clients qui existent dans la clé primaire Num Client de la table Client. Pour faciliter le choix du client de la commande, nous présenterons en plus de Num Client, le Nom et le Prénom du client en classant ces clients par ordre alphabétique des Noms – Prénoms.

ces clients par ordre alphabétique des Noms – Prénoms. de clients une liste comme celle ci-contre,

de

clients

une

liste

comme celle ci-contre,

– Prénoms. de clients une liste comme celle ci-contre, 4 qui n'existe pas dans Num Client
4
4

qui n'existe pas dans Num Client.

celle ci-contre, 4 qui n'existe pas dans Num Client . Nous pourrons même simplifier la saisie

Nous pourrons même simplifier la saisie en n'affichant pas le Numéro du Client.

la saisie en n'affichant pas le Numéro du Client. Le champ Ref Client a le rôle

Le champ Ref Client a le rôle technique de gérer le lien entre les 2 tables. Il a ici un nom peu compréhensible pour l'utilisateur. La propriété Légende des champs permet de gérer un nom de substitution qui s'affichera à la place de Ref Client. Nous n'utilisons pas cette procédure pour le moment pour ne pas compliquer la compréhension.

Si vous relisez ce polycopié pour faire un projet Access, il faut traiter la gestion de ces listes déroulantes de clés étrangères dès la création des Tables.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

D. Créer la table CommandeLigneProduit

Une Commande

Un Produit fait référence à au plus plusieurs Commandes.(où il est commandé) Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée.

fait référence à au plus

plusieurs Produits (commandés).

Nous sommes donc dans la règle Frère – Sœur vue précédemment.

Un Frère

fait référence à au plus

plusieurs Sœurs

Une Sœur

fait référence à au plus

plusieurs Frères

Donc, alors que les tables CommandeEnTête et Produit sont déjà créées, nous allons créer une nouvelle table intermédiaire entre ces 2 tables pour assurer le lien plusieurs à plusieurs (N / N).

Donc nous gérerons dans cette table un champ Ref Commande pour pointer vers le champ Num Commande Clé primaire de la table Commande. Ce champ Ref Commande est appelé Clé étrangère car il sera relié avec le champ Num Commande.

Donc nous gérerons dans cette table un champ Ref Produit pour pointer vers le champ Num Produit Clé primaire de la table Produit. Ce champ Ref Produit est appelé Clé étrangère car il sera relié avec le champ Num Produit.

On gère ici la structure de la table pour un Produit commandé d' une CommandeEnTete.
On gère ici la structure de la table pour
un
Produit commandé d'
une
CommandeEnTete.
C'est la table de croisement entre la table
CommandeEnTete
et la table
Produit
.
Nom du Champ
Type de
Propriétés
données
Ref Commande
Numérique
Taille : Entier long ;
PAS de
valeur par défaut
(pour lien vers
Num Commande
de table CommandeEnTete)
(pour future compatibilité avec Num Commande de la table
CommandeEnTete
qui
est
en
NuméroAuto
donc
en
Numérique-Entier long),
Null interdit : OUI
; Chaine vide autorisée : NON
Ref Produit
Texte
(pour lien vers
Num Produit
de table Produit)
Taille : 6 ; PAS de valeur par défaut,
(pour future compatibilité avec Num
Produit qui est Texte de longueur 6)
Produit
de
la
table
Null interdit : OUI
; Chaine vide autorisée : NON
Quantité
Numérique
(quantité commandée d'un
produit d'une commande)
Taille : Réel simple (au cas où on vendrait 1 boite et
demie de 10 DVD = 15 DVD = 1,5 boite)
Valeur par défaut : 1

Ici,

un Produit commandé (CAN001) dans le cadre d'une Commande (1). Définir une clé primaire : sélectionner les 2 premiers champs Ref Commande, Ref Produit par un glissé à la souris (dans la colonne de gauche) et les définir par le bouton

la

clé

primaire

n'est

pas

mono-champ.

C'est

le

couple

1

-

CAN001

qui

identifie

pas mono-champ. C'est le couple 1 - CAN001 qui identifie Clé primaire comme clé primaire composée
pas mono-champ. C'est le couple 1 - CAN001 qui identifie Clé primaire comme clé primaire composée

Clé primaire comme clé primaire composée :

Attention :

mais le couple Ref Commande + Ref Produit

Ref Commande et Ref Produit

ne sont pas individuellement clé primaire est clé primaire.

Il n'y a qu'1 Clé primaire par Table.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Donnée existant dans la clé primaire Num Produit de la table Produit

Enregistrer la table : CommandeLigneProduit

(Ce nom intégre Commande et Produit : les 2 tables croisées) Passer en mode Feuille
(Ce nom intégre Commande et Produit : les 2 tables croisées)
Passer en mode Feuille de données :
Saisir :
Ref Commande
Ref Produit
Quantité
1
CAN001
4
1
EPS001
2
Table Produit
2
CAN001
1
2
CAN002
3
2
MIC001
5

Table CommandeLigneProduit Nous avons donc 5 Produits commandées dans CommandeLigneProduit répartis sur 2 Commandes. La Commande 1 (Ref Commande) contient 2 Produits, CAN001 et EPS001 La Commande 2 (Ref Commande) contient 3 Produits, CAN001, CAN002 et MIC001

Le Produit CAN001 (Ref Produit) a été commandé 2 fois, dans les Commandes 1 et 2.

Un produit commandé est identifié par la clé primaire composite

Le couple

Ref Commande - Ref Produit

.

1 - CAN001

identifie la commande du produit CAN001 dans la commande 1.

Il est impossible de ressaisir ce couple 1 - CAN001 sinon Doublon sur clé primaire. Fermer la table CommandeEnTete

Fermer Access et donc la base essai (croix en haut à droite)

Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire.

Gestion de la saisie dans les clés étrangères Ref Commande et Ref Produit :

Pour le champ Ref Produit, pour le moment, la saisie est faite au clavier en tapant manuellement CAN001 par exemple.

faite au clavier en tapant manuellement CAN001 par exemple. En réalité, pour une liste de produit
faite au clavier en tapant manuellement CAN001 par exemple. En réalité, pour une liste de produit
faite au clavier en tapant manuellement CAN001 par exemple. En réalité, pour une liste de produit

En réalité, pour une liste de produit comme celle ci-contre, on ne peut faire référence pour Ref Produit de la table CommandeLigneProduit qu'à 1 des n Produits identifiés (ACE001, ACE002, CAN001, …) dans la clé primaire Num Produit de la table Produit. Une erreur consisterait pour Ref Produit à saisir ABC001 qui n'existe pas dans Num Produit.

Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Produit par une liste déroulante ne proposant QUE les Produits qui existent dans la clé primaire Num Produit de la table Produit. Pour faciliter le choix du produit commandé, nous présenterons en plus de Num Produit, la Désignation du produit en classant ces désignations de produits par ordre alphabétique.

ces désignations de produits par ordre alphabétique. Nous pourrons même simplifier la saisie en n'affichant

Nous pourrons même simplifier la saisie en n'affichant pas le Numéro du Produit.

Si vous relisez ce polycopié pour faire un projet Access, il faut traiter la gestion de ces listes déroulantes de clés étrangères dès la création des Tables.

de clés étrangères dès la création des Tables. Faire de même pour l'autre clé étrangère Ref

Faire de même pour l'autre clé étrangère Ref Commande de cette table.

FIN TD1
FIN TD1

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

E. Conventions de nommage dans les Tables

- Pour les noms des champs :

J'ai choisi d'utiliser les possibilités d'Access avec espaces et accents car ces noms sont affichés à l'utilisateur de l'application.

Je mets une majuscule à la première lettre de chacun des mots composant le Champ.

Exemple : Date Echéance avec 2 majuscules, 1 espace entre Date et Echéance et 1 accent.

Remarque : On peut aussi gérer des noms sans espace et sans accent (DateEcheance) pour faciliter

et gérer dans ce cas la propriété du champ Légende qui

propose un nom de substitution (avec espaces et accents : Date d'Echéance) pour les affichages dans les formulaires

l'écriture de ces noms en programmation VBA

l'écriture de ces noms en programmation VBA - Pour les noms des tables : J'ai choisi

- Pour les noms des tables :

J'ai choisi de NE PAS utiliser les possibilités d'espace et d'accent car ces noms NE SONT PAS affichés à l'utilisateur de l'application.

Je mets une majuscule à la première lettre de chacun des mots composant la Table. Je note les noms de table au singulier car une table définit la structure pour 1 enregistrement type.

Exemple :

CommandeEnTete

avec 2 majuscules, 0 espace, 0 accent et au singulier.

F. Importer des données d'Excel dans Access

Le menu Données Externes permet d'importer des données d'origines diverses vers Access. Attention : la structuration des données dans Excel est incompatible avec celle d'Access. On peut récupérer certaines informations d'Excel dans Access mais un travail manuel est ensuite nécessaire pour restructurer ces informations suivant le modèle Relationnel utilisé par Access.

Le transfert Excel Access est souvent difficile.

G. Exporter des données d'Access vers Excel

Le menu Données Externes permet d'exporter des données vers diverses destinations comme Excel. Remarque : la structuration des données dans Excel est incompatible avec celle d'Access. On peut exporter des informations d'Access vers Excel.

Le transfert Access Excel est généralement facile.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

4. Sécurité de l'utilisation de l'application

– 4. Sécurité de l'utilisation de l'application Par défaut, Access est configuré comme ci-dessous dans

Par défaut, Access est configuré comme ci-dessous dans Bouton Office (Fichier dans version 2010), Options Access, Centre de gestion de la confidentialité, Paramètres de centre de gestion de la confidentialité :

la configuration ci-dessus et cliquer à chaque ouverture de la base sur le bouton Option…
la
configuration
ci-dessus
et
cliquer
à
chaque ouverture de la base sur le bouton Option…
puis choisir Activer le contenu
si vous faite confiance
à l'origine du fichier.
configuration
ci-dessus
en
activant
l'option
Activer
toutes les
macros
.
C'est non
recommandé
et

potentiellement dangereux car ainsi, pour toutes les applications, du code malsain peut être exécuté.

Donc, à l'ouverture d'une application Access, vous pouvez voir ceci :

En effet, une application Access (comme Excel, Word et Powerpoint) peut avoir un contenu (programme VBA ou autres techniques) potentiellement dangereux.

Donc, ici, du contenu est désactivé. Pour gérer cet aspect, plusieurs solutions :

1. Garder

2. Modifier la

3. Garder la configuration ci-dessus pour le Paramètre des macros à Désactivé mais définir un dossier où vous rangerez les applications de confiance (les vôtres par exemple). Dans la fenêtre

du Centre de gestion de la confidentialité, Emplacements approuvés,

ajouter un nouvel

emplacement

pour un dossier (et éventuellement ses sous-dossiers) pour obtenir un résultat de ce

type. Attention, cette opération peut poser problème sur un disque d’un réseau local protégé.

problème sur un disque d’un réseau local protégé . C'est cette dernière solution qui est recommandée

C'est cette dernière solution qui est recommandée et que vous mettez en place. Valider ces paramètres et fermer Access.

-Sous l'application Explorateur de fichiers

Access. -Sous l'application Explorateur de fichiers : - Supprimer éventuellement la base : essai .accdb -

:

- Supprimer éventuellement la base : essai.accdb - Copier Fac01a2007.accdb depuis le dossier de correction

vers

votre dossier de travail.

- Ouvrir la base : Fac01a2007.accdb par double clic (la votre , pas celle donnée en correction) Cette application a les mêmes définitions que ci-dessus mais avec plus de données saisies dans les tables.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

5. Utiliser les tables en mode Interactif

A. Rechercher des données

Ouvrir Table Client :

Positionner le curseur sur le champ Nom et sur l’enregistrement 1:

Clic sur le bouton de Recherche 1) Caractères génériques * ? #

a) Astérisque : * (remplace une chaîne de caractères quelconque)

Positionner le curseur sur le champ Nom et sur l’enregistrement 1:

le curseur sur le champ Nom et sur l’enregistrement 1: (Jumelles de l'onglet Accueil) : TERIEUR

(Jumelles de l'onglet Accueil) :

TERIEUR puis bouton Suivant

de l'onglet Accueil) : TERIEUR puis bouton Suivant Rechercher : BON* Rechercher : *R b) Point

Rechercher :

BON*

Rechercher :

*R

b) Point d'interrogation : ? (remplace un seul caractère quelconque)

Positionner le curseur sur le champ Nom Client et sur l’enregistrement 1:

Rechercher :

c) Dièse : # (remplace un seul caractère-chiffre)

Positionner le curseur sur le champ Adresse et sur l’enregistrement 1:

??R

Rechercher :

6#*

Rechercher :

6* (comprendre la différence avec 6#*)

B. Remplacer des données

Onglet Accueil > bouton de Recherche

Positionner le curseur sur le champ Adresse et sur l’enregistrement 1:

sur le champ Adresse et sur l’enregistrement 1 : > Remplacer Rechercher : bd Remplacer par:

> Remplacer

Rechercher :

bd

Remplacer par:

Ce que vous cherchez 'bd' est ou pas une sous partie du 'champ entier' ?

est ou pas une sous partie du 'champ entier' ? ( attention : rechercher dans "champ

(attention : rechercher dans "champ entier" ou autre manière ?) boulevard

a) en manuel : bouton Suivant pour chercher et bouton Remplacer pour modifier

b) en automatique : bouton Remplacer tout

Remettre bd à la place de boulevard

C. Tester les boutons…

1) Les 5 boutons de déplacement d’enregistrements en bas d’écran

de déplacement d’enregistrements en bas d’écran Premier , Précédent , Rang de l'enregistrement

Premier , Précédent, Rang de l'enregistrement courant

2) Les 2 boutons de tri croissant et décroissant

courant 2) Les 2 boutons de tri croissant et décroissant , Suivant , Dernier, Nouvel enregistrement

, Suivant, Dernier, Nouvel enregistrement

et décroissant , Suivant , Dernier, Nouvel enregistrement Ensat - Informatique Appliquée - Marc Souques Page

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

6. Définir les relations entre les tables

Nous avons maintenant 4 tables, préparées pour être liées les unes aux autres. Avant de tirer les Relations, il faut vérifier que toutes les tables sont fermées et non utilisées par des formulaires ou requêtes. Accéder à la fenêtre Relation :

Onglet Outils de base de données

la fenêtre Relation : Onglet Outils de base de données Ci-dessus : travail à faire =

Ci-dessus : travail à faire = lier les tables par des Relations ou Jointures

.
.

/ Relations

Ajouter (si besoin par bouton

CommandeLigneProduit et Produit et fermer cette fenêtre d'ajout.

+Afficher la table

) les 4 tables: Client, CommandeEnTete,

1° lien :

1 Client (Père) peut avoir N CommandeEnTete (Fils) et

1 CommandeEnTete (Fils) est liée à 1 seul Client (Père)

Définir des Liens ( appelés aussi Jointures) :

* Glisser

Num Client de Client (clé primaire) sur

Ref Client de CommandeEnTete (clé étrangère) . Boîte de dialogue :

- cocher Appliquer Intégrité Référentielle,

(vérifications des données des liens, voir TEST plus loin)

- Ne pas cocher 'Mettre à jour en cascade'

- Ne pas cocher 'Effacer en cascade'

- Type de Jointure (consulter seulement)

Créer

à jour en cascade' - Ne pas cocher 'Effacer en cascade' - Type de Jointure (consulter
Un-à-plusieurs : c'est le cas classique Un-à-un : erreur probable
Un-à-plusieurs : c'est le cas classique
Un-à-un : erreur probable
: c'est le cas classique Un-à-un : erreur probable EGAUX Remarque : le 1 et le
EGAUX
EGAUX

Remarque : le 1 et le se placent automatiquement sur le lien, Le 1 à coté du champ clé primaire car ce champ est sans doublon, Le à coté du champ clé étrangère car ce champ est doublons possibles.

clé étrangère car ce champ est doublons possibles. Pour une valeur de Num Client , on

Pour une valeur de Num Client, on peut trouver N () Commandes. Pour une valeur de Ref Client, on ne peut trouver qu'1 Client.

2° lien :

1 CommandeEnTete peut avoir N CommandeLigneProduit et

1 CommandeLigneProduit est liée à 1 seule CommandeEnTete

Définir des Liens ( appelés aussi Jointures) :

Définir des Liens ( appelés aussi Jointures ) : * Glisser Num Commande de CommandeEnTete (
Définir des Liens ( appelés aussi Jointures ) : * Glisser Num Commande de CommandeEnTete (

* Glisser Num Commande de CommandeEnTete (clé primaire) sur Ref Commande de CommandeLigneProduit (clé étrangère) Remarque : Ref Commande n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié d'une clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit . Boîte de dialogue

- cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin)

- Relation 1 à Plusieurs

- Type de Jointure (consulter seulement)

-Pas de Mise à jour et pas d'Effacement en cascade

Créer

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

3° lien :

1 Produit peut avoir N CommandeLigneProduit et

1 CommandeLigneProduit est liée à 1 seul Produit

Définir des Liens ( appelés aussi Jointures) :

) mais la moitié d'une
) mais la moitié d'une

* Glisser

Ref Produit de CommandeLigneProduit (clé étrangère) Remarque : Ref Produit n'est pas un champ clé primaire (malgré le symbole clé clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit . Boîte de dialogue

Num Produit de Produit (clé primaire) sur

- cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin)

- Relation 1 à Plusieurs-Pas de Mise à jour et pas d' Effacement en cascade

- Type de Jointure (consulter seulement)

Créer

Convention personnelle (à garder) pour nommer les champs des tables:

Clé primaire mono-champ :

Numxx

(xx pour nom de cette table)

Clé étrangère

:

Refxx

(xx pour nom de la table liée)

Remarque : On trouvera ailleurs que dans notre établissement des liens (jointures, relations) entre clé primaire et clé étrangère comme ceci par exemple :

Numxx

clé primaire de table-père et

Numxx

clé étrangère de table-fils

ou

Codexx

clé primaire de table-père et

Codexx

clé étrangère de table-fils

ou

Idxx

clé primaire de table-père et

Idxx

clé étrangère de table-fils

ou

Refxx

clé primaire de table-père et

Refxx

clé étrangère de table-fils.

Soit le même nom de champ pour la clé Primaire et Etrangère !!! Je n'adhère pas, à titre pédagogique, à cette manière de nommer 2 choses différentes avec le même nom mais il faut savoir que cette manière de nommer existe même si elle est ambigüe.

Cela vient en partie du fait qu'il existe des logiciels (PowerAMC, WinDesign) qui, à partir d'un MCD, génèrent automatiquement un MLD Relationnel et que ces logiciels reprennent (faute de règle) automatiquement le nom de la clé primaire du MCD (l'identifiant pour être exact) pour créer la clé étrangère.

Comme il n'y a pas de règle pour nommer ces 2 types de clés, chacun fait avec sa règle. Vous trouverez donc toutes les combinaisons possibles de clé Primaire et Etrangère, l'essentiel est de bien comprendre le rôle différent de chaque clé :

La Clé primaire :

La Clé primaire : - identifie chaque enregistrement d'une table. - est SANS doublon. (pour générer
La Clé primaire : - identifie chaque enregistrement d'une table. - est SANS doublon. (pour générer
La Clé primaire : - identifie chaque enregistrement d'une table. - est SANS doublon. (pour générer

- identifie chaque enregistrement d'une table.

- est SANS doublon.

(pour générer AUTOMATIQUEMENT un numéro).
(pour générer AUTOMATIQUEMENT un numéro).
SANS doublon. (pour générer AUTOMATIQUEMENT un numéro). enregistrement d'une autre table. - est souvent de type

enregistrement d'une autre table.

un numéro). enregistrement d'une autre table. - est souvent de type numérique et même Numauto -

- est souvent de type numérique et même Numauto

- est définie comme Primaire car clic sur

La Clé étrangère :

- pointe vers 1

- est AVEC doublon possible (2 fois la valeur 1 car 2 Commandes peuvent pointer vers le même

Num Client 1).

- est d'un type qui dépend obligatoirement du type de la clé primaire pointée, JAMAIS Numauto

car l'objectif est que l'utilisateur choisisse MANUELLEMENT (ou par liste déroulante) un enregistrement de l'autre table. - est définie comme Etrangère seulement parce que c'est elle qui est liée à la clé primaire de l'autre table.

Nous nommerons donc différemment clé primaire et clé étrangère.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

A. Importance des relations dans un SGBD Relationnel

Access est un SGBD (Système de Gestion de Base de Données) Relationnel.

Tout le fonctionnement d'une application sous Access est basé sur les Relations entre les Tables.

La définition des Tables et Relations représente les FONDATIONS de l'application sur lesquelles il 'suffira' ensuite de créer d'autres objets bénéficiant de ces Relations. En France, la méthode la plus utilisée pour créer ces relations est la méthode Merise qui ne sera pas abordée ici. La méthode UML prend peu à peu le relais de la méthode Merise avec les mêmes principes concernant la définition des Données.

Rater la définition des Tables et Relations condamne l'application à l'échec !!!

B. Des régles dans les relations

à l'échec !!! B. Des régles dans les relations Règle 1 : L'un des 2 champs

Règle 1 :

L'un des 2 champs du lien est obligatoirement une clé primaire

L'autre champ est obligatoirement une clé étrangère (Ref xxx dans mes conventions) donc, jamais 2 clés primaires reliées :

mes conventions) donc, jamais 2 clés primaires reliées : ( Num xxx dans mes conventions). Num

(Num xxx dans mes conventions).

Num Commande (1) n’a aucun rapport avec Num Produit (CAN001)

Attention : certaines clés étrangères ont le symbole composée de plusieurs champs : exemple : Ref Produit

composée de plusieurs champs : exemple : Ref Produit car elles sont sous partie d'une clé

car elles sont sous partie d'une clé primaire

Produit car elles sont sous partie d'une clé primaire Règle 2 :   Pour qu’une relation

Règle 2 :

 

Pour qu’une relation (lien ou jointure) puisse être réalisée, les 2 champs liés doivent contenir des données de même type et même longueur.

 

Clé primaire (Num xxx)

Clé étrangère (Ref xxx)

 

(NumAuto) donc du Numérique entier

Numérique, Entier long

Texte, Longueur 6

Texte, Longueur 6

Numérique, Entier long

Numérique, Entier long

Règle 3 : Les valeurs du champ Ref xxx de la table1 doivent pouvoir être
Règle 3 :
Les valeurs du champ Ref xxx de la table1 doivent pouvoir être égales …
au champ Num xxx de la table2.
=
Clé primaire (Num xxx)
Clé étrangère (Ref xxx)
Num Client de Client =
3
Ref Client de CommandeEnTete =
3
Num Produit de Produit =
CAN001
Ref Produit de CommandeLigneProduit = CAN001

Etablir un lien entre Num Client (1, 2, 3, 4,…)

et

Ref Produit (CAN001, EPS001, CAN002, …)

n'a

AUCUN sens

car les valeurs ne

seront jamais égales

(=).

Pour modifier ou Supprimer des relations : (Clic droit sur le trait 1-- ) Enregistrer la mise en forme des relations et Fermer cette fenêtre Relation :

IMPORTANT :

Le travail réalisé par Accès au niveau des Relations consiste :

Voir exemples en bas de page 5 du Chapitre I

- à rechercher à partir d'une valeur d'une clé étrangère

l'unique (1) valeur

égale (=) dans la clé primaire liée.

- à rechercher à partir d'une valeur d'une clé primaire

les (N) valeurs égales (=) dans la clé étrangère liée.

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

C. Tester l'Intégrité Référentielle des Relations

L'Intégrité Référentielle est la vérification des données présentes dans la clé primaire et la clé étrangère d'une Relation suite à une opération de saisie, modification ou suppression.

1) Ouvrir la table CommandeEnTete Tenter de saisir dans Ref client de la table CommandeEnTete une valeur n'existant pas dans Num Client de la table Client : 999 999 (et valider l'enregistrement)

table Client : 999 999 (et valider l'enregistrement)  erreur car, dans la table Fils CommandeEnTete,
 erreur car, dans la table Fils CommandeEnTete, saisir dans Ref Client la valeur 999
 erreur car, dans la table Fils CommandeEnTete, saisir dans Ref Client la valeur 999 999

alors

que dans la clé primaire Num Client de la table Père "Client" la valeur 999 999

pas valide.

table Père "Client" la valeur 999 999 pas valide. n'existe pas, cela n'est Un Fils ne

n'existe pas, cela n'est

Un Fils ne peut PAS faire référence à un Père dont la valeur ne peut être retrouvée dans la table Père.

Remarque : un fils peut ne pas faire référence à un père si on l'autorise, une CommandeEnTete pourrait ne pas faire référence à un client (pas de saisie dans Ref Client) mais nous l'avons interdit dans cette application dans le champ Ref Client avec la propriété Null interdit (vide interdit) : OUI et Chaine

vide autorisé : NON

donc ici la saisie est obligatoire.

2) Ouvrir la table Produit Tenter de supprimer de la table Produit le produit CAN001 (clic dans la marge et bouton alors que ce produit existe (est commandé) dans la table CommandeLigneProduit dans le champ Ref Produit : CAN001.

Commande LigneProduit dans le champ Ref Produit : CAN001. Suppr )  erreur car supprimer dans
Suppr
Suppr

)

LigneProduit dans le champ Ref Produit : CAN001. Suppr )  erreur car supprimer dans la

erreur car supprimer dans la table Père une clé primaire CAN001 alors qu'au moins un

enregistrement de la table Fils CommandeLigneProduit y fait référence par la clé étrangère Ref Produit est une suppression non valide.

Un Père ne peut PAS être supprimé s'il a encore au moins 1 Fils qui fait référence à lui même.

Dans les cas 1) et 2), on ne veut pas d'un Fils

pointant
pointant

vers un Père NON "trouvable".

Voila ce que l'intégrité référentielle doit

éviter
éviter

:

ce que l'intégrité référentielle doit éviter : Null interdit (vide interdit) : NON donc saisie
ce que l'intégrité référentielle doit éviter : Null interdit (vide interdit) : NON donc saisie

Null interdit (vide interdit) : NON donc saisie facultative Fils de Père inconnu est autorisé ici.

Utiliser le fichier Fac02a2007.accdb pour la suite. (Demander à Voir le diaporama "PV et sa Voiture")

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

7. Résumé des Tables

4 tables avec : Nom des champs, Clé primaire, Type de données et Propriétés de

chaque champ (ici propriétés du champ fléché).

de chaque champ (ici propriétés du champ fléché). Plus liste déroulante tard, "Liste de
de chaque champ (ici propriétés du champ fléché). Plus liste déroulante tard, "Liste de
de chaque champ (ici propriétés du champ fléché). Plus liste déroulante tard, "Liste de

Plus

liste déroulante

tard,

"Liste

de

choix"

avec

déroulante tard, "Liste de choix" avec  Des Relations entre les tables avec Intégrité
déroulante tard, "Liste de choix" avec  Des Relations entre les tables avec Intégrité
déroulante tard, "Liste de choix" avec  Des Relations entre les tables avec Intégrité
déroulante tard, "Liste de choix" avec  Des Relations entre les tables avec Intégrité
déroulante tard, "Liste de choix" avec  Des Relations entre les tables avec Intégrité

Des Relations entre les tables avec Intégrité référentielle

entre les tables avec Intégrité référentielle  Des Données saisies Remarque : Créer une

Des Données saisies

Remarque : Créer une application gérant des personnes nécessite l'autorisation ou la déclaration à la CNIL (Commission Nationale Informatique et Liberté) :

http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ch3. Les requêtes de base

La requête permet de faire des

types de Requête : la plus simple est celle qui sélectionne des enregistrements sur des critères. Possibilité de faire des requêtes qui ajoutent, modifient ou suppriment des enregistrements.

TRAITEMENTS

sur les DONNEES

des TABLES. Il existe plusieurs

1. Requête sélection

Elle permet de sélectionner, trier, calculer des enregistrements sur une ou plusieurs tables reliées entre elles.

A. Requête simple sur une seule table

Créer une Nouvelle requête, onglet Créer, bouton Création de requête

1) Requête "R01 Client Ou" Question : "Liste des clients avec visualisation des champs Nom, Prénom, Date Entrée et Ville, par

ordre alphabétique de leur nom puis prénom, habitant Clamart OU

Saisir les noms des champs ci-dessous par double-clic dans la table affichée en haut de l’écran.

double-clic dans la table affichée en haut de l’écran . basée sur la table Client. nommés

basée sur la table Client.

nommés TERIEUR "