12
PETITE INTRODUCTION À ACCESS PASCAL ANDRÉ IRIN / LEA UNIVERSITÉ DE NANTES (V ERSION PROVISOIRE ) DU 16/09/03 I. I NTRODUCTION Ce document est une présentation rapide d’ACCESS 97 et 2000 à travers un cas pratique. II. A NALYSE II.1 Description informelle On considère des produits, des clients, des commandes passées par les clients, qui portent sur des pro- duits. II.2 Description semi-formelle Le schéma suivant décrit la structure des informations. 0,n 1,1 0,n 0,n Client Commande Produit passe LigneCommande Pour simplifier, le détail des propriétés a été fourni par l’assistant de création de tables d’Access. II.3 Construction de la base Access La traduction du MCD dans un modèle relationnel conduit à une structure de la base en quatre relations : une pour chaque TE et une pour le TA n-n. A CCESS 97 - 1 - 18/09/20

PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

P E T I T E I N T R O D U C T I O N À A C C E S S

P A S C A L A N D R É I R I N / L E A

U N I V E R S I T É D E N A N T E S

(VERSION PROVISOIRE)

D U 16/09/03

I. INTRODUCTION

Ce document est une présentation rapide d’ACCESS 97 et 2000 à travers un cas pratique.

II. ANALYSE

II.1 Description informelle

On considère des produits, des clients, des commandes passées par les clients, qui portent sur des pro-duits.

II.2 Description semi-formelle

Le schéma suivant décrit la structure des informations.

0,n 1,1

0,n

0,n

Client Commande

Produit

passe

LigneCommande

Pour simplifier, le détail des propriétés a été fourni par l’assistant de création de tables d’Access.

II.3 Construction de la base Access

La traduction du MCD dans un modèle relationnel conduit à une structure de la base en quatre relations : une pour chaque TE et une pour le TA n-n.

ACCESS 97 - 1 - 18/09/20

Page 2: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

a) Relation Client (table Client sous Access)

La relation Client comporte une clé primaire par défaut, 10 champs spécifiques.

Réf client Nom de la so- Prénom du Nom du Adresse factu- Ville

1 Bridel Antoine Bridou 25, rue de bino- nantes 2 Michel Alain Michel 25, rue des Saint Denis

Département Code postal Pays Titre contact N° téléphone

Loire-Atlantique O4420 france dfj 02 40 40 40 40 La réunion O9720 France Lulu 15 15 15 15 15

b) Relation Produit (table Produit sous Access)

La relation Produit comporte une clé par défaut et 6 champs spécifiques.

Réf pro-duit

Nom du produit

Description du produit

Réf fournis-seur

Unités en stock

Prix uni-taire

Seuil de réapprovi-sionnement

1 Poires poires 25 350 12,30 F 502 Pommes pommes 50 2000 15,00 F 1503 Pêches pêches 50 250 33,00 F 25

c) Relation Commande (table Commande sous Access)

La relation Commande comporte une clé par défaut, 3 champs spécifiques, et une clé secondaire portant sur le client (index en Access). Réf commande Réf client Date de com- Date livraison Taux T.V.A.

d) Relation LigneCommande (table LigneCommande sous Access)

La relation LigneCommande comporte une clé par défaut, en fait on pouvait choisir une clé double (ref commande- ref produit), 6 champs spécifiques, et deux clés secondaires portant sur le produit et la com-mande (index en Access).

Réf détail commande

Réf com-mande

Réf produit Quantité Prix uni-taire

Remise Prix de vente

TVA Total ligne

En fait, les champs Prix de vente et total ligne ne sont pas des champs de la table mais des champs calcu-lés lors d’une requête (voir la partie formulaire).

III. CRÉATION DE LA STRUCTURE

III.1 Création des tables

Dans la fenêtre principale, sous l’onglet Tables, cliquer sur le bouton Nouveau pour créer les tables. Uti-liser le mode Création ou l’assistant pour créer la table. Pour chaque champ, donner un nom, choisir le type et commenter.

