INITIATION ACCESS Par Lionel COSTE ABSALON Formations
Vocabulaire et structure d'une base de données Reprenons notre base Access. Dès sa création, avant même de saisir la moindre donnée, on peut se rendre compte qu'elle est constituée de plusieurs éléments : tables, requêtes, formulaires, états, macros, modules. Voilà les premiers mots typiques quand on travaille sur des bases de données! Les tables tout d'abord. C'est dans une table que vous allez enregistrer vos informations. Par information, on entend ici vos données. Vous commencez par définir vos champs. C'est l'étape la plus importante. - le nom du champ correspond à l'en-tête de colonne de votre tableau ; - il est associé à un type de données, qui définit le format des données saisies dans cette colonne. Comme type de données, vous retrouvez en particulier : Type de données Mémo Numérique Date/Heure NuméroAuto Définition chaîne alphanumérique limitée à 255 caractères bloc de texte pouvant contenir jusqu'à 65536 caractères caractères numériques, entiers ou non (le séparateur - point ou virgule - est celui défini dans les paramètres régionaux de votre panneau de configuration) données au format date (03/07/2000 par exemple) nombre qui s'incrémente automatiquement à chaque nouvel enregistrement dans la table Exemples d'utilisation Nom, Adresse, Profession, Titre, Téléphone,... Résumés, Informations, CV,... Age, Nombre d'enfants,... Date d'inscription, de naissance, heure d'envoi d'un message,... Référence client, Classement,... Ensuite, vous pouvez saisir vos données, directement dans la table. Là vient la différence de "fonctionnement" entre tableur et base de données! - à chaque cellule que vous remplissez, vous saisissez une donnée ; - à chaque ligne que vous entrez, correspond un enregistrement : c'est une fiche qui contient des renseignements (données pour chaque champ) sur un élément unique de la liste ; - chaque ligne doit être unique, et différenciable des autres : c'est à cela que sert la clef primaire. La clef primaire d'une table correspond au champ pour lequel toutes les données sont différentes d'un enregistrement à l'autre.
exemple : - si vous avez un champ "Nom de famille", et que tous les noms sont différents, alors ce champ peut servir de clef primaire ; - par contre si vous avez des homonymes dans la liste, vous pouvez retrouver deux enregistrements pour deux personnes différentes, mais avec une même valeur "nom de famille" - là il faut trouver une autre clef primaire ; - c'est à cela que sert le NuméroAuto : en utilisant ce type de données, on est sûr de travailler avec au moins un champ sans doublon. - enfin, tous vos champs et vos enregistrements constituent une table ; - toutes les tables composent une seule base de données. Enfin, vos tables ont souvent des points communs entre-elles. Si c'est le cas, pour éviter les redondances vous allez créer des relations. Nous n'en avons pas besoin pour débuter l'asp, mais il est important d'en comprendre la logique. - vous avez une table "clients", qui contient la référence du client, son nom, et son adresse ; - une deuxième table, "commande", qui contient la référence de la commande, celle du client, la date de la commande. Pour savoir à quelle adresse envoyer la facture de la commande, vous avez besoin de préciser que la référence du client dans une table correspond à sa référence dans l'autre table. Démarche : 1. je prends la référence du client dans la table "commandes" pour la ref. de la commande qui m'intéresse ; 2. je vais chercher dans la table "clients" l'enregistrement qui correspond à cette référence ; 3. je récupère le Nom et l'adresse du client qui correspond. Remarque : En ASP, l'utilisation de la condition "Where" supplée à la création de cette relation (voir Module 2).
Les Requêtes. Quand on travaille sur les bases de données, on l'a vu, les données sont enregistrées, brutes, dans des tables. Pour y avoir accès, pour en sélectionner quelques unes ou effectuer des calculs, on doit passer par des requêtes. - une requête enregistre vos critères de sélection, ou les calculs que vous souhaitez réaliser : ainsi, à chaque fois que vous exécutez la requête, elle prend en compte les dernières informations saisies dans la table, sans y modifier aucune valeur (sauf si vous le demandez explicitement, mais nous n'aborderons pas le sujet ici) ; - exécuter une requête, c'est visualiser toute ou une partie de votre table, à un instant t, sous certaines conditions que vous définissez vous-mêmes. Si les requêtes sont typiques des bases de données, elles sont aussi directement programmables en ASP. Vous pourrez, par exemple, demander l'affichage de tous les clients habitant Paris ou les effacer de votre table, et ce en écrivant votre code ASP.
Les Formulaires. Un formulaire permet de faciliter la saisie des données. - un formulaire, c'est une interface plus ou moins soignée entre un utilisateur et la base : il permet de remplir les tables sans être directement sur la feuille de données ; - réaliser un formulaire, c'est aussi améliorer la saisie des données (bulles d'aide, cellules mieux paramètrées pour recevoir les informations,...). L'ASP étant directement intégré à la page HTML, ce formulaire c'est en HTML et directement sur votre page que vous le réaliserez. - création d'un formulaire en HTML ; - envoi des réponses à une page ASP qui va les traiter (il s'agit le plus souvent d'un traitement pour que les données saisies dans les différents champs viennent s'inscrire dans la table).
Les Etats, Macros, Modules. Sous Access, vous retrouvez ces trois autres formulations : les Etats, Macros, et Modules. Nous n'en avons pas besoin ici, mais nous les évoquerons tout de même... Un état : c'est l'équivalent d'un aperçu avant impression. - un peu un mélange entre une requête et un formulaire, le tout optimisé pour l'impression ; - vous y définissez ce que vous voulez imprimer, et comment vous voulez l'imprimer, le logiciel vous aide en vous permettant d'intervenir sur la présentation, la sélection des informations. Vous pouvez même effectuer des calculs directement sur votre page. Une macro : facilite un travail répétitif. - une macro est une fonction qui vous permet d'enregistrer une série d'opérations ; - à chaque exécution de la macro, ces mêmes commandes s'exécutent, vous permettant gain de temps et d'énergie! Vous pouvez même redéfinir votre environnement de travail (barres d'outils,...) à partir de macros. Un module : c'est un programme en SQL. - vous programmez vous-même vos commandes en SQL sur une feuille qui peut intégrer quelques assistants.
Exemple : gestion d'une collection de jeux vidéos Je possède une collection de jeux vidéos, que j'aimerais organiser. En fait, il faudrait stocker un maximum d'information sur chacun de ces jeux, de manière à pouvoir les regrouper par type, par intérêt, par éditeur... Objectifs : Pour chaque jeu, j'aimerais : - connaître : le titre, la date d'achat, le prix d'achat, si le jeu était neuf ou d'occasion, le site internet du jeu, le nom de l'éditeur ; - ajouter : mes impressions, une note sur 10. Et puisque j'ai plusieurs jeux de mêmes éditeurs, pour chaque éditeur : - le nom, l'adresse complète, un numéro de téléphone consommateurs, l'adresse internet. Méthode : 1. Création d'une base, qui comprend 2 tables (une table jeu, qui viendra "piocher" dans la table éditeur) ; 2. Création de formulaires, pour m'aider à saisir les informations ; 3. Mise en place de différentes requêtes, selon ce que je veux mettre en évidence ; 4. Création de différents états, pour imprimer le résultat des requêtes. Détail : 1. Création de la base, des tables et de la relation LA BASE - Fichier - Nouvelle base de données - OK - on l'appelle "MesJeux" - choix du répertoire - Créer LES TABLES 2 tables : d'abord la table "Editeurs", puis la table "Jeux" La démarche est la même : - Créer une table en mode Création - Choix des champs et du type de données correspondant - Choix d'une clef primaire La clef primaire correspond à ce qui individualise chaque enregistrement, à ce qui le rend unique. Dans la table "Editeurs", les noms des éditeurs sont forcément différents les uns des autres : on choisira ce champ comme clef primaire. De la même manière, les jeux ont tous des noms différents, donc le titre correspondra aussi à une clef primaire.
Au niveau du type de données, on trouvera : table "Editeurs" Editeur Adresse Code Postal Ville Tel. Consommateur Site Internet Lien Hypertexte Titre Editeur Date d'achat Prix d'achat Neuf? Site du jeu Impressions Note sur 10 table "Jeux" Date/Heure Monétaire Oui/Non Lien Hypertexte Mémo Numérique Remarque : - Table "Jeux" - Champ "Editeur" : on peut créer une liste de choix, avec comme origine la table "Editeurs" (pour choisir un éditeur parmi la liste déjà saisie) LA RELATION A chaque jeu correspond un éditeur, mais il peut exister dans notre table des éditeurs chez lesquels nous n'avons acheté aucun jeu. Il existe donc une relation de 1 à plusieurs entre les deux tables : - un éditeur peut se retrouver plusieurs fois dans la table "Jeux" ; - tous les éditeurs de la table "Jeux" ont une fiche dans la table "Editeurs" ; - tous les éditeurs de la table "Editeurs" ne sont pas forcément dans la table "Jeux". a) Outils - Relations - Afficher la table... : on sélectionne les deux tables - Fermer b) Glisser le Champ "éditeur" d'une table sur le même de l'autre table c) "Appliquer l'intégrité référentielle" d) Type jointure - 3 (inclure tous les "Editeurs" de la table "Jeux", et seulement ceux de la table "Editeurs" qui correspondent). Voilà! La base est prête à être exploitée! retour haut
2. Les formulaires et la saisie de données La saisie de données se déroule par défaut via la feuille de données, de plusieurs manières : - double-clic sur la table intéressée - sélection de la table - Ouvrir Cependant, ce mode de saisie n'est pas très convivial. Passer par un formulaire, cela correspond à visualiser chaque fiche, chaque enregistrement : vous avez une page par jeu ou par éditeur, et non plus une ligne d'un tableau. Passez en mode FORMULAIRES : plusieurs possibilités Nouveau - Nouveau formulaire instantané : Colonnes - Sélection de la table "Editeurs" - OK La procédure est très simple. - Les types de champs (zones de texte, listes déroulantes, cases à cocher,...) dépendent de ce que vous avez défini en créant vos tables. - Vous pouvez modifier la présentation, l'alignement, les couleurs, et même les types de ces champs en passant en Mode Création du formulaire : - quand il est fermé, le sélectionner et Modifier ; - quand il est ouvert, Affichage - Mode création. Nous ne détaillons pas ici toutes les options des formulaires en mode création, mais sachez jouer du clic droit, demander les propriétés de chaque zone,... Nouveau - Assistant formulaire - Sélection de la table "Editeurs" - OK Cette méthode permet de contrôler la création du formulaire, étape par étape : a) Choix des champs : - en principe on sélectionne tous les champs de la table (on peut négliger la clef primaire lorsqu'il s'agit d'un numéro automatique, qui s'incrémente automatiquement - ce que nous n'avons pas dans cet exemple) ; - on peut choisir les champs de plusieurs tables. b) Choix d'une présentation : cette étape permet de choisir l'alignement des objets sur la page. c) Choix d'un style : - là, vous choisissez un "style" dans une liste de modèles, où couleurs, image de fond, polices, ont déjà été définies ; - le style que vous choisissez ici détermine celui des formulaires automatiques que vous ferez par la suite. d) Création du formulaire : - il ne vous reste plus qu'à nommer votre formulaire... -... et à définir en quel mode vous voulez l'ouvrir (le modifier ou saisir des données?). Vos formulaires prêts, vous pouvez saisir tous les articles de votre collection... Le "stockage" est fait!
3. Quelques requêtes Maintenant que vous avez enregistré tous les jeux de votre collection, vous pouvez faire une ou plusieurs synthèses de ce que vous possédez : quels titres possédez-vous par éditeur et quelle est l'adresse internet de l'éditeur?, quels éditeurs avez-vous le mieux noté?,... Requête simple : sélection de champs issus de différentes tables objectifs : - regrouper les titres et les prix des jeux par éditeur ; - retrouver l'adresse internet des éditeurs ; - tri par ordre alphabétique des éditeurs. démarche : a) Mode REQUETE - Nouveau - Mode création - OK. b) Ajouter les deux tables - Fermer. c) Sélectionner les champs concernés : (plusieurs méthodes) - double-clic sur le champ depuis l'image de la table ; - cliquer-déplacer le champ de l'image de la table vers son emplacement dans la requête ; - sélectionner le champ et la table directement depuis l'emplacement dans la requête. choix de : Table "Jeux" = "Editeur" ; "Titre" ; "Prix"; Table "Editeurs" = "Site Internet". La requête est prête, vous pouvez maintenant poser des conditions : - Trier : pour le champ concerné, sur la ligne "Tri", choisir croissant ou décroissant. - Jeux les plus chers : pour le champ "Prix", sur la ligne "Critères", indiquer >300. - Seulement les jeux achetés neufs? 1) ajouter le champ "Neuf?" ce champ est un champ Oui/Non (-1/0) 2) dans la zone "Critères", écrire -1. Enregistrez la requête, exécutez-la!
Requête avec opérations : somme totale et moyenne objectifs : - retrouver le nombre de jeux par éditeur ; - calculer la note moyenne des jeux par éditeur. démarche : a) Création d'une nouvelle requête, choix des champs nécessaires : table "Jeux"= "Editeur" ; "Titre" ; "Note". (la méthode est identique et ne pose aucun problème pour plus d'une table). b) Demander une ligne supplémentaire, la ligne "Opération" : cette ligne apparaît quand on clique sur le signe "sigma" de la barre d'outil (ou dans le menu contextuel, clic droit de la souris). c) On demande, par éditeur le nombre de jeux = "Regroupement" pour le champ "Editeur", "Compte" pour le champ "Titre". d) On demande, par éditeur la note moyenne = "Moyenne" pour le champ "Note sur 10". Voilà pour quelques exemples de requêtes... 4. Etats et impressions Il ne reste plus que l'étape de l'impression! Pour cela, il faut se placer dans le module ETATS, cliquer sur "Nouveau", et s'aider des assistants. a) Les Etats instantanés : ils affichent la totalité des informations contenues dans la table ou la requête choisie. - testez un état instantané "colonnes" puis un autre "tableaux" sur la table "Jeux". b) L'Assistant - Etat : - choisissez la même table "Jeux" - OK ; - sélectionnez les champs (par exemple, "Titre" ; "Editeur" ; "Date d'achat" ; "Note sur 10") - suivant ; - choix d'un niveau de regroupement : permet de définir selon quel(s) champ(s) vous voulez regrouper vos données (par exemple, selon "Editeur", ou alors selon "Note sur 10",...) - suivant ; - vous pouvez alors demander de trier les données par niveau de regroupement - suivant ; ex : vous pouvez demander à trier les jeux par ordre décroissant des notes attribuées, le tout dépendant d'un regroupement par éditeur. - comme pour les formulaires vous choisissez un type de présentation - suivant - et un style - suivant. Il ne vous reste plus qu'à donner un nom à votre état. Il apparaîtra en mode "Aperçu avant impression", mais vous pouvez toujours le modifier si la présentation ne convenait pas tout à fait.
Tables, requêtes, formulaires, états, cet exemple conclue la rapide présentation des bases de données initiée plus haut. Il s'agissait, simplement, de présenter le vocabulaire et les opérations de base que l'on peut effectuer avec Access.