Cours SGBD Acces PDF


Télécharger



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Cours SGBD Acces avec exemples de pratique

...

Les Base de données qui acceptent structures complexes sont dits hiérarchiques ou réticulaires. Puisque l’usage des DB hiérarchiques est complexe, ils ont été remplacés par les Bases de Données Relationnels qui contiennent un ou plusieurs tableaux dans les quels les colonnes sont les champs, et les lignes sont les fiches. La simplicité de la structure relationnelle, d’autre partie, veut une certaine redondance représentée par un champ en commune entre certaines tableaux. La représentation relationnelle des données de l’exemple de la Figure ‎1 2 origines le tableau de l’état civil et le tableau

augmentation; étant la colonne commune la matricule.

Prénom               Nom      Matricule            .....

ROSSI    JEANNE               805567  ...

BIANCHI              ETIENNE              231784  ...

VERDI   PAUL     901526  ...

Figure‎1 3 Table état civil

Matricule            Montant             Date      .....

805567  30           31/08/1998         ...

231784  20           30/04/1996         ...

901526  40           30/04/1999         ...

231784  30           30/04/2000         ...

Figure ‎1 4 Table Augmentations

La simplicité conceptuelle des DB Relationnels est évidente dans les opérations qu’on peut faire sur eux à l’aide d’un langage dit SQL (Structured Query Lanquage).

Avant de créer un logiciel ou une application , on doit faire une activité beaucoup importante, c’est à dire penser à ce qu’on veut obtenir et aux informations dont on à besoin. Cette activité est dite analyse; en particulier il faut déterminer les données qui sont nécessaire, le type d’eux (alphanumériques, nombres, date, etc.), leurs dimensions, les valeurs acceptables (domaine) et les relations entre eux.

                Nom de l'attribut                            Type      Dimension          Domaine

NOM     Caractères          30          

DATE DE NAISSANCE     Date                     

LIEU DE NAISSANCE       Caractères          25          

SALAIRE               Nombre                              > 20000 et < 100000

...                                          

SEXE      Caractères          1             M ou F

Figure ‎1 5 Données, type et domaine

1.2          LES TABLEAUX RELATIONNELLES

1.2.1      DEFINITIONS

Le modèle des bases de données relationnelles a été introduit par Edgar F. Codd, en  IBM , qu’il a formulé le modèle mathématique et il a spécifié un  langage d’interrogation. A’ partir de son travail il est né le DB2, une des premières base de données relationnelles commerciale. Ici suivent quelques définitions.

  • Les entités sont déterminées par un ensemble finit de couples <attribut, valeur> dit aussi tuple, mais il est normalement employé le mot ligne (row).
  • L'ensemble des attributs est dit schéma.
  • L'ensemble des possibles valeurs d’un attribut est dit domaine
  • Relation est l'ensemble des tuple qu’ils ont le même schème, normalement on utilise le synonyme table.

En se rapportant à la Figure ‎1 6, dans la quelle la première colonne est le schéma de la Relation Employés, une possible entité pourrais être:

NOM

DATE DE NAISSANCE

LIEU DE NAISSANCE

SALAIRE

...

SEXE      JEAN VALJEAN

31/10/1960

JEUVILLE

5000

...

M

Figure ‎1 6 Exemple d’entité

Le schéma est: {NOM, DATE DE NAISSANCE, LIEU DE NAISSANCE, SALAIRE,..., SEXE}, le domaine de l'attribut SEXE est {M, F}.

On dit clé primaire (primary key) un ensemble minimum d’attributs, s’il existe, qu’ils ont valeurs univoques, dans l'exemple la clé primaire pourrais être {NOM, DATE DE NAISSANCE}, parce que dans la Relation on peut avoir deux "ROUGE PIERRE",  mais probablement avec DATE DE NAISSANCE différente, toutefois on préfère avoir comme clé primaire un code univoque numérique.

Autres éventuelles clés sont dites clés secondaires.

La diction relationnelle dérive de la possibilité de mettre en relation entre eux des tableaux différents, en fonction d’attributs communs : dans la table dessous l’attribut CodeClient met en relation les tableaux Clients et Ventes, l’attribut CodeMatériel lie les tableaux Ventes et Matériels.

Table Clients      Table Ventes     Table Matériels

…            …            …

CodeClient

NombreFacture

CodeMatériale

RagioneSociale Quantità              Description

Adresse               DateVente         PrixUnitaire

…            Prix        …

CodeClient        

                CodeMatérial

                ….          

Figure ‎1 7 Relation entre tableaux

1.2.2      OPERATIONS

L'opération de Sélection permet d’extraire des entités d’une Relation par un prédicat sur les attributs de la relation, par exemple la Sélection "SALAIRE > 5000" sur la Relation Employés, produise une nouvelle relation qui contienne seulement entités dans les quelles l'attribut SALAIRE vaut plus de 5000.

Entre Relations ayant le même schéma sont possibles les opérations sur ensembles : Union, Intersection, et Différence.

Avec Projection d’une relation R on entende la relation R' obtenue de un sous-ensemble S des attributs  de R.

Le Produit de deux relations R1 et R2 (il est dit aussi Produit Cartésien) est une relation dont le schéma est l'union des schémas de R1 et R2 et qui contienne l'union de chaque tuple de R1 avec chacune tuple de R2.

Une Sélection sur le Produit de deux relations R1 et R2, obtenue par un prédicat de égalité parmi les attributs A1 de R1 et A2 de R2, (attributs ayants le même domaine), est dite equi-conjonction ou equi-join, et le résultat est une relation contenant les tuple de R1 unies avec les tuple de R2 pour les quelles vaut A1 = A2.

1.3          LES DBMS