Sélectionner le ou les champs devant former la clé puis sélectionner la clé par le bouton droit dans la première colonne (Clé primaire). Si on utilise une référence par défaut, ne pas choisir de champs, Access en propose une par défaut. Enregistrer la table modifiée.

ACCESS 97 - 2 - 18/09/20

Page 3: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

III.2 Etablir les relations

Ouvrir la fenêtre des relations (bouton ). Sélectionner le champ (ou les champs) servant de lien vers une autre table et « glisser » le champ vers le champ de la table référencée. Une relation est établie. Pour maintenir les références, « ouvrir » la relation puis activer l’intégrité référentielle. Par défaut, la relation est 1-n.

III.3 Créer les index

La définition des relations crée automatiquement un index. Pour accéder aux index d’une table, sélec-

tionner la table en mode modification ( ) puis ouvrir l’index ( ), modifier éventuellement les propriétés (ordre, doublons...).

ACCESS 97 - 3 - 18/09/20

Page 4: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

IV. FORMULAIRES

Pour entrer les informations, on utilise directement la forme tabulaire des tables, ou on les entre par des formulaires.

IV.1 Formulaire

Un formulaire est un document structuré contenant des espaces réservés pour la saisie d'informations. Vous pouvez utiliser Word pour créer les types de formulaires suivants :

� Un formulaire distribué sur le Web. Les utilisateurs affichent et renseignent le formulaire dans un navigateur. Lorsque les utilisateurs renseignent le formulaire, ils transmettent leurs informations à une base de données sur un serveur HTTP. Les formulaires Web ou HTML utilisent des contrôles ActiveX.

� Un formulaire que les utilisateurs affichent et renseignent dans Word. Ce formulaire est dis-tribué et collecté au moyen d'un courrier électronique ou d'un partage réseau. Vous pouvez utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles plus puissants, vous pouvez utiliser des contrôles ActiveX dans la barre d'outils Boîte à outils. Vous pouvez compiler les données de ce formulaire et les ana-lyser dans Microsoft Access ou Excel.

� Un formulaire imprimé et renseigné sur papier. Vous pouvez insérer des zones vides que les utilisateurs doivent remplir et des cases à cocher qui répertorient des choix, tels que Oui ou Non.

La création d’un formulaire se fait directement sur la fenêtre principale soit directement en mode créa-tion soit via un assistant.

Les outils disponibles sont :

� Curseur : désigner un élément

� Assistant

� Intitulé : Insérer un intitulé.

� Zone de texte : Insérer un champ modifiable ou un contrôle modifiable qui affiche le texte tapé par l'utilisateur, les informations saisies en mode Création ou les informations attri-buées au contrôle en mode Exécution.

� Groupe d’options : Insérer un froupe d’options (voir plus loin)

� Bouton bascule : Insérer un bouton bascule qui passe d'un état à un autre, par exemple pour passer de l'affichage de plusieurs options à un affichage restreint.

� Bouton d'option : Insérer un bouton d'option à côté de chaque élément dans un groupe de plusieurs choix qui s'excluent mutuellement, c'est-à-dire que vous ne pouvez en sélectionner qu'un.

� Case à cocher : Insérer une case à cocher à côté d'une option indépendante que vous acti-vez ou désactivez. Pour insérer une case à cocher à côté de chaque élément d'un groupe d'éléments à choisir et qui ne s'excluent pas mutuellement, c'est-à-dire que vous pouvez en sélectionner plusieurs.

� Zone de liste modifiable : Insérer une association d'une zone de texte et d'une zone de liste. Un utilisateur peut soit taper une entrée, soit en sélectionner une dans une liste. Une zone de liste modifiable comprend une barre de défilement.

ACCESS 97 - 4 - 18/09/20

Page 5: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

� Zone de liste : Insérer une zone qui affiche les choix disponibles sous la forme d'une liste. Si la liste dépasse la taille de la zone, l'utilisateur peut la faire défiler pour afficher des choix supplémentaires.

