Bases de données et Access

L’intégralité de ce document est accessible sur le serveur interne de l’ISA (disque Balprof, dossier A3, sous-dossier OAD, sous-dossier SGBDR) ainsi que sur Internet à l’adresse : http://isa.tice.free.fr/A3/oad/sgbdr
Contexte du cours

Nous utilisons tous régulièrement des bases de données, la première d’entr’elles étant notre répertoire téléphonique. Afin de nous faciliter la vie, nous essayons de l ’organiser de manière à ce qu’il corresponde à notre façon de travailler. Par exemple, la plupart d ’entre-nous effectuera un classement alphabétique. Pour d ’autres, la priorité sera d ’effectuer une subdivision entre les contacts privés et les contacts professionnels. De même, nous évitons dans la mesure du possible de saisir des informations similaires dans de nombreuses fiches. Pour connaître les caractéristiques de la société dans laquelle travaillent plusieurs personnes, on note ces informations une fois pour toutes. Il faut dès lors trouver un moyen de les retrouver facilement quand on récupère les coordonnées du contact. Le plus simple est souvent de se référer au nom de la société et de la retrouver dans un autre dossier classé.
Eh bien voilà !!! sans allumer notre ordinateur, nous avons déjà créé une base de données relationnelles.
L’informatique va ajouter aux bases de données relationnelles sa grande puissance de calcul. En effet, dans le cas qui vient d’être décrit, une seule relation est établie et déjà le travail de recherche se complique car il nous faut consulter 2 dossiers : la liste des entreprises, puis le dossier de l’entreprise. Imaginez l ’ampleur du travail s'il fallait passer par une chaîne de 10 relations pour retrouver une information. L ’outil informatique le permet sans problème. Il offre de plus la possibilité d’effectuer des calculs et donc de créer des informations mais aussi d ’effectuer des tris à partir de critères complexes sur l’ensemble des informations disponibles dans la base. 
Mais attention ! La création d’une base de données est trop souvent assimilée à la création des fichiers informatiques correspondants. Le travail informatique n’est que la partie émergée de l’iceberg. Avant de travailler sur informatique, il faut conceptualiser la base de données, c’est à dire la construire sur papier. C’est une étape primordiale dans la création d’une base de données : sans elle, la base a de grandes chances de ne pas être exploitable.
Une base de données construite intelligemment peut s’avérer un très bon outil d’aide à la décision. C’est la raison pour laquelle une introduction au systèmes de gestion de bases de données vous est proposée dans le cadre de l’OAD en 3ème année. 

Le cours sur les bases de données se décomposera en deux parties : la première concerne la conceptualisation d’une base de données sur le papier ; la seconde porte sur la création informatique de la base de données avec le logiciel ACCESS.

Objectifs du TD
Le cours sur les bases de données a pour objectifs :
	de vous amener à comprendre comment est conçu et comment fonctionne un système de gestion de bases de données relationnelles,
	de vous permettre de créer une base de données, répondant aux attentes d’un demandeur et apportant des solutions à ses problèmes,
	de vous permettre d’apprendre à mettre en œuvre une base de données, de A à Z,
	de vous donner l’occasion de pratiquer et, ainsi de connaître le maniement, du logiciel Access (version 2000).

PARTIE 1 : Conceptualisation d’une base de données

Objectifs spécifiques à cette partie : 
 Etre capable de proposer une solution à un problème exposé par un demandeur,
 Savoir organiser un ensemble de données pour les relier entr’elles de manière cohérente
 Conceptualiser une base de données sur papier,
 Réaliser un travail en confrontant ses idées avec ses pairs.
Moyens pédagogiques

Pour répondre aux objectifs de cette partie du cours sur les bases de données, nous allons utiliser la résolution de problème. 
« C’est une situation d’apprentissage imaginée par l’enseignant dans le but de créer un espace de réflexion et d’analyse autour de la question à résoudre. »  Raynal, F. et Rieunier, A. (1997). Pédagogie : Dictionnaire des concepts clés. Paris, ESF Editeur.

Dans la résolution du problème posé, ne vous interrogez pas sur le « comment le faire avec Access » ! Il s’agit bien ici d’une création, sur papier, de la base de données et non de la création du système informatique de gestion des données. La création du fichier de bases de données Access sera faite lors de la seconde partie du cours.

Vous allez donc devoir résoudre le problème suivant.

Mr DURAND est propriétaire-gérant d’un établissement de restauration rapide indépendant. Il souhaite s’informatiser pour pouvoir garder en mémoire certains éléments concernant son activité.

Il achète différents produits à différents fournisseurs privés dont il veut conserver les coordonnées complètes (adresse, numeros tél et fax) (cf listes en annexe).  Plusieurs produits sont achetés chez un fournisseur. La plupart du temps, à un fournisseur correspond un certain type de produits ; mais, lors de promotions, Mr DURAND se garde la liberté de changer de fournisseur. 
Pour chaque achat réalisé, il veut enregistrer le prix de chaque produit et le fournisseur. Les prix variant d’une semaine à l’autre, Mr DURAND souhaite garder en mémoire, pour chaque produit, les prix minimum et maximum avec le fournisseur correspondant.
Mr DURAND achète ses marchandises chaque semaine, il travaille sur 46 semaines à l’année (fermeture 6 semaines durant l’été).
Outre les achats hebdomadaires, Mr DURAND paie annuellement un certain nombre de factures, impôts, taxes (charges fixes) qu’il souhaite garder en mémoire.
Quant aux ressources, Mr DURAND les tire exclusivement de ses ventes. Les différents produits qu’il propose sont répertoriés dans la liste en annexe.
Il désire conserver la trace de chacune ses ventes avec un maximum de détails : le type de vente réalisée, le jour, la semaine.  (NB : le restaurant est ouvert du lundi au vendredi, le midi uniquement.) Pour des raisons fiscales, il doit être en mesure de différencier les repas qu’il vend selon qu’ils sont consommés sur place ou à emporter (5.5% de TVA dans le 1er cas, 19.6% dans le second). Toutes les ventes sont enregistrées en Euros TTC, mais le système doit pouvoir calculer le montant de la TVA.
Pour être encore plus complet, Mr DURAND souhaite pouvoir identifier les achats payés en Espèces, Chèques, Carte de crédit ou Titres (ex : chèque restaurant).  
Votre mission est de lui présenter sur papier l’ébauche d’un système qui lui permette de conserver l’ensemble des informations dont il a besoin. Vous devrez aussi imaginer les interfaces qui lui permettront d’enregistrer les informations ou de les visualiser.