Avec le mot DBMS on indique un logiciel qui gère des Bases de Données (BD) en modalité Client Server c'est-à-dire exécutant des requêtes de données ou de modification de la Base de Données, provenant de plusieurs Clients en même temps.

1.3.1      STRUCTURE PHYSIQUE

La structure physique d’une DBMS varie selon la spécifique Base de Données : dans les paragraphes qui suivent il y a quelques exemples.

1.3.1.1  ACCESS

ACCESS techniquement n’est pas un vrai DBMS, même s’il a des aspects d’un DBMS.

ACCESS est une Base de Données qui peut être contenue dans un seul fichier, avec l’application pour la gérer, c’est à dire le fichier peut contenir tableaux, formulaires, logiciels etc..

1.3.1.2  MySQL

MySQL est un DBMS gratuite, moyennement puissante et beaucoup utilisé pour des applications Internet.

Le Base de Données MySQL correspondent à un répertoire du disque, chaque table est composée par un fichier de données, un fichier de description du tableau et  un éventuel fichier avec les indexes. Les fichiers ont des noms formé par le nom du tableau et les extensions sont : .frm contient le format du tableau, .MYD est le fichier de données, .MYI est le fichier des indexes.

1.3.1.3  Oracle

ORACLE est un des plus puissantes DBMS, sa structure est basée sur :

  • un ou plusieurs fichiers de données (Data Files): ils contiennent les données et tous les informations relatives à leur élaboration,
  • un ou plusieurs fichiers de log (Redo Logfiles) : ils contiennent l’histoire des modifications faites à la Base de Données ; ils sont nécessaires pour éventuelles reconstructions de la Base de Données  dans le cas de fautes ou perte des données,
  • un ou plusieurs fichiers de contrôle (Control Files): ils contiennent des informations générales sur la Base de Données : nom, place des archives, etc..

1.3.2      STRUCTURE LOGIQUE

Un DBMS peut avoir un ou plusieurs Base de données (dans la terminologie Oracle Tablespace), et dans eux des objets, Tableaux, mais aussi Requêtes, Indexes, Logiciels, Conteurs, …

Le requêtes ou Views ou Query sont tableaux “virtuelles”, dans le sens que dans le DBMS est mémorisé comme obtenir les données d’une ou plusieurs tableaux ou requêtes mêmes. Comme les tableaux, les requêtes peuvent être interrogées et les données modifiées et ou effacées.

On utilise les requêtes pour:

             cacher la complexité de trouver des données qui sont contenus dans tableaux différents.

             Présenter les informations dans une différente perspective égard à celle du tableau réel.

             Ajouter un ultérieur niveau de sûreté, en limitant l’accès à prédéterminées ensembles de lignes et de colonnes d’une ou de plusieurs tableaux.

Les Indexes sont la composante de Banques de Données qui permettent l’accès rapide à des informations.

Les Logiciels sont la composante "personnalisé" du DBMS, ils sont fonctions, procédure ou élaborations que le DBMS effectue au vérifier d’évents particuliers (trigger).

Il est à remarquer que pratiquement toutes les informations qui servent au DBMS pour sa gestion sont maintenues dans des tableaux qui sont la  Base de Données du système.

1.3.3      LE MOTEUR DU DBMS

Les DBMS ne sont pas simplement des fichiers d’informations, mais ils sont des gérants d’informations : dans un environnement multi usagers ils permettent l'accès en contemporanéité aux données, en assurant un haut niveau de prestation, l’intégrité des données et des solutions efficaces pour faire front aux fautes du à dégât physique. Les DBMS exécutent aussi des taches prédéterminées et automatiques, comme le journal des activités, la gestion des indexes et des espaces, l’exécution d’instructions liées à certaines évents (trigger, fermeture du travail…), etc..

1.4          LE "LANGAGE" SQL

SQL est devenu le standard pour accéder aux données contenues dans les Bases de Données relationnelles. Techniquement SQL il n’est pas un langage de programmation complet, ils manquent en effet des instructions pour conditionner l'exécution ; il est surtout un outil pour interagir avec un BD relationnelle à niveau logique, avec une haute abstraction de l'implémentation des données.

Entre les possibilités de SQL on a :

             création, modification et effacement d’objets,

             interrogation de données, le résultat est une relation,

             insertion, modification et effacement de lignes.

Ici il y a seulement un aperçue de SQL selon la syntaxe accepté par ACCESS ; il faut noter, toutefois, que ACCESS contient des outils que créent les nécessaires command pour la création des tableaux, des requêtes et de la mise à jour des données.

1.4.1      CREATION D’UNE TABLE

Pendant la création d’une table, outre à déterminer les champs et leur format, il est possible indiquer si celui ci est une clé et de quel type.

ACCESS (et les DBMS) acceptent beaucoup type de donnés , ici une petite liste des plus communes :

Type      Description

INTEGER, LONG               Pour mémoriser des nombres entier

MONEY                Pour mémoriser des nombres avec quatre décimaux

AUTOINCREMENT          Nombre entier qui se auto incrément pour chaque nouveau ligne

VARCHAR,TEXT Pour les champs de texte jusqu à 255 caractères, ex. TEXT(12)

DATE     Pour mémoriser des dates et heures

MEMO Pour mémoriser texte de longueur supérieure à 255 ou données non textuels comme images, sons, etc.

Figure ‎1 8 Types de donnés

Exemples :

CREATE TABLE agents (

IdAgent    AUTOINCREMENT PRIMARY KEY,

Agent      VARCHAR(30) NOT NULL,

IdResp     INTEGER,

Montant    DOUBLE

)

CREATE TABLE ventes (IdV AUTOINCREMENT PRIMARY KEY, IdAgent INTEGER,

Montant DOUBLE, Ville TEXT(25) NOT NULL)

CREATE TABLE villes (IdAgent INTEGER,Ville TEXT(25) NOT NULL)