� Bouton de commande : Insérer un bouton de commande qui effectue une opération, par exemple l'affichage d'options supplémentaires.

� Image : Insérer une image ou un graphisme.

� Cadre d’objet indépendant : Insérer un cadre servant à afficher un objet OLE.

� Cadre d’objet dépendant : Insérer un cadre servant à afficher un objet OLE, varie d’un en-registrement à l’autre.

� Sauts : Insérer un saut de page.

� Onglet : Insérer un classeur à onglets.

� Sous-formulaires : Insérer un formulaire.

� Trait : Insérer une ligne.

� Rectangle : Insérer un rectangle.

� Autres contrôles : Afficher des contrôles supplémentaires que vous pouvez insérer dans un formulaire en ligne. Si le contrôle souhaité ne s'affiche pas, il est possible que vous deviez l'enregistrer.

IV.2 Formulaire simple

Pour les formulaires de remplissage des tables, nous conseillons d’utiliser d’abord l’assistant et éventuel-lement ensuite le mode création pour affiner.

Exemple de formulaire simple : client, produit : ils ne dépendent pas des autres tables.

Cas particuliers : valeurs par défaut et masque de saisie.

Prenons par exemple, la date d’une commande. On souhaite formater les dates pour faciliter leur frappe (on ne se ose plus la question de la forme de la date, elle est explicite) et définir comme valeur par défaut la date du jour.

1. Les propriétés d’un outil sont accessibles par le menu contextuel de même nom ou un double clic. Pour modifier une propriété, soit on tape sa valeur soit on clique sur en fin de ligne pour faire appa-raître une fenêtre complète de choix.

2. Le masque de saisie est sélectionné par , puis on détermine la forme souhaitée.

3. La valeur par défaut est sélectionnée par , puis on sélectionne la fonction intégrée ‘Date()’.

Le format décrit la présentation visuelle de l’outil, ici une zone de texte.

ACCESS 97 - 5 - 18/09/20

Page 6: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

IV.3 Formulaire multi-table

Nous qualifions de formulaire multi-table, un formulaire dont les champs font référence à plusieurs ta-bles. Par exemple, pour une commande, on souhaite sélectionner le client dans une liste.

Créer le formulaire via l’assistant. Modifier ensuite le formulaire en ajoutant une liste modifiable. Choi-sir les valeurs dans la table Client en sélectionnant la référence et le nom. La référence étant interne, elle est masquée. Les propriétés de la liste sont alors les suivantes :

On peut ajouter des vérifications à tout moment en associant des traitements dans l’onglet Evénement.

La propriété Source contrôle est le champ associé dans la table Commande. L’origine est une requête sur la table client dont le détail est défini dans la zone Contenu, la colonne liée est la première (numéro 1).

IV.4 Formulaire composé

Un formulaire composé comprend des sous-formulaires. C’est souvent le cas lorsqu’on a une relation 1 à plusieurs entre tables. Par exemple, on souhaite saisir le détail de la commande lors de la saisie de la com-mande (et non dans deux fenêtres). Le formulaire de saisie des informations de la commande doit donc faire apparaître la liste des produits commandés.

• Créer le (sous) formulaire comme un formulaire classique. Choisir une présentation tabulaire.

• Modifier ensuite le formulaire (Mode Création) et afficher ses propriétés.

• Choisir un affichage par défaut et un affichage autorisé sous forme d’une feuille de données.

ACCESS 97 - 6 - 18/09/20

Page 7: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

• Reprendre le formulaire principal de la commande. Afficher en parallèle la fenêtre principale des formulaires (affichage mosaïque, cascade, ou ordinaire) puis glisser le sous-formulaire vers le formu-laire principal de la commande.

En fait, le formulaire souhaité est plus complexe : certaines valeurs sont calculées (prix de vente, total), d’autres sont données à titre indicatif (nom du produit), d’autres ont des valeurs par défaut (TVA globale, prix unitaire du produit). Nous passons donc par une requête complète pour définir les champs du formulaire.