Méthode pour la Conceptualisation d’une base de données (Etapes du travail à réaliser)

Pour résoudre le problème posé (ou d’autres apparentés), on vous propose la démarche suivante : 

1) Posez-vous d’abord quelques…
…Questions générales

* Objectif et contenu:
	- Quels sont les objectifs de la base de données ? 
- A quoi doit-elle servir ? (Que veut en faire l’utilisateur ?)
- Qui va l’utiliser et comment ?
	- Quelles sont les informations dont elle doit disposer ?

* Exploitation des données:
	- Quelles informations pourrait-on extraire à partir des données ?
	- Puis-je générer les données manquantes à partir des données que je possède ?

* Utilisateurs et administrateurs de la base de données:
	- Qui doit utiliser la base et comment ?
	- Qui va saisir des informations ?
	- Qui va interroger la base ?
	- Quelles interrogations devront être faites ?
	- Quels résultats la base doit-elle présenter ?

2) Puis réalisez le…
…Dictionnaire des données

Après avoir répondu à ces questions, vous créerez le « dictionnaire de données », c’est à dire l’inventaire de toutes les éléments d’informations (données). Ces données devront être caractérisées par un nom et un code. Le ‘nom’ est un descriptif complet des données, le ‘code’ permet de ne pas réécrire le descriptif à chaque fois.

3) Organisez les données en…
…Classes d’entité

Après avoir créé le dictionnaire des données, il est nécessaire de regrouper ces données  autour de thèmes précis. C’est ainsi que vous dégagerez les classes d’entité qui sont des ensembles de données, regroupées entr’elles à cause du sujet identique auquel elles se rapportent. Gardez bien à l’esprit qu’une donnée (= un élément d’informations) peut se trouver dans plusieurs classes d’entité.

Sur un schéma, dessinez les classes d’entité (comme des bulles, des cadres, des ensembles) et remplissez-les avec les données voulues.

Pour chaque classe d’entité, il faudra choisir un élément d’information de base que vous mettrez en évidence. Cet élément est celui sur lequel s’appuie la classe d’entité et dont chaque valeur est unique. (Exemple : dans une classe d’entité « fournisseurs », l’élément d’information de base sera ‘nom_fournisseur’ car c’est le meilleur identifiant de la classe d’entité et chaque ‘nom_fournisseur’ sera unique ; dans une classe d’entité « ventes », l’élément d’information de base sera ‘numero_vente’ car cela identifiera chaque vente )

4) Identifiez les…
…Associations (ou Liens)

Sur le schéma des classes d’entité, matérialisez par des traits, les liens entre les éléments d’informations qui se retrouvent dans plusieurs classes d’entité.

Evaluation de l’apprentissage

Durant ce TD d’OAD, vous réaliserez un apprentissage : « comment conceptualiser une base de données ? » Pour évaluer ce que vous aurez appris, le formateur vous demande de rendre, pour le lundi 11 mars 2002, les documents réalisés durant ce TD. En d’autres mots, vous rendrez un document qui schématise la construction de la base de données sur le papier.

Le document pourra comporter de 2 à 3 noms. (Le travail peut donc se faire en binôme ou en trinôme.)

Un corrigé-type vous sera donné ultérieurement.

PARTIE 2 : Manipulations sous Access

Objectifs spécifiques à cette partie du cours : 
 Savoir manipuler le logiciel Access, tout au moins les éléments de base
 Savoir créer une base de données à l’aide d’Access
 S’approprier les grands principes de fonctionnement du logiciel
 Transférer des données à partir et vers d’autres logiciels

Ce poly est conçu sur un exemple précis. La démarche suivie dans le cas présent pour la construction d’une base de données est transposable à bien d’autres cas classiques.
A la fin de ce travail, vous ne connaîtrez pas toutes les subtilités d’Access. Vous en aurez simplement découvert les principales fonctions. Libre à vous d’aller plus loin dans l’exploitation du logiciel.

Méthode pédagogique

Pour répondre aux objectifs de cette partie du cours sur les bases de données, vous allez utiliser la méthode du « Travail auto-dirigé ».
C’est une situation d’apprentissage où l’étudiant réalise un travail demandé par l’enseignant, seul ou en échangeant des idées avec ses collègues. L’enseignant intervient ponctuellement comme guide dans la démarche d’apprentissage en répondant aux questions des étudiants et en les aidant à progresser dans la réalisation du travail demandé. 

Support d’apprentissage
Le support d’apprentissage (ce poly) est conçu de manière à ce qu’il puisse se suffire à lui-même. Toutes les activités à réaliser sont expliquées en détail.

Support d’encadrement

Si vous réalisez ce travail hors des créneaux de disponibilité de l’enseignant, vous pouvez vous connecter sur un forum de discussions où vous pouvez laisser vos questions. L’enseignant y répondra le plus rapidement possible. 
Même si vous n’avez pas de question précise, vous pouvez aller consulter le forum par curiosité et lire les questions posées par vos collègues.
Vous pouvez accéder au forum « Questions-réponses ACCESS A3 OAD » à l’adresse internet suivante : http://www.multiform.net/protectionforum.asp?iform=ID31973
Le login permettant d’accéder au forum est : isa3access ; le mot de passe : durand
 