PRIMARY KEY engendre un index univoque et pas nulle sur la colonne nom. L’indication NOT NULL de la colonne Agent indique que la colonne ne pourra pas être vide.

Pour modifier une table  le command est ALTER TABLE nomdetable ... :

Exemples :

  • Ajouter un champ : ALTER TABLE clients ADD COLUMN Telephone TEXT(20)
  • Modifier un champ : ALTER TABLE clients MODIFY COLUMN Nom TEXT(30) NOT NULL
  • Effacer un champ : ALTER TABLE clients DROP COLUMN Province

L’instruction pour éliminer une table est :  DROP TABLE nomdetable.

1.4.2      LES INTERROGATIONS

La figure suivante montre la structure du commando SELECT de SQL qui opère sur une ou plusieurs relations:

SELECT  Schema               projection

FROM   Relation(s) (Table)          Introduise la (les) relation(s)

WHERE Condition(s)      Sélection

GROUP BY          Attribut(s)          Groupement d’attributs

ORDER BY           Attribut(s)          Ordre de présentation des données

Figure ‎1 9 Structure du commande SELECT

Seulement les clauses SELECT et FROM sono nécessaires.

Le command SELECT est suivi des données qu’on veut voir ; celui-ci peut être :

  • * tous les champs,
  • une liste de champs et/ou de fonctions sur eux, séparés par , (virgule).

Les fonctions acceptées par ACCESS sont les même de Visual Basic.

La commande visualise les données voulus avec un entête formé par le nom du champ, toutefois est possible indiquer un autre nom, surtout pour les champs calculés, avec la syntaxe suivante :

SELECT ... nom AS entête, ...

Tous les champs              *

Quelques champs           Nom, Adresse, Ville, ...

Valeurs calculées            ..., Montant * 1,20, ...

Champs avec entête de l'usager              ..., Montant * 1.20 AS [MONTANT + IMPOT], ...

Figure ‎1 10 Exemple de schéma

Exemples :

  • SELECT * FROM anag
  • SELECT nom, adresse, Montant * 1.20 AS [Montant lourd], Préfixe + '/' + téléphone AS télé FROM anag

1.4.2.1  La clause FROM

FROM indique le tableau ou les tableaux dont on veut les données. Le tableau peut être aussi engendrée par un  command SELECT. La syntaxe est :

SELECT ... FROM relation1[[AS] alias1],relation2[[AS] alias2],...

Où relationn est le nom d’une tableau, d’une requête ou une SELECT.

Quand il y a plusieurs tableaux on peut indiquer des champs de tous les tableaux. Dans la liste des champs de SELECT les ambiguïtés (nom de champs égales dans les différentes tableaux), sont évité par la syntaxe :

SELECT ...,nomdetable.nomdechamp, ... FROM ...,nomdetable,...

Où nomdetable est le nom du tableau ou le nom assigné par la clause AS aliasn.

Exemples

  • SELECT nom, anag.province, chieflieu FROM anag, tab_pro
  • SELECT F.nom,Quantitè FROM farm AS F,

          (SELECT nom, sum(qty) AS Quantitè FROM Med GROUP By Nom) AS M

     WHERE F.nom = M.nom

1.4.2.2  La clause WHERE

Avec la clause WHERE on choisit les lignes du tableau que on veut voir, la clause est suivie par une expression qui est évalué pour toutes les lignes du tableau ; si la relation est vraie la ligne sera choisie.

  • SELECT nom, anag.province, chieflieu FROM anag, Tab_pro

WHERE anag.province = Tab_pro.province

Dans expression les constants caractères sont  entre apostrophes.

Les opérateurs de confrontation sont =, >, <, >=, <=, LIKE,IN. Les opérateurs logique AND, OR et NOT sont utilisable dans la condition :

  • condition1 AND condition2 sera vraie si tous les deux conditions sont vrais,
  • condition1 OR condition2 sera vraie si au moins une condition est vraie,
  • NOT condition sera vraie si la condition est fausse.

LIKE est utilisé pour des confrontations avec le contenu partielle des champs de texte, à l’aide de caractères de masque * et ? (wild card)  :

  • * quelconques ensembles de caractères
  • ? un caractère : ex. ?oss
  1. SELECT * FROM ANAG WHERE Nom LIKE '?oss*' trouve Rossati, Rossi, rossini, Fossati, etc.

Examples:

SELECT * FROM ANAG WHERE Province IN ('AL','NO')

SELECT * FROM ANAG WHERE Province NOT IN ('AL','NO')

SELECT * FROM ANAG WHERE Quantité > 4 AND Quantité  < 11

1.4.2.3  La clause ORDER BY

Pour obtenir les données ordonnées, même avec plusieurs champ ou expression, séparé par virgule. Le mot DESC après le nom, indique un ordre descendant :

SELECT * FROM MED order by nom,qty DESC

1.4.2.4  La clause GROUP BY

La clause GROUP BY ... sert pour obtenir des donnés synthétisées. Dans le groupement peuvent seulement paraître les champs sur les quels se font les groupements et/ou des fonctions d'agrégation : AVG, COUNT, MAX, MIN, et SUM.

PR        N. TOTAL PROVINCE

-- --------- --------------

CN         2            2.5

PD         1            2.7

RM         1            2.2

TO         1            1.5

VR         2            1.9

  • SELECT provincia, Count(Provincia) AS 'N.', SUM(quantita) 'TOTAL PROVINCE'

FROM anag GROUP BY provincia

La liste aura implicitement l'ordre des champs de GROUP BY, a moins de la présence de la clause ORDER BY.

  • SELECT bureau, MIN(salaire), MAX(salaire) FROM emp GROUP BY bureau ORDER BY MIN(salaire)

