Download - lesson BTS

Transcript
  • Directrice de publication : Valrie Brard-TrigoLes cours du Cned sont strictement rservs lusage priv de leurs destinataires et ne sont pas destins une utilisation collective. Les personnes qui sen serviraient pour dautres usages, qui en feraient une reproduction intgrale ou partielle, une traduction sans le consentement du Cned, sexposeraient des poursuites judiciaires et aux sanctions pnales prvues par le Code de la proprit intellectuelle. Les reproductions par reprographie de livres et de priodiques protgs contenues dans cet ouvrage sont effectues par le Cned avec lautorisation du Centre franais dexploitation du droit de copie (20, rue des Grands Augustins, 75006 Paris).

    BTS Informatique de gestion 1re anne

    Jean-Yves Fvrier

    Dveloppement dapplicationsinformatiques et gnie logiciel

    Cours 2 (ACCESS)

  • 8 3932 TG PA 023

    Conseils gnraux

    Prsentation du cours

    Organisation du coursCe cours de programmation (Access) est constitu de 13 squences et un devoir auto-corrig. Je vous rappelle quil simbrique avec le cours danalyse (Merise rf. 3932 TG 01).Voici lordre dans lequel il faut exploiter tout cela :

    vous travaillez le cours danalyse (Merise) jusqu la squence 5 ;

    tout en continuant lanalyse, vous pouvez alors traiter le cours Access :

    vous travaillez les squences 1 13,

    ensuite, vous faites le devoir auto-corrig.

    Attention, ne vous arrtez pas la squence 5 du cours danalyse. Il faut aller jusqu la squence 5 pour avoir les prrequis ncessaires lapprentissage dAccess. Ensuite, vous devez travailler ces cours et le cours SQL (voir rf. 3999 TG 02) en parallle.Access est un outil trs dense. En premire anne, nous tudions tout ce qui est utile aux deux options. En seconde anne, nous lapprofondirons ensemble dans loption dveloppeur dapplications.

    Choix dAccess et place du SGBDR

    IntroductionLe cours que vous commencez vous permettra dacqurir la pratique dAccess, le Systme de Gestion de Base de Donnes Relationnel (SGBDR) semi-professionnel de Microsoft.Par semi-professionnel, je nentends pas semi-performant : cest un produit trs efficace sil est utilis bon escient. Toute PME ou petite administration pourra utiliser des applications Access pour grer ses donnes. En revanche, pas question pour EDF, une banque ou le Trsor Public de dvelopper sous Access : quand on a des centaines de millions de donnes, il faut un outil profes-sionnel dune toute autre dimension : SQL Server, OraclePourquoi Access ? Nous avons hsit entre cet outil et dautres du monde libre (MySQL, PosgreSQL). Finalement, nous avons retenu Access car cest loutil le plus rpandu dans les entreprises o vous irez travailler (en action professionnelle, stage ou, ultrieurement, en vrai travail). Cela dit, les-sentiel de ce que nous allons tudier se transpose dans tout SGBDR.

    Nous dirons donc que nous allons apprendre un SGBDR par le biais de lun de ses reprsentants, Access.

  • 8 3932 TG PA 024

    Le SGBDR dans le rfrentielComme je lai dit dans les conseils gnraux de SQL, ce cours est indispensable pour le BTS Informatique de gestion car dans ce secteur dactivit, lessentiel de votre travail consistera manipuler des bases de donnes.Dans le rfrentiel de la formation des deux options, ltude dAccess se glisse un peu partout :

    explicitement dans le savoir S2 ALSI (Architecture logicielle des systmes informatiques), prcisment le savoir S25 du rfrentiel intitul Systme de gestion de base de donnes relationnel ;

    implicitement en S26 (architecture client-serveur) et S33 (Maquettage dapplications informa-tiques et programmation vnementielle) ;

    galement en S35 (Conception et dveloppement dapplications laide dun langage de programmation procdural) ;

    pourquoi pas en S32 (Analyse et conception de systmes logiciels) ? Oui, cest le cours de Merise. Quel rapport avec Access ? Eh bien, la finalit dune analyse Merise, cest la cration dune application base de donnes !

    Justifions tout cela : vous ne connaissez pas encore Access, mais je peux ds prsent vous dire que cet outil :

    est videmment un SGBDR (do S25 et S26) ;

    possde des formulaires (feuilles de VB, formulaires de Delphi), do S33 ;

    possde le langage VB pour programmer votre application Access, do S35.

    Ainsi, pour pouvoir exploiter pleinement Access, vous avez besoin de nombreuses connaissances cela en fait un outil dinformaticien dune complexit sans commune mesure avec Word et Excel.Nous nallons pas tudier tout cela dans ce support : seul loutil Access nous intresse. Mais, comme je viens de le dire, pour pouvoir exploiter les formulaires, il faut connatre la programma-tion vnementielle ; pour automatiser lapplication, il faut savoir programmer

    Le SGBDR dans la formationEn formation initiale (en lyce), la premire anne stend sur 35 semaines, le volume horaire hebdomadaire de lALSI tant 2 heures de cours et 2 heures de travaux dirigs. Le SGBDR et SQL constituent la majeure partie de cet enseignement.Lapprentissage dAccess est gnralement rparti sur les deux annes : le tronc commun en pre-mire anne et le cours doption en seconde anne :

    en premire anne, on tudie tout sauf la programmation avance ;

    en seconde anne (option dveloppeur dapplications), on soccupe de la programmation avance.

    Nous ferons la mme chose dans ce cours.

    Le SGBDR lexamenAccess est un logiciel trs intressant pour mettre en uvre les activits prsentes dans lpreuve de pratique des techniques informatiques, notamment en option dveloppeur dapplications : les comptences C32, C33, C35 et C36 peuvent tre bties autour dAccess.En option administrateur de rseaux locaux dentreprise, les comptences C24 et C37 peuvent exploiter Access (quoique l, soyons honntes, installer Access pour la comptence installer un SGBD est un peu limit sauf si lon installe une architecture client/serveur par exemple).

  • 8 3932 TG PA 025

    Le SGBDR dans votre vie professionnelle dinformaticienDois-je justifier ltude dAccess ? Ma foi, cet outil fait souvent partie des sujets de stage (option dveloppeur dapplications) et sera certainement votre fond de commerce lors de votre arrive dans la vie active.

    Attention ceux qui se sentent plus la fibre dadministrateur de rseaux locaux dentreprise : vous avez limpression quAccess nest utile que pour ceux de lautre option ? videmment, seuls les dveloppeurs dapplications prsenteront Access lexamen, mais ce sera sur les techniques de programmation avance. Toute la partie que nous allons tudier cette anne constitue un tronc commun que vous devez connatre : pour savoir installer et administrer une base de donnes, il faut savoir ce que cest ! De plus, tout technicien suprieur en informatique de gestion doit pouvoir intervenir en maintenance ou en dpannage de premier niveau sur des domaines varis (configuration, installation, rseau, base de donnes) quelle que soit son option.

    Prsentation du support de cours

    PrincipeCe cours a t conu pour pallier au maximum les difficults de lapprentissage distance : je lai rdig de telle manire que sa lecture ressemble un cours quun professeur tant en face de vous pourrait faire. Enfin, jai essay autant que possible de faire cela.Ainsi, chaque difficult potentielle ou interrogation que vous pourriez avoir, jai tent de pren-dre les devants et de tout aplanir.Mais jinsiste sur le point suivant : quelle que soit la qualit pdagogique de ce cours, il ne vous permettra pas dassimiler Access par simple imprgnation visuelle. Vous devez fournir un travail dapprentissage (le cours), de rflexion (toujours le cours) et dentranement (utilisation intensive dAccess).Le dbut du cours comporte quelques exercices explicites, mais aprs, plus rien. Enfin je nai pas pu les matrialiser comme dans le cours danalyse ou de SQL, mais les exercices sont bels et bien prsents : lorsque jillustre une manipulation (et je narrte pas !), je vous dis systmatiquement de la refaire vous-mme et, si je ne le vous dit pas, cest un oubli de ma part. la fin du cours, vous trouverez un sujet auto-corrig dapplication Access. La base corrige est accessible cette adresse : http://www.campus-electronique.fr/bts-informatiquegestion puis en allant la rubrique tlchar-gement. Jouez le jeu et ne vous prcipitez pas sur cette dernire !

    OrganisationLe fascicule de cours contient diffrentes choses :

    une ou plusieurs squences par concept de base dAccess (tables, requtes, formulaires, tats, macros et modules) ;

    la squence sur les modules est en fait une squence sur la programmation sous Access : encore une fois, je vous donne des bases que jespre solides, mais il nest pas question de pousser les choses trop loin ;

    la dernire squence est consacre lergonomie, cest--dire la faon de prsenter correc-tement des applications. Ce nest donc plus le ct technique qui est abord, mais laspect visuel. Cest un thme qui mest cher.

  • 8 3932 TG PA 026

    Notations

    Pour vous aider identifier les diffrents constituants du cours, jai utilis les reprsentations suivantes :

    tout ce qui est mis en couleur doit tre appris par cur. Cela correspond aux dfini-tions ou explications quil est absolument ncessaire de connatre pour sen sortir en analyse. Quand je dis apprendre, ce nest pas retenir pour lheure qui suit afin dpater les convives au prochain repas. Il sagit dune vraie leon, dont vous devez vous souvenir tout au long de votre vie dinformaticien, ou, plus prosaquement, au moins jusqu lexamen. Ces informa-tions sont reprises la fin de chaque squence dans la fiche synthse ;

    Quelques conseilsLe seul conseil utile que je puisse vous donner est de garder lesprit la fable de La Fontaine Le livre et la tortue : il ne sert rien de travailler ce cours comme un fou en juin ; travaillez-le plutt ds maintenant quelques heures par semaine r-gu-li--re-ment (jaurais pu crire rgulirement ou RGULIREMENT, mon but tant juste dinsister sur le mot).La difficult de lenseignement distance rside dans le fait que, par dfinition, vous tes seul face au cours, personne ntant l pour vous guider, insister sur lessentiel ou tablir la progression du cours.

    Pour vous aider suivre un rythme correct, disons que chaque squence correspond un travail denviron une dizaine dheures.

    Attention lenviron ! Vous avez sans doute le souvenir de vos tudes o, pour obtenir un mme rsultat, certains travaillaient toute la soire et dautres se contentaient dtre prsents en cours. Il en est de mme ici. Les 10 heures ne sont quun ordre de grandeur signifiant juste que 15 minutes, ce nest pas assez, mais 30 heures, cest trop.Retenez quil vaut mieux passer 15 heures sur une squence et la comprendre parfaitement, que faire exactement 600 minutes (10 heures) en passant ct de lessentiel.

    Lorsque quelque chose ne vous semble pas clair, nhsitez pas creuser un peu, tudier laide, faire des manipulations par vous-mme il faut pratiquer !La thorie que nous aborderons est essentielle car elle vous explique le sens des savoir-faire et vous aide ragir aux problmes.

    Tout informaticien doit savoir faire. En fait, dans toute discipline, vous tes recherch pour votre matrise des savoir-faire. Un comptable connaissant toute la thorie des optimisations fiscales mais incapable dtablir correctement une dclaration de revenus nest pas un bon comptable. Si vous pouvez disserter une heure sur le protocole OSPF (administrateur rseau) ou sur le polymorphisme (dveloppeur), mais que vous narrivez pas configurer la connexion internet de lentreprise, vous ne duperez personne.

    Vous devez travailler chaque squence la dure ncessaire une relle comprhension : quand vous comprenez le sens des manipulations prsentes et que vous savez les refaire, cest que la squence est assimile. Jinsiste : vous devez tout refaire sur Access et faire des exprimentations.

  • 8 3932 TG PA 027

    Sommaire

    Squence 1 : Prise en main dAccess 9

    Squence 2 : Les tables 1/2 : origine et cration 19

    Squence 3 : Les tables 2/2 : proprits des champs 29

    Squence 4 : Relations et intgrit rfrentielle 49

    Squence 5 : Gnration automatique de tables et import/export de donnes 63

    Squence 6 : Les requtes 75

    Squence 7 : Prsentation des formulaires 85

    Squence 8 : Les contrles graphiques 115

    Squence 9 : Les formulaires accdent aux donnes 133

    Squence 10 : Les tats 153

    Squence 11 : Les macros 169

    Squence 12 : Programmation VBA lmentaire 181

    Squence 13 : Ergonomie 213

    Sujet du devoir auto-corrig 241

    Corrig du devoir auto-corrig 251

  • 8 3932 TG PA 029

    Squence 1

    Prise en main dAccess

    Dans cette squence, nous tudions les diffrents concepts dAccess.

    u Capacits attendues Comprendre ce que vous pouvez faire avec Access

    Effectuer quelques paramtrages essentiels

    Savoir accder laide et aux fichiers base de donnes

    Utiliser une base Access avec une autre version dAccess

    u Contenu1. Introduction ............................................................................................ 101A. Vocabulaire de base ................................................................................... 10

    1B. tapes de dveloppement dune application .......................................... 10

    2. Les objets dAccess .............................................................................. 11

    3. Utilisation dAccess .............................................................................. 113A. Fichier .......................................................................................................... 11

    3B. Excution dAccess ..................................................................................... 11

    3C. Cration dune base et fentre Base de donnes dAccess .................... 13

    3D. Ouverture dune base existante et scurit ............................................. 15

    Synthse

  • 8 3932 TG PA 0210

    Squence 1

    1. Introduction

    1A. Vocabulaire de base

    1A1. Base de donnesUne base de donnes (BDD) est un ensemble dinformations structures se rapportant un domaine prcis (le systme dinformation vu dans le cours danalyse).Exemples :

    les informations permettant le suivi des stages en section de BTS ;

    les fiches dtat de stock dans un magasin.

    Une base contenant toujours plusieurs donnes, il sera trs mal vu domettre le pluriel au mot donne .

    1A2. Systme de gestion de base de donnes relationnel (SGBDR)Un Systme de Gestion de Base de Donnes (SGBD) est un systme informatique grant lensemble des informations prsentes dans une base de donnes.Diffrentes faons de grer les donnes ont vu le jour : les SGBD furent hirarchiques puis rseaux ; aujourdhui ils sont relationnels, demain ils seront objets (ou relationnels/objets). Relationnel fait rfrence aux relations mathmatiques bases sur la thorie des ensembles cartsiens. On parle de SGBD Relationnels, soit SGBDR.

    Il existe deux familles de SGBDR :

    les outils personnels convenant la gestion des donnes de petites entreprises : Access, Paradox, MySQL Leur intrt ? Un rapport qualit/prix sans quivalent ;

    les systmes professionnels, pouvant grer un nombre considrable de donnes et dutilisateurs. Citons Oracle, SQL Server, PosgreSQL leur qualit ? La performance.

    Ce support de cours concerne Access 2003. Cest un cours important car linformatique de gestion exploite intensment les SGBDR ! Lobtention du BTS passe par la matrise dun SGBDR, classiquement Access qui est trs rpandu.

    1B. tapes de dveloppement dune applicationLefficacit de lapplication dpend fortement de votre connaissance de linterconnexion des donnes, ce qui correspond au cours danalyse (MCD). En pratique, un dveloppe-ment russi (donc correct) ne peut se faire quen modlisant les donnes avant toute implantation sur ordinateur. En effet, un MCD inexistant ou faux impliquera une base de donnes inconsistante (c--d. errone et inexploitable). Du MCD, vous dduisez le MLD qui dcrira comment stocker les informations dans le SGBDR. La rgle de dveloppement suivante est donc imprative :

    Comprhension du mtier informatiser

    laboration du MCD Cration du MLD Dveloppement de la BDD

    En dautres terme s, vous devez tre certain de la correction de vos MCD et MLD avant toute manipulation sur Access. Si, en cours de dveloppement, vous tes amen corri-ger le MCD, lensemble du projet sera bien mal parti.Pourquoi ce paragraphe ? Pour insister sur le fait que lon ne doit surtout pas se lancer bille en tte dans la ralisation de lapplication Access. Il faut pralablement conduire une analyse bien mene pour crer correctement les tables.

  • 8 3932 TG PA 0211

    Prise en main dAccess

    2. Les objets dAccessLa base de donnes contient les donnes de lentreprise. Elle permet :

    de les stocker de faon rationnelle et efficace ;

    de les rcuprer (exploiter) au mieux.Access est un outil constitu des objets suivants :

    des tables, servant au stockage structur des donnes ;

    des formulaires, chargs dafficher les donnes et permettant galement de les saisir ;

    des requtes SQL (voir mon cours SQL !) permettant dinterroger la base, cest--dire de rcuprer les donnes ;

    des pages, qui permettent dafficher et manipuler de linformation sur internet ; cest lquivalent du formulaire, mais orient Web ;

    des tats, dont lobjet est dtre imprims. Ils fournissent les donnes de la base sous une forme lisible et permettent galement (cest le plus important) de produire les documents de lentreprise partir des donnes : les factures, les relances clients, les tats de stock

    le langage de programmation VBA (Visual Basic for Applications) qui permet de relier tous ces lments pour en faire une application utilisable.

    Nous allons tudier ces diffrents composants. Il ne sagit pas dtre exhaustif, mais de dbroussailler le terrain pour vous rendre autonome et capable daller plus loin.

    3. Utilisation dAccess

    3A. FichierConcrtement, une base de donnes Access est un fichier. Cela signifie que la sauvegarde de la base revient la sauvegarde dun fichier.Lextension du fichier base de donnes est MDB (pour Microsoft Data Base). En crant la base Gestion, vous gnrez un fichier nomm gestion.mdb.La base de donnes est le rservoir dinformations de lentreprise ; cette dernire y stocke ses clients, fournisseurs, commandes, factures La base est donc un fichier crucial que lon ne peut se permettre de perdre. La copie de sauvegarde de la base elle-mme est une obligation professionnelle.

    3B. Excution dAccess

    3B1. Paramtrage initial de linterfaceEn lanant Access, vous obtenez sans doute la fentre suivante (si ce nest pas le cas, cest que votre paramtrage a dj t modifi ; cela est sans importance).

  • 8 3932 TG PA 0212

    Squence 1

    Vous allez paramtrer les menus pour que toutes les commandes soient visibles. Pour cela, lancez la commande Outils/PersonnaliserVous obtenez alors la bote de dialogue suivante, personnaliser comme moi.

    Quand vous avez fini, faites FermerNotez que cette bote ne respecte pas lergonomie Windows car on devrait trouver des boutons OK et Annuler. Ici, OK est remplac par Fermer et, pour annuler, il faut relancer la commande et restaurer les valeurs initiales la main.

    Lessentiel, cest que la deuxime case soit coche.Elle vous assure que les commandes ne joueront pas cache-cache avec vous.Si vous avez un problme pour activer la premire case, cela peut tre d un paramtrage contraire dans Word ou un autre outil du pack Office.

    3B2. Paramtrage initial de laideLa version 2003 intgre une aide en ligne locale (sur votre PC) et une aide en ligne internet mise jour continuellement (Microsoft Office Online). Laide internet ne peut videmment tre utilise que si vous disposez dune connexion internet. De plus, je ne peux pas baser mon cours dessus puisse quelle volue en permanence. Tous mes ren-vois vers laide dans le cours feront donc rfrence laide locale, tout fait complte dailleurs.

    Je rappelle le sens de cette criture conventionnelle : la commande Outils/Personnaliser signifie quil faut lancer le menu Outils (dans la barre de menus) puis lancer la commande Personnaliser

  • 8 3932 TG PA 0213

    Prise en main dAccess

    Pour viter toute confusion, nous allons paramtrer votre version dAccess pour quelle dsactiver laide internet. Voici la manipulation raliser :

    Depuis la fentre Access, lancez la commande ?/Options pour les commentaires clients

    Vous obtenez alors cette bote de dialogue :

    Slectionnez la catgorie Contenu en ligne.

    Dcochez alors la case Afficher le contenu et les liens de Microsoft Office Online si elle tait coche.

    Notez qu'il faudra quitter puis relancer Access

    Dois-je vous dire de cliquer sur OK ?

    3C. Cration dune base et fentre Base de donnes dAccess

    3C1. CrationJai choisi de crer une nouvelle base de donnes Clients partir de linterface Access. Le volet Nouveau fichier souvre automatiquement. Je slectionne alors Base de donnes vide. Access me demande immdiatement un dossier et un nom de fichier pour enregis-trer la base. Jappelle ma base Clients.mdb.

  • 8 3932 TG PA 0214

    Squence 1

    Jobtiens la fentre suivante :

    Ceci est la fentre de la base de donnes. Tous ses composants (tables, requtes) sont accessibles (colonne de gauche, Objets).Tout au long du dveloppement de votre appli-cation, vous pouvez faire apparatre cette fen-tre en appuyant sur F11.

    Notez cette information sur le format du fichier (voir paragraphe 3C3).

    3C2. Le contenu de la fentre de la base de donnesVous remarquerez que la partie droite de la fentre contient des choses :

    Crer une table pour les objets Tables ; Crer un formulaire pour les objets Formulaires.

    Cest tonnant, puisque ma base Clients vient dtre cre. Comme je nai encore rien mis dedans, je mattendais navement la trouver vide.En fait, elle est vide. Nous voyons des raccourcis vers des assistants pour crer facilement de nouveaux objets. Pour voir (sils ny sont pas) ou supprimer (sils y sont) ces assistants, il faut lancer la commande Outils/Options, aller dans longlet Affichage puis cocher ou non la case Raccourcis des nouveaux objets. Je vous demande de dcocher cette case.

    3C3. Barre de titre de la fentre : format de la baseLe problme gnral de la compatibilit entre versionsLa copie dcran du paragraphe 3C1 attirait votre attention sur la barre de titre indi-quant que ma base nouvellement cre tait au format de fichier Access 2000. Quel est alors lintrt, je vous le demande, dacheter la version 2003 dAccess si la base est au format 2000 ?

    Des informations supplmentaires dans laideLaide en ligne (mode hors connexion) contient beaucoup dinformations sur les conver-sions et compatibilits entre les diffrentes versions Access (2.0, 95, 97, 2000, 2002 et 2003). Vous y apprendrez dailleurs quAccess 2002 et 2003 utilisent le mme format de fichier.Pour accder tout cela, lancez laide (F1) puis recherchez convertir. Le rsultat int-ressant parmi les vingt obtenus, cest propos de la conversion dun fichier Access . Lisez-le !

    Pour conclure : quel format utiliser ?Quitte travailler sur Access 2003, nous utiliserons le format Access 20022003.

    Pour accder la commande Outils/Options, vous devez avoir une base de donnes ouverte dans Access.

    Je vous rappelle le paramtrage prcdent pour nexploiter que laide locale.

  • 8 3932 TG PA 0215

    Prise en main dAccess

    Vous devez donc raliser le paramtrage suivant. Il faut lancer la commande Outils/Options. Or, Options nest actif que si un fichier Access est ouvert. Ainsi, alors mme que le paramtrage ne concernera que les nouvelles bases et en aucun cas celle ouverte, il faut ouvrir une base quelconque pour accder la commande.Bref. Une fois une base quelconque ouverte, lancez la commande Outils/Options puis, dans la bote de dialogue Options, slectionnez longlet Avanc et choisissez Access 2002-2003 dans la liste Format de fichier par dfaut comme dans la copie dcran ci-aprs :

    Ma base Clients, toujours lcran, reste comme convenu au format Access 2000.

    3D. Ouverture dune base existante et scuritVous noterez quAccess a un fonctionnement sensiblement diffrent des autres outils du Pack Office (Word, Excel et PowerPoint). Ces trois logiciels grent des objets (documents, classeurs ou prsentations). Plusieurs peuvent tre chargs en mme temps. En revanche, Access ne peut traiter quune base la fois. Si vous voulez ouvrir deux bases, vous aurez deux applications Access tournant simultanment . Cela est d la technicit des syst-mes de gestion de base de donnes : ces outils sont, sans quil y paraisse, trs pointus.Lorsque jouvre une base existante (en doublecliquant sur son fichier dextension mdb ou partir de linterface Access), jobtiens des botes de dialogue bizarres.

    Cela commence ainsi (je choisis Non) :

    Petit rappel : Outils/Options signifie menu Outils puis commande Options En vrai, la programmation rsout cela : si linterface graphique dAccess ne permet de tra-vailler que sur une base la fois, vous pouvez utiliser du code VBA (liens ODBC par exemple) pour accder aux donnes dune autre base. Nous ntudierons pas cela dans ce cours (cest hors-programme). De plus, si vous avez besoin de raliser ce genre de choses, cest que votre dvelop-pement commence tre dense et quAccess nest plus forcment loutil adapt.

  • 8 3932 TG PA 0216

    Squence 1

    Cela continue comme cela (je choisis Ouvrir) :

    Ces botes sont une nouveaut dAccess 2003. Elles concernent la scurit de votre sys-tme qui peut tre mise mal par des applications nuisibles. La premire bote prend en compte le mode sandbox, la seconde concerne les virus macro.

  • 8 3932 TG PA 0217

    Synthse

    Pour le moment, il y a assez peu de choses retenir.

    Limportant est de bien distinguer le rle du SGBDR Access vis--vis des autres produits du Pack Office.

    De plus, il est crucial dassimiler ds maintenant limbrication trs forte de lana-lyse et de la base de donnes : lalgorithmique est la programmation ce que lanalyse est la base de donnes. Je rpte quil nest concevable de passer Access quune fois lanalyse conduite srieusement.

    Cest dailleurs un leitmotiv chez mes tudiants revenant de stage : Oh, mon-sieur, vous aviez raison : jai commenc faire la base immdiatement, mais jtais ensuite incapable de raliser les traitements demands. Jai d recommen-cer en faisant lanalyse, ce qui ma fort marri .

    Un dernier argument : avoir men lanalyse correctement vous assure que vous avez bien en tte lensemble du systme dinformation que vous allez informati-ser. Et cela, cest dj une base de dpart solide.

    Retenez enfin que quoi que vous fassiez (dfinition dune table, dun formu-laire), vous pouvez faire apparatre la fentre Base de donnes en appuyant sur F11. Cette fentre est indispensable puisquelle permet daccder tous les constituants de lapplication.

    Jai amlior le style (mes tudiants ne parlent pas tous comme cela) mais lide est l.

  • 8 3932 TG PA 0219

    Squence 2

    Les tables 1/2 : origine et cration

    Cest dans les tables que les donnes dune base sont stockes. Cest une squence cruciale car la qualit de la dfinition des tables conditionne celle de lapplication finale. Comme jai beaucoup de choses vous dire (cest simple mais cest long), la prsentation des tables se fera dans deux squences :

    dans cette squence 2, nous verrons ce que sont les tables et comment les crer sous Access ;

    dans la squence 3, nous dtaillerons tout le paramtrage fin des champs constituant les tables.

    u Capacits attendues Avoir parfaitement assimil linteraction entre lanalyse et la concep-

    tion des tables la base de donnes

    Savoir crer des tables de faon rigoureuse (cest--dire en exploitant correctement les proprits des champs)

    u Contenu1. Introduction ............................................................................................ 20

    2. Cration des tables .............................................................................. 202A. Introduction ................................................................................................ 21

    2B. On y va ! ...................................................................................................... 21

    2C. Les types des champs ................................................................................. 22

    2D. Spcifier les cls primaires (et trangres ?) ............................................ 24

    2E. Faites une table vous-mme ! ................................................................... 26

    Synthse

  • 8 3932 TG PA 0220

    Squence 2

    1. IntroductionNous allons voir comment dfinir des tables puis comment les remplir.

    La base de donnes que vous allez mettre en place sera compose de tables. Une table, au sens informatique, est un ensemble dinformations se rapportant un sujet particu-lier. Les donnes dune table sont prsentes sous la forme dun tableau comportant des lignes (appeles enregistrements) et des colonnes (appeles champs). Les tables (leurs champs) sont dfinies dans le MLD.Ainsi, je vous rappelle lobligation de faire un MCD puis un MLD avant de commencer le moindre dveloppement sur Access. Ce nest pas pour vous brimer, mais parce quil est tout simplement impossible, pour vous comme pour moi, darriver faire de tte la dfinition des tables pour un cas un tant soit peu intressant. Bien entendu, si vos tables sont mal dfinies, vous ne reprsentez pas correctement la ralit. Votre application Access ne pourra donc pas raliser ses objectifs.

    Nous avons vu ds le cours SQL que le monde de lanalyse possde un vocabulaire diff-rent de celui des bases de donnes. Le tableau suivant rappelle les diffrents termes :

    Vocabulaire MCD Vocabulaire MLD et SGBD Vocabulaire SQL

    identifiant cl primairechamp

    proprit champ

    occurrence enregistrement enregistrement

    entit ou association table table

    Sans refaire de dmonstration comme dans le cours danalyse, je vous rappelle juste que la diffrence de nom nest pas aussi arbitraire et lourde quil y parat : les concepts sont voisins mais pas tout fait identiques puisque chaque univers (lanalyse et la base de donnes) apporte sa structuration.

    2. Cration des tablesIl y a trois faons de crer une table. Il est possible :

    dutiliser un atelier de gnie logiciel (AGL) qui, partant du MCD, va gnrer le MLD puis les tables dans Access. Vous navez alors rien faire sous Access mais il ny a pas de miracle : ce que vous ne ferez pas sous Access, vous devrez le faire avec lAGL. Nous verrons cela dans la squence 5 ;

    dexcuter des requtes SQL du langage de dfinition des donnes (voir le support SQL, squence 8) ;

    de dfinir les tables la main depuis la fentre Base de donnes. Il sagit alors sim-plement de donner la liste des champs avec leur type et de dfinir une cl primaire. Cest ce que nous allons voir maintenant.

    Crer les tables ne revt aucune difficult. Il suffit de le faire. Cest long, pas trs mar-rant, mais facile et indispensable. Cest en effet une tape cruciale o les malfaons se payent trs cher. En effet, si vous dfinissez mal un champ, vous devrez revoir tous les formulaires et le code o il apparat pour les corriger. Plus vous en tes aux fondations de votre application, plus les erreurs sont coteuses corriger. Do limportance dun MCD et dun MLD corrects.

  • 8 3932 TG PA 0221

    Les tables 1/2 : origine et cration

    2A. IntroductionCest la faon la plus naturelle pour un projet de taille normale o vous ne disposez de toute faon pas dun AGL.Nous allons crer la base de donnes Bibliothque contenant deux tables dfinies ainsi dans le MLD :

    Livre (NumLivre, Titre, NbrPages, DateAchat, PrixAchat, NumAuteur#)

    Auteur (NumAuteur, NomA, PrnomA, DateNaissanceA)

    Lgende : cl primaire, cl trangre#

    Pouvons-nous nous lancer bille en tte ? Non, bien sr, car si nous avons le nom des diff-rents champs, nous navons pas leur type. Il faudrait en thorie se rfrer au dictionnaire des donnes pour les avoir. Jai bien dit en thorie car ici les noms des champs indiquent explicitement leur type.

    2B. On y va !Pour crer la table, cest simple ! Dans un premier temps, crez une base de donnes Bibliothque. Ensuite, faites les deux tapes suivantes :

    1. dans Objets, slectionnez (cliquez sur) Tables ;

    2. dans la barre doutils, cliquez Nouveau.

    Jai appliqu le paramtrage dfini dans la squence prcdente : ma base est au format de fichier 20022003 et je nai plus dassistant affich.

    1re tape : cliquez ici. 2e tape : cliquez l.

    Avant de continuer, observez la copie dcran ci-dessus et comparez-la avec la fentre base de donnes que vous avez sur votre cran.Notez que vous avez accs trois boutons :

    Nouveau cre une table. Cest cette commande que vous devez utiliser ;

    Modifier modifie la structure dune table : vous pouvez ajouter, modifier ou sup-primer des champs. Comme aucune table nest slectionne (et pour cause, la base nen contient pas), cette commande est inactive ;

    Ouvrir permet de visualiser, ajouter ou modifier les donnes dune table (ouverture de la table en mode Feuille de donnes). Comme aucune table nest slectionne, cette commande est inactive.

    Une fois Nouveau slectionn, vous obtenez un menu proposant cinq choix possibles. Cliquez sur les diffrentes propositions dans la partie droite. La partie gauche vous donne alors un (bref) descriptif.

    Vous avez appris faire cela dans le paragraphe 3C de la squence 1. Je ne peux que vous conseiller de crer un dossier (du genre Z:\BTSIG 1re anne\Alsi\Access) pour stocker vos dif-frentes bases de donnes.

  • 8 3932 TG PA 0222

    Squence 2

    Choisissez Mode Cration et validez. Vous obtenez alors la fentre suivante :

    Ici (dans longlet Gnral) figurent les proprits (caractristiques) du champ en cours ; pour linstant, aucun champ en cours donc il ny a rien.

    Le triangle matrialise le champ que lon est en train de dfinir.

    Chaque ligne correspond un champ de la table.

    Zone daide sur la saisie en cours.

    Vous remarquerez que nous allons rentrer les diffrents champs dans un tableau (un par ligne). Chaque champ sera caractris par trois informations :

    son nom (obligatoire). Il peut tre compos de caractres quelconques, dont des espaces. Cela dit, utiliser des espaces rendra lcriture des requtes et des formulai-res plus complexe. Je vous recommande de ncrire le nom du champ que sous la forme dun mot et de mettre par exemple DateLecture au lieu de Date de lecture ;

    son type (obligatoire), savoir le type des donnes quil contiendra. La saisie est aise puisquune liste droulante vous propose les diffrents types possibles ;

    une description (facultative). Cest une phrase en franais explicitant si besoin est la signification du champ.

    2C. Les types des champsRemplissez le tableau pour avoir la mme chose que moi. Lors de la dfinition des dif-frents types de champs, observez bien le contenu de longlet Gnral en bas gauche dans la fentre ; il indique les diffrentes proprits du champ courant. Nhsitez pas utiliser F1 quand la zone daide vous le propose pour lire la description des diffrents types et proprits.

    (il est clair que cette table permet de stocker des informations sur des livres.)

    Access se dfinit par Access (de mme quun compilateur VB peut tre crit en VB). Ainsi, les descriptions des tables que vous crez sont stockes dans des tables systme. Pour le voir, menu Outils/Options, onglet Affichage, rubrique Afficher, cochez Objets systme. Dcochez cette case aprs avoir vu les tables.

  • 8 3932 TG PA 0223

    Les tables 1/2 : origine et cration

    Vous remarquerez que les types ne sont pas dfinis trs finement : on ne distingue par exemple pas les entiers des rels pour le moment ! Cela se fera dans longlet Gnral. Pourquoi NumLivre est-il en NumroAuto et NumAuteur en Numrique ? Nous allons lexpliquer dans quelques lignes.Voici un rsum des diffrents types de donnes. Pour plus dexplications, cherchez dans laide en ligne !

    Typede donnes

    quoi correspond le type Remarque ou exemples de valeur

    Texte

    Caractres alphanumriques (tous les caractres du clavier). Cest le type par dfaut propos par Access. Il permet de stocker 255 caractres au maximum

    "Bonjour !""Alice au pays des merveilles"

    MmoQuelques phrases ou paragraphes (65 536 caractres maximum)

    Pour stocker du texte, utilisez Texte. Si la longueur dpasse 255 caractres, utilisez Mmo.

    Numrique Valeur numrique (entire ou relle)124,56

    Date/HeureDate et heure(ou que date, ou que heure)

    07/12/2008 12:30:00dimanche 7 dcembre 2008le choix daffichage (date et/ou heure, format) sera dfini dans un second temps.

    MontaireValeur montaire (numrique)(avec le symbole si les paramtres rgionaux de Windows sont corrects)

    12,19

    NumroAutoValeur numrique unique servant didentifiant.(Voir ci-dessous plus dexplications.)

    Cest soit une valeur alatoire tire au sort par Access, soit une valeur qui sincrmente de un en un comme un compteur.Access vous assure que vous naurez jamais deux fois la mme valeur.Pratique pour dfinir simplement un identifiant !

    Oui/Non Valeur boolenne : soit oui soit nonPour stocker des informations logiques (dont la valeur est oui ou non).Par exemple mari, dcd

    Liaison OLEObjets OLE, graphiques et autres donnes binaires

    Bof, bof. Nous ne jouerons pas avec cela.

    Lien hypertexte

    Texte considr comme un lien hypertexte : il sera soulign dune couleur particulire et si vous cliquez dessus, vous accderez la ressource correspondante

    La valeur est du texte. Mais choisir ce type de donnes, cest dire Access de considrer la valeur comme tant un lien.Si la valeur est un lien valide, tout se passera bien. Sinon, vous aurez une erreur en cliquant dessus.

    Assistant liste de choix

    La valeur saisir sera choisie dans une liste de valeurs issues dune autre table ou rentres en dur.(Voir ci-dessous plus dexplications.)

    Le type Liste modifiable est un peu particulier puisquil dfinit lorigine des donnes plutt que leur type. Nous ltudierons dans la squence sur les contrles.

    Nous pouvons maintenant dire pourquoi NumLivre est en NumroAuto et NumAuteur en Numrique. Tous nos identifiants artificiels seront des numros automatiques. Ces numros sont des valeurs entires. Or, dans Livre, NumAuteur est une cl trangre.

  • 8 3932 TG PA 0224

    Squence 2

    Ses valeurs viennent donc dun champ NumAuteur cl primaire dans une autre table (la table Auteur indique dans le MLD paragraphe 2A). La cl primaire NumAuteur sera donc NumroAuto, tandis que la cl trangre NumAuteur sera numrique.

    Concernant les types de donnes, jaimerais faire une remarque importante : comment stocker un code postal ou un numro de tlphone ? Ces informations sont des chiffres. Il semble donc logique de les stocker en valeurs numriques. Cependant, vous savez daprs votre cours darchitecture matrielle que les valeurs numriques prennent plus de place en mmoire que le texte. Or, quel est le seul intrt des valeurs numriques ? Les calculs que lon peut faire avec ! Et alors, je vous le demande solennellement : quels calculs allez-vous faire avec les codes postaux ou les numros de tlphone ? Additionner des codes postaux, calculer la moyenne de numros de tlphone cela na pas de sens ! Stocker ces donnes comme des chiffres napporte donc rien.

    En revanche, les stocker comme du texte est intressant car cela apporte :

    gain de place ;

    facilit de contrle de la saisie (le code postal comporte cinq caractres (des chif-fres), le numro de tlphone en contient dix) ;

    facilit de manipulation : pour avoir tous les clients habitant le Nord (dpartement 59), on demandera les clients dont le code postal commence par les deux caractres 59. Vous savez que les langages de programmation possdent beaucoup de primiti-ves permettant la manipulation des chanes.

    En conclusion, vous emploierez au maximum le type de champ texte, mme si les don-nes ne contiennent que des chiffres. En pratique, vous nutiliserez les types numriques que lorsque vous aurez rellement besoin de les manipuler en tant que chiffres, donc lorsque vous aurez des calculs faire.Enfin, toutes les donnes contenant des montants montaires (prix, taux de TVA) seront dfinies en type montaire. Ce type est avant tout un type numrique donc il permet les calculs. Son intrt ? Il possde deux dcimales et utilise le symbole montaire dfini dans les paramtres rgionaux de Windows. Notez que le type montaire est simplement un type rel deux dcimales avec un format daffichage particulier. Vous pourriez donc le dfinir vous-mme avec les proprits que nous tudierons dans la squence suivante. Si ce type existe en standard, cest pour vous viter davoir le crer sachant quil est trs frquent en informatique de gestion.

    2D. Spcifier les cls primaires (et trangres ?)Rien ne nous dit que NumLivre est cl primaire. Le fait dutiliser le type NumroAuto nest pas suffisant. En effet, ce type est un type comme un autre pour Access. Comment allons-nous donc faire pour spcifier la cl primaire ?En fait, cest trs simple : vous vous placez sur la ligne du champ que vous voulez dfinir en cl primaire puis clic droit et vous choisissez cl primaire (ou vous cliquez sur la cl dans la barre doutils Cration de table qui doit tre visible).

    Bouton cl primaire dans la barre doutils Cration de table.

  • 8 3932 TG PA 0225

    Les tables 1/2 : origine et cration

    Dfinissez NumLivre en cl primaire. Une petite cl apparat alors gauche du champ pour matrialiser sa nouvelle condition :

    Si vous refaites cette manipulation en restant sur NumLivre, la cl primaire disparat. Cest donc une bascule qui place ou enlve la cl primaire.

    Si vous voulez dfinir un autre champ en cl primaire, pas de problme, refaites la mani-pulation sur un autre champ et la cl primaire sera automatiquement supprime de NumLivre pour tre bascule sur le nouveau champ.

    Vous noterez que dans longlet Gnral, la proprit Indexe de NumLivre change : elle sera Oui Sans doublons si le champ est cl primaire et non sinon. Utilisez laide (placez-vous dans la zone de saisie de Index et faites F1) pour des dtails.

    Comment faire pour dfinir une cl primaire constitue de plusieurs champs ? Par exemple, pour une table issue dune association du MCD : vendre (NumProduit#, NumFournisseur#). Cest simple, il faut slectionner les champs en groupe.Pour cela, placez votre curseur souris dans la colonne contenant le triangle et la cl (juste gauche des champs), sur la ligne de lun des champs concerns.

    dans cette colonne

    Le curseur souris devient alors une flche (). Cliquez : la ligne entire est slection-ne. Placez votre curseur sur une autre ligne, toujours dans la mme colonne. Faites Ctrl+Clic. Les deux lignes seront slectionnes en mme temps. Cest exactement le principe de la slection multiple de Windows.

    Une fois que toutes les lignes contenant les champs devant faire partie de votre cl pri-maire sont slectionnes, vous pouvez cliquer droit pour slectionner Cl primaire (ou clic sur le bouton dans la barre doutils).

    Par exemple, jai slectionn les trois champs Titre, DateAchat et NumAuteur et je les ai dfinis comme constituant ma cl primaire (cela na pas de sens mais la question nest pas l). On voit plus ou moins les petits symboles cl primaire :

    Vous remarquez que NumLivre nest plus cl primaire.

    Maintenez la touche Contrle appuye et cliquez.

  • 8 3932 TG PA 0226

    Squence 2

    Faites la manipulation puis revenez dans la configuration standard (NumLivre est la seule cl primaire).Que nous reste-t-il faire ? Indiquer que NumAuteur est une cl trangre. Bon, cest vite fait : les cls trangres ne sindiquent pas ici, mais avec les relations (voir la squence 4).

    Avant de dfinir plus finement les champs, nous allons voir comment rentrer les don-nes. Fermez la table. Access vous demande si vous souhaitez lenregistrer. Dites Oui et appelez-la Livre.

    RemarqueSi vous enregistrez une table sans cl primaire, Access vous propose den ajouter une. Si vous acceptez, Access cre un champ N de type NumroAuto.

    2E. Faites une table vous-mme !

    Exercice

    En appliquant ce que nous venons de voir, crez la table Auteur dont je vous rappelle le MLD :Auteur (NumAuteur, NomA, PrnomA, DateNaissanceA)

    Utilisez les bons types de donnes (vous aurez besoin de Date/Heure, Texte et NumroAuto).

    Voil une copie cran de la solution (sans surprise) :

  • 8 3932 TG PA 0227

    Synthse

    Que retenir de cette squence ? Et bien, dassez nombreuses choses !

    La table est constitue de champs quil faut dcrire trs prcisment par :

    leur type, savoir le type des donnes contenues dans le champ ;

    la cl primaire.

    Il ne faut pas oublier que si la cl primaire est de type NumroAuto, les cls trangres associes doivent tre Numrique/entier long. Dune faon gnrale, cls primaire et trangre seront de mme type : deux nombres ou deux chanes par exemple.

    Toutes les manipulations vues doivent tre assimiles.

  • 8 3932 TG PA 0229

    Squence 3

    Les tables 2/2 : proprits des champs

    Cest dans les tables que les donnes dune base sont stockes. Cest une squence cruciale car la qualit de la dfinition des tables conditionne celle de lapplication finale. Comme jai beaucoup de choses vous dire (cest simple mais cest long), la prsentation des tables se fait dans deux squences :

    dans la squence 2, nous avons vu ce qutaient les tables et comment les crer sous Access ;

    dans cette squence, nous allons dtailler tout le paramtrage fin des champs constituant les tables.

    u Capacits attendues Vous devez savoir crer un champ de faon rigoureuse (cest--dire en exploitant correctement les proprits des champs)

    u Contenu1. Dfinition fine des champs .............................................................. 301A. Intrt des proprits des champs ........................................................... 30

    1B. Prsentation des proprits ...................................................................... 30

    2. tude des diffrentes proprits techniques ............................ 322A. Proprit Taille du champ .......................................................................... 32

    2B. Proprit Null interdit ................................................................................ 34

    2C. Proprit Chane vide autorise ................................................................ 34

    2D. Proprit Index ......................................................................................... 34

    3. Les proprits tournes vers lutilisateur ................................... 363A. Proprit Format ........................................................................................ 36

    3B. Proprit Masque de saisie ....................................................................... 37

    3C. Proprit Lgende ...................................................................................... 39

    3D. Proprit Valeur par dfaut ...................................................................... 39

    3E. Proprit Valide si ...................................................................................... 39

    3F. Proprit Message si erreur ...................................................................... 44

    4. Conclusion sur les proprits .......................................................... 45

    Synthse

  • 8 3932 TG PA 0230

    Squence 3

    1. Dfinition fine des champs

    1A. Intrt des proprits des champsIl sagit de travailler sur longlet Gnral qui apparat en bas gauche dans la fentre de cration de la table. Cet onglet permet de dfinir finement les proprits (caractristi-ques) dun champ en fonction de son type. Nous avons vu ci-dessus que :

    les champs pouvaient avoir une valeur par dfaut. Par exemple, le prix dachat des livres tait par dfaut de 0,00 . Quel est lintrt dune valeur par dfaut ? Si vous saisissez habituellement les livres le jour de leur achat, vous mettrez la date du jour en valeur par dfaut pour DateAchat. Vous naurez donc pas la saisir. Le jour o vous entrez les livres le lendemain de lachat, vous saisirez la date de la veille la place de la valeur par dfaut. Lintrt de cette dernire est de limiter le travail de saisie. On gagne du temps et on rduit le risque derreur. Cela dit, un livre ne cote jamais 0,00 . Une telle valeur par dfaut nest donc pas judicieuse puisquil faudra toujours la modifier. En fait, elle a t mise automatique-ment par Access. Il faudra la supprimer ;

    les champs pouvaient ne pas avoir de valeur (la date de naissance de Maupassant ntait pas renseigne). Il est parfois utile davoir la possibilit de ne pas donner de valeur un champ, par exemple quand :

    on na pas linformation (un client na pas voulu donner son numro de tl-phone),

    linformation nexiste pas (un auteur vivant na pas de date de dcs dfinie).

    Pour autant, certains champs doivent imprativement avoir une valeur ; par exemple, une facture dont lidentit du payeur nest pas indique cest grave !Vous lavez devin, cest au travers des proprits de chaque champ que lon prcisera une ventuelle valeur par dfaut, lobligation ou non de fournir une valeur

    En fait, les proprits fines des champs vont permettre :

    daffiner leurs caractristiques (un code postal doit tenir sur cinq caractres, la lon-gueur par dfaut de 255 caractres nest donc pas adapte) ;

    daugmenter la lisibilit des informations affiches (proprits lgende, format) ;

    daider la saisie des informations, ce qui limite le risque derreurs et permet daller plus vite (masque de saisie, valeur par dfaut, valide si).

    Bref, ces proprits ont avant tout pour objet damliorer lergonomie de lapplication. Il est un peu fastidieux de les dfinir mais il ne faut surtout pas sauter cette tape : la qualit de la base en dpend. Nous allons numrer les diffrentes proprits.

    1B. Prsentation des propritsChaque champ possde diffrentes proprits dpendant de son type (sa longueur pour du texte, son nombre de dcimales pour une valeur numrique). Lorsque vous crez un champ, Access donne des valeurs par dfaut ses proprits ; ces valeurs ne seront pas toujours adaptes la smantique du champ.Par exemple, un champ texte sera par dfaut de longueur 50. Sil reprsente un nom de famille, on pourrait se limiter 20 caractres (conomie) ; en revanche, si le champ contient un libell ou une description, on peut trouver les 50 caractres allous un peu justes.

    Paramtrage modifiable par la commande Outils/Options, onglet Tables/Requtes, cadre Taille du champ par dfaut.

  • 8 3932 TG PA 0231

    Les tables 2/2 : proprits des champs

    Il est trs important de dfinir avec prcision les proprits des champs dune table, cela vous permettra de gagner un temps prcieux par la suite. En effet, la gnration auto-matique de formulaires sappuie sur la dfinition complte des champs ; si tout nest pas renseign ou si les proprits ne sont pas correctes, il faudra modifier manuellement les champs des formulaires.

    Pour dfinir une proprit de champ dans une table, suivez les tapes ci-dessous. (Je reprends la table Auteur pour illustrer mon propos.)

    2e tape : vous pouvez alors dfinir les diffrentes proprits du champ.Elles dpendent de son type.

    1re tape : le champ dfinir doit tre le champ courant. Ici, je vais dfinir DateNaissanceA.

    Cette zone explicite la proprit courante (ici, Lgende).On vous rappelle que laide est l. Profitez-en !On ne voit pas le curseur, mais je suis en train de saisir la proprit Lgende.

    Jinsiste : les proprits dpendent du type du champ. Certaines, comme Lgende, sont communes tous les types, dautres sont propres un seul. Par exemple, le nombre de dcimales na de sens que pour le type numrique rel et pas pour le type texte.

    Vous trouverez la page suivante, les proprits des types principaux (dans lordre, Texte, Date/Heure, Numrique, Montaire et NumroAuto). Il ne sagit pas de les apprendre par cur, mais de savoir les utiliser correctement lorsque lon en a besoin. Ne tenez pas compte des valeurs attribues certaines proprits, ce sont les valeurs par dfaut dAccess.

  • 8 3932 TG PA 0232

    Squence 3

    La proprit Format du type Montaire propose notamment la valeur Euro (pour utiliser lunit euro) ou Montaire pour utiliser lunit montaire mentionne dans les paramtres rgionaux de Windows (logiquement leuro galement pour nous).

    Nous allons tudier les diffrentes proprits. Pour une explication plus dtaille, cliquez dans leur zone de saisie et faites F1. Je suis le premier me servir de laide lorsque je veux dfinir correctement les champs.

    2. tude des diffrentes proprits techniquesJe ntudierai pas les proprits dans lordre o elles sont proposes dans linterface. Jai prfr les regrouper par thme. Cela ne change videmment rien !Les proprits techniques sont avant tout destines Access. Elles permettent le para-mtrage et la manipulation correcte des donnes.

    2A. Proprit Taille du champComme toute variable en programmation, un champ est dun type prcis quil faut indi-quer lors de la conception de la table. En programmation, nous dfinissons complte-ment le type ds la dclaration. En effet, on peut indiquer la longueur de la chane, le type dentier (byte, octet, integer) ou de rel.Sous Access, il faut dans un premier temps dfinir le type gnral (numrique, texte) et, dans un second temps, prciser le sous-type avec la proprit Taille du champ.

    Ce nest pas un terme technique. Comme il y a beaucoup de proprits, je les ai classifies selon leur objet pour des raisons pdagogiques.

  • 8 3932 TG PA 0233

    Les tables 2/2 : proprits des champs

    Vous remarquerez les valeurs par dfaut :

    un champ numrique sera Entier long. Vous disposez dautres sous-types entiers, mais aussi rels ;

    un champ texte fera 50 caractres (le maximum tant 255).

    Rappel : une cl trangre lie une cl primaire dfinie en NumroAuto doit tre Entier long.

    Cette proprit est importante pour les champs Texte et Numrique. En limitant la taille des champs, vous garantissez que les donnes saisies ne dpassent pas une certaine lon-gueur. Inversement, prciser la longueur du champ vite de perdre de la place (utiliser 50 caractres pour stocker un nom est trop gnreux). Les tailles sont les suivantes :

    pour les champs Texte, la taille propose par dfaut est de 50 et peut tre comprise entre 1 et 255 ;

    pour les champs Numrique, la taille dtermine la fourchette des valeurs autorises. Le tableau ci-dessous prsente ces diffrents intervalles ainsi que la place consom-me pour stocker la valeur. Cest une recopie de laide (sauf que laide donne les noms de type en anglais ; jai repris les noms franais que vous trouverez dans la liste droulante de la proprit Taille du champ) :

    Type Intervalle de valeurs Dcimales Taille de stockage en octets

    Octet 0 255 0 1

    Entier -32 768 32 767 0 2

    Entier long (par dfaut) -2 147 483 648 2 147 483 647 0 4

    Dcimal de 1038 1038 (en gros) 28 12 (douze !)

    Rel simple -3,4x1038 3,4x1038 7 4

    Rel double -1,797x10308 1,797x10308 15 8

    Vous noterez la palette de choix : on peut aller jusqu 10308 soit 1 suivi de 308 zros avec le rel double. Si lon veut de la prcision, on a le type dcimal avec 28 dcimales. Notez que plus on a de chiffres, plus cela prend de place en mmoire : l o vous stockez un dcimal, on peut mettre douze octets.Il est conseill dutiliser la plus petite dfinition de taille possible afin doptimiser les temps daccs :

    pour un numro de rue, une taille entier suffit (certes, les valeurs ngatives ne ser-vent pas, mais enfin le type de donnes entier positif de 0 65 535 nexiste pas sous Access) ;

    pour un ge, octet est idal. Laisser Entier long (la valeur par dfaut) consommerait 4 fois plus de mmoire pour rien.

    Ne tombez pas dans lexcs contraire en allouant des tailles trop parcimonieuses :

    un numro de rue dfini comme octet posera un jour ou lautre des problmes ;

    un nom cod sur dix caractres nest pas une bonne ide.

    Il faut bien comprendre que la dfinition de la taille (et du type) doit tre valable pour tous les enregistrements : si une table contient 100 000 enregistrements, que pour 99 999 de ceux-ci la valeur du champ X est code sur 2 caractres et que pour lenregistrement restant elle lest sur 10, il faudra dfinir X sur 10 caractres (ou, de faon plus efficace,

    De mmoire, je crois que le nombre datomes dans lunivers est de lordre de 1030. Or, un atome, cest petit, et lunivers, cest grand.

  • 8 3932 TG PA 0234

    Squence 3

    revoir le codage de ce champ). La dfinition sera donc faite en fonction de loccurrence suppose la plus grande.

    2B. Proprit Null interditLa valeur Null est une valeur prdfinie (constante) qui signifie que le champ est vide (ne contient rien). Ainsi, si vous crez un enregistrement, les champs qui ne seront pas remplis auront la valeur Null. Vous pouvez ensuite tester sous SQL avec loprateur is si un champ contient ou non une valeur (voir le paragraphe 6B de la squence 4 du cours SQL).Pour quun champ puisse contenir la valeur Null, vous devez affecter la valeur non la proprit Null interdit. Je vous conseille de prendre cela en compte dans la rgle de validit (paragraphe 3E) et dautoriser soit la valeur nulle, soit une valeur valide. Vous lcrirez donc sous la forme Est Null ou (dans Est Null vous retrouvez la forme fran-cise du is Null de SQL). Ce nest quun conseil car Access accepte que vous nincluiez pas Null dans la condition. Il faut nanmoins viter cette permissivit car lensemble manque alors de cohrence.

    2C. Proprit Chane vide autoriseAutorise la saisie dune chane de caractres de longueur 0. Cette proprit ne concerne que les champs de type Texte et Mmo. Attention ne pas confondre labsence de valeur (Null) et la valeur "" (chane vide) qui, bien que particulire, est quand mme une valeur.Pour distinguer les deux proprits, lisez laide.

    2D. Proprit IndexUn index facilite et acclre les requtes, les recherches et les tris sur les tables. Access utilise lindex comme vous celui dun livre : pour trouver un enregistrement daprs une valeur dun champ index, il recherche la valeur de ce champ dans lindex et obtient la position de lenregistrement dans la table. Il peut donc accder directement dans la table lenregistrement voulu.

    Si un champ nest pas index, chercher les enregistrements ayant une valeur prcise pour ce champ oblige parcourir toute la table.

    Lintrt de lindex est double : il est toujours maintenu tri et ses enregistrements sont courts puisquils contiennent uniquement le champ index et la position de lenregistre-ment correspondant. Pour ces deux raisons, laccs pralable lindex est beaucoup plus rapide que le parcours de la table.

    Par exemple, pour chercher la date de naissance de lanimal sappelant Niok, on va saider du fait que le champ Nom est index. Ainsi, on va chercher dans lindex le numro de lenregistrement correspondant lanimal sappelant Niok. On peut alors accder directement lenregistrement recherch dans Animal comme illustr ci-aprs

    Dans la version Access 97, ctait une obligation : si vous autorisiez les valeurs nulles tout en dfinissant la proprit Valide si, vous deviez ajouter cette dernire Est Null ou pour expliciter que la valeur devait soit tre nulle, soit vrifier une condition prcise. Access 2000 a supprim cette contrainte car elle passait mal, les non-informaticiens ne pensant pas modifier Valide si. Cette permissivit est ennuyeuse pour nous car il faut bien reconnatre que la proprit Valide si nest pas rigoureuse si on se permet de limplicite.

  • 8 3932 TG PA 0235

    Les tables 2/2 : proprits des champs

    Voici la table Animal et lindex sur NomA cr :

    Lindex nous dit que la valeur Niok de NomA se trouve dans le 4e enregistrementde la table Animal.

    RemarqueAttention la confusion ! Il faut bien distinguer PositionEnreg dans lindex (entre 1 et n si la table contient n enregistrements) et NumA dans Animal, identifiant dont la valeur est arbitraire. Par exemple, lenregistrement li Niok est bien le 4e dans le tableau ; le fait que lidentifiant NumA vaille 9 est sans objet ici.

    Le principe est simple :

    si je recherche le ou les animaux ns le 24/03/1992, Access va parcourir la table Animal du dbut la fin puisquil ne dispose pas dindex ;

    en revanche, si je veux la date de naissance de Niok, Access va exploiter lindex en cherchant lentre correspondante. Lindex tant maintenu tri, cela va trs vite (voir la recherche dichotomique en cours de programmation). Lindex indique que lenregistrement cherch est le 4e. Access y accde directement et renvoie alors la valeur du champ DateNaissanceA, soit 24/03/1992.

    Les index sont grs de faon transparente par Access : lorsque vous pensez accder directement un enregistrement, vous passez en fait pralablement par lindex pour connatre sa position.Cest le concepteur de la base qui dcide quels sont les champs indexer. Si lindex facilite laccs un champ, il ralentit les oprations de suppression, de modification et dinsertion : chacun de ces traitements, les index doivent tre reconstruits pour rester tris. Indexer tous les champs constitue donc une erreur de conception grave. En pratique, on dfinira un index sur un champ si lon effectue frquemment lune des oprations suivantes :

    tri de la table sur ce champ ;

    recherche utilisant ce champ.

    La cl primaire tant un champ privilgi pour rechercher des enregistrements, Access dfinit automatiquement un index dessus.

    La proprit index peut avoir diffrentes valeurs :

    Valeurs de la proprit Index

    Valeur Signification

    Non Pas dindex sur ce champ

    Oui - Avec doublons Crer un index en autorisant des valeurs identiques (exemple : index sur un nom)

    Oui Sans doublonsCrer un index sur un champ dont toutes les valeurs sont uniques.cas des cls primaires

    Jai cr lindex comme une table Access pour illustrer mon propos. Cest bien entendu fictif. Notez le nom de lindex : IndexNomAAnimal pour index sur le champ NomA dans la table Animal .

  • 8 3932 TG PA 0236

    Squence 3

    Je vous rappelle (nous lavons vu dans le cours SQL) quun doublon est une rptition dune valeur. La valeur de lidentifiant tant unique, il est normal que la cl primaire soit indexe sans doublon.En revanche, si lon dfinit un index sur une cl trangre, il est logique daccepter les dou-blons. Ainsi, dans les tables Livre (NumLivre, NumAuteur#) et Auteur (NumAuteur) :

    les cls primaires NumLivre et NumAuteur sont indexes sans doublons ;

    la cl trangre NumAuteur dans Livre est indexe avec doublons, ceci matrialisant le fait que je peux possder plusieurs livres du mme auteur.

    3. Les proprits tournes vers lutilisateurJai dj expliqu plusieurs reprises limportance dune interface intelligente , cest--dire devanant les interrogations de lutilisateur et empchant au maximum les erreurs de saisie des donnes. Partant du principe quune application fonctionne, nous dirons quelle est :

    mdiocre si elle plante lorsque lutilisateur fait une saisie errone ;

    moyenne si elle dtecte lerreur et affiche un message davertissement ;

    bonne si elle empche lerreur (par exemple, en interdisant de saisir des lettres dans un tlphone) ;

    excellente si linterface est si bien conue que lutilisateur ne fait pas derreur car il est parfaitement guid. En pratique, une faute de frappe est toujours possible ; une excellente application devra donc pralablement tre bonne.

    Les proprits ci-dessous vous aideront raliser une excellente interface. Elles sont donc indispensables.

    3A. Proprit FormatLe format correspond au mode daffichage de la valeur ; il est indpendant de la valeur stocke. Cest exactement le mme principe que le format appliqu aux cellules Excel. On choisira le format en fonction de la smantique (et non du type) de la donne. Par exemple, la valeur numrique 7365478821 sera affiche (formate) :

    73 65 47 88 21 si elle reprsente un numro de tlphone ;

    7 365 478 821 si cest un nombre ;

    7 365 478 821 si cest une valeur montaireDe mme, les dates peuvent tre affiches selon plusieurs formats : 20/05/1799 est le format abrg, 20-dc-1799 le format rduit.

    Le format est trs important dans lergonomie de lapplication. En effet, lutilisateur non-informaticien peroit la donne et son mode daffichage comme un tout. Il aura bien du mal reconnatre la date 07/12/2008 dans le texte 20081207 (format AAAAMMJJ). Cest un problme rcurrent en informatique : lutilisateur ne connat de lapplication que linterface. Laffichage des donnes est donc crucial.

    Access nest pas tanche : il exploite certains rglages de Windows, notamment les Paramtres rgionaux dfinis dans le Panneau de configuration. Cest l que vous indiquerez la faon franaise dcrire la date, lheure, quel symbole montaire utiliser la mme base Access sur un ordinateur paramtr autrement donnera donc un affichage diffrent. Excel, Word et autres utilisent galement ces rglages.

  • 8 3932 TG PA 0237

    Les tables 2/2 : proprits des champs

    Access propose de nombreux formats pour les dates, les chiffres Sils ne vous suffisent pas, vous pouvez dfinir les vtres. Allez voir laide pour plus dinformations.

    Changez quelques formats, par exemple celui de la date dachat puis affichez le contenu de la table pour vrifier que les donnes sont affiches selon votre nouveau format.

    3B. Proprit Masque de saisie

    3B1. DfinitionLe masque de saisie permet de dfinir les caractres autoriss et interdits lors de la saisie de la valeur dun champ. Si vous entrez un caractre autoris, il sera pris en compte. En revanche, la saisie dun caractre interdit sera rejete de faon douce : on attend des chiffres et vous appuyez sur une lettre ? Et bien, rien ne se passera, cest comme si vous naviez rien tap.Le masque peut :

    limiter les caractres autoriss pour la saisie de la valeur du champ (exemple : un code postal ne doit tre constitu que de chiffres donc appuyer sur les lettres ne produira rien) ;

    rendre facultatif ou obligatoire la saisie de certains lments (exemple : la cl dans un numro de compte) ;

    changer la casse des lettres saisies (exemple : mettre la premire lettre dun nom en majuscule). Cela permet duniformiser laspect des donnes.

    Le masque rend plus intelligente la saisie des donnes et permet dviter beaucoup de fautes de frappe. Il apporte non seulement un gain de temps, mais aussi une fiabilit et une homognit accrues des donnes.

    Concrtement, quest-ce quun masque ? Cest une chane de caractres. Et chaque carac-tre du masque contrle le type dun caractre que vous saisissez. Le 1er caractre du masque correspond au 1er que vous saisissez, le 2e au 2e

    3B2. Le contenu du masqueEn vrai, le masque est une chane de caractres constitue de une trois sections spa-res par des ; . Je ne dtaille que la premire, pour les deux autres, utilisez laide ou lassistant.Le tableau suivant prsente la liste des principaux caractres pouvant former la premire section du masque.

    Enfin, pas tout fait car le masque peut contenir des caractres de contrle modifiant votre saisie comme > et < pour forcer le passage en majuscules ou minuscules. (Voir la suite du para-graphe.)

  • 8 3932 TG PA 0238

    Squence 3

    Diffrents caractres constituant le masque

    Caractre Signification La saisie est

    0 Chiffre (0 9), signes + et refuss obligatoire

    9 Chiffre ou espace, signes + et refussfacultative

    # Chiffre ou espace, signes + et accepts

    LLettre (A Z, a z)

    obligatoire

    ? facultative

    ALettre ou chiffre

    obligatoire

    a facultative

    &Caractre quelconque ou espace

    obligatoire

    C facultative

    \ Le caractre qui suit dans le masque est affich tel quel (il ne contrle donc pas la saisie). Un caractre sans ambigut (donc pas 0, 9, #, L, ?, A, a, &, C, \, < et >) peut se passer dtre prfix par \ sans objet

    (caractres de contrle)< Convertit tous les caractres saisis qui suivent en majuscules (toute saisie, minuscule ou majuscule, saffiche donc en majuscule)

    > Convertit les caractres qui suivent en minuscules

    Notez que vous pouvez filtrer trois familles de touches : les chiffres, les lettres et le carac-tre espace.Pour bien comprendre, envisageons le masque 09>LL. Quelles donnes va-t-il permettre de saisir ?

    le 1er caractre du masque est 0. Le premier caractre saisi doit donc obligatoire-ment tre un chiffre ;

    le 2e caractre du masque est 9. Le deuxime caractre peut donc tre un chiffre ou tre saut (on passe donc au caractre suivant dans le masque) ;

    le 3e caractre est >. Il ne correspond aucune saisie de lutilisateur mais indique lapplication que toutes les lettres qui vont maintenant tre saisies doivent tre converties en majuscules ;

    le 4e caractre du masque est L. Le troisime caractre saisi doit donc tre une lettre ;

    idem pour le 5e caractre (qui est le 4e si le second chiffre na pas t saisi).Finalement, la donne saisie doit tre constitue dun ou deux chiffres suivis par deux lettres. Les lettres seront en majuscules (donc, si elles sont saisies en minuscules, lappli-cation les convertira en majuscules). La donne saisie fera donc 3 ou 4 caractres. Voici deux exemples de donnes acceptes par le masque :

    8AB ;

    12ZE.

    Il faut bien observer que le masque fonctionne de faon purement syntaxique. Au fur et mesure de votre saisie, les touches interdites sont dsactives. Cest tout. Le masque ne permet pas de vrifier la valeur de la saisie. Si grce lui on peut obliger saisir un chiffre, on ne peut imposer quil soit compris entre 5 et 9.

    Ou le deuxime si le second chiffre, facultatif, na pas t saisi La notion de saisie facul-tative nest pas si vidente !

  • 8 3932 TG PA 0239

    Les tables 2/2 : proprits des champs

    Remarques :

    un masque de saisie dispose encore dautres fonctionnalits voir laide ; vous pou-vez notamment prsenter un gabarit lutilisateur. Par exemple, une zone de texte o lon doit saisir une date contiendra __/__/____ . Cest trs lisible !

    pour un contrle vraiment pouss de la saisie (p. ex. un numro de scurit sociale commence par le chiffre 1 ou 2), le masque nest plus suffisant. Il faut utiliser la proprit Valide si (voir le paragraphe 3E) ou travailler par programme ;

    laide en ligne vous conseille avec raison dutiliser lassistant masque de saisie pour dfinir vos masques.

    Le rle du masque est assez vident mais son codage par une chane de caractres est tarabiscot, dautant que lon mlange le filtrage des caractres avec leur mise en forme (majuscule ou minuscule). La gestion des caractres facultatifs augmente la complexit. Cest ennuyeux car le masque est une fonctionnalit essentielle dont vous ne devez pas vous passer. Faites des tests et consultez laide pour tre sr de matriser cet outil.

    3C. Proprit LgendeLa lgende sera utilise comme libell des contrles associs aux champs dans les formu-laires et les tats. (Nous tudierons cela plus tard.) Sans lgende, cest le nom du champ qui est utilis.La lgende apparatra au bas du formulaire lors de la saisie du champ correspondant. Cest une aide augmentant lergonomie de lapplication. Pour une date de naissance, on mettra par exemple date de naissance : jj/mm/aaaa . Lutilisateur saura alors quoi saisir et comment le saisir. Bien entendu, vous exploiterez en mme temps le masque !

    3D. Proprit Valeur par dfautSi un champ prend trs souvent la mme valeur, il est intressant de linitialiser par dfaut cette valeur. Lutilisateur naura donc saisir le champ que lorsquune valeur diffrente devra tre saisie.Par exemple, Access place 0 par dfaut pour les champs numriques et montaires.

    Il est galement possible de placer des expressions comme valeur par dfaut. Ainsi, on peut initialiser un champ date la date du jour par lexpression =Date(). On retrouve la syntaxe Excel : le = indique une formule, Date est une fonction ne prenant aucun paramtre (do les parenthses vides) et renvoyant la date systme.

    3E. Proprit Valide siLe masque de saisie dfinit la syntaxe de la saisie en obligeant entrer les bons carac-tres (lettre, chiffre ou espace pour chaque touche appuye). On peut aller plus loin en contrlant la valeur saisie. Par exemple, il est bon de sassurer quune date de facture ou de rglement nest pas postrieure la date du jour. Pour faire cela, on utilisera une rgle de validation.

  • 8 3932 TG PA 0240

    Squence 3

    La rgle est exprime sous la forme dune expression boolenne. Les oprateurs habituels de comparaison (, =) et les connecteurs boolens (et, ou et non) sont autoriss. La saisie ne sera accepte que si la rgle de validit (c--d. la condition) est vrifie.Attention, la syntaxe est un peu tordue pour un informaticien.

    Supposons que lon veuille saisir un code tarif compris entre 0 et 9 inclus. Si le champ sap-pelle CodeTarif, il devra trivialement vrifier la condition CodeTarif>=0 et CodeTarif=0 et

  • 8 3932 TG PA 0241

    Les tables 2/2 : proprits des champs

    Rgle de validit Explication

    0 la valeur saisie, numrique, ne doit pas tre nulle

    "0" la valeur saisie (du texte) ne doit pas tre le caractre 0 (la saisie 00 sera accepte)

    >50 la valeur doit tre suprieure 50

    Comme "A?????" la saisie doit commencer par A et faire 6 caractres

    >#12/12/2006# la date saisie doit tre postrieure au 12/12/2006

    =0 Et

  • 8 3932 TG PA 0242

    Squence 3

    Cela donne quatre combinaisons, soit :

    Comme "1????????????" ou Comme "2????????????" ou Comme "1??????????????" ou Comme "2??????????????"

    Noubliez pas de dfinir la valeur de Message si erreur.

    Comme la rgle Valide si ci-dessus nest pas lisible ni aise utiliser, on peut exploiter le fait que la longueur du numro (13 ou 15 chiffres) est dtermine par le masque. Dans la rgle de validit, on peut se contenter de vrifier que le numro commence par 1 ou 2, quelle que soit la suite de chiffres.On crira donc : Comme "1*" ou Comme "2*"

    Le problme, cest que Message si erreur ne peut plus tenir compte de la longueur erro-ne. Si vous tapez le numro 1234, vous obtiendrez un message derreur standard dAc-cess bas sur le non-respect du masque. (Il nest pas possible den dfinir un soi-mme pour ce cas.)Voici le message en question ci-dessous. Imaginez la tte de lutilisateur !

    ComplmentLa cl dun numro de scurit sociale (les deux derniers chiffres optionnels) permet de vrifier la validit dun numro. Cela vite toute erreur de saisie. Pour lexploiter, il faut faire un calcul arithmtique sur les chiffres. Cest hors de porte de notre rgle de validit. Si nous voulons faire ce calcul, il faudra le faire par programmation dans les formulaires.

    Une petite remarqueSi vous avez test cela sous Access (ce que vous avez fait si vous tes srieux), vous aurez observ quAccess a mis un index sur NumScu (je lai enlev ci-dessous). Pourquoi ? Cest le ct parfois pnible je moccupe de tout des outils Microsoft : allez voir le menu Outils/Options, onglet Tables/Requtes, zone Index automatique.

    Autres propritsIl fallait penser dfinir la taille du champ 15 caractres, soit la plus grande longueur possible. Jai galement dfini Message si erreur (le texte complet est Le numro doit commencer par 1 (homme) ou 2 (femme)) et les proprits qui suivent. Voyez les para-graphes suivants pour lexplication de ces proprits.

    Les copies dcran suivantes vous prsentent la dfinition du champ et ses proprits ainsi que les exemples de saisie des diffrents cas. Testez cela et vrifiez que vous ne pouvez pas saisir de numro invalide.

  • 8 3932 TG PA 0243

    Les tables 2/2 : proprits des champs

    Remettons en cause notre travailLors de lcriture de ce cours, javais crit la proprit Valide si avec les quatre termes Comme. Lors de la premire relecture, jai eu lide de simplifier lexpression en passant seulement deux termes. Javoue que jtais fier de moi La deuxime relecture ma permis de me rendre compte du problme dindivisibilit de la cl (elle est soit prsente sur deux chiffres, soit absente. Le numro de scurit sociale doit donc faire treize ou quinze chiffres mais pas quatorze). Cest la suite de la troisime relecture (et oui, la troisime) que jai rajout cette partie remise en cause.

    En fait, la troisime relecture ma fait prendre conscience que ma simplification de Valide si tait htive. En effet, la version avec les quatre Comme permettait dimposer un nombre treize ou quinze chiffres, ce qui nest pas redondant avec le masque qui lui autorisait treize, quatorze ou quinze chiffres.

    Voyons cela ; avec mon Valide si simplifi, je peux rentrer un nombre quatorze chiffres donc fatalement erron :

    En remettant la proprit Valide si complte, cette saisie nest plus accepte :

    Notez au passage que jai modifi la proprit Message si erreur qui contient maintenant Le numro doit commencer par 1 (homme) ou 2 (femme) et contenir 13 ou 15 chiffres.

    En guise de conclusion, je voudrais critiquer (de faon constructive) ce cours : pourquoi ai-je pris la peine de vous signaler ce quil faut bien appeler une erreur de ma part ? Il aurait t naturel de ne rien dire de mes relectures et de corriger directement mon support comme je lai fait jusqu prsent. Si jen ai parl, cest des fins pdagogiques : lexercice semblait assez simple mais finalement ne ltait pas.

    Comme "1????????????" ou Comme "2????????????" ou Comme "1??????????????" ou Comme "2??????????????"

  • 8 3932 TG PA 0244

    Squence 3

    La preuve, jai fait une erreur. La leon est de ne pas traiter toutes ces proprits en ayant la tte ailleurs : ce nest pas trs difficile, mais il faut tout de mme tre attentif dautant que mon erreur ntait pas anodine puisquelle permettait la saisie de donnes errones, ce qui est rellement gravissime.

    3F. Proprit Message si erreurSi la saisie viole la rgle de validit, un message abscons mentionnant lexpression boo-lenne de validit saffiche. Ceci nest videmment pas convivial ! La proprit Message si erreur permet de dfinir le message afficher dans ce cas.Pour vous le prouver, reprenons lexercice prcdent avec le numro de scurit sociale. Je vais de nouveau saisir un numro quatorze chiffres, avec puis sans texte dans Message si erreur. Je vous invite tester cela par vous-mme.Si une valeur est dfinie pour Message si erreur, elle est utilise :

    Si Message si erreur nest pas dfini

    Dois-je conclure ? Et bien, il nest pas raliste desprer que lutilisateur comprenne ce dernier message.

    Pour servir quelque chose, le message devra reprendre, en franais, la smantique de la rgle de validit. Pour la saisie du numro de scurit sociale, jai indiqu et expliqu les valeurs permises. Il est important dexpliquer quand cest possible. Cela fait moins baguette magique et lutilisateur retient mieux ce quon lui explique, de mme que vous retenez mieux des rgles expliques et justifies plutt quimposes.

    Une dernire chose qui a son importance : moins dune grosse erreur de ma part, il est impossible de dfinir un message derreur sappliquant au masque (la proprit Message si erreur ne traite que les erreurs lies Valide si). Ainsi, lorsque je tente de ne rentrer que huit chiffres pour mon numro de scurit sociale, cest le masque qui rejette la saisie puisquil oblige rentrer entre treize et quinze chiffres comme lon lavons vu prcdemment. Jobtiens alors :

    Pour le coup, on obtient un message qui nest pas des plus limpides. Je ne vois aucune solution. Cela dit, les tirets prsents dans la zone de saisie et correspondant aux chiffres oublis sont assez parlants.Profitons de cette dernire remarque pour observer que cest uniquement lorsque le masque valide la saisie (cette dernire est donc acceptable) que Valide si est valu pour dterminer si la saisie peut finalement tre accepte.

  • 8 3932 TG PA 0245

    Les tables 2/2 : proprits des champs

    4. Conclusion sur les propritsImaginez-vous dans le meilleur des mondes o personne ne fait derreur. Toutes ces fonctionnalits de vrification sont alors inutiles ! Mais, dans la vraie vie, tout le monde peut faire des erreurs en saisissant des donnes. Cela va de la faute de frappe bte et mchante lerreur venant de lincomprhension de la donne attendue.Une erreur est dramatique : de mme que lon peut dmontrer nimporte quoi avec des hypothses fausses, la base de donnes ne sera pas fiable si les donnes entres sont invalides. Il convient de vrifier autant que possible la validit des donnes entres :

    un ge est compris entre 0 et 120 ;

    un code postal est constitu de 5 chiffres ;

    une date de facture ne doit pas tre postrieure la date du jour ;

    Vous remarquerez que ces vrifications sont la fois syntaxiques (vrification des carac-tres constituant la donne) et smantiques (vrification de la valeur de la donne).Bien entendu, lapplication ne peut pas vrifier parfaitement les donnes : si jentre dans la base que jai 90 ans, la saisie sera valide car elle est plausible. De mme, si vous saisissez 16/08/2008 au lieu de 17/08/2008 pour une date de naissance, lapplication ne pourra pas dtecter lerreur.

    On se contente donc de faire au mieux. Nos deux objectifs sont :

    le confort de saisie (lergonomie) ;

    la qualit de la saisie (la validit des donnes).

    Notons que vous pourriez faire tout cela par programmation bien plus tard lors de lcri-ture de lapplication. Mais alors, quel est lintrt de dfinir toutes ces proprits lors de la cration des champs ?Cela va vous simplifier normment le travail : dans tout formulaire ou tat utilisant ces champs, tout ce que vous avez dfini (masque, format) sera automatiquement utilis.Si vous ne fournissez pas ces informations lors de la dfinition des champs, il faudra tout refaire chaque utilisation du champ dans un formulaire ou un tat.

  • 8 3932 TG PA 0247

    Synthse

    Que retenir de cette squence ? Et bien, dassez nombreuses choses !

    Une table est constitue de champs quil faut dcrire trs prcisment par les nombreuses proprits permettant de les dfinir finement (sous-type du champ, ergonomie et contrle de la saisie).

    Jai beaucoup insist sur limportance de la dfinition fine et prcise des champs. En effet, cest un peu fastidieux mais cest crucial :

    pour la suite du dveloppement de lapplication car cela vous simplifiera le travail lors de la cration des formulaires et des tats ;

    pour le fonctionnement futur de lapplication (rejet des donnes erro-nes).

    Noubliez pas que notre exercice sur le numro de scurit sociale nous a entra-ns beaucoup plus loin que je ne lavais initialement prvu. Cela montre que ces proprits sont plus dlicates quil ny parat.

    Cela mritait bien dix-sept pages denses mais intressantes, non ?

  • 8 3932 TG PA 0249

    Squence 4

    Relations et intgrit rfrentielle

    Dans cette squence, nous terminons la dfinition des tables en les reliant entre elles pour identifier les cls trangres. Nous tudierons galement finement un outil trs performant : lintgrit rfrentielle.

    u Capacits attendues Savoir crer les relations

    Comprendre le rle de lintgrit rfrentielle et pouvoir lappliquer bon escient

    u Contenu1. Relations entre les tables .................................................................. 501A. Dfinition .................................................................................................... 50

    1B. Mise en uvre ............................................................................................ 50

    1C. Visualisation des relations dans les tables ............................................... 53

    2. Intgrit rfrentielle ......................................................................... 562A. Dfinition .................................................................................................... 56

    2B. Un exemple pour comprendre .................................................................. 56

    2C. Et bien appliquons lintgrit rfrentielle .......................................... 57

    2D. Modification ou suppression dune relation ............................................ 60

    2E. Attention, les enseignants peuvent se fcher ......................................... 60

    Synthse

  • 8 3932 TG PA 0250

    Squence 4

    1. Relations entre les tables

    1A. DfinitionLassociation [1n] du MCD est reprsente par la notion de cl trangre dans le MLD. Comment traduire cela sous Access ? Nous avons vu dans le paragraphe 2D de la squence 2 que cela ne se faisait pas lors de la dfinition des tables. Le fait de donner le mme nom aux deux champs du couple cl primaire/cl trangre ny change rien.Vous devez raliser une opration spcifique permettant Access didentifier les cls trangres associes aux diffrentes cls primaires. Cela va se faire en reliant les cls primaires leurs cls trangres par le biais de relations. Les relations permettent gale-ment de dfinir lintgrit rfrentielle.Attention, les relations sont souvent ngliges par les tudiants. Si vous ne les mettez pas en place, Access na aucun moyen de relier les tables entre elles. Avant daller plus loin, consultez laide dAccess pour une premire initiation : cherchez relation tables puis choisissez la rubrique Relations entre les tables puis propos des relations dans une base de donnes Access (MDB).

    1B. Mise en uvreLes relations concernent lensemble de la base et non une table ou un formulaire. Il faut donc que la fentre base de donnes soit active (cliquez dessus ou faites F11) pour y accder.Lorsque cest le cas, lancez la commande Outils/Relations ou cliquez sur le bouton correspondant dans la barre doutils Base de donnes.

    tablir des relations na de sens que si vous avez des champs relier, cest--dire au moins un couple cl primaire/cl trangre. Lisez ce qui suit avant de passer la ralisation.La premire tape consiste ajouter les tables participant aux relations, donc toutes les tables possdant un lment de couple cl primaire/cl trangre. Normalement, toutes les tables de la base sont concernes puisquelles sont relies par au moins une association.La seconde tape consiste relier chaque cl primaire avec sa cl trangre. Cela se fait graphiquement la souris.

    Je vous rappelle que la notation [1-n] indique une binaire ayant en cardinalits maximales 1 pour une patte et n pour lautre. (Relisez le paragraphe 4D de la squence 3 du cours danalyse.) Ouvrez une table quelconque et rduisez la taille de la fentre pour voir lcran la fentre de la base et celle de la table. Cliquez alors alternativement dans lune puis dans lautre. Observez que les menus et les barres doutils changent en fonction de lobjet slectionn : Access ne vous propose que les commandes pertinentes associes lobjet en cours de manipulation.

  • 8 3932 TG PA 0251

    Relations et intgrit rfrentielle

    Je vais illustrer la dmarche sur un petit exemple. Voici le MCD :

    0,n

    0,n

    1,nPERSONNENumPersonneNomAdresseVille

    DATEJJMMAAAA

    LIVREISBNTitreLivreDateAchat

    AUTEURNumAuteurNomAuteurPrnomAuteur1,1 0,n

    emprunter

    crire

    Le MLD est alors :

    Personne (NumPersonne, Nom, Adresse, Ville)

    Livre (ISBN, TitreLivre, DateAchat, NumAuteur#)

    Emprunter (NumPersonne#, JJMMAAAA, ISBN#)

    Auteur (NumAuteur, NomAuteur, PrnomAuteur) primaire, trangre#

    (Si vous ne comprenez pas pourquoi la table Date nest pas cre, allez voir le cours danalyse, prcisment squence 5, paragraphe 2H1.)

    Nous avons les couples cl primaire/cl trangre suivants :

    NumAuteur (cl primaire dans Auteur, cl trangre dans Livre) ;

    NumPersonne (primaire dans Personne, trangre dans Emprunter) ;

    ISBN (primaire dans Livre, trangre dans Emprunter).

    Premire tape, je cre les tables comme nous avons appris le faire.

    Nous lanons ensuite loutil Relations. La fentre des relations est naturellement vide. Dans un premier temps, nous ajoutons les tables concernes par les relations. Vous remarquerez que les cls primaires sont en gras.

    Comment crer une relation ? Je vous rappelle que lobjectif est de faire le lien entre la cl primaire dune table et les cls trangres correspondantes situes dans dautres tables. Il faut donc associer un champ dune table un champ dune autre table. Il y a deux techniques.

    1B1. Premire techniqueNous allons crer la relation sur le champ NumAuteur entre les champs NumAuteur des tables Auteur et Livre.

    Une cl primaire sera associe plusieurs cls trangres si lentit p