Evaluation

Pour l’évaluation de ce travail, vous êtes priés de faire parvenir à Sébastien MALESYS le fichier de base de données (fichier Access) que vous aurez créé par mail ( smalesys@isa.fupl.asso.fr ), avec mention de vos nom(s) et prénom(s) au plus tard le 29 mars 2002.  Un fichier pourra être rendu par binôme.
(En cas de problème avec l’adresse, vous pouvez utiliser l’adresse smalesys@free.fr ). 

Travail demandé : Constitution de la base de données pour l’activité de M. DURAND.

Par manque de temps, nous ne pourrons pas construire la totalité de la base de données dont aurait besoin M. DURAND après l’étude de son problème réalisée lors de la première partie de ce TD. Nous nous limiterons donc à certains éléments de la base de données en essayant cependant de couvrir l’ensemble des objets utilisables.

Avant tout, lancez le logiciel Access.

1 - Créer un fichier de bases de données :
Dans le menu Fichier, choisissez Nouvelle base de données
Si besoin, dans l’onglet Général, Choisissez Base de données 
Choisissez le nom que vous donnerez à votre fichier de base de données. bd1 est proposé par le logiciel. Modifiez ce nom si vous le souhaitez et définissez  l’emplacement de la base sur le disque.

2 - Structurer les tables.
Les tables sont quasi-identiques aux classes d’entité définies.
Ici, nous allons créer 5 tables : une pour les achats, une pour les articles achetés, une pour les fournisseurs, une pour les ventes, et une pour la liste des produits à vendre.
Nous appellerons respectivement ces tables : t_achats, t_article, t_fournisseur, t_vente, t_produit

2.1 - Pour créer une table :
•	Dans le cadre gauche de la fenêtre, sélectionnez Table 
•	Dans la partie droite de la fenêtre, choisissez : Créer une table en mode Création 
•	Dans chaque ligne du tableau qui apparaît, entrez le nom du champ dans la première colonne, choisissez le type de champ (texte, numérique, etc…) selon les données. La colonne 3 permet d’écrire une description du champ (sans conséquence dans la base de données). Pour chaque champ, vous pouvez modifier ses caractéristiques (ex : longueur). 
Il faut aussi définir le champ qui constituera la clé primaire de la table (en le sélectionnant d’abord, puis en cliquant sur le bouton droit de la souris).
•	Quand tous les champs sont entrés, fermez la fenêtre.
•	Sauvegarder la table sous le nom t_article. 

Répétez ces instructions pour chaque table à créer sauf pour la table t_produit.

Le tableau suivant présente les différents champs (avec quelques informations) que vous devrez créer dans chaque table.
T_achats	T_article	T_fournisseur	T_vente	
N°_achat (num auto, clé prim)
N°_semaine (num)
Nom_article (texte)
Prix_achat_unitaire (monétaire)
Quantité_achat (numérique)
 Nom_fournisseur (texte)
Livraison (oui/non)	Nom_article (texte, clé prim)
Conserv_article (texte)
Prix_unitaire_moyen (monétaire)	Nom_f (texte, clé prim)
Adresse_f (texte)
CP_f (texte)
Ville_f (texte)
Compte_f (texte)
Ident_banc_f (num)
	Jour_semaine (num)
Num_semaine (num)
Num_vente (num auto, clé prim)
nom_produit (texte)
quantité (num)
Paiement (texte)
Conso_sur_place (oui/non)	

2.2 - Pour créer la table t_produit,
en important des données depuis une feuille de calcul Excel.

•	 Dans le menu Fichier, choisissez : Données externes, puis Importer. 
•	Dans la fenêtre, cliquez sur le cadre « Type de fichier » et choisissez Microsoft Excel (puisque, dans le cas présent, le fichier depuis lequel nous importons les données est un fichier Excel). Puis allez sélectionner le fichier Excel : h:/A3/oad/sgbdr/liste_produits.xls  ou éventuellement à l’adresse internet suivante : http://isa.tice.free.fr/liste_produits.xls  
NB : Dans le cas où vous allez chercher le fichier sur l’adresse Internet, il est conseillé de charger le fichier dans votre explorateur Internet (Internet Explorer), d’enregistrer ensuite ce fichier sur le disque de votre machine par Fichier – Enregistrer sous, et ensuite de faire la manœuvre d’importation.) 
•	Cliquez ensuite sur le bouton « Importer ».

L’assistant d’importation de feuille de calcul va ensuite vous guider.
•	Choisissez Afficher les feuilles de données
•	Dans le cadre de droite, choisissez la feuille qui vous intéresse dans le cas présent
•	Cochez (ou décochez) la case selon que la feuille de calcul contient une ligne d’en-tête ou non
•	La 1ère fenêtre indique la structure du fichier à importer : Choisir la feuille de calcul qui vous intéresse si le fichier Excel en comporte plusieurs, valider en cliquant sur le bouton « suivant » (de même par la suite).
•	La 2nde fenêtre sert à déterminer si le fichier Excel comporte une ligne d’en-tête ou non.
•	La 3ème fenêtre permet de choisir dans quelle table les données importées vont être stockées. Ici, la table de destination n’existe pas, vous allez donc la créer en faisant l’importation. Choisissez donc « Dans une nouvelle table ».
NB : si on importe dans une table existante, il faut s’assurer que les en-têtes des colonnes dans Excel soient bien identiques au noms de champs choisis lors de la création de la structure de la table dans Access.
•	La 4ème fenêtre permet de choisir les champs à créer dans la table Access et de les nommer. Par souci de simplicité, gardez les noms existant dans Excel (en en-tête de colonne). Laissez les champs non-indexés.
•	La 5ème fenêtre permet de définir la clé primaire. Choisissez la clé primaire  vous-même : ce sera le champ « nom_produit » car c’est le champ de base de notre table.
•	La dernière fenêtre de l’assistant Importation feuille de calcul permet de nommer la table. L’importation se fait dans une table que l’on a prévu de nommer : t_produit. Entrez ce nom dans le cadre approprié. Ne cochez pas la case autorisant l’assistant à analyser la strucutre de la table. Cliquez enfin sur le bouton Terminer.
Le programme vous affiche une fenêtre vous informant que l’importation a bien été réalisée entre le fichier Excel et la table.