Il est possible choisir des données du tableau obtenue, par la clause HAVING, qui est analogue à la clause WHERE : WHERE agisse sur la table original, HAVING sur les résultats groupés.

SELECT Nom,SUM(Qty) AS Total FROM med WHERE Lotte > 0

GROUP BY Nom HAVING SUM(Qty) > 10

ORDER BY SUM(Qty) DESC

Ici à gauche un exemple complet.

L’exemple ci-dessous montre comme ajouter des totaux à l’aide du command SQL UNION (UNION veut des ensemble de données avec la même structure) :

SELECT Lotte,Nom, Total FROM (

    SELECT Lotte AS LotteX, Lotte, nom, SUM(qty) AS Total

      FROM Med

      GROUP BY Lotte, nom

  UNION

    SELECT Lotte & 9 AS LotteX, 'Total', '' AS nom, SUM(qty) AS Total

      FROM Med

      GROUP BY Lotte

  UNION

    SELECT 99999 AS LotteX,'Total General' AS Lotte,'' AS nom, SUM(qty) AS Total

    FROM Med)

    XXX

ORDER BY Lottex,Nom

Figure ‎1 11 SELECT avec totaux

1.4.2.5  Données de plusieurs tableaux

L'opération qui produit une liste avec données appartenant à plusieurs tableaux (ou requêtes) est appelée Join, et elle est réalisé par la clause JOIN, dans laquelle il y a une condition, habituellement d'égalité, sur des champs des tableaux impliqués. Il y a plusieurs forme de JOIN, selon ce que on veut obtenir, qui sont essentiellement :

             données correspondants,

             tous données qui appartiennent à une tableaux avec ce qui correspondent dans l’autre tableaux,

             les données d’une tableaux qui n’ont pas des correspondants dans l’autre,

             tous données avec ou sans correspondance dans les tableaux.

SELECT Statistique.Ville, Agent, Montant

  FROM (SELECT Ville, SUM(Montant) "MONTANT"

        FROM Ventes

        GROUP BY Ville) Statistique,Villes

  WHERE Statistique.Ville = Villes.Ville;

VILLE                AGENT                   MONTANT

-------------------- -------------------- ----------

Buja                 Condor                      675

Bukavu               Wamesa                       57

Kiremba              Luciu                       500

Ngozi                Rafiki                      250

L'exemple à droite liste l'agent responsable pour chaque ville ou il y a eu des ventes.

On note que le premier tableau est une vue matérialisée, à la quelle on a donné le nom Statistique.

On peut lister quelconques colonnes ou expression des deux tableaux ; pour éviter les ambiguïtés des noms de colonnes égales on doit qualifier celui ci par le nom du tableau, avec l'écriture: nom_detable.nom_de_colonne.

1.4.2.5.1              DONNEES CORRESPONDANTS

La syntaxe est : SELECT ... FROM table1 INNER JOIN table2 ON condition ..., example : 

SELECT agents.*,Ville FROM agents INNER JOIN Villes ON agents.idagent = villes.idagent ORDER BY montant Desc

IdAgent               Agent   IdResp  Montant             ville

5             Jaune    2             37000    Marseille

1             Rouge   0             34000    Turin

10           Brun      3             32500    Madrid

9             Beige    1             29800    Seville

2             Vert       1             23000    Milan

4             Gris        3             21000    Nice

11           Carmin 2             18700    Barcelone

7             Blanc     6             14000    Toulon

8             Azur      2             12500    Palerme

3             Bleu       1             12000    Geneve

Figure ‎1 12 Inner JOIN

Seulement dans ce cas on pourrait utiliser le command  qui utilise la clause WHERE :

SELECT agents.*,ville FROM agents,Villes WHERE agents.idagent = villes.idagent ORDER BY montant Desc

1.4.2.5.2              TOUS DONNEES QUI APPARTIENNENT A UNE TABLE ET CORRESPONDANTS

La syntaxe est : SELECT ... FROM table1 LEFT JOIN table2 ON condition ..., dans ce cas tous données de table1 seront choisit avec éventuels données correspondent danstable2. Si on veut le contraire ou on change table2 avec table1 ou on utilise la clause RIGHT JOIN, exemple :

SELECT agents.*,Ville FROM agents LEFT JOIN Villes ON agents.idagent = villes.idagent ORDER BY montant Desc

IdAgent               Agent   IdResp  Montant             Ville

5             Jaune    2             37000    Marseille

1             Rouge   0             34000    Turin

10           Brun      3             32500    Madrid

9             Beige    1             29800    Seville

2             Vert       1             23000    Milan

4             Gris        3             21000    Nice

11           Carmin 2             18700    Barcelone

7             Blanc     6             14000    Toulon

13           Rose      6             13000   

8             Azur      2             12500    Palerme

3             Bleu       1             12000    Geneve

6             Noir       1             9000     

                 

Figure ‎1 13 LEFT JOIN

1.4.2.5.3              DONNEES D’UNE TABLE SANS CORRESPONDANTS

ville

Rome

Naples

Paris     

On utilise la clause LEFT JOIN, où la premier table est celle dont on veut le contrôle, vérifiant l’inexistence d’un champ de la deuxième table :

SELECT ville FROM Villes LEFT JOIN Agents ON agents.idagent = villes.idagent WHERE ISNULL(agents.idagent)

Figure ‎1 14 LEFT JOIN  sans correspondants

1.4.2.5.4              TOUS DONNEES

On peut obtenir les données de deux tableaux avec l’UNION de deux requêtes :

SELECT agents.*,Ville FROM agents LEFT JOIN Villes ON agents.idagent = villes.idagent UNION SELECT agents.*,ville FROM Villes LEFT JOIN Agents ON agents.idagent = villes.idagent WHERE ISNULL(agents.idagent)

1.4.2.5.5              JOIN SUR LA MEME TABLE

