bases_de_donné️es_2023.pdf
Document Details
Uploaded by ExultantColumbus
2023
Tags
Full Transcript
INSTITUT AGRONOMIQUE ET VÉTÉRINAIRE HASSAN II DÉPARTEMENT DE STATISTIQUE ET INFORMATIQUE APPLIQUÉES Première année du cycle Ingénieur Sciences agronomiques et halieutiques Module 8 E...
INSTITUT AGRONOMIQUE ET VÉTÉRINAIRE HASSAN II DÉPARTEMENT DE STATISTIQUE ET INFORMATIQUE APPLIQUÉES Première année du cycle Ingénieur Sciences agronomiques et halieutiques Module 8 Elément de module Conception et gestion de bases de données Volume horaire (24 heures) : Cours théorique : 8 heures Travaux dirigés : 4 heures Travaux pratiques : 12 heures A. HAMOUDA Première année du cycle Ingénieur Sciences agronomiques et sciences halieutiques °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° 1. IDENTIFICATION DU COORDONNATEUR DU MODULE Nom et Prénom : A. HAMOUDA Grade : Professeur de l’enseignement supérieur C Spécialité(s) : Statistique et informatique appliquées 2. PRE-REQUIS PEDAGOGIQUES Module requis pour suivre ce module : - Mathématiques appliquées (module 1 du semestre 3 du Cycle Préparatoire) 3. OBJECTIFS DU MODULE Ce module permettra aux étudiants de maîtriser une première partie des méthodes et des outils statistiques et informatiques indispensables pour l'ingénieur agronome pour l'analyse, l'interprétation et la gestion correcte de données issues d'expérimentation et d'enquêtes. Au terme de ce module, l'étudiant sera capable de : - Choisir la technique statistique appropriée pour l'analyse d'un problème donné et la mettre en œuvre à l'aide d'un logiciel statistique ; - Concevoir, mettre en œuvre et gérer une base de données, et ce en maîtrisant une méthode d'analyse et de conception de systèmes d'information, un outil de génie logiciel et un système de gestion de bases de données ; - Rédiger des programmes informatiques correspondant à des besoins plus spécifiques, grâce à la maîtrise d'un langage de programmation. 4. CONTENU DE CET ELEMENT DE MODULE Eléments de module Description des programmes Les principaux thèmes abordés dans ce cours sont : - Concepts du système et du système d'information - Méthodes d'analyse et de conception des systèmes Conception et gestion de d'information bases de données - Présentation de la méthode Merise - Modèle Entité/Association - Bases de données relationnelles - Pratique d'un SGBD relationnel sur micro-ordinateur IAV Hassan II (A. Hamouda) 1 5. EVALUATION Modalités d’évaluation Eléments de module Modalités d’évaluation prévues - Examen écrit couvrant tous les aspects discutés pendant le cours, les travaux dirigés et les travaux pratiques (60% de Conception et gestion de la note finale) bases de données - Contrôle continu (20% de la note finale) - Rapport des travaux pratiques et examen pratique (20% de la note finale) IAV Hassan II (A. Hamouda) 2 CHAPITRE 1 QUELQUES NOTIONS DE BASE 1.1. Notions de donnée et d’information 1) Une donnée est une suite de codes ayant une valeur d'un type donné (numérique, alphanumérique, booléen, date, etc.). Elle peut être lue sans toutefois être interprétée, car elle n'a pas un sens : Donnée = Signe + Code 2) Une information est une donnée qui puisse être interprétée. Autrement dit, c'est une donnée ayant un sens et une conséquence ou un impact pour celui qui la reçoit. Elle constitue un élément qui accroît la connaissance et réduit ainsi l'incertitude : Information = Donnée + Modèle d’interprétation La donnée est un élément fondamental servant de base à un système d'information, elle est traitée par des programmes informatiques qui la stockent selon son type pour aider à prendre des décisions ou tirer des conclusions. 3) Exemples : a) 3366-أ-10 numéro.série.code préfecture (matricule) retrouver un véhicule Si nous interprétons 3366-أ-10, en utilisant le modèle d'interprétation numéro.série.code_préfecture (matricule), on obtient l’information qu’il s’agit d’un véhicule immatriculé à Casablanca sous le numéro 3366 et série أ. b) AGRO.2019.72 filière.année_universitaire.effectif (nombre de lauréats) prévoir des postes Si nous interprétons AGRO.2019.72, en utilisant le modèle d'interprétation filière.année_universitaire.effectif (nombre de lauréats), on obtient l’information qu’il s’agit de 72 lauréats de la promotion 2019 de la filière agronomie. Une donnée peut avoir plus d'un sens selon le modèle d'interprétation qu'on lui associe. La donnée 06111983 peut être interprétée comme 06 novembre 1983 selon le modèle jour.mois.année (date de naissance) (pour un marocain par exemple), ou comme 11 juin 1983 selon le modèle mois.jour.année (date de naissance) (pour un américain par exemple). Une information n'est pas toujours facile à appréhender si on ne connaît pas le contexte sémantique auquel réfère le modèle d'interprétation. Pour les organisations, l'information revêt une importance stratégique. Elle est nécessaire pour prévoir, contrôler, agir, etc. Mais, pour qu'une information soit utile, elle doit être de bonne qualité (exacte, complète, à jour, etc.), être à la disposition lorsqu'on en a besoin et être diffusée au moment opportun. Tout ceci nécessite la mise en place d’un système d'information. IAV Hassan II 1 1.2. Notion de système d'information 1.2.1. Système Nous allons recourir à ce qu’on appelle la vision systémique d’une entreprise qui est apparue dans les années 70 et qui considère celle-ci non pas comme un ensemble de services « juxtaposés », mais comme un système complexe qui peut être compris à l’aide de la systémique. Plusieurs définitions ont été données au terme Système. Les plus connues considèrent un système comme un ensemble d’éléments, matériels ou non, en interaction dynamique entre eux, transformant par un processus des éléments d’entrée en éléments de sortie. Ces éléments sont organisés en vue de la réalisation de certains objectifs. Des informations internes et externes sont donc échangées par ces éléments qui interagissent, en utilisant des voies de communications comme support. Il a des frontières et il est doté d'une structure et évolue dans son environnement. Un système est en effet un concept théorique, il tente de concevoir un ensemble concret existant. Comme l'indique Le Moigne (1973), un système se construit. Nous considérons les systèmes qui sont constitués par les organisations et leurs environnements. Une organisation peut être une entreprise, une société, un établissement, un club, etc. L’IAV Hassan II est une organisation dont l’environnement est le ministère de l’agriculture, les fournisseurs, l'Etat, l'étranger, etc. Exemple : une entreprise qui commercialise des produits phytosanitaires Entrée : produits achetés, commandes, payements des clients Sortie : produits vendus, factures, payements des fournisseurs 1.2.2. Système d’information Selon la vision systémique d'une entreprise, une convention de représentation permet de décrire un système à partir de trois sous-systèmes en interaction : − un système de pilotage ou décisionnel − un système d'information − un système opérant ou opérationnel 1) Le système de pilotage s'occupe de la coordination de l'ensemble des activités en relation avec des objectifs fixés, de l'organisation d’utilisation des moyens et du contrôle de l'exécution des travaux. Il peut éventuellement donner des ordres de modifications nécessaires au système opérant. Si l'organisation considérée est l'IAV, l'équipe dirigeante prend les décisions nécessaires au bon fonctionnement de l'établissement et vérifie que les objectifs fixés sont atteints. C'est elle qui détermine les modalités du concours d'accès en première année des études (APESA) et le nombre d'étudiants à admettre à cette première année. Elle arrête les programmes des études, le règlement des contrôles des connaissances, les filières à accréditer et les options de spécialisation à ouvrir. Elle opère des modifications par l'ouverture de postes de recrutement, la réalisation de nouveaux investissements, etc. Les actions de cette équipe dirigeante sont limitées par plusieurs contraintes intérieures et extérieures. On peut citer : le statut, le budget, le cahier de normes pédagogiques, les syndicats, etc. 2) Le système opérant, appelé aussi système opérationnel, est un ensemble d'éléments matériels ou immatériels en interaction s'occupant de la réalisation des actions. On obtient ainsi des produits finaux à partir d'une certaine matière première. Il peut être contrôlé par le système de pilotage. IAV Hassan II (A. Hamouda) 2 Dans le cas de l'IAV, les départements et les différents services qui s'occupent des cours, des examens, des corrections, des délibérations, des publications scientifiques, des rapports de projets, etc., et les étudiants qui suivent les cours, effectuent des stages, passent les examens, etc. font partie du système opérant. Le diplôme se compte parmi les produits finaux de ce système. 3) Pour un domaine bien défini, l'ensemble des ressources humains et logistiques, de moyens techniques et des méthodes (personnel, ordinateurs, règles organisationnelles et fonctionnelles, etc.) permettent de collecter, mémoriser, traiter, distribuer et utiliser les différentes formes d'informations (texte, imagerie, parole, information structurée, etc.) dont l'organisation a besoin pour son bon fonctionnement. On parle de système d'information (SI). Le traitement concerne l'établissement de modèles de calcul, l'écriture d'algorithmes, la réalisation de programmes informatiques, etc. Le système d'information est en effet une interface entre les deux autres sous-systèmes. Il informe le système de pilotage sur le fonctionnement du système opérant et renvoie à celui- ci des décisions provenant du système de pilotage (figure 1). Le système d'information doit apporter à tous les acteurs l'information et la connaissance dont ils ont besoin pour agir et décider. Dans le cas de l'IAV, on trouve par exemple, entre autres, toutes les informations pertinentes sur les étudiants. Système Système de pilotage (coordination, objectifs) Flux Décisions Informations d'Informations traitées externes Système d'information (stockage et traitement) Flux d'Informations vers l'extérieur ordre Informations consignes collectées Flux entrant Système opérant (production, action) Flux sortant Figure 1. Principaux types d'information transitant au sein d'une organisation. De ce qui précède, on retient que les principales fonctions d'un système d'information sont : − la collecte et la saisie des informations (codifiées sous une forme appropriée permettant leur stockage et leur transmission) : proviennent d'autres éléments du système, de l’environnement ; − le stockage des informations (brutes ou découlant d'un traitement) : base de données, fichiers, etc. ; − le traitement des informations stockées (création de nouvelles informations par calcul, tri, etc.) ; − la restitution des informations (brutes ou découlant d'un traitement) ; − la transmission et la circulation des informations. IAV Hassan II (A. Hamouda) 3 Le système d'information peut être aussi scindé en deux sous-systèmes : − un sous-système d'information informel : les informations informelles sont celles que l'entreprise ne fait pas intervenir pour la gestion de ses intérêts et de ses affaires (rapport de force, relations personnelles, etc.). La forme de ces informations n'est pas définie par l'entreprise ; − un sous-système d'information formel (auquel nous nous intéressons) : Les informations formelles sont celles que l'entreprise utilise pour le bon fonctionnement de ses activités (rôles, responsabilités, désignation des tâches, etc.). La forme de ces informations est définie par l'entreprise. Un système d'information existe indépendamment des techniques informatiques, mais avec les progrès en matière d'informatique, les fonctions du système d'information sont de plus en plus automatisées. Le système automatisé d'information correspond aux parties automatisées du système d'information. Il permet de gagner de la productivité et de la qualité et fournit une aide à la décision. Le traitement automatisé des données, par les programmes informatiques, nécessite que celles-ci soient bien structurées. Le développement de systèmes d'information se caractérise en effet par la complexité qui est due notamment à l'évolution des besoins des utilisateurs, au comportement et actions des acteurs dans l'organisation, au besoin de gérer des groupes, à la complexité des technologies employées, à la difficulté de la prise de décision et aux coûts de maintenance. 1.3. Méthodes d'analyse et de conception 1.3.1. Généralités Comme cela a été noté, les systèmes d'information sont de plus en plus complexes. Leur constitution peut poser des difficultés de planification et de suivi du travail, des problèmes de redondance des données, des problèmes de synonymes (plusieurs termes de même sens) et de polysèmes (un terme qui a plusieurs sens différents), des complications de maintenance, etc. Ceci a donné lieu à l'apparition de méthodes pour rationaliser et guider l’analyse et la conception de ces systèmes. Ces méthodes diffèrent selon la manière dont elles perçoivent le système d'information. - L'analyse permet de comprendre les spécifications et les exigences du problème à résoudre et de le présenter formellement. On définit donc les fonctionnalités et les qualités attendues en prenant en compte les besoins des utilisateurs ; - La conception permet de concevoir la solution au problème analysé (structuration des données, organisation des traitements, détermination des postes de travail, choix des moyens techniques, etc.). Une méthode d'analyse et de conception permet de formaliser une réflexion et garder une trace compréhensible de cette réflexion grâce à une démarche, des modèles, des langages et des outils pour mettre tous ces éléments en œuvre. Elle permet une solution répondant aux différents besoins et fournit des programmes maintenables : démarche : description sous forme de processus qui consiste à l'analyse du problème, à la conception de la solution et à la réalisation ; modèles : un ensemble de concepts et de règles de représentation, généralement graphiques, permettant de modéliser le système d'information à différents niveaux d’abstraction ; langages : ensemble de constructions pour décrire formellement le résultat d’un travail de conception ; IAV Hassan II (A. Hamouda) 4 Outils et techniques : logiciels permettant à mettre en œuvre la démarche, les modèles et les langages. On distingue différentes classes de méthodes. On peut citer : − Les approches cartésiennes − Les approches systémiques − Les approches orientées objet 1.3.2. Les approches dites cartésiennes − Méthodes de première génération : à partir des années 70 ; − Elles associent une approche fonctionnelle de conception au paradigme cartésien : − le système d'information est identifié à une fonction globale de gestion et la conception consiste à analyser cette fonction ; − la fonction de gestion est éclatée, lors d’une démarche par étapes descendantes successives, en processus spécifiques. Toute fonction est décomposée jusqu’à l’obtention de sous-fonctions élémentaires simples et faciles à programmer ; − Lors de la décomposition, des interrelations entre processus spécifiques sont mises en évidences au moyen de flux de données, de signaux, etc. ; − Elles appliquent les règles de la programmation structurées ; Méthodes présentant plusieurs lacunes : absence de fondements théoriques, concepts utilisés faiblement définis, effort sur les fonctions au détriment des données, règles de décomposition non explicites, insuffisance des guides méthodologiques, etc. − Exemples : SADT (Structured Analysis and Design Technique), SASD, Jackson, Yourdon 1.3.3. Les approches dites systémiques − Méthodes de seconde génération : années 80 ; − Méthodes combinant une approche conceptuelle au paradigme systémique : − elles ont leurs racines dans la théorie des systèmes ; − la conception du système d'information est assimilée à un processus de modélisation − Méthodes décrivant la structure et les objectifs fonctionnels d’un système d'information en le considérant comme un objet complexe (théorie systémique des organisations) : on recherche tous les éléments pertinents du système d'information et les relations entre eux ; − Exemples : Merise, NIAM, etc. − Avantages : leur fondement théorique, séparation analyse/conception, large champ d'application, communication facile, etc. 1.3.4. Les approches dites orientées « objet » − Méthodes de troisième génération : années 90 ; − Système d'information est un ensemble d'objets interactifs − Méthodes répondant mieux à la complexité des systèmes d’information en prenant en compte de manière cohérente le coté dynamique des objets ; IAV Hassan II (A. Hamouda) 5 − Un objet a des propriétés statiques et dynamiques ; − Relations avec la propagation des langages objets (Java, C++, etc.) ; − Exemples : OOD, HOOD, OMT, etc. ; − L’approche UML (Unified Modeling Language) est issue de la fusion de différentes approches et du besoin de standardiser le domaine objet. 1.4. Présentation de la méthode Merise 1.4.1. Généralités MERISE est un sigle qui est construit avec les initiales des mots de "Méthode d’Etude et de Réalisation Informatique pour les Systèmes d’Entreprise". C'est l'une des approches systémiques les plus connues, elle a été créée en 1978 à la demande du ministère de l’industrie français par un groupement de sociétés de conseil en informatique. Elle est publique et libre d'emploi et elle a connu de nombreuses évolutions (Merise 0 en 1979, Merise 1 en 1982, Merise 2 en 1992, Merise 3 pour la conception orienté objet). Merise est une méthode de conception et de développement de systèmes d'information. Elle propose un ensemble de formalismes et de règles destinées à modéliser de manière indépendante les données et les traitements du système d’information. La séparation de la modélisation des données et des traitements assure une longévité aux modèles : l'agencement des données est en effet assez stable, alors que les traitements sont souvent remaniés. Il y a vérification de la concordance entre les données et les traitements. Toutes les données nécessaires aux traitements sont présentes et il n'y a pas de données superflues. Pour rendre la modélisation moins complexe, l'organisation peut être découpée en domaines d'activité. Ceux-ci ont chacun les systèmes décisionnel, opérant et d'information. Les systèmes d'information de ces domaines constituent le système d'information de l'organisation, en entretenant entre eux des liens. 1.4.2. Cycles de Merise L'étude et le développement d’un système d'information par Merise sont considérés selon trois notions fondamentales développées de manière conjointe, appelées aussi cycles : − le cycle de vie du système d'information (démarche) ; − le cycle de décision (maîtrise) ; − le cycle d’abstraction (raisonnement). 1.4.2.1. Cycle de vie Le cycle de vie est une démarche méthodologique de développement du système d'information : maîtrise de la chronologie des opérations. Le processus du développement est découpé en plusieurs étapes. Le schéma directeur : fixe les grandes orientations et les finalités à moyen terme du système d'information en relation avec la stratégie de l’organisation. L’établissement de ce schéma est une tâche permanente alimentée, entre autres, par les évolutions technique et organisationnelle. L'étude préalable : consiste à collecter les informations sur les moyens existants et sur les limites du système existant en concertation avec les acteurs de l’organisation. Cela permet de synthétiser les besoins du système futur et de proposer différents scénarios, chacun dépendant du matériel nécessaire, des informations, des principaux traitements, etc. L’un de ces IAV Hassan II (A. Hamouda) 6 scénarios est retenu après évaluation, notamment en fonction du coût, des capacités d’évolution, de son impact sur l’organisation, du délai de mise en œuvre et de mise en exploitation et de la faisabilité. A cette étape, on fait le choix du modèle conceptuel de traitement (MCT) et on établit l'ébauche du MCD de la nouvelle solution. Cycle de vie Schéma directeur Etude préalable Dossier d'étude préalable P Etude détaillée R Dossier d'étude détaillée O Etude technique J Dossier d'étude technique E Production de logiciel Dossier de programmation T Mise en oeuvre Maintenance L'étude détaillée : basée sur le choix qui résulte de l'étude préalable. Elle décrit complètement, au plan fonctionnel, la solution à réaliser (validation du MCD avec optimisation du modèle logique des données (MLD), MOT). La réalisation : consiste d’abord en une analyse technique ayant pour but de décrire l’environnement technique, l’architecture du logiciel et le MPD. Ensuite, il y a la production du logiciel comprenant l’écriture des programmes, leur test sur un jeu d'essais approuvés par les utilisateurs et leur mise au point. La mise en œuvre : consiste à mettre en place les moyens techniques et organisationnels (locaux, matériel informatique, etc.), et humains (recrutement, formation des utilisateurs, etc.). Elle consiste aussi à la réception et au lancement du nouveau système. Celui-ci est lancé en parallèle avec le système existant pendant une période d’observation, avant que ce dernier ne soit ensuite arrêté. La maintenance : consiste à rectifier les anomalies, comme les erreurs de conception qui peuvent être dues à des incohérences dans l’analyse ou des erreurs de réalisation qui peuvent être dues à une mauvaise compréhension lors de la réalisation, et/ou à modifier l’application pour répondre à une éventuelle évolution de l’organisation. 1.4.2.2. Cycle de décision L'étude et le développement du système d’information sont menés à bien par la mise en place d'une structure de travail. Les niveaux de décision sont hiérarchisés en fonction de la nature des choix à prendre tout au long du cycle de vie : − limites et objectifs : choix se rapportant à la stratégie et à la politique de l'entreprise ; − décisions de gestion de projet : choix englobant, par exemple, les règles, les modalités, la facturation des produits, etc.; IAV Hassan II (A. Hamouda) 7 − décisions d'organisation : choix se rapportant aux procédures à suivre, aux contrôles, aux définitions des postes de travail, etc.; − décisions techniques : choix se rapportant aux différents logiciels, etc. La structure de travail comprend : − comité directeur : chargé de fixer les grandes orientations et prendre les décisions ; − groupe projet : chargé de la réalisation des dossiers d'étude et des logiciels ; − comité utilisateur : participe à trouver des solutions et à valider les dossiers d'étude réalisés par le groupe projet. Cycle de décision Schéma directeur Accord sur l'inscription et lancement Etude préalable Choix d'un scénario Etude détaillée Accord sur spécifications fonctionnelles Etude technique Accord sur spécifications techniques Production de logiciel Recette provisoire Mise en oeuvre Réception du système Maintenance 1.4.2.3. Cycle d'abstraction Il est conseillé de passer par différents niveaux d'abstraction. A chaque niveau, il y a des modèles pour représenter les données et les traitements, un formalisme de représentation est associé à chacun de ces modèles. On a : − Le niveau conceptuel qui explicite les finalités, les objectifs et les règles de gestion du système d'information. A ce niveau, on pense le système sans envisager ni son organisation, ni son implémentation (niveau indépendant des contraintes organisationnelles et techniques). On répond à la question "Quoi faire?". C'est la description la plus stable du système ; Le but du niveau conceptuel est la formalisation des données et des traitements nécessaires au système d'information. La description du modèle conceptuel repose sur : − un modèle conceptuel des données (MCD) pour les données ; − un modèle conceptuel des traitements (MCT) pour les traitements. Le modèle conceptuel des données (MCD) permet d'établir une représentation claire des données sur lesquelles repose le système d'information et définit les dépendances fonctionnelles. Plusieurs concepts sont utilisés pour la formalisation d'un MCD, notamment : IAV Hassan II (A. Hamouda) 8 - les entités - les associations - les propriétés Le modèle conceptuel des traitements (MCT) permet de formaliser les traitements en fonction des événements sans s'intéresser à l'organisation qui régira ces traitements. Il est moins utilisé que le MCD, notamment pour les petites applications. La représentation visuelle des modèles conceptuels facilite la communication entre ceux qui collaborent pour établir une conception d'un système d'information. − Le niveau logique ou organisationnel : l'organisation qui régira les données et les traitements est spécifiée. On répond aux questions "Qui ?", "Quand ?" et "Où ?" ; Il y a notamment : - la répartition homme/machine - le mode de fonctionnement (temps réel, temps différé), de lieux - la séparation des opérations manuelles des opérations automatisées, etc. Les modèles liés à ce niveau de formalisation sont : − le modèle logique des données (MLD) ; − le modèle Organisationnel des traitements (MOT) : permet de représenter les tâches exécutées par chaque intervenant avec les notions de lieux et du temps. − Le niveau physique ou opérationnel : les choix techniques sont spécifiés. On répond à la question comment seront réalisés les éléments du projet. On distingue : − le Modèle Physique des Données (MPD ; − le Modèle Opérationnel des Traitements (MOPT). Dans ce schéma, plus le niveau est élevé, plus il est stable. On procède en effet de manière progressive du plus stable (conceptuel) au plus technique. Il est possible de détecter plus rapidement les problèmes. Le tableau 1.1 reprend les modèles et les concepts des données et des traitements utilisés à chaque niveau de description du système d'information. Le tableau 1.1: Modèles et concepts utilisés à chaque niveau de description du système d'information. Données Traitements Niveau Réflexion Modèles Concepts Modèles Entité Conceptuel MCD Association MCT Quoi faire Propriété Relation MLD Organisationnel Attribut MOT Qui fait quoi (relationnel) Contraintes et où Table MPD Tuple Technique MOpT (relationnel) Attribut Comment faire Index - MCD : un schéma qui représente les dépendances entre les différentes données stockées par le système d'information ; - MLD : reprend le contenu du MCD et précise la structure des données telle qu'elle sera implémentée ; - MPD : permet de préciser les systèmes de stockage utilisés. IAV Hassan II (A. Hamouda) 9 1.5. Modèle Entité /Association 1.5.1. Introduction Nous avons vu que le MCD permet d'avoir une image invariante du système d'information en termes de données, indépendamment des choix d'organisation, d'automatisation ou techniques. Il décrit les choix de gestion en précisant la signification, la structure et les liens des invariants. Nous avons également vu que le MCD de l'existant est étudié lors de l'étude préalable avec établissement de l'ébauche du MCD de la nouvelle solution et que le MCD de cette nouvelle solution est élaboré lors de l'étude détaillée. Plusieurs formalismes totalement indépendants des préoccupations de stockage de données, avec concepts et règles, ont été développés pour la modélisation des données. Le modèle entité/relation, appelé aussi entité/association (Chen, 1976), se compte parmi les plus connus de la classe des modèles sémantiques. MERISE utilise ce formalisme pour la description des données. Le modèle entité/association permet d'appréhender le monde réel, il consiste à distinguer des agrégations de données élémentaires appelées entités et des liens entre les entités appelés associations. Ce formalisme est d'une grande simplicité d'utilisation et il est très adapté aux bases de données relationnelles. Il permet de représenter graphiquement les données et les liens sémantiques sans se préoccuper du modèle logique ni du modèle physique. Toutes les entités et les associations doivent figurer dans ce diagramme. 1.5.2. Concepts de base 1.5.2.1. Entité − Définition : une entité est un objet concret (Etudiant) ou abstrait (Département) de la réalité qui peut être reconnue distinctement et pour lequel on enregistre des informations. Le regroupement d'entités de même nature et possédant les mêmes caractéristiques constitue une classe d'entités ou un type d'entités. Dans la pratique, on parle souvent d'entité pour désigner un type d'entités et d'occurrences pour désigner les entités (nous adopterons cette terminologie) − Exemples d'entités : voiture, étudiant, département, etc. − Exemples d'occurrences d'entités : sa voiture, Mohammed, département de Statistique, etc. − Représentation : une entité est schématisée par un rectangle − Exemple : Entité Etudiant Etudiant s − Le concepteur du modèle regroupe les objets similaires sur lesquels il mémorise des informations dans une entité. 1.5.2.2. Association - Une association (ou relation) représente un lien entre des occurrences d'entités IAV Hassan II (A. Hamouda) 10 - Une classe d'association ou type d'association est le niveau générique de toute association présentant les mêmes caractéristiques - Exemple de type d'association : affecter un enseignant à un département - Exemple d'association : Ali est affecté au département de Statistique appliquée - Par abus de langage, on utilise le mot association pour désigner un type d'association - Dimension d'une association : c'est le nombre d'entités participant à la relation o relation binaire : est une relation entre deux entités o relation ternaire : est une relation entre trois entités o relation n-aire : relations entre n entités - Une association est généralement schématisée par un losange - Exemple : Association Editer Editeurs Livres Editer - Signification : - les éditeurs éditent des livres - les livres sont édités par des éditeurs 1.5.2.3. Propriété - Une propriété est une caractéristique associée à une entité ou à une association. La propriété prend une valeur précise pour chaque occurrence d'une entité ou d'une association. Chaque propriété possède un domaine définissant l'ensemble des valeurs possibles qui peuvent être choisies (booléen, texte, date, entier, etc.) - Exemple de Propriétés : code de fournisseur, adresse de l'étudiant, etc. - Il est fréquent d'avoir des associations sans propriétés - On ne mentionne pas dans une entité les propriétés déjà explicitement mentionnées dans d'autres entités reliées par des associations. Dans l'exemple suivant, l'association "Avoir" mentionne le sexe de l'étudiant. La propriété Sexe dans l'entité Etudiant est donc totalement superflue : E tudiant CNE S exe A voir Nom_Etud iant Code_sexe P rénom_E tudiant S exe S exe à supprimer 1.5.2.4. Identifiant - L'Identifiant d'une entité ou d'une association est constitué d'une ou de plusieurs propriétés devant avoir une valeur unique pour chaque occurrence d'entité ou d'association de ce type - Chaque entité a un identifiant, formé éventuellement de plusieurs propriétés IAV Hassan II (A. Hamouda) 11 - L'identifiant d'une association est la concaténation des identifiants des entités liées - L'identifiant est souvent représenté en soulignant la propriété ou les propriétés qui le constituent - Exemple d'identifient : Code National de l'Etudiant (CNE). On ne peut trouver deux étudiants ayant le même CNE (deux étudiants de même nom s'identifient par leurs CNE) : ETUDIANT CNE EXAMEN Nom_Etud Subir Num_exa Adresse_Etud Note_Exa Date_Exam Sexe_Etud Duree_Exa DatNais_Etud Classe_Etud L'entité Etudiant est identifiée par la propriété CNE L'entité Examen est identifiée par la propriété Num_exa L'association Subir est identifiée par les propriétés CNE et Num_exa 1.5.2.5. Cardinalités - La cardinalité ou la connectivité d'une association indique les nombres de fois minimum et maximum où une occurrence d'entité peut ou doit participer dans des occurrences d'association avec d'autres occurrences d'une ou de plusieurs autres entités. Il s'agit d'une notion d'ordre qui indique les règles de jeu imposées par le problème à modéliser. La cardinalité doit apparaître à chaque patte d'une association - Les cardinalités minimales sont 0 et 1, et les cardinalités maximales sont 1 et n. - Exemple 1 : l'association "Avoir" suivante a comme cardinalités (1,1) et (0,n) : ETUDIANT CNE Sexe Avoir 0,n Nom_Etud Code_sexe Adresse_Etud 1,1 Sexe DatNais_Etud Classe_Etud 0,n : un sexe concerne au minimum zéro étudiant et au maximum plusieurs étudiants 1,1 : un étudiant est d’un sexe et un seul - Exemple 2 : l'association "Subir"a comme cardinalités (0,n) et (1,n) : ET UDIANT CNE EXAMEN Nom_Etud Subir 0,n Num_exa Adres s e_Etud 1,n Note_Exa Date_Exam Sexe_Etud DatNais_Etud Duree_Exa Class e_Etud 0,n : un étudiant passe au minimum 0 examen et au maximum n examens 1,n : un examen est subi au minimum par un étudiant (sinon, ce n'est pas un examen) et au maximum par n étudiants IAV Hassan II (A. Hamouda) 12 Signification de la cardinalité minimale : 0 : une occurrence d'entité peut exister sans qu'elle ne soit impliquée dans aucune occurrence de l'association : un étudiant qui figure sans passer d'examen 1 : une occurrence d'entité ne peut exister que si elle est impliquée dans au moins une occurrence d'association : pour qu'un examen figure, il doit être passé au moins par un étudiant Signification de la cardinalité maximale : 1 : une occurrence d'entité peut être impliquée dans au maximum une occurrence d'association : un étudiant est d'un sexe donné (masculin ou féminin) n : une occurrence d'entité peut être impliquée dans plusieurs occurrences d'association : un étudiant peut passer plusieurs examens Les associations qui comportent une cardinalité 1,1 sur l'une des pattes ne sont pas porteuses de propriétés. 1.5.2.6. Dépendances fonctionnelles - On parle de dépendance fonctionnelle entre deux propriétés A et B d'une entité ou d'une association si à toute occurrence de A on ne peut associer à tout instant qu'une occurrence unique de B. On dit que B dépend fonctionnellement de A ou que A détermine B. On note : A → B - Exemple : dans l'entité Etudiant de l'exemple précédent, si on connaît le CNE d'un étudiant, cela détermine son nom CNE → Nom _ Etudiant 1.5.3. Normalisation d’un modèle conceptuel de données La normalisation a pour but de limiter les redondances et les incohérences au sein des données et d’améliorer les performances de leurs traitements. Les formes normales s’appliquent aux entités et aux relations. Nous présenterons ici trois formes normales. Première forme normale - Aucune propriété d’une entité ou d’une association n’est à valeurs multiples ou composées, c'est-à-dire toutes les propriétés ont des valeurs simples - La première forme normale est notée 1FN - Exemple : dans l'entité Etudiant suivante Eudi ant CNE Nom_etud Prénom_etud Notes_Examens la première forme normale n’est pas respectée car Notes_Examens (notes des examens) est une série de notes et n’est donc pas atomique (car un étudiant peut avoir plusieurs notes) Deuxième forme normale - Le modèle est en première forme normale (en 1FN) - Toute propriété non identifiante dépend de la totalité de l’identifiant. Il n’y a donc pas de dépendance partielle IAV Hassan II (A. Hamouda) 13 - La deuxième forme normale est notée 2FN - Exemple 1 : l'entité Personne suivante Personne Nom_Etud Code_Matière Moyenne_Cont avec la dépendance : Nom_Etud, Code_Matière Moyenne_Cont est en 2FN - Exemple 2 : l'entité Commande suivante Commande Code_Client Code_Article Client Article avec les dépendances : Code_Client Client et Code_Article Article, n'est pas en 2FN. Troisième forme normale - Le modèle est en deuxième forme normale (en 2FN) ; - Chaque propriété non identifiante dépend directement de l’identifiant, et non d’une propriété non identifiante. Il n’y a donc pas de dépendance transitive - Exemple : l'entité Tracteur suivante Tracteur Num_Immatric Num_Type Marque_Trac Puissance_Trac avec la dépendance fonctionnelle : Num_Type Marque_Trac n’est pas en troisième forme normale car Num_Type n'est pas un identifiant. 1.6. Etude de l'existant L'objectif de l'étude de l'existant est de mieux comprendre la problématique du projet et de faire un diagnostic du fonctionnement du système existant, en repérant ses qualités et ses défauts. Il permet de mettre en évidence les différents acteurs et les différents flux de données pour bien préciser les réalités que l'on cherche à modéliser. Il est donc important de définir les champs d'étude, de préciser l'ensemble des objectifs liés à la mise en place du système d'information, de recenser les besoins des futurs utilisateurs et de lister les différentes contraintes humaines, matérielles, temporelles, etc. Les données pertinentes que contiendra la future base de données sont donc à définir et à répertorier dès l'étude préalable. Elles peuvent provenir de documents, d'interviews de responsables et de futurs utilisateurs, de questionnaires, etc. On prend le soin de vérifier qu'il ne manque aucune information importante. L'analyse de toutes ces informations relatives au sujet étudié permet de définir les règles de gestion et de construire une ébauche du dictionnaire de données. C'est un document IAV Hassan II (A. Hamouda) 14 regroupant les différentes informations avec leurs propriétés et contraintes et ne comportant ni synonyme ni polysème. Les informations du dictionnaire de données doivent être élémentaires, c'est-à-dire non décomposables. Le tableau 1.1 donne un exemple de ce que peut être un dictionnaire de données. Le dictionnaire doit être structuré, en regroupant les informations en sujets distincts. C'est ainsi qu'il y a identification des entités, des associations, des propriétés, des identifiants, etc. Les propriétés obtenues par calcul à partir d'autres propriétés ne doivent pas être considérées dans cette phase de la structuration des données, car elles deviennent source de redondance d'information. Tableau 1.1. Exemple de la présentation d'un dictionnaire de données1. Mnémonique libellé Type du Taille Contraintes Mode de calcul Code national de champ CNE l'étudiant Texte 12 Nom_Etud Nom de l'étudiant Texte 20 Pren_Etud Prénom de l'étudiant Texte 20 Code_Sexe Code du sexe Texte 1 F ou M Date de naissance de Date Dnais_Etud l'étudiant Numérique (Note_examen*3+ Note_Mat Note de la matière >=0 et , Tous >#2/7/2008# (3) >= , =#01/01/2008# (si vous omettez les dièses, leur ajout est automatique) ; - Choisissez ensuite Fitre / appliquer le filtre/tri et vérifiez les résultats obtenus ; - Retrouvez l’ensemble des enregistrements en sélectionnant le menu Enregistrements/ Afficher tous les enregistrements. Filtre utilisé : Résultat du filtre : Remarques : - Pour ajouter un ou plusieurs champs à la grille de la définition du filtre, faites-les glisser ou double-cliquez sur leurs noms à partir des tables (ou encore cliquez sur le menu déroulant Champ et choisissez le champ concerné par le filtre) ; - Pour supprimer des champs de la grille de la définition du filtre, sélectionnez-les et utilisez Edition/Supprimer. Exemple 2 Sélectionnez, en utilisant un filtre, les clients qui habitent Rabat ou Casablanca et dont les noms commencent par la lettre S. Les résultats sont à trier par ville. IAV Hassan II (A. Hamouda) 46 Procédure : - Utilisez une démarche semblable à celle de l'exemple 1 ; - Consultez la grille de la définition du filtre (figure ci-dessous) pour la comparer avec la vôtre ; - Comparez également les résultats obtenus. Nous utilisons ici le symbole astérisque (*) qui remplace tout ensemble de caractères. Autrement dit, le critère "S*" pour le Nom_client signifie n'importe quel nom qui commence par la lettre S. Filtre utilisé : Résultat du filtre : Exemple 3 Sélectionnez, en utilisant un filtre, les commandes dont la date ne dépasse pas 200 jours (en se référant à la date d'aujourd'hui). Procédure : - Utilisez une démarche semblable à celle des exercice 1 et 2 ; - Utilisez >Date()-200 comme critère ; - Comparez les résultats obtenus. Date() : Cette écriture de Date sans argument signifie la date du jour, pour autant que la date de votre ordinateur soit bien réglée. IAV Hassan II (A. Hamouda) 47 Filtre utilisé : Résultat du filtre : ce résultat dépend du moment de l'exécution de la requête. 4.5.2. Utilisation du ET et du OU a) Utilisation du ET Si l'on souhaite utiliser un filtre avec plusieurs critères de sélection liés par le ET, on doit tout écrire sur la même ligne Critères. Exemple : Sélectionnez, en utilisant un filtre, les clients dont les noms commencent par la lettre S et qui habitent Rabat ou Casablanca. Les résultats sont triés par ville. Procédure : Il s'agit en effet de l'exemple 2 du paragraphe précédent (paragraphe 4.5.1). On procède comme à l'accoutumé en écrivant les deux critères sur la même ligne de Critères. b) Utilisation du OU Si l'on souhaite utiliser un filtre avec plusieurs critères de sélection liés par le OU, on écrit les critères sur des lignes différentes. Exemple : Créez un filtre qui sélectionne les clients qui sont des dames et/ou ceux dont la ville est Kénitra. Procédure : - Ecrivez les deux critères sur deux lignes différentes (voir la grille de la définition du filtre de la figure ci-dessous) ; - Comparez les résultats obtenus. IAV Hassan II (A. Hamouda) 48 Filtre utilisé : Résultat du filtre : 4.5.3. Sélection utilisant des champs calculés On peut créer des champs appelés champs calculés pour faire des calculs lors de l'application d'un filtre. La forme générale d'un champ calculé est : Nom_du_nouveau_champ : expression de calcul Les noms de champs sont écrits entre crochets pour inclure leurs valeurs dans un champ calculé. Le champ calculé est soumis à des critères de sélection. Exemple : Sélectionnez les Produits dont le prix TTC actuel est supérieur à 40 dirhams. Procédure : - Ouvrez la table Produits en Mode feuille de données ; - Sélectionnez Enregistrements / Filtrer / Filtre tri avancé ; - Placez le curseur sur une case Champ vide et écrivez l'expression : Prix_TTC: [Prix_unitaireHT]*(1+[TVA]) - Ajoutez >40 comme critère de ce nouveau champ. IAV Hassan II (A. Hamouda) 49 Dans le cas des requêtes, nous prendrons l'habitude de faire précéder le nom d'un champ par le nom de la table avec un point d'exclamation lorsque le même nom de champ est utilisé dans des tables différentes. Dans le cas de cet exemple, on pourra aussi utiliser : Prix_TTC: [Produits]![Prix_unitaireHT]*(1+[Produits]![TVA]) Remarquez que les noms des champs utilisés dans l'expression sont écrits entre crochets. Si on omet ces crochets, ils seront ajoutés automatiquement par Access. Filtre utilisé : Résultat du filtre : 4.5.4. Enregistrement du filtre en tant que requête Quand on utilise un filtre, il est provisoire et non enregistré. Il est parfois intéressant d'enregistrer le filtre en cours en tant que requête pour une utilisation ultérieure. Exemple : Enregistrez le filtre précédent en tant que requête, en lui donnant le nom PrixTTC_sup_40. Procédure : - Affichez le filtre dans la fenêtre Filtre/Tri avancé puis sélectionnez Fichier/Enregistrer en tant que requête : - Donnez PrixTTC_sup_40 comme nom à la requête. 4.6. Impression de la structure d'une table Exemple : Visualisez l'état de la structure de la table Clients sans l'imprimer. IAV Hassan II (A. Hamouda) 50 Procédure : - Fermez toutes les tables et la base de données Princesse_complete.mdb ouverte ; - A partir du menu Outils, choisissez Analyse puis l'option Documentation - Sur la fenêtre qui apparaît, cochez les noms des tables dont vous souhaitez imprimer la structure (table Clients dans le cas de notre exemple) et sélectionnez Options ; - Sélectionnez les options souhaitées et cliquez sur OK ; - Après apparition de la fenêtre Documentation, cliquez sur OK ; - Si vous souhaitez imprimez la structure obtenue, cliquez sur le bouton. IAV Hassan II (A. Hamouda) 51 CHAPITRE 5 UTILISATION DES REQUÊTES 5.1. Objet des requêtes Les requêtes permettent d’exploiter les données contenues dans plusieurs tables et requêtes, en les interrogeant sur les données qu'elles contiennent. Les résultats d’une requête peuvent servir à créer une autre requête, un formulaire, un état, un graphique, etc. Lorsque la requête utilise des champs provenant de plusieurs tables ou requêtes, celles-ci doivent être jointes dans la fenêtre requête avant d'inclure les champs. La jointure se fait de la même manière que dans le cas de l'établissement d'une relation entre deux tables. 5.2. Types de requêtes Il existe différents types de requêtes. On peut citer. a) Les requêtes de type "Sélection" Elles sont les plus utilisées. Elles permettent d’afficher, de modifier et de traiter les données issues de plusieurs tables : Surtout pour extraire des données répondant à des critères. b) Les requêtes de type "Analyse croisée " Elles permettent de synthétiser les données en un format de feuille de calcul compacte (en-têtes de lignes et en-têtes de colonnes) c) Les requêtes de type "Action" Elles permettent de modifier un grand nombre d'enregistrements en une seule action : ajout d'enregistrements, suppression d'enregistrements, modification du contenu des tables, etc. 5.3. Création de requêtes 5.3.1. Requêtes sélection 5.3.1.1. Grille de définition de la requête Pour créer une nouvelle requête dans une base de données bureau, vous pouvez procéder en faisant appel à l’Assistant ou au Concepteur de requêtes. a) Dans le cas de l’utilisation de l’Assistant, cliquez sur Assistant Requête sous l’onglet CREER et suivez l’Assistant pour créer et exécuter votre requête. b) Si vous prévoyez des critères pour votre critère : Cliquez sur Création de requête sous l'onglet CREER pour afficher la grille de la définition de la requête. Vous pouvez alors ajouter les tables et/ou les requêtes, puis les champs et les critères à mettre dans la nouvelle requête. A titre d’exemple, ajoutez la table Clients dans la zone Afficher la table et double-cliquez sur les champs Nom_client et Adresse_client pour les ajouter à la grille de création de la requête. IAV Hassan II (A. Hamouda) 52 Menus déroulants 5.3.1.2 Ajout et suppression de tables et de champs Pour ajouter une ou plusieurs tables (ou requêtes), choisissez Afficher la table de l’onglet CREER (de « Outils de requête ») (vous pouvez aussi cliquer sur le bouton droit de la souris et choisir Afficher la table) ; Pour ajouter un ou plusieurs champs à la grille de la définition de la requête, faites-les glisser ou double-cliquez sur leurs noms à partir des tables (ou encore cliquez sur le menu déroulant de la case Champ et choisissez le champ voulu) ; Pour supprimer des champs, sélectionnez-les et utilisez CREER/Supprimer des colonnes. Cliquez ici pour sélectionner les champs à supprimer Cliquez ici pour supprimer 5.3.1.3. Résultats d'une requête Les résultats d'une requête sont visualisés en Mode feuille de données ; Il faut retenir qu'il existe un lien dynamique entre la table et la requête. C'est la définition de la requête qui est sauvegardée et non les données. Chaque fois qu'on passe en mode feuille de la requête, Access exécute la requête, le résultat est automatiquement actualisé et la requête nous donne une idée sur l'état de la table ; Toute modification apportée aux données au niveau de la feuille d'une requête est prise en considération au niveau de la table correspondante et les modifications dans la table apparaissent dans les résultats de la requête ; Une requête est généralement enregistrée après chaque modification ; Une requête s'exécute en appuyant sur le bouton Exécuter ou en appelant le Mode feuille de données dans le menu Affichage ; Après exécution, le retour au mode création se fait en cliquant sur le bouton ou en sélectionnant l'option Mode création dans le menu Affichage. IAV Hassan II (A. Hamouda) 53 5.3.1.4. Utilisation de critères Comme pour les filtres, on peut utiliser plusieurs opérateurs (arithmétiques, logiques, etc.), des fonctions et des expressions calculées pour établir des critères. De même, le ET et le OU sont utilisés de la même manière que pour les filtres. Requête 1. Créez une requête qui permet d'afficher les noms, rangés en ordre croissant, et les titres des clients qui ont commandé le Thé anbar. On souhaite également connaître les codes et les dates de ces commandes ainsi que les prix d'achats hors taxe à ces dates. Procédure : - Fermez toutes les tables et sélectionnez l'onglet CREER, puis cliquez sur Création de requête; - Ajoutez les tables qui seront utilisées par cette requête : Produits, Clients, Commandes et Détails_commandes. Remarquez que les relations entre les tables sélectionnées apparaissent automatiquement ; - Ajoutez les champs Titre_client, Nom_client, Nom_produit, Code_commande, Date_commande et Prix_unitaireHT (ce dernier champ provient de la table Détails_commandes) ; - Ajoutez Thé anbar comme critère pour le champ Nom_produit et décochez Afficher de ce champ pour qu'il n'apparaisse pas avec les résultats ; - Choisissez Croissant comme ordre de tri pour le champ Nom_client ; - Visualisez les résultats de la requête en appuyant sur le bouton ou en appelant le menu Affichage/Mode feuille de données ; - Choisissez Fichier/enregistrer et donnez le nom Commande_Thé_anbar à la requête créée. Requête utilisée : Résultats de la requête : Décochez cette case. IAV Hassan II (A. Hamouda) 54 Requête 1_à_créer Créez une requête qui permet d'afficher les commandes dans lesquelles figure au moins un produit classé parmi les « Fruits secs ». On souhaite également connaître les dates de ces commandes classées selon l’ordre croissant ainsi que les noms des clients qui ont passé ces commandes. Requête 2. Créez une requête qui permet de visualiser les produits qui figurent dans les commandes effectuées entre le 1er et le 15 mai 2012 par les sociétés. Les résultats sont à sortir par ordre croissant des dates de commandes. Procédure : Procédez comme pour requête 1 et vérifiiez les résultats obtenus. Donnez le nom Commandes_sociétés_miMai à la requête. Requête utilisée : Résultats de la requête : IAV Hassan II (A. Hamouda) 55 Requête 2_à_créer Créez une requête qui permet de visualiser les commandes enregistrées par l’employé HASSANI Aziz en 2013 pour les sociétés installées à Casablanca. Choisissez un nom à cette requête. Requête 3. Créez une requête qui permet de visualiser les produits qui appartiennent aux catégories Pâtes- Biscuits ou Fruits secs. Affichez également les prix unitaires actuels de chacun de ces produits. Choisissez un nom à cette requête. Attention : Ici, on n'ajoute que les tables Catégories et Produits. Requête utilisée : Résultats de la requête : 5.3.1.5. Jointure de tables Jointure interne Si la requête a pour but de sélectionner les enregistrements des tables dont les champs de jointure ont la même valeur, on parle de jointure interne. Il y a extraction des enregistrements d'une table qui correspondent à ceux de la deuxième table. Requête 4. Créez une requête qui affiche la liste des produits de la table Produits avec les Catégories auxquelles ils appartiennent. On ne souhaite pas afficher des catégories pour lesquelles on n’a pas de produits. Présentez les résultats par ordre croissant des noms des catégories. Procédure : Il suffit de créer une requête en ajoutant le champ Nom_produit de la table Produits et le champ Nom_catégorie de la table Catégories. IAV Hassan II (A. Hamouda) 56 Requête utilisée :. Double-Cliquez sur la ligne de jointure de jointure En double-cliquant sur le trait joignant les deux tables, vous obtenez la vue ci-dessous. Le choix porte sur l’option 1. Résultats de la requête : Remarquez que la feuille dynamique de la requête n'affiche que les Catégories auxquels correspondent des Produits. IAV Hassan II (A. Hamouda) 57 Jointure externe Si l'on souhaite faire apparaître également les Catégories qu'ils soient ou non associées à des Produits, on fait appel à une jointure externe. Requête 5. Dans la base de données Princesse_complète.mdb, on connaît la catégorie à laquelle appartient chaque produit, mais il existe des catégories auxquelles ne correspond aucun produit. Créez une requête qui affiche la liste des produits avec les catégories auxquelles ils appartiennent. On souhaite également faire apparaître les catégories auxquelles n'est associé aucun nom de produit. Présentez les résultats par ordre croissant des noms des catégories. Procédure : - Créez une requête en ajoutant le champ Nom_produit de la table Produits et le champ Nom_catégorie de la table Catégories ; - Définissez une jointure externe en cliquant deux fois sur la ligne de jointure des deux tables pour obtenir la boite de dialogue appelée Propriétés de la jointure ; - Lisez les trois propositions fournies par la fenêtre Propriétés de la jointure et choisissez ensuite l'option 2. Requête utilisée : Double-cliquez sur la ligne de jointure et choisissez l’option 2. IAV Hassan II (A. Hamouda) 58 Résultats de la requête : Aucun produit dans la catégorie "légumes frais". On constate qu'il n'y a aucun produit qui correspond à la catégorie légumes frais. 5.3.1.6. Champs calculés Création de champs calculés Comme pour les filtres, on peut créer des champs calculés pour faire des calculs. Pour ce faire, on affiche le Mode Création de la requête, on place le curseur sur une Cellule champ et on écrit le nouveau champ en utilisant le format général suivant : Nom_du_nouveau_champ : expression de calcul Requête 6. Créez une requête qui donne le prix TTC actuel de chaque produit. Présentez les résultats par ordre croissant du nom du produit, en rappelant la catégorie à laquelle il appartient ainsi que son prix unitaire HT et la TVA. Procédure : Il suffit ici de créer un nouveau champ que nous pouvons appeler par exemple Prix_TTC. Ce prix est calculé par : Prix_TTC: [Prix_unitaireHT]*(1+[TVA]) On peut l'écrire aussi : Prix_TTC: [produits]![Prix_unitaireHT]*(1+[produits]![TVA]) si l'on veut rappeler les noms des tables des deux champs impliqués dans la formule. IAV Hassan II (A. Hamouda) 59 Requête utilisée : Résultats de la requête : plébiscité Remarques : les noms de champs sont écrits entre crochets pour inclure leurs valeurs dans un champ calculé, ces crochets seront ajoutés automatiquement par Access si on les omet ; le champ est calculé et visible après chaque exécution de la requête ; le champ calculé peut être soumis à des critères de sélection et être intégré dans des calculs. Propriétés d'un champ Lorsqu'un champ est créé, il possède des propriétés (format, nombre de décimales, etc.) qui peuvent ne pas vous satisfaire. On peut à tout moment procéder au changement de ces propriétés. Requête 7. Vous avez remarqué que les prix TTC que vous avez obtenus sont présentés avec de nombreuses décimales. Présentez-les avec 2 décimales. Procédure : - Reprenez la grille de définition de la requête de l'exemple précédent ; - Sélectionnez le champ calculé Prix_TTC ; - Cliquez sur le bouton droit de la souris et choisissez Propriétés (ou sélectionnez le menu Affichage/Propriétés) ; - Entrer les propriétés : Format fixe avec 2 décimales, comme le montre la Fenêtre des propriétés du champ. IAV Hassan II (A. Hamouda) 60 Fenêtre des propriétés du champ : Résultats de la requête : Champs calculés utilisant des fonctions Plusieurs fonctions peuvent être utilisées dans un champ calculé. Le tableau ci-dessous reprend certaines d'entre elles. Fonction Objet Exemple Droite extrait n caractères à droite Droite([nom];4) Gauche extrait n caractères à gauche Gauche([nom];2) Année retourne l'année d'une date Année([nais]) Mois retourne le mois d'une date Mois([datenais]) Majuscule convertit une chaîne en majuscule Majuscule([Nom]) Minuscule convertit une chaîne en minuscule Minuscule([Nom]) Racine racine carrée d'un nombre Racine([TB]) Arrond arrondit un nombre arrond([P_lait]) Nbcar retourne le nombre de caractères d'une chaîne Nbcar([nom]) Requête 8. Le type du client est indiqué par le premier caractère de son code. Si ce premier caractère est S, par exemple, cela veut dire qu'il s'agit d'une Société. Créez une requête qui permet de visualiser les noms des sociétés, repérées par la lettre S comme premier caractère du Code_client, qui ont fait des commandes en 2007 entre les mois 7 et 11 inclus, en mentionnant les mois pendant lesquels sont effectués ces commandes rangées par ordre croissant. IAV Hassan II (A. Hamouda) 61 Procédure : Vous ajoutez trois champs calculés utilisant des fonctions. Le premier indique que l'on extrait le premier caractère à gauche de chaque code du client, Le second et le troisième champs retournent respectivement l'année et le mois de la commande (cf. tableau précédent) : Lettre_1_client : Gauche([clients]![code_client];1) Année : Année([Date_commande]) Mois : Mois([date_commande]) Réalisez les manipulations suivantes et vérifiez les résultats ensuite : - Créez une nouvelle requête en ajoutant les tables Clients et commandes ; - Faites glisser les champs concernés par les opérations : Nom_client, Code_client et Code_commande ; - Affichez la ligne Opération en choisissant Affichage/Opération (ou Affichage/Totaux) ; - Ecrivez les trois nouveaux champs dans trois cellules champs vides ; - Ajoutez les critères S pour le champ Lettre_1_client, 2007 pour le champ Années et entre 7 et 11 pour le champ Mois ; - Sélectionnez Croissant comme ordre de tri pour le champ Mois. Requête utilisée : Résultats de la requête : Refaites la même requête sans afficher le champ Année. IAV Hassan II (A. Hamouda) 62 Requête 9. Créez une requête qui permet de visualiser les commandes passées entre le 1/12/2007 et 15/5/2008, en affichant leurs codes et les noms des clients qui les ont passées. On souhaite également connaître les jours des commandes, présentés sous le format lundi, mardi, mercredi, etc., et les mois, présentés sous le format janvier, février, mars, etc. Procédure : Ici, vous faites appel à la fonction Format pour obtenir la partie jour et la partie mois de la date de commande, en leur donnant des noms de votre choix (Al_yawme et A_chahr, par exemple) : Al_yawme : Format([date_commande];"jjjj") A_chahr : Format([date_commande];"mmmm") Vous utilisez aussi, bien évidemment, le critère : Entre #01/01 2008# Et #31/05/2008# pour sélectionner les commandes. Requête utilisée : Résultats de la requête : IAV Hassan II (A. Hamouda) 63 5.3.1.7. Opérations sur les enregistrements On peut réaliser des calculs sur les enregistrements en utilisant des fonctions. Le calcul peut se faire sur tous les enregistrements ou sur des groupes d'enregistrements. Fonctions disponibles Somme : somme des valeurs ; Moyenne : moyenne des valeurs ; Min : minimum des valeurs ; Max : maximum des valeurs ; Var : variance des valeurs ; Ecartype : écart-type (déviation-standard) des valeurs ; Compte : nombre de valeurs d'un champ, sans tenir compte des valeurs Null Premier : valeur de champ du premier enregistrement Dernier : valeur de champ du dernier enregistrement Calcul sur tous les enregistrements Requête 10. Créez une requête qui calcule, d'une part la somme des salaires annuels, et d'autre part la somme des commissions annuelles des employés. On souhaite également qu'elle affiche le total annuel des salaires et des commissions payées par le magasin à ces employés. Procédure : Vous pouvez procéder en ajoutant d'abord les trois champs suivants : Salaire_payé : [Salaire_mensuel]*12 Commission_payée : Commission_annuelle Total_payé : [Salaire_mensuel]*12+[commission_annuelle] puis vous utilisez la fonction Somme. Réalisez les manipulations suivantes et vérifiez les résultats ensuite : - Créez une nouvelle requête en ajoutant la table Employés ; - Ajoutez les champs Salaire_payé, Commission_payée et Total payé ; - Affichez la ligne Opération et choisissez la fonction Somme dans Opération. Requête utilisée : IAV Hassan II (A. Hamouda) 64 Vous pouvez procéder aussi en ajoutant les deux champs : Salaire_payé: Somme([Salaire_mensuel]*12) Total_ payé : Somme([Salaire_mensuel]*12+[commission_annuelle]) en utilisant Expression dans la ligne Opération. Le champ Commission_payée reste le même. Résultats de la requête : Calcul sur des groupes d'enregistrements Dans ce cas, on effectue les opérations sur des groupes d'enregistrements. Lorsque le regroupement concerne plusieurs champs, il se fera de gauche à droite. Requête 11. Créez une requête qui calcule le prix TTC moyen de chaque produit pour toutes les commandes effectuées jusqu'aujourd'hui. Comparez ensuite ce prix au prix TTC actuel. Procédure : Le calcul est simple : - Le prix TTC actuel d'un produit s'obtient en multipliant le Prix_unitaireHT par la TVA, en utilisant la table Produit ; - Le prix moyen TTC de chaque produit pour les différentes commandes s'obtient en multipliant d'abord le Prix_unitaireHT de la table Détails_commandes par sa TVA, et en cherchant ensuite la moyenne des valeurs obtenues. IAV Hassan II (A. Hamouda) 65 Vous allez en effet ajouter les deux champs suivants : Prix_TTC_actuel: [produits]![prix_unitaireht]*(1+[produits]![tva]) Prix_TTC_cmd : [détails_commandes]![prix_unitaireht]*(1+[détails_commandes]![tva]) Réalisez les manipulations suivantes et vérifiez les résultats ensuite : - Créez une nouvelle requête en ajoutant la table Produits et Détails_commandes ; - Ajoutez les champs Nom_produit, Prix_TTC_actuel et Prix_TTC_cmd ; - Laissez afficher Regroupement dans la ligne Opération du champ Nom_produit ; - Choisissez Moyenne dans la ligne Opération pour les champs Prix_TTC_actuel et Prix_TTC_cmd. Requête utilisée : Résultats de la requête : Requête 12. Créez une requête qui affiche le nombre de fois que chaque produit du magasin figure dans les commandes passées jusqu'aujourd'hui. Procédure : - Créez une nouvelle requête en ajoutant la table Produits et Détails_commandes ; - Ajoutez les champs Nom_produit et Code_produit (mieux encore, vous pouvez utiliser un texte : Code_produit, comme Nombre : Code_produit,) ; - Laissez afficher Regroupement dans la ligne Opération du champ Nom_produit ; - Choisissez Compte dans la ligne Opération pour les champs Code_produit. IAV Hassan II (A. Hamouda) 66 Requête utilisée : Remarquez que le Code_Produit provient de la table Détails_commandes. Résultats de la requête : Calcul sur des groupes d'enregistrements avec spécification de critères Des critères peuvent être spécifiés lorsqu'on souhaite faire des calculs sur l'ensemble ou sur un groupe d'enregistrements. On procède, en effet, comme précédemment, en ajoutant des critères. Requête 13. Créez une nouvelle requête qui réalise les mêmes calculs que la requête 11, mais en n'affichant les résultats que pour les produits dont la TVA est actuellement de 7%. Procédure : - Les premières manipulations sont les mêmes que dans le cas de la requête 11 ; - Ajoutez le champ TVA de la table Produits ; - Ajoutez 0.07 dans la case Critères associée au champ TVA. IAV Hassan II (A. Hamouda) 67 Requête utilisée : Résultats de la requête : Requête 14. Calculez le prix TTC moyen de chaque produit de toutes les commandes de 2007. Procédure : La solution n'est pas évidente, car le calcul des moyennes des prix TTC doit se limiter aux seules commandes de 2007. Deux nouveaux champs seront utilisés. Le premier pour calculer le prix TTC et le second pour isoler l'année de la date de commande : Prix_TTC_cmd : [détails_commandes]![prix_unitaireht]*(1+[détails_commandes]![tva]) Année : Année([Date_commande]) Réalisez les manipulations suivantes et vérifiez les résultats ensuite : - Créez une nouvelle requête en ajoutant les tables Produits, Détails_commandes et Commandes ; - Ajoutez le champ Nom_produit de la table Produits et les deux nouveaux champs Prix_TTC_cmd et Année ; - Sélectionnez Où dans la case Opération sous le champ Année et ajoutez le critère 2007 ; - Vérifiez que la case Afficher relative au champ Année n'est pas cochée ; - Vérifiez que les résultats sont corrects (faites la vérification pour au moins un produit, en utilisant le tableur Excel par exemple). IAV Hassan II (A. Hamouda) 68 Requête utilisée : Résultats de la requête : Requête 15. Créez une requête qui affiche le nombre de fois que chaque produit du magasin figure dans les commandes passées en 2007. Procédure : Utilisez une procédure en revoyant le raisonnement fait pour créer la requête 14. Réalisez les manipulations suivantes et vérifiez les résultats ensuite : Requête utilisée : IAV Hassan II (A. Hamouda) 69 Résultats de la requête : 5.3.1.8. Requête paramétrée Parfois, on souhaite exécuter la même requête, mais en donnant des valeurs différentes aux critères. Dans ce cas, on peut créer ce qu'on appelle une requête paramétrée. Celle-ci donne l'avantage de pouvoir modifier les valeurs des critères, en intégrant des paramètres, sans changer de requêtes. Les paramètres doivent être écrits entre crochets, en comportement éventuellement des blancs, et ne doivent pas être trop longs ni correspondre à des noms de champs. Requête 16. Créez une requête qui permet de lister toutes les commandes dont les envois se situent entre deux dates données. On souhaite également afficher le code et la date de la commande ainsi que le client qui l'a passée. Cette requête est destinée à être utilisée fréquemment. Procédure : Il n'est pas intéressant d'écrire chaque fois une requête pour obtenir les commandes dont les dates d'envoi se situent entre deux dates. Vous allez créer une requête paramétrée, qui, une fois exécutée, laisse le choix à l'utilisateur d'entrer la date de début et la date de fin, puis affiche toutes les informations souhaitées. Le critère utilisé pour le champ Date_envoi peut être le suivant : Entre [Date de début ?] Et [Date de fin ?] où les paramètres sont écrits entre crochets. Les deux valeurs qui seront entrées à chaque exécution de la requête remplaceront les deux paramètres. Réalisez les manipulations suivantes et vérifiez les résultats ensuite : - Créez une nouvelle requête et ajoutez les tables Clients et Commandes ; - Faites glisser les champs Nom_client, Code_Commande, Date_commande et Date_envoi dans la grille d'interrogation ; - Placez Entre [Date de début ?] Et [Date de fin ?] comme critère pour la Date_envoi ; - Cliquez sur le bouton Exécuter ou choisissez l'option Mode Feuille de données dans le menu Affichage. IAV Hassan II (A. Hamouda) 70 Requête utilisée : En exécutant la requête, vous remarquez l'apparition de boîtes de dialogue vous invitant à introduire des valeurs qui prendront place des paramètres. Vous êtres donc amenés à introduire une valeur pour la Date de début et une autre valeur pour la Date de fin. En prenant les valeurs 1/1/2008 et 31/5/2008, comme exemples, respectivement pour les deux paramètres, vous obtenez les résultats ci-dessous. Résultat de la requête : Pour éviter certains problèmes, il est souvent question de définir, comme nous l'avons fait pour les champs au moment de la création des tables, le type de données prévu pour chacun des paramètres. Pour y parvenir, faites les manipulations suivantes : - Sélectionnez le menu Requête, puis cliquez sur l'option Paramètres ; - Dans la boîte de dialogue, réécrivez les paramètres tels qu'ils sont écrits dans la requête et mentionnez le type de données de chacun d'eux ; - Cliquez sur OK pour terminer. IAV Hassan II (A. Hamouda) 71 5.3.2. Requêtes Analyse croisée Les requêtes Analyse croisée présentent les résultats sous la forme d'un tableau. Leur création est très simple. Il suffit de spécifier une ou plusieurs options En-tête de lignes, une option En-tête de colonne et une option valeur de regroupement. On doit aussi mentionner la manière de faire le regroupement (moyenne, somme, minimum, maximum, etc.). Requête 17. Créez une requête qui permet d'afficher les prix TTC moyens de chaque produit des commandes de 2007 répartis par mois. On souhaite que les noms des mois apparaissent explicitement (janvier, février, mars, etc.) Procédure : Le calcul des moyennes des prix TTC doit se limiter aux seules commandes de 2007. Les produits apparaîtront en lignes et les noms des moins en colonnes. Les champs qui seront utilisés sont : Nom_produit Nom_mois: Format([date_commande];"mmmm") Prix_TTC_cmd : [détails_commandes]![prix_unitaireht]*(1+[détails_commandes]![tva]) Année : Année([Date_commande]) Procédure : - Créez une nouvelle requête en ajoutant les tables Produits, Détails_commandes et Commandes ; - Sélectionnez une requête analyse croisée en sélectionnant l'option Analyse croisée du menu Requêtes ; - Introduisez les champs qui seront utilisés : Nom_produit de la table Produits et les trois nouveaux champs Nom_mois, Prix_TTC_cmd et Année ; - Sélectionnez En-tête de ligne dans la case Analyse du champ Nom_produit ; - Sélectionnez En-tête de colonne dans la case Analyse du champ Nom_mois ; - Sélectionnez Valeur dans la case Analyse du champ Prix_TTC_cmd. C'est là où la fonction de regroupement s'exécutera ; - Dans la case Opération du champ Prix_TTC_cmd, sélectionnez Moyenne qui représente la fonction de regroupement pour notre exemple - Sélectionnez Où dans la case Opération sous le champ Année et ajoutez le critère 2007 ; - Visualisez les résultats de la requête en appuyant sur le bouton. Requête utilisée : IAV Hassan II (A. Hamouda) 72 Résultats de la requête : Vous constatez que les mois sont donnés par ordre alphabétique (août, avril, etc.), au lieu d'être triés par l'ordre chronologique (janvier, février, etc.). Pour résoudre ce problème, cliquez sur le champ Nom_mois, sélectionnez l'option Propriétés dans le menu Affichage, puis ajoutez : "Janvier";"Février";"Mars";"Avril";"Mai";"Juin";"Juillet";"Août";"Septembre";"Octobre";"Novembre";"Décembre" comme En-têtes des colonnes. Résultats de la nouvelle requête : IAV Hassan II (A. Hamouda) 73 5.4. Sauvegarde d'une requête en tant que table Pour sauvegarder une requête en tant que table, on peut utiliser, entre autres, l'option Requête Création de table du menu Requête. Exemple Dans la base de données Princesse_complète.mdb, créez une table qui portera le nom Table_prix_TTC. Cette table contiendra le prix TTC moyen de chaque produit, calculé pour toutes les commandes effectuées jusqu'aujourd'hui, et le prix TTC actuel. Procédure : D'abord, on doit créer une requête, appelée Req_prix_TTC par exemple, pour effectuer les calculs (il s'agit en effet de la requête 11 que nous avons déjà élaborée). Ensuite, on sauvegardera la feuille de calcul en tant que table appelée Table_prix_TTC. 1) Création de la requête Req_prix_TTC - Ouvrez la base de données Princesse_complète.mdb ; - Reprenez la requête 11 et copiez-la en lui donnant le nom Req_prix_TTC (si vous ne l'aviez pas sauvegardée, récréez-la en lui affectant le nom Req_prix_TTC). 2) Sauvegarde de la requête Req_prix_TTC en tant que table : - Ouvrez votre requête Req_prix_TTC en mode création et sélectionnez Requête Création de table dans le menu Requête ; - Donnez le nom Table_prix_TTC à la nouvelle table à créer et fermez la requête en enregistrant les modifications ; - Double-cliquez sur le nom de la requête pour l'exécuter afin de faire apparaître la nouvelle table ; Double-cliquez sur le le nom de la requête. - Vérifiez que la table est bien créée et consultez-la. IAV Hassan II (A. Hamouda) 74 CHAPITRE 6 UTILISATION DES FORMULAIRES 6.1. Généralités Nous avons vu que la saisie et la consultation de données dans des tables ou des requêtes se font selon une graille tabulaire ayant un format prédéfini. Toutefois, lorsque la base de données devient complexe dans son organisation et comporte un grand nombre de tables et de requêtes, il devient nécessaire d'utiliser ce qu'on appelle des formulaires. Ces objets d'Access facilitent la manipulation des données de la base, en permettant notamment à l'utilisateur de saisir des données provenant de plusieurs tables et/ou requêtes par l'utilisation de la même grille. Un formulaire est en effet une fenêtre permettant de personnaliser une interface simple entre l'utilisateur et le contenu des tables de façon à rendre agréable le processus de gestion des données. Ainsi, un formulaire permet, entre autres, de : placer des éléments de présentation : textes, images, etc. ; saisir, consulter ou modifier les données d'une ou de plusieurs tables ; créer des listes de sélection pour faciliter la saisie des données ; définir des boutons de commande pour déclancher éventuellement l'exécution de macros ; lier l'exécution d'une macro à un événement. Un formulaire peut être utilisé non seulement pour la saisie, l'affichage et l'impression de données, mais aussi pour la réalisation de calculs et l'affichage de graphiques selon la forme souhaitée par l'utilisateur. Dans un formulaire, on trouve des objets de différentes natures, appelés contrôles. Certains contiennent les valeurs relatives à des tables ou à des requêtes. D'autres correspondent à des commentaires qui décrivent les données des tables et des requêtes, ou à des menus déroulants qui permettent de sélectionner des données dans une liste ou encore à des boutons permettant l'exécution de certaines actions. Un formulaire est une vue d'une ou de plusieurs tables. Toute saisie ou modification de données dans un formulaire est directement portée dans les tables concernées. 6.2. Mode création et mode formulaire Une fois créé, un formulaire, peut être, comme une table ou requête, ouvert selon deux modes : Un mode création pour pouvoir modifier la structure du formulaire : ajouter un champ, supprimer un champ, ajouter un objet, changer la présentation (disposition, couleur, etc.) ; Un mode formulaire pour d'autres manipulations : visualisation, ajout, modification, suppression et recherche d'enregistrements. Pour ouvrir un formulaire en mode formulaire : - Si le formulaire est déjà ouvert en mode création, il suffit de sélectionner Affichage/mode formulaire ou de cliquer sur le bouton ; - Si le formulaire n'est pas ouvert, on active l'onglet Formulaires dans la fenêtre base de données, puis on double-clique sur le nom du formulaire ou on sélectionne le nom du formulaire puis on clique sur Ouvrir. IAV Hassan II (A. Hamouda) 75 Pour ouvrir un formulaire en mode création : - Si le formulaire est déjà ouvert en mode formulaire (mode saisie), il suffit de sélectionner Affichage/mode création ou de cliquer sur le bouton création ; - Si le formulaire n'est pas ouvert, on active l'onglet Formulaires dans la fenêtre base de données, on sélectionne le nom du formulaire puis on clique sur Modifier. 6.3. Création d'un formulaire Comme nous l'avons signalé, un formulaire peut être créé à partir de tables ou de requêtes. Dans un premier temps, nous allons essayer de créer un nouveau formulaire pour modifier ou ajouter des données sur les employés. Cette création peut se faire avec ou sans l'aide de l'assistant : Sans assistant, on part d'un formulaire vide dans lequel on ajoute manuellement tous les contrôles dont on a besoin ; Avec l'Assistant, on peut créer notre formulaire selon un format donné, puis on apporte toutes les retouches nécessaires. 6.3.1. Création d'un formulaire sans l'aide de l'assistant Procédure : - Ouvrez la base de données Princesse_complète.mdb ; - Sélectionnez l'onglet Formulaires, puis cliquez sur Nouveau ou bien utilisez le menu Insertion/Formulaire. Comme le montre la figure ci-dessous, vous avez le choix entre le Mode création et une série d'Assistants. Voici un aperçu de ce que signifie chaque option. Mode création : ce mode permet de personnaliser le formulaire à partir de rien sans l'aide de l'assistant. Autrement dit, à partir d'un formulaire vide, on utilise différents outils pour le construire. Ainsi, on peut choisir un style, ajouter des objets, afficher des champs de tables et/ou de requêtes, choisir les couleurs, la bordure, etc. Ce mode n'est généralement utilisé que pour des petits formulaires. On peut ajouter ici le nom de la table ou de la Assistant formulaire : cet assistant propose des boîtes de dialogues permettant de choisir la requête. disposition du formulaire, le style de présentation, les champs dont on a besoin pour le formulaire, etc. IAV Hassan II (A. Hamouda) 76 Formulaire instantané Colonnes : cet assistant permet d'obtenir un formulaire dans lequel un seul enregistrement est visible à la fois. Chaque champ est affiché sur une ligne séparée, mais si l'écran ne peut les accueillir tous alors les champs restants apparaissent sur d'autres colonnes. Chaque champ est muni, à gauche, d'un intitulé (étiquette). Formulaire instantané Tableau : ce style affiche les champs d'un enregistrement les uns à côté des autres. Les étiquettes des champs sont placées dans la partie supérieure du formulaire. Formulaire instantané Feuille de données : selon ce style, les enregistrements sont affichés en mode feuille de données, comme à l'ouverture d'une table ou d'une requête. Assistant graphique : cet assistant permet de convertir des champs de type numérique en graphiques. Assistant Tableau croisé dynamique : cet assistant permet de regrouper des champs comme dans le cas d'une requête analyse croisée. Continuons maintenant les manipulations : - Choisissez Employés comme table d'origine des données de l'objet, puis double-cliquez sur Mode création - Ajouter les en-têtes et les pieds de formulaire ou de page, en sélectionnant le menu Affichage/En-tête et pied de page ou Affichage/ En-tête et pied de formulaire Vous voyez apparaître un formulaire vide avec aucun objet (cf. figure ci-dessous). IAV Hassan II (A. Hamouda) 77 Le formulaire est, en effet, structuré en cinq sections. 1. En-tête de formulaire : celui-ci est visible dans la partie supérieure du formulaire en mode formulaire. Il permet, entre autres, d'afficher un titre, une date, des boutons de commande ouvrant d’autres formulaires ou réalisant l'impression. Il s'imprime uniquement sur la première page ; 2. En-tête de page : celui-ci est non visible en mode formulaire. Il permet d'afficher des informations en haut de chaque page lors de l'impression ; 3. Détail : c'est une zone permettant d’afficher les champs des tables et des requêtes, les contrôles calculés et les contrôles indépendants ; 4. Pied de page : celui-ci est non visible en mode formulaire. Il permet d'afficher des informations en bas de page telles que le numéro des pages lors de l'impression. Le contenu est imprimé en bas de chaque page ; 5. Pied de formulaire : celui-ci est visible dans la partie inférieure du formulaire en mode formulaire. Il permet d'afficher, entre autres, des boutons de commande ou des contrôles indépendants. Il s'imprime uniquement sur la dernière page. On peut directement travailler sur ce formulaire par l'ajout de tous les contrôles souhaités. Par contrôle, Access désigne tout objet qu'on peut mettre dans un formulaire : textes, cases à cocher, menu déroulant, etc. Toutefois, nous jugeons plus intéressant de partir d'un formulaire créé par l'Assistant, puis apporter les modifications nécessaires. 6.3.2. Création d'un formulaire avec l'aide de l'Assistant L'assistant formulaire permet de créer rapidement un formulaire selon un format standard. On peut ensuite, comme nous l'avons dit, apporter des retouches pour obtenir un formulaire selon le format souhaité. Form 1 : Ouvrez la base de données Princesse_complète.mdb et faites les manipulations suivantes : 1) Ajoutez, à la table Employés, les deux nouveaux champs suivants : le champ Photo_employé de type Objet OLE : ce champ contiendra, via un formulaire, les photos des employés ; le champ Actionnaire : ce champ sera rempli, via le formulaire, par Oui si l'employé est actionnaire et par Non si ce n'est pas le cas. 2) Changez le nom du champ Situation_employé par Statut_employé ; 3) Créez un formulaire à l'aide de l'Assistant Formulaire en le basant sur la table Employés. A l'exception du champ Prénom_employé, ajoutez tous les autres champs de ladite table à ce formulaire, qui s'appellera Form_employés. Procédure : - Fermez le formulaire vide que vous avez créé sans créer aucun contrôle et laissez la base de données Princesse_complète.mdb ouverte ; - Ouvrez la table Employés et ajoutez les champs Photo_employé de type OLE et Actionnaire de type Oui/Non (entre autres, vous pouvez le faire en activant l'onglet Tables dans la fenêtre base de données, puis en cliquant sur Modifier) ; - Changez le nom du champ Situation_employé par Statut_employé ; - Fermez la table Employés ; IAV Hassan II (A. Hamouda) 78 - Sélectionnez l'onglet Formulaires, puis cliquez sur Nouveau. Choisissez ensuite Assistant Formulaire ; - Dans la fenêtre qui apparaît, choisissez la table Employés pour baser votre formulaire sur cette table ; - L'assistant vous demande les champs qui vont figurer dans le formulaire. Sélectionnez tous les champs en utilisant le bouton pour les déplacer sur la liste de droite, déplacez ensuite le champ Nom_employé à gauche à l'aide du bouton ; En effet, pour déplacer les champs vers la droite, appuyez sur le bouton s'il s'agit d'un seul champ à la fois, et sur s'il s'agit de tous les champs. Si vous voulez faire un déplacement en sens opposé, utilisez les boutons et. - L'assistant vous propose différentes dispositions du formulaire. Choisissez l'option Colonne simple (c'est-à-dire qu'un seul enregistrement sera visualisé à la fois) ; - L'assistant vous propose ensuite différents styles de présentation. Choisissez l'option Standard ; - Donnez le nom Form_employés à ce formulaire et sélectionnez l'option Ouvrir le formulaire pour afficher ou entrer des informations. Cliquez ensuite sur le bouton Terminer. IAV Hassan II (A. Hamouda) 79 - Enregistrez et Fermez le formulaire, en utilisant Fichier/Fermer ou en cliquant dans la case de fermeture. Access vous demande un nom pour le formulaire si celui-ci n'est pas encore enregistré. La figure ci-dessous nous donne un aperçu du formulaire créé. Ce formulaire nous permettra d'ajouter des données, de les afficher et de les imprimer. Toutefois, il ne correspond pas tout à fait à ce qu'on souhaite. Dans les prochaines étapes, nous apporterons progressivement des améliorations. Form 2 : Avant de continuer, ajoutez les photos des employés dans la table Employés, en utilisant le formulaire créé. Procédure : Rappelez-vous que nous avons prévu un champ nommé Photo_employé de type OLE pour ajouter les photos des employés. - Ouvrez le formulaire Form_employés en Mode formulaire ; - Cliquez, en utilisant le bouton droit, sur le cadre d'objet dépendant Photo_employé et sélectionnez Insérer un objet ; - Choisissez A partir d'un fichier et cliquez sur Parcourir ; - Sélectionnez le fichier contenant la photo de l'employé. Le fichier porte le nom de l'employé (fichiers jpg ou bmp). Tous les fichiers se trouvent dans le dossier Copies_fichiers ; IAV Hassan II (A. Hamouda) 80 - Cliquez, en utilisant le bouton droit, sur le cadre d'objet dépendant Photo_employé du formulaire et sélectionnez Propriétés ; - Activez l'onglet Format et choisissez Echelle comme Mode d'affichage au lieu de Découpage. Le formulaire créé, en mode formulaire (saisie), est donné par la figure suivante : Premier enregistrement Ajout d'un enregistrement Enregistrement précédent Dernier enregistrement Enregistrement courant Enregistrement suivant IAV Hassan II (A. Hamouda) 81 6.3.3. Quelques manipulations simples dans un formulaire On peut remarquer que la consultation et la modification des données ainsi que l'ajout de nouveaux enregistrements se font de manière beaucoup plus aisée par rapport à l'utilisation du mode Feuille de données des tables : - Pour consulter les enregistrements disponibles, on utilise les flèches de la barre de navigation située en bas de la fenêtre (cf. figure précédente) ; - Pour déplacer