V. REQUÊTES

Une requête est une interrogation de la base de données : des informations sont extraites ou calculées à partir des tables de la base.

Pour créer une requête, sélectionner l’onglet Objets>Requêtes de la fenêtre principale. Utiliser l’assistant pour écrire les premières requêtes. Deux modes sont applicables (Menu Affichage) : le mode création et le mode SQL.

V.1 Requête fournissant le détail complet de la commande

Tous les champs de la table LigneCommande sont sélectionnés, ainsi que le nom du produit de la de la table Produit et le numéro de commande et le taux de TVA de la table Commande. Choisir l’affichage dé-taillé.

ACCESS 97 - 7 - 18/09/20

Page 8: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

Entrer deux nouveaux champs en utilisant le générateur d’expressions : Prix de vente et Total ligne.

Prix de vente : Prix de vente: CMonnaie([PrixUnitaire]*[Quantité]*(1-[Remise]))

Total ligne : PrixTotal: CMonnaie( [PrixVente]*(1+ [TVA] ))

Voici la requête en mode SQL : SELECT LigneCommande.RéfDétailCommande, LigneCommande.RéfCommande, Ligne-Commande.RéfProduit AS LigneCommande_RéfProduit, LigneCommande.Quantité, LigneCommande.PrixUnitaire, LigneCommande.Remise, LigneCommande.TVA, Pro-duit.NomProduit, CCur([LigneCommande]![PrixUnitaire]*[Quantité]*(1-[Remise])) AS [Prix de vente], CCur([Prix de vente]*(1+[TVA])) AS PrixTo-tal

FROM Produit INNER JOIN LigneCommande ON Produit.RéfProduit = LigneCom-mande.RéfProduit

ORDER BY LigneCommande.RéfCommande, LigneCommande.RéfProduit;

V.2 Retour sur le formulaire détaillant les lignes

La source du sous-formulaire est la requête LCComplète (LigneCommande Complète).

Plusieurs champs sont à modifier :

• Certains champs ne sont pas modifiables, dans l’onglet Donnée, leur zone verrouillée est positionnée à oui.

• RéfDétailCommande : numéro donné implicitement par le système

• NomProduit : affiche le nom suivant la référence du produit saisie.

• Prix de vente, PrixTotal : éléments calculés.

• Le prix unitaire et la quantité sont des valeurs positives strictement : dans l’onglet Donnée l’option Valide si est ‘>0’. Pour le prix de vente, c’est implicite par calcul. Les pourcentages sont inférieurs à 1.

• Par défaut, la remise est nulle.

• Les pourcentages sont valides si les valeurs sont inférieures à 1 et supérieures à 0 (<1 Et >0).

• Par défaut, le prix unitaire est le prix du produit (Table Produit). Nous avons deux possibilités, soit on ajoute le prix unitaire du produit dans la requête (avec précaution car deux champs ont le même

ACCESS 97 - 8 - 18/09/20

Page 9: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

nom, il faut les nommer via leur table : table.champ) soit on utilise une fonction qui met à jour le prix lorsqu’une nouvelle référence de produit est saisie. Prenons ce dernier cas :

• Pour le champ LigneCommande_RéfProduit du sous-formulaire, activer l’onglet Evénement, choisir Générateur de code : on crée une procédure événementielle. L’objectif est de fixer un prix par défaut en sélectionnant ce prix dans la table des produits par une requête SQL.

Private Sub LigneCommande_RéfProduit_AfterUpdate()

On Error GoTo Err_Réf_Produit_AfterUpdate

Dim strFiltre As String

' Définit le filtre avant d'être utilisé dans la fonction DLookup.

strFiltre = "[RéfProduit] = " & Me![LigneCommande_RéfProduit]

' Recherche le prix unitaire du produit et l'assigne au contrôle Prix uni-taire.