Le JOIN sur la même table est indiqué comme self join :

SELECT W.Agent AS Responsable, V.Agent AS Agent, V.Montant AS Montant FROM Agents V LEFT JOIN Agents W ON W.IdAgent = V.IdResp ORDER BY W.Agent

Responsable     Agent   Montant

                Rouge   34000

Bleu       Brun      32500

Bleu       Gris        21000

Noir       Rose      13000

Noir       Blanc     14000

Rouge   Beige    29800

Rouge   Noir       9000

Rouge   Bleu       12000

Rouge   Vert       23000

Vert       Carmin 18700

Vert       Azur      12500

Vert       Jaune    37000

Figure ‎1 15 JOIN su la même table

1.4.2.6  Croisement de Données

Dans SQL d’ACCESS, il y a la possibilité de produire des données croisé avec le command TRANSFORM :

TRANSFORM aggregation SELECT champ1 FROM source GROUP BY champ1 PIVOT champ2

dont ici suit un exemple :

TRANSFORM Sum(Montant) SELECT Agent FROM rqtVentes GROUP BY Agent PIVOT Ville

Qui donne quelque chose d’analogue :

Agent   Geneve               Milan    Naples  Rome    Turin

Bleu                      21000                    32500   

Noir                       13000    14000                   

Rouge   29800                                   35000    43000

Vert                                      37000                    31200

1.4.3      MODIFICATION DES DONNEES

1.4.3.1  Insertion de nouveaux données dans une tableau

1) INSERT INTO anag (nom, adresse, cap, province, ville)

   VALUES ('ROSSATI Giovanni', 'Oriani 3', '10149', 'TO','Torino');

2) INSERT INTO anag (nom, ville, province, cap)

   SELECT nom, ville, province, cap FROM anag2

   WHERE province = 'TO';

L’exemple 2) “copie” le colonne nom, ville, province du tableau anag2 appartenant au lignes qui satisfint à : WHERE province = 'TO' et les insère dans le tableau anag.

1.4.3.2  Variation des données d’une tableau

1) UPDATE anag SET quantite = 1.5 WHERE nom like '?oss*'

2) UPDATE anag SET adresse = 'Castelrotto 66', CAP = '23023'

   WHERE nom = 'Franchi Elmo';

Attention : si on omit la clause WHERE toutes les lignes seront changé.

1.4.3.3  Effacement des données d’une tableau

1) DELETE FROM anag WHERE nom = 'Fossati'

2) DELETE FROM anag

L’exemple 2) efface toutes les données contenues dans le tableau anag, le tableau existe encore.

Pour éliminer un tableau le command SQL est : DROP TABLE nomdetable.  

  1. ACCESS PRATIQUE

Access est un logiciel pour mémoriser et élaborer informations structurées. Access aide l'utilisateur dans toutes les phases que regardent le traitement de données: du projet des tableaux, à la réalisation de formulaires pour la gestion des données, jusqu’à la préparation des états. Le langage Basic permet d’ajouter des fonctionnalités à l’application.

Beaucoup fonctions sont exécuté avec l’aide de « Assistants », et un aide en ligne est disponible dans tous contexte par la touche F1.

Les principaux objets d’ACCESS sont:

             Tableaux: sont la place où les information sont contenues; dans la définition des tableaux on détermine les informations contenues, avec ses caractéristiques, si il y a des contrôles sur les valeurs, l’éventuel valeur de défaut.

             Requêtes ou query: il est un façon de voir ensemble les données d’une ou plusieurs tableaux, par exemple la facture avec les données du tableau des ventes, des clients et du magasin. Les données des requêtes peuvent aussi être le résultat d’opérations sur les données d’un tableau, par exemple si le tableau contient les champs prix et escompte, la requête peut contenir prix * escompte.

             Formulaires: elles sont des interfaces graphiques pour organiser l’application, visualiser les données des tableaux ou des requêtes et pour les gérer, c’est à dire pour modifier, effacer et insérer des nouveaux données.

             Etats ou report : ils sont la description pour obtenir l’états des données d’un tableau ou d’une requêtes, avec éventuels triage et totalisations.

             Modules: ils permettent d’ajouter des fonctions particulières aux fonctions natives d’Access. Les modules sont écrits avec le langage de programmation VBA (), qu’il est aussi utilisé pour gérer les évents des formulaires, et des états.

Au démarre de Access, il propose:

  • Nouvelle base de donnée Accces,
  • Assistant, pages … pour choisir entre diverses projets-exemples,
  • Ouvrir un fichier existant.

Ils existent en ACCESS deux modalité de travail : exécution, qui est le mode de travail de l’utilisateur de l’application, et mode projet   qui permet de créer une application en gérant les composants de la Base des Données, c'est-à-dire tableaux, requêtes, formulaires pour l'introduction des données, états et programmation. Dans ce chapitre on examinera la modalité projet d’ACCESS.

La création d’une application est géré par des formulaires et pour la plus part des composant de ACCESS est disponible une construction conduite (Assistant).

Il y a une fenêtre pour gérer les objet d’ACCESS, choisissant un objet  il est possible choisir entre la création d’un nouveau objet ou sa modification.

2.1          TABLEAUX

Il est possible créer un nouveau table, soit en indiquant les champs dans la fonction Visualisation structure  , soit en copiant, et éventuellement en modifiant, une structure de table préexistant.

2.1.1      TYPE DES CHAMPS

En Visualisation structure il faut indiquer obligatoirement les noms des champs et leur type. Cette dernière indication est choisie par un menu à descente qu'il est accessible en cliquant sur le champ Type de donnée. Ici en bas une aperçue des type de champs.

type      utilisé pour         caractéristiques

texte     adresses, noms, codes, même si numériques, ...            de 0 aux 255 caractères