Les 5 tables sont maintenant créées. On peut alors établir les relations entre les tables. 

3 - Pour créer les relations :
Dans la fenêtre principale de la base de données, cliquez sur le bouton droit et choisir la rubrique Relations.
Une fenêtre ‘Relations’ s’ouvre, suivie aussitôt par une fenêtre ‘ajouter une table’. (Si la fenêtre ‘ajouter une table’ n’apparaît pas automatiquement, cliquez sur le bouton droit de la souris dans la fenêtre ‘relations’ et choisissez Afficher la table. Ajouter les cinq tables. Fermer la fenêtre « ajouter une table ».
Matérialisez ensuite les liens entre les tables en choisissant un champ « clé primaire » (en gras) dans une table et en le faisant glisser sur le champ similaire dans une autre table. (ex : nom_f de la table t_fournisseur vers nom_fournisseur de la table t_achats). 
Trois liens doivent se matérialiser à l’écran : de t_article vers t_achats, de t_achats vers t_fournisseur, de t_produit vers t_vente.
Quand cela est fait, fermez la fenêtre ‘Relations’.

A ce niveau, vous avez créé la structure des tables de la base de données. Mais cette base ne contient encore aucun enregistrement (sauf pour la table t_produit qui a été importée depuis Excel).

Vous allez maintenant saisir ces données de deux façons différentes : d’abord en alimentant directement la table, puis en alimentant la table par l’intermédiaire d’un formulaire.

4 - Saisir des enregistrements dans une table.
Ouvrez la table t_article en double-cliquant ou en sélectionnant et en cliquant sur la commande « ouvrir ».
Remplissez simplement les lignes du tableau (en mettant différents articles avec leur type de conservation… ex : tomates, salades, pommes de terre, pain, saucisses, steacks, jambon, huile, détergents, désinfectants, poulet, thon…)
Faites de même avec la table t_fournisseur. (alimentez la table avec les noms de quelques fournisseurs)

ATTENTION : A partir d’ici, les noms des tables ne pourront plus être modifiés sous peine de planter complètement la base de données par la suite. En effet, dans ce qui suit, nous ferons sans cesse appel aux tables, que ce soit dans les formulaires, les états ou les requêtes. Si les tables changent de nom, il sera impossible aux formulaires et autres objets de fonctionner puisqu’ils ne retrouveront plus leur table de base.

Exemple  du formulaire à obtenir

5 - Création du formulaire de saisie pour alimenter la table t_achats en vue de saisir des données par l’intermédiaire d’un formulaire, 
•	Cliquez sur Formulaire dans la rubrique Objets
•	Choisissez « Créer un formulaire à l’aide de l’assistant »
•	Sélectionnez la table que vous voulez utiliser pour créer le formulaire (ici, t_achats)
•	Sélectionnez tous les champs sauf « n°_achat » (c’est un champ Numéro automatique dont la valeur sera automatiquement écrite et incrémentée pour tout nouvel enregistrement).
•	Choisissez le type de présentation voulu (colonne simple)
•	Choisissez le style de formulaire (graphisme)
•	Choisissez le nom du formulaire (par défaut, le programme propose le nom de la table). On suggère de l’appeler : f_achats.
•	Choisissez ensuite, « modifier la structure du formulaire ». 
•	Puis cliquez sur le bouton « Terminer ».

Le formulaire apparaît en mode d’affichage « création ».
Il faut y modifier quelques éléments : le style d’affichage des champs « nom_article » et « nom_fournisseur ». Ainsi, au lieu d’avoir dans le formulaire, un cadre de texte dans lequel il faudrait écrire un mot complet, on va avoir une liste de choix.

•	Sélectionnez le cadre blanc « nom_article ». Par un clic sur le bouton droit, utilisez la fonction « Remplacer par » et choisissez zone de liste modifiable.
•	Toujours avec le bouton droit et sur le même objet, affichez toutes les propriétés.
•	Cette action effectuée, modifiez la rubrique Contenu dans les propriétés de ce champ. Cliquer sur la petite flèche vers le bas pour afficher la liste des tables utilisables et choisir la table t_article (table dans laquelle vous avez déjà entré certains articles). Cela va servir à afficher dans la liste le contenu des enregistrements qui existent déjà dans la table t_article.

Procédez de manière analogue pour le champ « nom_fournisseur ».

NB : Si vous voulez modifier les polices, la taille des cadres, du formulaire lui-même ou même si vous souhaitez ajouter un titre au formulaire, une image, etc…, vous pouvez apporter toutes ces modifications dans le mode d’affichage « création » du formulaire.

Pour vérifier que le formulaire apparaît correctement, passez en mode d’affichage Formulaire. Dans la barre de menus, cliquer sur affichage puis sur Mode Formulaire.
Le formulaire affiche la fiche descriptive de l’achat d’une marchandise. En cliquant sur ce bouton  vous créez un nouvel enregistrement dans la table t_achats.

6 - Création du formulaire de saisie pour alimenter la table t_vente.

Voici la forme du formulaire qu’il faudrait obtenir :
	L’idée est de permettre à l’utilisateur de la base de données d’utiliser ce formulaire pour enregistrer les commandes des clients.
Le champ « nom_produit » devra donc apparaître sous forme de « Liste modifiable ». Le champ « Prix » va prendre une valeur dès que le champ précédent est renseigné. L’utilisateur entrera la quantité et le montant de la commande sera calculé automatiquement. (Cependant, pour l’instant cette valeur n’est ajoutée dans aucune table.) L’utilisateur renseigne la case « paiement » et coche ou non la case « conso_sur_place ».	
Refaites les manipulations précédentes pour créer un formulaire, avec ces quelques variantes :
•	Au lieu de choisir les champs dans une seul table, nous allons ici en utiliser deux : 
- t_vente dont on va utiliser tous les champs sauf le champ « numéro_vente »  (car c’est un champ « numérotation automatique », et on ne doit donc pas entrer sa valeur par l’intermédiaire du formulaire) 
- t_produit dont on va utiliser uniquement le champ « prix ». (le champ « nom_produit » à utiliser dans le formulaire est celui de la table t_vente)
•	Modifiez la zone de texte « nom_produit » en zone de liste modifiable, avec comme contenu la table t_produit.
•	Créez une zone de texte (en utilisant la boîte à outils ). Ouvrez la fenêtre Propriétés. Dans la case « nom », taper montant_commande. Définissez la propriété « SourceContrôle » en utilisant le générateur d’expression, qui se lance en cliquant sur ce bouton  lorsque que vous cliquez sur la rubrique voulue dans la fenêtre « Propriétés ». Dans le Générateur d’expression, écrivez la formule signifiant que le contenu du champ doit être le produit de la valeur du champ « quantité » et de la valeur du champ « prix ».
•	Cliquez dans l’étiquette de la zone qui vient d’être créée et donnez lui une légende autre que celle que le programme attribue automatiquement. Cette étiquette permet à l’utilisateur de savoir à quoi correspond le contenu du cadre correspondant. On peut donc écrire choisir une légende comme Total ou Montant ou Montant_commande.
•	Dans un souci de cohérence et de logique, on pourra appeler ce formulaire : f_vente.

Les formulaires que nous avons créé maintenant seront typiquement utilisés pour saisir des données dans la base. Mais les formulaires peuvent aussi constituer des fiches descriptives. C’est le cas du formulaire que l’on demande de créer ensuite. Il est d’ailleurs plus simple que les précédents.

7 - Création du formulaire faisant office de fiche descriptive des fournisseurs.
Comme le titre de ce paragraphe le laisse entendre, on propose de créer, ici, des fiches fournisseurs. Il s’agit d’un formulaire très simple.
Procédez toujours de la même façon pour créer un formulaire. Notez que la table utilisée est, cette fois, t_fournisseur. 
Ce formulaire pourra être nommé : f_fournisseurs.
NB : f_fournisseurs pourra être utilisé en tant que fiches descriptives de chaque fournisseur mais aussi comme outil d’alimentation de la table correspondante. Dans ce cas, il faudrait cliquer sur le bouton  pour créer un nouvel enregistrement dans la table.

Pour utiliser la base de données, nous allons maintenant créer des requêtes de différents types.

8.1 – Requête pour le calcul du montant des commandes.
Rappelez vous que vous avez créé plus haut un formulaire permettant de saisir les commandes des clients. Dans ce formulaire, vous aviez un champ « montant_commande » dont la valeur était calculée automatiquement grâce au générateur d’expression. Hélas, l’information intéressante du montant de la commande apparaît uniquement dans ce formulaire. Il serait intéressant que la même information soit écrite dans une table de manière à la conserver et l’exploiter. Nous allons pouvoir réaliser cela en créant une nouveau chant que nous appellerons montant_commande dans la table t_vente. 
•	Cliquez sur dans la rubrique Objets
•	Choisissez « Créer une requête en mode création »
Une fenêtre Requête s’ouvre avec la structure vide de la requête, ainsi qu’une fenêtre permettant de choisir les tables et/ou les requêtes servant à la requête en cours de création. 
•	Choisissez les deux tables qui nous intéressent : t_vente et t_produit.
•	Les tables utilisées apparaissent dans la partie supérieure de la fenêtre Requête. Sélectionnez dans chaque table, les champs qui vous intéressent, un à un et faites les glisser dans la partie inférieure de la fenêtre de façon à avoir, de gauche à droite, l’ordre suivant : numéro_vente, nom_produit, prix, quantité.
On a donc 4 colonnes. 
•	Dans la 5ème colonne, cliquez dans la case Champ avec le bouton droit, et choisissez « Créer… ». Le générateur d’expression s’ouvre alors.
•	Il faudra avoir le même type d’expression que lorsque nous avions créé le formulaire : c’est à dire le calcul du produit entre le prix et la quantité. Double-cliquez dans la partie gauche de la fenêtre du générateur pour ouvrir le dossier des Tables et double-cliquer ensuite sur la table dans laquelle se trouve le champ « prix ». Puis cliquez sur le symbole * pour le produit (au sens multiplication arithmétique). Enfin allez chercher le champ « quantité » dans la table appropriée. Puis validez l’expression créée en cliquant sur le bouton « OK ».
•	On retourne à la fenêtre Requête. Dans le champ où on l’on vient d’insérer une expression, vous pouvez lire : Expr1: [t_vente]![quantité]*[t_produit]![prix].   Cela signifie que la requête va créer un champ qui s’appellera « Expr1 » avec pour valeur le résultat de l’opération prix*quantité. Remplacez les 5 caractères - EXPR1 – par un nom plus explicite comme montant_commande.   Puis vérifiez que la case de la ligne « Afficher » est cochée. 
•	Pour vérifier que la requête est correcte, dans le menu Affichage, choisissez Mode Feuille de données.
•	Fermez la requête et enregistrez la sous le nom r_montant_commande.

8.2 – Requêtes pour séparer les ventes selon la TVA et calculer les montants de TVA pour chaque commande.
Rappelons que le taux de TVA que le restaurateur devra appliquer est différent selon que le produit vendu est consommé sur place ou non. 
Il faudra d’abord créer une requête comportant uniquement les ventes de produits consommés sur place, puis en faire de même pour les produits vendus « à emporter ».
•	Cliquez sur Requête dans la rubrique Objets 
•	Choisissez « Créer une requête à l’aide de l’assistant »
•	Dans la 1ère fenêtre de l’assistant, choisissez la ou les tables (et requêtes) à utiliser. Dans le cas présent , on prendra des champs de la table t_vente (numéro_vente, num_semaine, jour_semaine, nom_produit, quantité, conso_sur_place) et de la requête créée précédemment : r_montant_commande (prix, montant_commande).
•	Dans la 2nde fenêtre, choisissez « détaillée » de manière à afficher tous les champs.
•	Dans la 3ème fenêtre, modifiez le nom de la requête proposé automatiquement et le remplacer par r_TVA20. Cochez la case « Modifier la strucutre de la requête », puis cliquez sur « Terminer ».
•	Localisez le champ « conso_sur_place » dans les colonnes.
•	Dans la ligne « Critères », écrivez en toutes lettres : OUI (puisque nous sommes dans la requête concernant la TVA à environ 20% donc la vente à consommer sur place.)
•	Pour le même champ, décochez la case de la ligne « Afficher », puisqu’il n’est pas nécessaire de faire apparaître la valeur du champ dans la requête créée (tous les enregistrements auront la même valeur : OUI)
•	Choisissez le classement par ordre croissant d’abord par numéro de semaine, puis pas jour de semaine, puis par produit. Utilisez la ligne « Tri » et veiller à l’ordre (de gauche à droite) des champs de manière à ce que le classement soit correct. 
•	Créez un nouveau champ (9ème colonne) qu’on appellera « montant_HT ». Les valeurs des enregistrements de ce champ seront le résultat du calcul suivant : montant_commande / 1.196 . Pour créer cette expression, utilisez le générateur d’expression ou l’écrire manuellement en reprenant exemple sur la requête précédente.
•	Créez un dernier champ appelé « Taxe » qui pourra être calculé de deux façons.
•	Passez en mode d’affichage  ‘Feuille de données’ pour visualiser la requête. 
•	Fermez la requête créée en sauvegardant les changements effectués.

La requête présentant l’ensemble des ventes à consommer sur place est créée. Il faut maintenant créer l’autre requête : ensemble des ventes à emporter.
On peut créer une nouvelle requête de la même manière que ce qui vient d’être fait. Mais, les deux requêtes étant quasiment identiques, on gagnera du temps à copier la première et à aller modifier son contenu.

•	Dans la fenêtre de la base de données, choisissez Requête.
•	Sélectionnez la requête r_TVA20.
•	Cliquez le bouton droit de la souris et choisissez la fonction « copier » du menu contextuel qui apparaît.
•	Puis dans le cadre (ailleurs que sur un des objets), cliquez sur le bouton droit et choisissez « Coller ».
(Vous pouvez aussi utiliser les rubriques du menu Edition ou les touches de raccourcis : Ctrl + C et Ctrl +V.)
•	Le programme demande un nom pour la nouvelle requête : vous choisirez par analogie à la requête précédente : r_TVA5.
•	Sélectionnez cette nouvelle requête et cliquez sur le bouton ‘Modifier’ pour l’ouvrir en mode Création de façon à pouvoir y modifier certains éléments.
•	Modifiez les éléments dans les champs « MontantHT », « Taxe », et « conso_sur_place » de manière à obtenir les enregistrements correspondant aux ventes à emporter et à calculer les valeurs avec une TVA à 5.5%.
•	Passez en mode d’affichage Feuille de données pour vérification.
•	Fermez la fenêtre et enregistrer les changements.

L’état est une mise en forme, en vue d’une impression, d’une table ou d’une requête. Notre restaurateur veut pouvoir sortir, les résultats (c’est à dire les produits vendus, leurs quantités et les sommes gagnées) regroupés pas semaine, et par jour. 
On peut donc lui proposer de créer un état qui lui permettra d’imprimer les résultats de ses ventes, semaine par semaine, jour par jour, en triant les données selon les produits achetés par les clients. En plus, on fera en sorte que l’état présente la somme et la moyenne de chaque produit acheté (sur une journée) ainsi que la somme des commandes (sur une journée).

9 - Création d’un état sur les ventes semaine par semaine et jour par jour.
•	Dans la rubrique Objets de lka fenêtre ‘base de données’, choisissez Etat
•	Choisissez « créer un état à l’aide de l’assistant ».
•	La 1ère fenêtre de l’assistant permet de choisir la (les) tables(s) et/ou la (les) requête(s) à utiliser pour créer l’état.  Incorporez tous les champs de la table t_vente sauf « numéro_vente », « paiement » et « conso_sur_place » qui ne sont pas intéressants ici. Incorporez également les champs « prix » et « montant_commande » créés dans la requête r_montant_commande. 
•	Dans la 2nde fenêtre, choisissez le premier niveau de regroupement : num_semaine et le deuxième : jour_semaine. (Par défaut, le programme peut proposer un regroupement sur « nom_produit », cliquer sur le bouton  pour supprimer le regroupement sur ce champ.)
•	Dans la 3ème fenêtre, choisissez le(s) champ(s) sur lequel les données vont être triées (ici simplement sur « nom_produit »). Cliquez ensuite sur le bouton , et dans la fenêtre qui s’ouvre, cochez les cases correspondant à : somme des quantités de chaque produit acheté et somme des montants des commandes.
•	La 4ème fenêtre propose une forme de présentation de l’état. A votre convenance… (Cochez tout de même la case permettant d’ajuster la taille des champs à la largeur de la feuille.)
•	La 5ème fenêtre permet de choisir un style graphique pour l’état.
•	La dernière fenêtre permet de nommer l’état. Toujours pour rester cohérent et logique, vous pouvez l’appeler : e_vente.

NB : Si l’état ne convient pas, on peut l’afficher en mode « création » et enlever les champs que l’on ne souhaite pas voir apparaître. Cependant, cela pouvant s’avérer source d’erreur, il est conseillé de reprendre quelques minutes pour recréer un nouvel état à l’aide de l’assistant.

Nous avons créé un certain nombre d’objets de gestion de la base de données. Comme le niveau de maîtrise d’Access de l’utilisateur n’est pas élevé, il est préférable de lui créer une interface qui lui permette, par exemple, d’ouvrir directement le formulaire de saisie des ventes pour enregistrer les nouvelles ventes ou de mettre à jour automatiquement l’information « montant_commande » et sortir ainsi l’état de ses ventes mis à jour, etc... 
Cf ci-contre un exemple de  l’interface à obtenir. (les chiffres font référence à l’ordre de création des boutons.)		

L’interface de la base consiste en un formulaire que l’on crée à vide, c’est à dire sans se baser sur une table.

10 - Création d’un formulaire vide
•	Cliquez sur ‘Formulaire’ dans la rubrique Objets
•	Choisissez « Créer un formulaire en mode création ». Une fenêtre de formulaire vide, en mode création, s’ouvre alors. 
•	Ajustez la taille à donner au formulaire.
•	Dans la boîte à outils, sélectionnez l’outil « Intitulé ». Cliquez dans la zone de formulaire pour créer une zone de texte, dans laquelle on écrira le titre du formulaire ou un message d’accueil…
•	Placez ce texte et éventuellement modifiez sa mise en forme.
Après avoir mis un titre sur la plage de formulaire, nous allons créer  différents boutons de commande.

11 - Création des boutons de commande

11.1 – Création du premier bouton de commande
Le premier bouton créé servira à ouvrir l’état e_vente. 
•	Dans la boîte à outils, sélectionnez l’outil « bouton de commande » et cliquez dans la zone de formulaire.
•	Automatiquement, l’assistant Bouton de commande apparaît. 
•	Dans la 1ère fenêtre de l’assistant, choisissez « Opérations sur état » puis « aperçu d’un état ».
•	Dans la 2nde fenêtre, sélectionnez l’état voulu.
•	La 3ème fenêtre permet de choisir si le bouton sera de type textuel ou illustré. (si l’on choisit le mode textuel, on écrira un texte explicite comme : « afficher l’état des ventes » qui s’affichera sur le bouton.)
•	La 4ème fenêtre permet de donner un nom au bouton créé. Ce nom permet au programme d’identifier le bouton, vous pouvez par exemple l’appeler « ap_etat_vente ». (Veillez à ne pas mettre d’espace)
•	Laissez le formulaire ouvert ou fermez-le et enregistrez le sous le nom f_menu.

NB : Si vous vous trompez à une des étapes de création du bouton de commande, il sera plus simple d’effacer complètement l’objet ‘bouton’ et de reprendre la démarche du début (plutôt que d’aller modifier les propriétés du bouton).

11.2 - Le second bouton permettra d’ouvrir le formulaire de saisie des achats sur un nouvel enregistrement (de manière à ne pas modifier les infos sur les achats déjà effectués). Pour cela, il faudra d’abord créer une macro, puis un bouton qui commandera le lancement de cette macro.

12.1 - Création d’une macro
•	Dans la rubrique ‘Objets’, cliquez sur l’onglet ‘Macro’
•	Cliquez sur le bouton ‘Nouveau’ en haut de la fenêtre ‘base de données’
•	Dans la colonne Action, sélectionnez « ouvrir formulaire » dans la première ligne (c’est la première action de la macro)
•	Dans le bas de la fenêtre (rubrique : Arguments de l’action), identifiez le formulaire à ouvrir (f_achats) et son mode d’affichage (formulaire), respectivement dans les cadres : Nom formulaire et Affichage
•	Créez une deuxième action : « Atteindre enregistrement ».
•	Dans les arguments : entrez le type d’objet (formulaire), le nom de l’objet (f_achats), et l’enregistrement (nouveau).
•	Fermez la macro et enregistrez la sous le nom : m_ouv_f_achat

Retournez  maintenant au formulaire dans lequel vous aviez créé un bouton. Affichez le en mode création pour pouvoir y ajouter de nouveaux éléments.

11.2 (suite) - Création du 2nd bouton de commande 
Le 2nd bouton va permettre d’exécuter la macro qui ouvrira le formulaire f_achats à un nouvel enregistrement de façon à pouvoir saisir un nouvel enregistrement.
•	Créez un deuxième bouton de commande.
•	Choisissez la catégorie « Divers » et la commande « Exécuter une macro ».
•	Sélectionnez la macro à exécuter : m_ouv_f_achat.
•	Choisissez le type de bouton (textuel ou illustré).
•	Nommez le bouton.

11.2 - Création du 3ème bouton de commande 
Le troisième bouton est semblable au second, mais il sert à lancer le formulaire de saisie des ventes.
•	Suivez la procédure précédente, c’est à dire :
12.1 - Créez la macro qui ouvrira le formulaire de saisie des ventes à un nouvel enregistrement
11.2 - Créez le bouton de commande qui lancera la macro 

11.3 - Création des 4ème et 5ème  boutons de commande 
Les quatrième et cinquième boutons permettent, respectivement, d’exécuter les requêtes r_TVA20 et r_TVA5. 
•	Suivez la même procédure que précédemment (11.2 (suite) -).
•	Dans la catégorie « Divers », choisissez la commande « Exécuter une requête ».

11.4 - Création du 6ème bouton de commande 
Un sixième bouton permet de quitter la base de données.
•	Appliquez la même procédure 
•	Catégorie « Applications », commande « Quitter l’application ». 

10 (suite et fin) - Finalisation de la création de l’interface
•	Fermez le formulaire et sauvegardez le sous le nom f_menu.

L’interface est maintenant créée. Mais on doit faire en sorte que, lorsque l’utilisateur va ouvrir sa base de données, le fichier s’ouvre directement sur ce formulaire f_menu. Pour cela, il suffit de créer une troisième macro qui aura pour nom AUTOEXEC. C’est précisément ce nom qui permettra au programme de savoir que cette macro doit être lancée dès l’ouverture du fichier.

12.2 - Création d’une macro AUTOEXEC
•	Cliquez sur l’onglet Macro
•	Choisiz Nouveau
•	Sélectionnez l’action « ouvrir formulaire ».
•	Dans les arguments, identifiez le formulaire à ouvrir : il s’agit de f_menu.
•	Fermez la macro créée et enregistrez la sous le nom AUTOEXEC. 
NB : Le fait d’ouvrir la base de données sous cette forme n’empêche pas d’accéder aux différents objets et de les modifier si besoin.

Le travail est presque terminé. Il reste une petite modification à apporter à l’un des formulaires créés au début. La création d’un champ contenant l’information « montant_commande » a lieu lorsque la requête r_montant_commande s’exécute. Il serait bon que cette requête soit exécutée sur demande de la personne qui saisit les ventes et lorsque celle-ci le souhaite. Ainsi, dans le formulaire de saisie des ventes, on va permettre à l’utilisateur de cliquer sur un bouton qui exécutera la requête.

13 - Modification d’un formulaire
•	Sélectionnez le formulaire f_vente.
•	Cliquez sur « modifier » pour l’ouvrir en mode création.
•	Créez un bouton de commande permettant d’exécuter la requête r_montant_commande. (cf création des 4ème et 5ème boutons du formulaire f_menu.)  (cf 11.2)

La création de la base de données est maintenant terminée. Bien sûr, vous pouvez créer d’autres requêtes, d’autres états, d’autres boutons de commande… Libre à vous de continuer à manipuler le fichier.

INFO SUPPLEMENTAIRE

14 - Exporter des données vers Excel.
Si l’on veut tracer des graphes à partir d’un tableau de données, il faudra utiliser Excel. On peut récupérer facilement les données d’une table ou d’une requête Access et les transformer en feuille de calcul Excel.
La manipulation est très simple :
•	Sélectionner l’objet voulu : par exemple, la requête r_TVA20.
•	Dans le menu Fichier, choisir Exporter.
•	Dans la fenêtre qui s’affiche, modifier le « Type de fichier » et choisir le format qui convient (Excel).
•	Donner un nom au fichier (par défaut, c’est le nom de la table qui est employé) et choisir son emplacement.

INDEX DES ACTIONS

1 – Création du fichier de base de données
2 – Création des tables
2.1 – Création d’une table dans Access
2.2 – Création d’une table par importation d’une feuille de calcul Excel
3 – Etablissement des relations
4 – Saisie d’enregistrements dans une table
5 – Création d’un formulaire de saisie de données avec choix dans une liste
6 – Création d’un formulaire de saisie de données avec calcul automatique
7 – Création d’un formulaire-fiche
8 – Création des requêtes
8.1 – Requête pour le calcul du montant des commandes
8.2 – Requête de sélection des ventes selon le type de consommation (selon le taux de TVA)
9 – Création d’un état
10 – Création d’un formulaire vide : création de l’interface « utilisateur »
11 – Création des boutons de commande
11.1 – Bouton pour aperçu d’un état
11.2 – Bouton pour lancement d’une macro
11.3 – Bouton pour exécution d‘une requête
11.4 – Bouton pour le lancement d’une commande
12 – Création des macros 
12.1 – Macro d’ouverture de formulaire
12.2 – Macro autoexécutable
13 – Modification d’un formulaire (ajout d’un bouton de commande)
14 – Exportation de données vers Excel

Annexe

Liste des articles achetés par Mr Durand

•	Tomates (1 kg)
•	jambon (par 20 tranches)
•	saucisses (par 20)
•	baguettes (pièce)
•	fromage sandwich (par 20 tranches)
•	fromage burgers (par 20 tranches)
•	pains burgers (par 10)
•	frites (10 kg)
•	salade (pièce)
•	steacks (par 10 – 1kg)
•	sauce ketchup (bidon – 3 l)
•	sauce mayo (bidon – 3 l)
•	sauce poivre (bidon – 3 l)
•	sauce cocktail (bidon – 3 l)
•	beurre (1 kg)
•	coca (par 24)
•	fanta (par 24)
•	sprite (par 24)
•	perrier (par 24)
•	Vittel (par 6)
•	Jus de fruit (par 24)
•	serviettes (par 100)
•	gobelets (par 100)
•	emballages papiers (par 100)
	Liste des produits vendus par Mr Durand

•	burger
•	cheese-burger
•	sandwich simple
•	sandwich composé
•	portion frites
•	portion frites + sauce
•	boisson
•	menu burger (MB)
•	menu cheese (MC)
•	menu sandwich simple (MSS)
•	menu sandwich composé (MSC)

Fournisseurs de Mr Durand

•	Metro
•	Drink-services
•	Société POM’FRIT
•	Auchan
•	Carrefour
•	Boulangerie ‘La pomme de Pain’