Me![PrixUnitaire] = DLookup("[PrixUnitaire]", "Produit", strFiltre)

Quitte_Réf_Produit_AfterUpdate:

Exit Sub

Err_Réf_Produit_AfterUpdate:

MsgBox Err.Description

Resume Quitte_Réf_Produit_AfterUpdate

End Sub

V.3 Liens entre le formulaire et le sous-formulaire

Ce qui fait le lien entre les deux formulaires est la commande en cours. Cela est mis en évidence comme suit : en mode création du formulaire principal, sélectionner le sous-formulaire et afficher ses propriétés. Le champ fils est RéfCommande, le champ père est RéfCommande. Ainsi, seules les lignes de commande de cette commande seront affichées.

Certaines informations d’un formulaire sont utilisées dans l’autre.

• Le prix total est calculé dans le sous-formulaire et affiché dans le formulaire global.

• Reprendre la requête Ajouter un champ texte TotalSF (onglet Autre, nom = TotalSF), verrouillé (onglet Donnée, verrouillé : oui), et non affiché (onglet Format, visible : non). dans le sous-formulaire pour la somme des prix totaux (onglet Données, source : =Somme([PrixTotal])).

• Ajouter un champ texte verrouillé TotalCommande (onglet Autre, nom = TotalCommande), ver-rouillé (onglet Donnée, verrouillé : oui), et affiché (onglet Format, visible : oui), qui référence le champ Total du sous-formulaire (onglet Données, source : =[LigneCommande Com-plète].[Formulaire]![TotalSF]).

• Le taux de TVA par défaut est celui du formulaire global.

• Ouvrir le formulaire global en mode création. Dans le sous-formulaire pour le taux de TVA, la valeur par défaut du champ TVA est une expression qui prend le formulaire chargé global (=[Formulaires]![Commande]![TauxTVA]).

Le résultat est le suivant :

• Le taux de TVA par défaut est celui du formulaire global.

• Les lignes d’une commande sont triées par numéro de produit.

• Les dates sont définies par défaut selon un masque.

• Etc.

ACCESS 97 - 9 - 18/09/20

Page 10: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

Les erreurs disparaissent lorsque les quantités sont rentrées.

VI. ETATS

Un état est une présentation efficace des données sous forme imprimée. Du fait que vous contrôlez la taille et l'aspect de tous les éléments d'un état, vous pouvez afficher les informations comme vous le voulez.

Comme pour les formulaires, on peut avoir des états de complexité variable (simple, multi-table, com-plexe). Les états sont souvent associés aux requêtes.

VI.1 Etat simple

Affichons la liste alphabétique des clients par ville.

Dans le fenêtre principale, on active l’assistant d’état. Tous les champs de la table Client sont sélection-nés. Il n’y a pas de critère de regroupement car c’est un état simple. Le critère de tri est l’ordre alphabétique des villes et des noms de sociétés clientes. La présentation est au choix.

Les états sont exportables sur Word ou Excel.

VI.2 Etat multi-table

Affichons la liste des commandes par clients.

ACCESS 97 - 10 - 18/09/20

Page 11: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

VI.3 Etat complexe

Reprenons la commande détaillée sous forme d’état.

A partir de la fenêtre principale, sous l’onglet Formulaire sélectionner le formulaire Commande puis avec le menu contextuel sélectionner l’option Enregistrer sous, choisir le format Etat et le tour est joué.

ACCESS 97 - 11 - 18/09/20

Page 12: PETITE INTRODUCTION À ACCESS - epsic · 2004. 1. 16. · utiliser du remplissage, des cases à cocher et des listes déroulantes. Pour davantage de flexibilité et des contrôles

VII.COMPLÉMENTS

En complément, on examine le traitement des images, des objets OLE, de l’exportation, des macro-commandes, de la programmation Visual Basic, de la publication sous Internet, de l’interface de programma-tion avec des langages à objets…

ACCESS 97 - 12 - 18/09/20