numéro               montants, quantité, pourcentages, …   entiers ou avec des chiffres décimaux

date/heure        dates et heures              

compteur           matricules, codes clients, matériels, factures.   le champ est géré automatiquement et il sert à numéroter les fiches

mémo textes, documents, images.     

oui/non               oui/non, vrai/faux, absent/présent.     

Figure ‎2 1 Type des champs

Entre les choix, il y a aussi Assistant Liste de choix utile pour les champs qui peuvent contenir un numéro limité de valeurs (Sexe, Scolarité, Service, etc.). Avec l’assistant on indique ou une liste de valeurs ou un tableau qui contient les valeurs ; on verra que dans les formulaires, au lieu de saisir les valeurs, ils pourraient être choisi d’une liste déroulant .

Au-delà de nom et type, il est possible d'indiquer autres attributs du champ, ceux-ci servent à faciliter l'introduction et le contrôle des données. Ces attributs dépendent du type de donnée.

Quand un des attributs est sélectionné, il peut apparaître à droite un bouton de liste pour permettre un choix entre différentes alternatives ou un bouton avec ... qui fait apparaître une fenêtre de dialogue.

attribut                utilisé pour

Dimension          Indiquer la dimension maxime d’un champ texte ou numérique

Forme presque pour toutes les types, utile pour dates et montants

Masque d'input               Pour faciliter l'introduction des données (surtout pour les dates)

Étiquette            Aide pour l'input des données

Valeur prédéfinie           Pour introduire une valeur prédéfinie

Valide si               indique un contrôle formel

Message pour faute      Utilisé pour signaler l’introduction de données erronées

Obligatoire         Impose l'introduction du champ

Permets longueur zéro               

Indexé Cree un indexe pour rendre vites les recherches et les imprimeries

Figure ‎2 2 Attributs des champs

Remarque Le champ Etiquette est utilisé pour donner l’étiquette aux champs des formulaires et des états, ceci permet de développer vitement et utiliser des dictions homogènes.

2.1.2      CONTROLES SUR LES CHAMPS

Date()+10           Date du jour plus 10

>= 65     Valeur majeur ou  égale de 65

LIKE 'ROSS*'       Accepte noms qui commencent par ROSS

'M' Or 'F'              Accepte seulement M ou F

Figure ‎2 3 Exemple de contrôles sur champs

Dans les champs Valide si il est possible d'insérer une expression de contrôle direct  ou une expression avec des fonctions de VBA ou des fonctions de contrôle écrites avec VBA par le programmateur. L'expression de contrôle peut être composée avec l’aide du "Générateur d'expressions", ceci on l’obtient avec click sur le bouton qui apparaît à droite du champ "Valide si", quand celui-ci est sélectionné.

Un éventuel contrôle d'unicité on l’obtient en indiquant le champ comme indexé et en choisissant l'option Oui duplicatures pas admis.

2.1.3      LES INDEXES

Les index sont nécessaires pour grandes tableaux, il est possible d'introduire index formé par plusieurs champs et même sur des expressions, par la fonction de menu Affichage et puis Index. La balise avec la clé   indique Primary key c’est à dire un index qu'il doit être présent et univoque ; normalement est de type compteur automatique.

2.2          FORMULAIRES

Les Formulaires sont les objets qui permettent de gérer les données par introduction guidée. ACCESS permet de créer des formulaires personnalisés ou avec une Création guidée. Les formulaires sont associés, normalement, à un tableau ou à une requête. Les formulaires si obtenue sont douées par défaut, de buttons pour créer, modifier, effacer et rechercher des donnés.

2.2.1      LES OBJETS DES FORMULAIRES

Les formulaires sont des conteneurs d’objet pour insérer de données (zone de texte, zone de liste, zone de liste modifiable ou combo box), radio buttons, check box ou pour les gérer (buttons, barre de déroulement, etc..) ou pour obtenir des effets esthétique (images, lignes, fonds etc.).

A chaque objet sont associé des propriétés qui sont accédé par :

  • double clique sur l’objet ou
  • clique droit et choix Propriété ou
  • clique sur la balise des propriétés :  .

2.2.2      CREATION D’UN FORMULAIRE

On peut engendrer un formulaire par la fonction Créer un formulaire a l’aide l’Assistant ou le bâtir soi même déplaçant les objet sur la fenêtre. Les objets sont choisis dans la Boite a outils (Menu Affichage, Boite a outils) ou la balise .

  • Texte est utilisées pour insérer du texte ou visualiser des informations, les textes peuvent être associés à des champs d’une table ou être engendré par une formule.    
  • Liste et Liste déroulant pour choisir des données entre un ensemble fixe de valeurs, la liste déroulant peut aussi permettre l’introduction d’un texte pas présente dans la liste (propriété Limiter à list No). Si dans la boite des outils la balise   est choisie, une procédure conduite permettra d’indiquer si les données sont dans une Table ou sont obtenue par une Requête ou sont indiqué directement. 
  • Bouton pour exécuter des commands, si la balise   est active, on est conduit sur des choix entre plusieurs actions et il est automatiquement engendré le code VBA pour la gestion.
  • Case à cocher et Bouton d’option.

L’Assistant engendre un formulaire pour insérer les valeurs des champs comme zone de texte ou de case à cocher  pour les données de type Oui/Non et des listes déroulantes dont on à utilisé l’Assistant Liste de choix ; le formulaire est engendré avec des boutons standard pour le déplacement entre les données.

2.2.3      PROPRIETE ET EVENEMENTS DES FORMULAIRES

On accède aux propriétés et événements des formulaires en sélectionnant le formulaire avec un click sur le bouton en haut à gauche au croisement des règles. Ici de suite quelques propriétés.

propriété            valeur   caractéristiques

Étiquette            texte     titre du formulaire

Style du borde (BorderStyle)     numéro               il détermine aspect et fonctionnalité du formulaire (dialogue) popup, redimensionnable

Boutons de déplacement           oui/non               pour se déplacer, en avant, en arrière, début, fin, nouveau record

Bouton de fermeture   oui/non              

Image   bitmap fond du formulaire

Origine données             texte     le nom d'un table ou d'un requête ou une instruction SQL SELECT

Trie pour             texte     le nom d'un champ

Ici de suite quelques événements associé au formulaires :

événement       caractéristiques

Sur chargement (onLoad)           pour modifier des propriétés du formulaire avant qu’il soit visualisé

Sur ouverture (onOpen)             pour opérations précédentes la première visualisation de données

Sur activation (onCurrent)          avant de chaque visualisation des données

Sur fermeture (onClose)             pour les opérations à la fermeture du formulaire

2.2.4      PERSONNALISATION D’UN FORMULAIRE

Sélectionner le formulaire et choisir Modifier, en cliquant sur l’objet il est sélectionnée et vous pouvez le déplacer et modifier sa taille. Chaque élément a des propriétés et peut réagir à des événements ; propriétés et événements dépendent du type de l’objet.

Ici une liste de quelques propriétés de la zone de texte :

propriété            note

nom (name)     

visible (visibile)

active (enabled)              se vrai permet d’insérer et modifier le texte

verruillé (looked)            se vrai permet ne permet pas de modifier le texte

hauteur, largeur, gauche, haut (height, width, left, top)              dimension et position sur la fenêtre

police, taille, … (fontname, fontsize, …)              

source du contrôle (controlsource)        peut être un champ d’une table ou d’une requête ou une expression

Figura ‎2 4 Propriétés de la zone de texte

2.2.4.1  Dimension des fenêtres

Les dimensions (hauteur et largeur), dans les fenêtres pas à l'écran plein, ils devraient être dans la proportion 1:1.6, ça correspond à le nombre d'or  à peu près 1.61803… qui vient de la proportion 1 : x = x : 1 – x.

2.2.4.2  Alignement et taille des objets

  • Aligner des objets sur une fenêtre il faut les sélectionner : clique de la souris en poussant la touche shift, un clique sur la guide numéroté en haute ou à gauche sélectionne tous les objets en vertical ou horizontal. Apres Format, Aligne ... .
  • Même taille : sélectionner et Format, Taille ... .
  • Petits modification de taille : sélectionner et touche shift avec touches directionnelles.
  • Petits déplacement : sélectionner et touche control avec touches directionnelles.

2.2.4.3  Changer un texte en liste

On peut modifier le type d’objet, par exemple on peut transformer une zone de texte en zone de liste ou une liste déroulant pour choisir des données au lieu de les insérer par clavier ; ceci est surtout utilisé où les valeurs possibles sont en nombre fixe et limité, ou doivent appartenir à une autre tableau, par exemple un choix de zone géographique, ou le nom du matériel qui est dans la table Magasin.

La procédure est :

  • cliquer sur l’objet avec la touche droite de la souris,
  • choisir Remplacer par …,
  • choisir Zone de liste déroulante ….

Pour indiquer les données à choisir par la liste déroulant :

  • sélectionner les propriétés du combo box,
  • onglet Données,
  • la propriété Origine source permet de choisir entre : Table/Requête, Liste valeurs, Liste des champs,
  • dans la propriété Contenu :

o             si Table/Requête on peut choisir dans une liste de Tableaux et Requêtes ou créer une requête ; le résultat est une ou plusieurs colonne de données, la propriété Colonne lié indique la colonne de control ; dans onglet Format  la propriété Nbre colonne indique le nombre de colonnes affichées, la propriété Largeurs colonnes donne la largeur des colonnes affichées, par exemple si on veut pour choisir le nom du matériel, les propriétés vues sont semblables à :

             Origine source : Table/Requête

             Contenu : Magasin

             Colonne lié : 1                   c’est le CodMateriel

             Nbre colonnes : 3                           CodMateriel, Description, Quantité

             Largeurs colonnes :                        0cm;3cm;1cm

L’effet de 0cm; dans Largeurs colonnes est que on verra seulement Description et quantité.

o             si Liste valeurs on insère une liste de valeurs entre apostrophes et séparé par ; (point virgule), par exemple 'F';'M'.

o             si Liste des champs on choisit dans une liste de Tableaux et Requêtes, le résultat sera la liste des noms des champs.

2.2.4.4  Insertion de données pris d’une autre table

On peut prélever des informations appartenant à une autre table par les fonctions d’agrégation comme RechDom, SomDom, CpteDom , etc, à l’aide du Générateur d’expression (balise avec … à droite de la proprieté Source contrôle) :

  • ajouter les textes où  on veut insérer les données d’une autre tableau,
  • dans l’onglet Données insérer dans la propriété Source contrôle l’instructions DLookup, avec la syntaxe :  = RechDom ("nomchamp";"nomtable";"condition"),
  • éventuellement protéger le champ (propriétés Activé et Verrouillé).

condition ha la même structure de la condition de la clause WHERE dans les commands SELECT SQL.

Exemples :

  • =RechDom("[Compound]";"Farm";"[Nom]='" & [Nom] & "'")
  • =SomDom("[Qty]";"Med";"[Nom]='" & [Nom] & "'")

2.2.5      FORMULAIRE ET SUB FORMULAIRE

Pour insérer un formulaire dans un autre formulaire, par exemple dans le formulaire de la Facture le formulaires des produit vendu (relative à chaque facture) :

  • Ouvrir en modification le formulaire conteneur,
  • Choisir de la boite à outils la balise Sous-formulaire/Sous-Etats   ,
  • Choisissez sur le formulaire où insérer le sous-formulaire ; un Assistant conduit, et si les noms des champs de liaisons sont égaux, par exemple soit Facture soit Produit contiennent le champ IDFacture, il y a presque rien à ajouter.

2.3          REQUETES

Les requêtes sont utilisées pour lier ensemble les données de deux ou plusieurs tableaux ou requêtes, par exemple la requête pour obtenir une facture utilisera les données des tableaux Ventes, Clients et Magasin. Cette technique exige que ces tableaux aient des champs en commune, voir le schéma de Figure ‎1 7 le champ CodeClient met en relation les tableaux Clients et Ventes et le champ CodeMatériel lie les tableaux Ventes et Matériels.

Pour engendrer une requête on peut choisir entre Créer une requête en mode Création o Créer une requête à l’aide de l’Assistant.. Dans le premier cas on choix les tableaux et/ou les requêtes voulues. Si les champs de liaison ont le même nom dans les tableaux (comme dans l’exemple), ACCESS effectue lui-même la liaison, dans le cas contraire ont doit indiquer les champs de liaisons (bouton droit de la souri pressé sur le nom du tableau que on veut lier,  joindre le nom de l’autre table et relaisser la touche).

Pour indiquer les champs à insérer dans la requête : bouton gauche de la souri pressé sur le nom du champ que on veut insérer et le déplacer sur une cellule en bas.

Dans la cellule en correspondance a Tri : et au nom du champ on peut indiquer l’éventuel tri de la requête.

On peut insérer des critères de choix Dans la cellule en correspondance a Critères : et au nom du champ, par exemple si on indique "F" en correspondance du champ Sexe, la requête affichera seulement les ligne des femelles.

Naturellement il est possible insérer une requête comme command SQL : menu Affichage, Affichage SQL et insertion dans la zone de texte, par exemple :

SELECT agents.IdAgent, Agent, ventes.Montant, Ville

FROM agents INNER JOIN ventes ON agents.IdAgent = ventes.IdAgent

2.4          MODULES

Est la partie qui contient le code VBA : chaque formulaire et états peut avoir du code pour gérer des événements ; en outre variables et fonctions communes, indiqué par Global et Public respectivement, doivent être écrits dans un module dit global :

Global Const SortProgr = 3

Global SortAlunos

Public Function SeeTableaux(Optional Table)

' si le tableau existe la fonction répond avec le nom du tableau même,

' sinon avec la lista des tableaux separé par ;

    Dim obj As AccessObject, dbs As Object

    Set dbs = Application.CurrentData

    ' Search for objects in AllTable collection.

    Itm$ = ""

    For Each obj In dbs.AllTable

      If Left(obj.Name, 4) <> "MSys" Then

        If IsMissing(Table) Then

           Itm$ = Itm$ & ";" & obj.Name

        Else

            If Table = obj.Name Then

                SeeTableaux = Table

                Exit Function

            End If

        End If

    End If

    Next obj

    SeeTableaux = Mid$(Itm$, 2)

End Function

Figure ‎2 5 Fragment de module Global

2.5          ETATS ET ESTRACTION DE DONNEES

Pour engendrer un état on peut choisir entre Créer un état en mode Création o Créer un état à l’aide de l’Assistant.  Ils sont des façon de travaille analogues à celle des formulaires.

Comme les formulaires, les états ont propriété et événements, en particulier l’événement Sur ouverture  peut être utilise pour changer le triage et/ou choisir entre les données.

2.5.1      CREATION ET MODIFICATION D’ETATS

Les Etats se préparent et modifient  presque comme les formulaires.

2.5.1.1  Ajouter des totaux

Il est possible ajouter des totaux ou des calcules à un état dans les zones En-tête de groupe et Pied de groupe pour les calcules partiels, et dans la zone Pied d’état pour les calcules globaux. Ces formules sont dans une zone de texte ou la propriété ControlSource contient une formule, exemple =Somme([Montant]).

Les zones Pied de groupe ne sont pas normalement visibles, pour les rendre visibles :  dans le menu Affichage choisir Trier et grouper et choisissez Oui dans la zone Pied de groupe.

2.5.1.2  Choisir les données

Dans l’événement Sur ouverture d’un état on peut insérer des choix sur les données en modifiante la propriété Filtre de l’état, on peut aussi le command DoCmd.OpenReport, qui est engendré automatiquement par le bouton de création d’état ; ce command prévoit un paramètre utilisé pour choisir entre les fiches, dans l’exemple il y a les instructions VBA  pour choisir les données (en gras les instructions ajouté ou modifiées).

Private Sub cmdEtat_Click()

On Error GoTo Err_cmdEtat_Click

    Dim stDocName As String

    where = "year(DatePrete) = " & Annee & " AND Month(DatePrete) = " & Mois

    stDocName = "etLouages"

    DoCmd.OpenReport stDocName, acPreview, , where

Exit_cmdEtat_Click:

    Exit Sub

Err_cmdEtat_Click:

    MsgBox Err.Description

    Resume Exit_cmdEtat_Click

End Sub

Figure ‎2 6 Exemple d’état avec choix des données

2.5.2      TRIER LES DONNEES AVANT D’IMPRIMER

Quand on prépare un état en Mode Création, on peut aussi indiquer un triage, toutefois celui ci peut être modifié dans l’événement Open.

Dans les liste simples on doit insérer dans la propriété OrderBy le ou les champs de triage (même syntaxe de la clause ORDER BY de SELECT) et mettre vrai dans la propriété OrderByOn :

    Me.OrderBy = "Nom, Qty DESC"

  Me.OrderByOn = True

Les listes avec groupement ont déjà un triage, celui du champ de groupement ; pour changer on agit sur la proprieté ControlSource du groupement approprié :

Me.GroupLevel(0).ControlSource = "Nome"     ' premier niveau de groupement


87