access - les bases

Download Access - Les Bases

If you can't read please download the document

Upload: tomecruzz

Post on 02-Oct-2015

215 views

Category:

Documents


2 download

DESCRIPTION

Access - Les Bases.pdf

TRANSCRIPT

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 1/21

    Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts

    Office Access Excel Word Outlook PowerPoint SharePoint MSProject OpenOffice&LibreOffice

    ForumAccess F.A.QAccess F.A.QVBA Tutoriels Sources Outils Livres AccessTV Office2010

    AccessLesBases

    Voicilarplique'amliore'ducoursquej'ail'habitudededonnerpourl'initiationAccess.J'esprequ'ilvousserautile...Cecoursvavolueravecletemps,alorsrevenezvoiroj'ensuisrgulirement.

    Articlelu27281fois.

    L'auteur

    MaxenceHUBICHE

    L'article

    Publile18aot2004Misjourle10janvier2007

    Versionhorsligne

    ePub,AzwetMobi

    Lienssociaux

    I.Introduction

    Bonjour,

    Nousallonsessayer,traverscescrits,decomprendrelesmcanismesetlesfonctionnalitsfondamentalesd'Access.L'objectifdecettepartien'estpasdematriserceproduit,maisd'enavoirunebonnevued'ensemble.

    Danslecursusquenousvousproposons,vousvoussituezici:

    Access:LesBases

    Aprsunrapidetourd'horizond'unemthodologied'analysesimplifie,nousabordonslaquestionsdestables,desrequtesslection,desformulairesetenfin,destats.

    Lescourssuivantspermettentunperfectionnementsurlesrequtesetlestats(Exploitationdesdonnes),surlesformulaires,accompagnsdel'apprentissagedesmacros(Interfaceetautomatisation)ouencore,delamiseenplacedelascurit(Scurit)

    IlserapossibledefinirparuncourssurleVBA,dcoupentroisparties:1lesbasesdulangage(VisualBasicpourApplication),2perfectionnementdecesbases(PerfVBA)3dveloppementClientServeuravecAccesscommefrontal(VBAC/S)

    Pourquoicetteprogression?

    Prenonsunexempledelaviecourante:Vousavezacquisunterrain,etvoussouhaitezconstruire.Parquoiallezvouscommencer?

    Laplupartrpondront:"Lesfondations".

    Celan'estpasjudicieux.Eneffet,ilestprfrabledecommencerparfaireunplan.Ensuite,nousbasantsurceplan,ilserafaciledefairelegrosuvre,puisdemettreenplaceleslmentsfonctionnels,telslaplomberieetl'lectricit,pourfinirparladcoration(peinture,parquetetautrespapierspeints).

    Leplan,c'estlersultatdel'analyse.

    Legrosuvre,correspondauxtablesetrelationsdelabasededonneslapartiestockagedesdonnesgrer.

    Laplomberie,l'lectricit,etc.,tousceslmentsfonctionnelsreprsententlesrequtes,quivouspermettrontd'exploiterlesdonnesbrutesprsentesdanslestables.

    Enfin,lesformulairesetlestatssontlesoutilsvouspermettantdecrerl'aspectcosmtique,ladcoration,devotreapplication,aussibienl'cran(formulaires)qu'l'impression(tats).

    I1.Remerciements

    J'aimeraisremerciertoutparticulirementmonpreetmonpouse,quifurentmespremiersrelecteurs,censeursetsupporters,ainsiqueDeveloppez.comLLCsited'entraidedesdveloppeurspourlesoutienqu'ilm'aapportdanslecadredelacorrectiondecescrits,ettoutparticulirementThomasLebrunetStphaneEyskenspourl'normetravailquecelaleurademand.

    Accueil ALM Java .NET Dv.Web EDI Programmation SGBD Office Solutionsd'entreprise Applications Mobiles Systmes

    http://vb.developpez.com/faqvba/http://www.developpez.com/newsletter/http://access.developpez.com/http://access.developpez.com/index/rsshttp://www.developpez.net/forums/http://solutions-entreprise.developpez.com/http://powerpoint.developpez.com/http://web.developpez.com/http://www.developpez.com/http://alm.developpez.com/http://mhubiche.developpez.com/Access/cours/bases/LivreBases.epubhttp://etudes.developpez.com/http://mhubiche.developpez.com/Access/cours/bases/LivreBases.azwhttp://www.developpez.net/forums/member.php?u=3901http://access.developpez.com/outils/http://sharepoint.developpez.com/http://access.developpez.com/sources/http://club.developpez.com/http://project.developpez.com/http://club.developpez.com/contacts/http://word.developpez.com/http://mhubiche.developpez.com/Access/cours/bases/LivreBases.ziphttp://www.facebook.com/sharer.php?u=http%3A%2F%2Fmhubiche.developpez.com%2FAccess%2Fcours%2Fbases%2Fhttp://office.developpez.com/http://access.developpez.com/faq/http://twitter.com/timeline/home?status=http%3A%2F%2Fmhubiche.developpez.com%2FAccess%2Fcours%2Fbases%2Fhttp://blog.developpez.com/http://access.developpez.com/cours/http://mobiles.developpez.com/http://projets.developpez.com/https://plus.google.com/share?url=http%3A%2F%2Fmhubiche.developpez.com%2FAccess%2Fcours%2Fbases%2Fhttp://access.developpez.com/livres/http://mhubiche.developpez.com/Access/cours/bases/LivreBases.mobihttp://outlook.developpez.com/http://programmation.developpez.com/http://dotnet.developpez.com/http://general.developpez.com/faq/http://magazine.developpez.com/http://java.developpez.com/http://openoffice-libreoffice.developpez.com/http://office.developpez.com/office2010/http://emploi.developpez.com/http://www.developpez.com/http://chat.developpez.com/http://mhubiche.developpez.com/http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fmhubiche.developpez.com%2FAccess%2Fcours%2Fbases%2F&Title=Access+-+Les+Baseshttp://twitter.com/Access_DVPhttp://applications.developpez.com/http://excel.developpez.com/http://sgbd.developpez.com/http://dotnet.developpez.tv/accessdonnees2005/http://systeme.developpez.com/http://edi.developpez.com/http://www.facebook.com/pages/Microsoft-Access/111444615550181http://www.developpez.net/forums/f45/hardware-systemes-logiciels/microsoft-office/access/http://office.developpez.com/http://www.developpez.com/http://general.developpez.com/cours/
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 2/21

    I2.Objetetobjectifs

    Jevousproposederetrouvermaintenantl'ensembledelaformationquejefournishabituellementchez ,Organismedeformation.Cettetapenecorrespondqu'l'explicationdespointsconcernsparleplandecoursdeDEMOSintitulAccess:LesBases,quevouspourrezretrouverdanslasectioninformatique.

    J'aimeraisquevousconsidriezcemanuelcommeunvritablecours.Jevaisvousexpliquer,calmement,maissrementchaquetapedelaralisationd'unebasededonnessousAccess.

    I3.LamthodeMeriseL'idal,pourconstruireunebasededonnesestdeconnatrelamthodeMerise.Sivousdcidezdefairedelaconception/ralisationdebasesdedonnesvotremtier,commencezparcela.Sinon,lesmthodesquejevaisvousdonnerparlasuitedevraienttresuffisantespourfairefacelamajoritdescas.

    Quelquesliensutiles:

    RappelsfaitsparSQLProsurDeveloppez.comLLC

    UnmagazineInternetassezsympa

    Quelquesrfrences:

    voir... voir... voir...

    I4.PourquoiutiliserAccess?

    Pourcomprendrel'importancedesbasesdedonnes,prenonsunexemple.NeseraitilpasplussimpledesaisirlescommandesdansExcel,pourpermettreleursuivietd'utiliserWordpourfaireunmailingpourlesimprimeretdelesenvoyermesclients,quedesemettreunlogicieltelqu'Access?

    Examinonslesfaits.SinousvoulonsfaireuntableaudansExcelcettefin,nousnousdirigeronsvraisemblablementversquelquechosedesemblablececi(j'aiprissoindemasquerquelquescolonnespourpouvoirtoutafficherl'cran):

    Nousavonsbienl'ensembledesinformationsrelativesnotreclient,toutescellespropreslacommandedececlient,ainsiquetoutcequiconcernelesproduitscommands.

    Noussaisissonslapremirelignedenotrepremirecommande,ettoutvapourlemieux.

    MAIS,notreclientn'apascommandqu'unseulproduit.Etl,intervientlepremiersouci:qu'allonsnousfairedudeuximeproduit?Nousallonsl'criresurlalignedudessous,enprenantbiensoinderecopierchaqueinformationrelativeauclientetlacommandecar,sanscela,lemoindretririsqued'trefatal.Nousrisquonsdeperdrelarelationexistantentremonproduitetmacommande,doncmonclient

    Celanousobligedupliquerlaplupartdesinformationsquenousavonsdjsaisies,mais,quoiqu'ilensoit,nouspouvonsdoncarrivercersultat,quinousdonnentunecertainesatisfaction:

    Apartirdel,d'autressoucispeuventintervenir:Commentsavoircombiendecommandesontenregistres?Nousnepouvonspluscompterleslignes.Certainescommandesferontuneseuleligne,d'autrescinquante(nousl'esprons).Nousseronsdoncamenfaireuntraitementd'extractionpourrcuprerchaqueNdefacturesanssesdoublons,pourensuitecompterlenombredelignesainsircupres.MaiscelarestefaisableavecExcel.

    Puislescommandess'enchanentetnousenarrivonsnousposerdesquestionsd'analyse.Parexemple,nousaimerions,partantdutableausuivant:

    http://sql.developpez.com/http://www.amazon.fr/exec/obidos/ASIN/2212090463/maxencehubich-21http://www.demos.fr/cpt.asp?id=developpez&noframe=1&body=informatiquehttp://www.sam-mag.com/http://www.amazon.fr/exec/obidos/ASIN/2212075014/maxencehubich-21http://mhubiche.developpez.com/Access/cours/bases/images/xlstep3.gifhttp://www.amazon.fr/exec/obidos/ASIN/2708124730/maxencehubich-21http://mhubiche.developpez.com/Access/cours/bases/images/xlstep2.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/xlstep1.gif
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 3/21

    ConnatreleCApourleproduitTOMATES.Combiencelaatteintil?Ilestvraiqu'ilesttrssimpled'utiliserExcelpourfairedescalculs.Ilestfaitpourcela.Maisenl'occurrence,lersultatrenvoyparExcelserade239etnonde355car,lorsdemasaisie,j'aifaituneerreur:uneligneindiqueTOMATESetl'autreTOMATE.OrpourExcel,ilyaunegrossediffrenceentreTOMATEetTOMATES.Celapourindiquerque,mmesilarecopieestunoutilais,iln'enrestepasmoinssourced'erreurs.Nousneparlonsmmepasdelalimitephysiquedecetableauquinepourrajamaisexcderles65535lignes.Et,danscecas,lestempsdelatenceserontextrmes,notammentdanslecasdecalculsanalytiquescomplexes.

    Enrsum,mmesionpeuts'ensortirparlatechniqueExcel,denombreuxproblmespeuventvenirs'interposer:

    Redondancedesdonnes.Cettercrituretantsourced'erreursLimitationdunombredelignesLemlangedesdiversensemblesdedonnes'(Client/Commande/Produit/)dansunseuletmmetableaunefacilitepaslesanalysesstatistiques.

    Ilfautdonctrouverunautresystme.C'estlqu'interviennentlesBasesdeDonnesRelationnelles.

    I4a.C'estunSGBDR

    UnSGBDRestunSystmedeGestiondeBasesdeDonnesRelationnel'.

    Examinonscenomdansledtail:

    AccessestunSystmedeGestion'.C'estunlogiciel,etenaucuncas,ilnes'agitd'unebasededonnes!C'estunSystme'quisertGrer',etGrer'desBasesdedonnesRelationnelles'.LaBasedeDonnesRelationnelle'estdoncletypedefichiersgrsparAccess,aummetitrequeWordgredesdocumentsetExceldesclasseurs.

    SurAccess,lesdocumentsgrsontuneextensionen.mdb(ou.mde)(1).Ils'agitdesbasesdedonnesaccessiblestraverslemoteurdebasededonnesutilisnativementparAccess,moteurquiporteledouxnomdeJET.

    I4b.C'estunRAD

    RADestl'acronymedeRapidApplicationDevelopment'

    GrceAccess,vouspourrezeffectivementtrsrapidementdvelopperdesapplicationscompltes,stockagededonnesetinterfacecomprisdanslemmefichier,parexemple.

    II.Conception

    II1.C'estquoi?Aquoiasert?

    Laconceptiondelabaseestl'tapefondamentale.

    Sinousvoulonsreprendrel'exempledelaconstructiondelamaison,ils'agittoutsimplementdelafabricationdesplans!Silesplanssontvitefaits,sansconcertationaveclesdiffrentsintervenants,sansprendreenconsidrationleterrain,etc.ilparaitinconcevablequelamaisonsoitbtiesanssoucis!

    Enfait,leplanvatreralisparunarchitecte,bassurunetudeduterrainraliseparungomtre,enaccordaveclamairie,lesbtimentsdeFrance(sincessaire),etc.

    Demme,pourraliserlaconceptiondevotrebasededonnes,vousallezdevoirprendredesinformationsauprsdesdiffrentessourcesconcernes,auprsdesutilisateurs,desdcideurs,fairedesrunionsrgulirespoursavoirsicequevousconcevezestbienenadquationaveclaralit...bref,c'estuntravailquidemanderauntempscertain.Nevousprcipitezdoncpasdanscettetapedelaralisationdevotrebasededonnes.Unefoislaconceptionfaite,leresteressembleraunepartiedeplaisir.

    II2.LesprincipesfondamentauxRepartonsdenotrecasprcdent,ralissurExcel,quinousposaitquelquessoucis:celuidescommandes.

    L'ideestderussirrassemblerlesinformations,commesurdesfichestypes.

    Parexemple,unclientestunclient.Quelquesoitleclient,nousallonssystmatiquementavoirbesoind'informationsquisontpropreschaqueclient,commel'adresse,lenom,letlphone,etc.Nouspouvonsgrerceclient,l'enregistrersurunefiche.D'ailleurs,neparletonpasdeficheclient,etmme,defichierclient.

    Nouspourrionsmmeimaginerprformater'desfeuillesainsi,nousn'aurionsplusqu'lesrempliretlesmettredansnotrefameuxfichierclient'.

    Enfait,cetteficheprformate',onpourraitl'appelerentit'.Toutlejeuvadonctre,maintenant,derpartirlesdonnesquenousavonsdansnotretableaudedpart,etdelesrassemblerparfichetype'etdefaireautantdefichetype'ouentit'quenousavonsd'lmentsdistinctsgrer.C'estlepointdedpartduModleEntitAssociation(MEA)

    II3.LeModleEntitAssociation

    Lemodleentitassociationestunmodle,undessinquireprsentelesdiffrentslments(entits)etleursinteractions(associations),danslesystmequinousintresse.

    Cettedfinitionestpeuttreunpeuvague.Aussi,jevousproposed'avancerpaspasdanslamthoderapidequejevouspropose.

    II3a.DfinitiondesEntits

    Surnotreproblmatique,nousavonsreprtroisentits:Client,CommandeetProduit.

    Nouspourrionslesdessinerainsi:

    http://mhubiche.developpez.com/Access/cours/bases/images/xlstep4.gif
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 4/21

    Choseimportante,danschaqueentit,nousdevonscrerunezonequicontiendraunevaleurobligatoireetuniquetraverstouteslesfichestiresdecetteentit.Onappellecelaunidentifiant.Voiciladfinitionlapluscorrectedel'Identifiant:"L'identifiantassurel'unicitdel'occurrence(delaficheremplie)del'entit".Danslecasduclient,ceseraleNdeclient.Pourlacommande,leNdeCommande.Pourlesproduits,larfrenceproduitferal'affaire(uncodebarreparexemple).Aprsavoirajoutnosidentifiants,nousobtenonsceci(vousnoterezlaconventionquiconsistesoulignerl'Identifiant):

    Maintenant,onvapouvoirajoutertouteslesinformations(onlesappelle'attributs')quel'onsouhaiteenregistrerdanschaquefiche.Lersultatobtenudoitressemblerceci:

    Nousavonsmaintenantunesriedefichestype,etnoussommescapables,danschaquefiche,destockertoutel'informationquinousintresse.

    Deplus,commelesidentifiantssontuniques,onpeuttrsfacilementretrouverunclient,unecommandeouunproduit,simplementparsonidentifiant.Enfin,riennenousempcherad'avoirdeuxclientsayantlemmenommaistantlocalissdansdesvillesdiffrentesparexemple.Nousnerisquonspasdelesmlanger,puisqu'ilsontdesidentifiantsdiffrents.

    Cependantriennenouspermetdedterminercequisepasseentrecesfichestype.Parexemple,sinouslisonsbienlafiched'unecommande,nousn'avonsaucunmoyendesavoirquelclientl'apasse.Nousavonsdoncunpeudemalexploiterlesfichesenl'tatactueldeschoses.Ilvafalloirdterminerlesactionssepassantentrelesfiches,etsavoirengardertrace.C'esttoutl'objetdeladeuximetape.

    II3b.DfinitiondesAssociationsetdeleurscardinalits

    L'associationsertdfinirl'actionqu'exercentlesentitsentreelles.C'estpourcelaqu'onlesdsignesouventparunverbe.

    Quefaitleclient?Ilpassedescommandes.Ilexistedoncuneactionquefaitleclientsurlescommandes,etcetteactionestdcriteparleverbepasser'.Onpeutdonctracerl'associationentreleclientetlacommandecommececi:

    Maintenant,onpeutaussidirequelescommandesregroupentdesproduits.Encoreunefois,leverberegrouperdcriticil'actionquisepasseentrelescommandesetlesproduits.

    Cettetapeimportantetanttermine,ilfautdterminerCOMMENTcesassociationss'exercent.Ils'agitdedterminerlescardinalits.

    Pourcela,onsesertd'unepetitephrasemagiquequevoici:

    Estcequeun(e){ENTITE}peut{ACTION}plusieurs{AUTREENTITE}

    Application:OccuponsnousdelarelationpasserentreClientetCommande,etposonsnouscettequestiondel'unedesentitversl'autre,puisviceversa:

    Estcequeun{Client}peut{passer}plusieurs{Commandes}

    http://mhubiche.developpez.com/Access/cours/bases/images/entites_1.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_3.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_4.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_5.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_2.gif
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 5/21

    LarponseestOUI,biensr,etheureusement!

    Estcequeune{Commande}peut{trepassepar}plusieurs{Clients}

    CettefoislarponseestNON.Chaquecommanden'estpassequeparunseulclient.

    Commenousnepouvonsdonnerqu'uneseulerponsepositivesurlesdeuxquestion,nousavonsuneassociation1n(unplusieurs).

    Apartirdel,toutestsimple.

    Lorsquenoussommesenprsenced'unerelationunplusieurs,ilfautreproduirel'identifiantdel'entitct1dansl'entitctplusieurs:

    Etl,laraisondevientvidente:

    Sinouslisonslafichecommande,nousvoyonsquelacommandedontlenumroest12345,atpasseunedatedonne,livreuneautredateprcise,chezundestinataireclairementidentifi.Maismaintenant,apparataussisurcettefichelenumroduclient(C987)quiapasslacommande.Etsil'envienousprenaitdesavoirdequelclientils'agissait,ilsuffiraitalorsd'allertrouver,parmilesfichesdesclients,lafichedontlenumroestC987.Cenumrotantuniqueparmitouteslesfiches,noussommescertainsqu'ilnepourraits'agirQUEdeDupont&Co.

    Passonsmaintenantladeuximeassociation,l'associationregrouper'

    Estcequeune{Commande}peut{contenir}plusieurs{Produits}

    LarponseestOUI,biensr,etheureusement!

    Estcequeun{Produit}peut{trecontenudans}plusieurs{Commandes}

    CettefoisencorelarponseestOUI.IlestvidentqueleproduitTOMATEpeutapparatredansplusieurscommandes.

    Commenouspouvonsdonnerdeuxrponsespositives,nousavonsuneassociationnn(plusieursplusieurs).

    Danscecas,letraitementvasefaireenplusieursphases.

    Toutd'abord,nousallonsreproduireles2identifiantsdansl'association(qu'ilvafalloiragrandirpourl'occasion).Nousobtenonsdoncceci:

    Maissurtout,ilvafalloirpensertouteslesinformationsquenousn'avonspaspustockerjusqu'prsent.Parexemple,sinousnousrfronsautableauExcelquenousavionsfaitaudpart,etlecomparonsauxdonnesprsentesdansnosentits,onpeutsedemandercequ'ilestadvenudesquantits!

    Enrflchissant,oncomprendbienquecesquantitsnepeuventtreprsentesdanslesproduits,carilnes'agitpasdequantitdeproduits'maisdequantitdeproduitsdanslescommandes'.Demmepourl'entitdescommandes.Enaucuncasilnes'agitdelaquantitdecommandesn'estcepas!

    Laplacedecettevaleurestdoncmaintenanttoutetrouve:dansl'associationRegrouper'.Maintenant,sijefaisaisceci,quepenseriezvous:

    http://mhubiche.developpez.com/Access/cours/bases/images/entites_7.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_6.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_9.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/entites_8.gif
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 6/21

    Certainsdirontcertainementque,vuquenouscherchonsviterladuplicationdesdonnes,ilestinutiledereproduirelePrixUnitaireHTetlaTVAquisontdjprsentsdansl'entitProduit,maisquelaQuantitetlaRemisesontbienplaces.

    Partagezvouscepointdevue?

    C'estprobable.Pourtant,mmesicesinformationsontlemmenom,ellesn'emportentpaslammesignification:

    LesPrixunitaireHTetTVAdel'entitProduitontrapportavecleprixetletauxactuels.Ceuxquisontappliquspourlafacturequ'onestentraindefaire.

    LesPrixUnitaireHTetTVAdel'associationRegrouperont,quanteux,rapportaveclesdonneshistoriques.Chaquelignedecommandetantenregistreici,nousgardonsunetracedel'historiquedesprix.Cequenousnetrouvonsnullepartailleurs.NousavonsdoncaussibienlesprixdescommandesdeJanvier2003queceuxd'avril2004.Etsanscesdonnes,nousserionsdansl'impossibilitdecalculerl'volutionduchiffred'affaire,carleseulprixetleseultauxdisponiblesconcerneraientl'instantprsent.

    Donc,lorsquenoussommesenprsenced'uneassociationplusieursplusieurs,ilconvientdetoujoursseposerlesquestionsrelativesauxdonnescomplmentaires,ettoutparticulirementlesdonneshistoriques.

    II3c.Enrsum

    Aprsavoirposlaquestionmagique,vousretiendrez3situationsaumaximum.Nousn'avonspasencoreparldelatroisime,maisnousyviendronsplustardbeaucoupplustardtellementelleestrare:

    unplusieurs plusieursplusieurs unun

    Cecasestextrmementcourant.Ilesttrsfacilementgrgalement.

    danscecas,ilfautreproduirel'identifiantdel'entitquiestductundansl'entitctplusieurs(noterquelenommmeestpeuimportant,maisquel'informationqu'onvaymettre,elle,l'est)

    Cecasaussiesttrsfrquent.Ilestunpeupluscomplexemettreenuvre.Ilcorrespondenfait2associationsunplusieurs

    reproduirelesidentifiantsdesdeuxentitsdansl'associationRflchirl'ensembledesdonnesannexes(ycomprishistoriques)

    Cecasestextrmementrare.Siuneentitnepeuttreliequ'uneseuleautreentitetrciproquement,ilestfortprobablequ'ils'agisseenfaitdelammeentit

    II4.AvousdeJouer!

    Nousallonsnoncer2exercices.Essayezdelesraliseravantdepasserauxchapitressuivants.

    Exercice1:Commandes

    Enpartantdenotremodledeprisedecommandeprcdent,ajoutezlesentitssuivantes:

    Messager(ils'agitdelasocitquivas'occuperdefairelalivraison)Employ(ils'agitdel'employayantprislacommande)Fournisseur(ils'agitdufournisseurauprsduqueljepeuxm'approvisionnerenProduit)

    Essayezderaliserunesolutionparvousmme.VouspourrezretrouverlacorrectiondecetexerciceenannexeAduprsentmanuel,l'entreSolutionsduMEA1'

    Exercice2:SocitInformatique

    Nousallonspassermaintenantlamiseenapplication.Voiciunpetitexercicequevousavezessaydersoudreparvousmme.Jecommenceparmettreensituation.

    Imaginezquevousinterveniezpourunesocitdeprestationsdeservicesinformatiques,afindeconcevoirunebasededonnespermettantlesuivietlafacturationdesinterventionsraliseschezlesclients.Lasocitestsusceptiblederalisern'importequelleintervention.Ilfautimprativementquelemodlequevousallezconcevoirpuisserpondreauxquestionssuivantes,sansenoublierunepartie:

    1. quelemployestdansquelservice,etquiledirige?2. quelemploytravaillepourquelclientetquellesdates?3. quelclientademandquelleintervention?4. quelsmatrielssontfacturer,pourquellesinterventions,etenquellesquantits?5. quelsmatrielscomposentquelsautresmatriels?

    Voiciquelquesinformationssupplmentairesquevousdevezconnatre:

    unemploynepeutappartenirqu'unseulservicemmesichaqueservicepeutcontenirunemultituded'employs.aucunmomentmonclientnepeutprendrecontactdirectementavecmonemploy.Ilseraitd'ailleurstoutaussiinconvenantquemonemployprennedirectementcontactavecmonclient.uneinterventionpeutncessiterplusieursjours,etlaprsencedeplusieursemploys.Ilestaussipossiblequ'uneinterventionnencessitelaprsencequed'unseulemploypouruneseulejourne.Laprsencedemesemployspouruneinterventionpeuttrediscontinue(vacances,weekend,...).

    Essayezderaliserunesolutionparvousmme.VouspourrezretrouverlacorrectiondecetexerciceenannexeAduprsentmanuel,l'entreSolutionduMEA2'

    III.L'interfaceLogicielle(venir)

    IV.Lestablesetrelations(venir)

    IV1.C'estquoi?Aquoiasert?

    Lestablessontlesstructures,destableauxenfait,unpeusurlemmeprincipequelesfeuillesdecalculd'Excel,quiserventuniquementaustockagedesdonnes.

    http://mhubiche.developpez.com/Access/cours/bases/images/entites_A.gif
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 7/21

    Attention!MmesicertainslogicielstelsSQLServerpermettentlestockagededonnescalcules,cen'estpaslecasd'Access.DansAccess,seulesdesdonnesstatiquespeuventtreconserves.Iln'yapasdepossibilit,cejour,demettredesdonnesdynamiquesdanslescolonnesdestables.

    IV2.Apartird'unlogicieldemodlisation(CaseStudio)SivousavezutilisunlogicieldemodlisationdebasededonnestelqueCaseStudio,ilseratrsaisdecreraussibienlestablesquelesrelations.Eneffet,laplupartdeslogicielsdemodlisationpermettentunegnrationdescriptqu'ilsuffirad'excuterpourgnrerlabasededonnes.

    Ceslogicielsdemodlisationvouspermettentderapidementmodliservotremodle.Ainsi,lersultatdevotreexercicedemodlisationauraitdonnquelquechosecommececi:

    Ensuite,enquelquesclics,CaseStudiovousgnreunscriptdansunepetitefentre:

    Unefoislescriptdegnr,ilvoussuffitdesuivrelesindicationsfourniesdanscedernier:

    CrerunenouvellebasededonnesCrerunNouveauModuleCopiercollerlescriptdanscemodulePrendresoindevrifierquelabibliothqueDAOestbienactivedansleprojetencours(outils/rfrences)PositionnerlecurseurdelasourissurlaligneSubMain()AppuyersurF5.

    Vousobtiendrezalorsunebaseavectouteslestablesprpares,lesrelationsfaites,ettoutcelaseraconsultabledirectementdanslafentredesrelationscommecelaestmontrdansl'imagesuivante(j'aiunpeurorganislestablespourquecelaparaisseplusclair):

    Touteslestablesetlesrelationsonttgnres!

    Etcelan'aprisquequelquessecondes.

    SivousenvisagezdetravaillersouventlamodlisationdebasesdedonnesavecAccess,jenepeuxquevousrecommanderl'acquisitiond'untellogiciel.

    Toutefois,lacrationd'unebasededonnesdetempsentempsnencessitepascesoutils,etAccessnouspermettrsfacilementdecrerdestables,unefoisnotremodleralis.Voyonsmaintenantcomment.

    IV3.Crationd'unetablesimpleIln'yariendeplusfacilequedecrerunetableunefoislemodlephysiquededonnescorrectementdfini.

    Danslemodlequenousavonsgnrprcdemment,prenonslatabledesservices.Quepouvonsnousobserver?

    Ilyatroisinformations:l'identifiant,lenom,lelieu.Cestroisinformationssontdeschamps.Lesidentifiantetlaclprimaire.Ilvanousfalloirreproduiretrsprcismentcesmmeslments.

    Positionnonsnousdanslalistedestables.

    Cliquonssurleboutonnouveau.

    Parmitousleschoixquinoussontproposs,choisissonslemodecration.

    Nousobtenonsl'interfacesuivante:

    VousnoterezavecintrtlacolonneNomdeChamp'.Ils'agitenfaitd'untableau,etsurchaquelignedecetableauilestmaintenantpossiblededfinirunnomdechamp.Nousarrivonsdoncrapidementcersultat:

    Lestroischampstantdfinis,ilnousfautmaintenantindiquerquelechampidentifiantestbienlaclprimaire.Nousnouspositionnonssurcedernier.Etnouspouvonscliquersurl'icnedelaclprimairecequiapoureffetdefaireapparatreunepetitecldansleslecteursitugauchedenotrechamp.Voil,nousavonsdfiniuneclprimaire.

    Ilnenousresteplusqu'enregistrercettetable.Celas'effectuecommedanstousleslogicielsdeMicrosoft,encliquantsurlapetitedisquette.

    AppelonscettetabletblServices(jeprfixelenomdonntablesystmatiquementparletrigrammestbl).

    Nousvenonsdefinirdedfinirlastructuredenotretable.Pourvoirl'aspect'FeuilledeDonnes'decettetable,ilvoussuffitdecliquersurlepremierboutondelabarred'outils.

    Nouspouvonsmaintenantfermercettetable.Nousvenonsdecrernotrepremiretable.

    Vousavezconstatcommeilestfaciledecrerunetable.Cependant,Accessaussidesfonctionnalitsavancesquivontvouspermettred'affinerlespossibilitsdesaisiedesinformationsdansvotretable.

    http://www.casestudio.fr/
  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 8/21

    IV3a.Diffrentsmodesdecration

    Ilyaplusieursmthodespourcrerunetable.VouslesavezvueslorsquevousavezcliqusurleboutonNouveau...Sicesautresmodesnenousintressentpasici,jevaismalgrtoutrapidementvouslesprsenter:

    LemodeFeuilledeDonnesvousdonneuneinterfacesemblableunefeuilleExcel.VoussaisissezvosdonnesettitresetAccesss'occupeseuldedciderdutyped'informationcontenudansvoscolonnes.LasolutionavecAssistantTableestintressante,maisdanstouslescas,l'usagedesassistantsesttrslimit.Ilestdoncbeaucoupplusintressantdeconnatrelemodecrationquivouspermettradecomprendrecommentlestablessontconstruitesafindesavoirinterveniraprsl'usagedel'assistant.Vouspourrezvousintresserauxassistantsdevotrect.Leprincipeestsimple:lirelesquestions,rpondre,etpasserl'tapesuivanteToutcequiconcernelesImportsetAttachesdetablesseraabordenAnnexeB.

    IV3b.Basculerentrelesmodesd'affichage

    J'ail'habitudedecomparerlabasculedesmodesd'affichageunemanipulationquevousaveztousdjfaite.Prenezunepicedemonnaie.Vousenvoyezlectface.Sivousvoulezvoirlectpile,ilvousserainutilederemettrelapicedanslapochepourcela,ilsuffiradelaretourner.Ilenestdemmepourvotretable.Ilyadeuxaffichagespossibles,aummetitrequ'ilyadeuxfacessurunepice.Ilserainutiledefermerlatablepourenchangerl'affichage,lepremierboutongauchedevotrebarred'outils(quellequ'ensoitl'image)servantcetteopration.Cebouton(lepremierdelabarred'outils)estretenir,cartouslesobjetsquenousverronsdansAccessaurontdeuxaffichagespossibles,etchaquefois,pourbasculerdumoded'affichage'Structure'aumoded'affichage'Donnes',c'estceboutonquenouspourronsutiliser.

    IV4.ApprofondissonsJevouspropose,danslapartiesuivante,d'essayerderaliserlatabledesemploys,maisenparcourantlatotalitdesfonctionnalitsavancessurleschamps,aussibienquesurlestables.

    Commenonscommepourlacrationdelatableprcdente:

    NouveauModeCrationSaisiedesNomsdeChampsDfinitiondelaclprimaireEnregistrementdelatable

    Nousvoicidoncarrivsunrsultatquidevraittresemblableceluici:

    Pourl'instant,nousnenoustionsintresssqu'lapremirecolonneintitule'NomsdeChamps'.Passonsauxdeuxcolonnessuivantes.'TypedeDonnes'et'Commentaires'.

    IV4a.Lescommentaires

    Vouspouvezcrireicitouttextevouspermettantdevousrappelertrsprcismentcequevousvouliezmettrel'originedansvotrechamp.Cependant,cettezoneaunintrtparticulierpourl'utilisateurfinal.Eneffet,touttexteinscritdanscettezoneapparaitradanslabarred'tatdel'application.Parexemple,noussouhaitonsquel'utilisateursaisisselenomdefamilleenlettresmajuscules.LechampempNompourradonctrecommentcommesuit:

    L'effetdonnenmodefeuillededonnesseraceluici:

    Cettezoneestfacultative.Cependant,sivousvoulezunconseilutile,considrezqu'ilestobligatoire.Ilvouspermettracertainementd'conomiserdesheuresdetravailsivousavezrevenirmodifiervotrebasededonnesdansquelquesmois.Sinousprenonsletempsderemplirchaquezonedecommentaire,nousarriveronscersultat:

    IV4b.Lestypesdedonnes

    Intressonsnousladernirecolonne:TypesdeDonnes.

    Jedoisbienavouerqu'ici,jenepartagepaspleinementlechoixfaitparMicrosoft,auniveaududcoupagedestypes.MmesicelaestfaitpourquetoutunchacunpuissetravaillerrapidementavecAccess,ilesttoujoursbondesavoiravecquoinoustravaillonsdansnoschampsoucolonnes,auseind'Access.

    Aussi,j'aimeraiattirervotreattentionsurcepetitschmaquivouspermettracertainementdemieuxvoussituer:

    IlyatroisgrandsTypes,etunemultitudedeSoustypes.

    Voicimaintenantquelquesexplications

    IV4bi.Lestypespourlescaractres

    Cestypesdedonnescontiennenttouteslessriesdecaractresgnrsdepuisleclavier,nedevantpastreinterprtscommedesnumriques.

    Type Description

    Texte(N)

    Ncorrespondaunombremaximaldecaractresquevouspouvezsaisirdanslacolonne.Cenombreestcomprisentre1et255.Cetypeestleplusutilispourtoutcequiconcernelestockagededonnescaractres.Ilestaussilepluspratique.VousnoterezcertainementqueleseullmentdanslalisteestTexte.Lalongueurdutexte,leNbre,estdfinidanslaproprit'TailleduChamp'.

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 9/21

    MmoIln'estpastrspropredemettremmodanscettecatgorie.Cependant,j'aichoisidelemettreici,carilconcernegalementuniquementlescaractres,aummetitrequeletypededonnesTexte(Nbre).

    LienHyperTexte Ils'agitdetexte,stockscommetels,maisutilisscommelienshypertexte.

    IV4bii.Lestypespourlesnumriques

    Vousvoussouvenezcertainementdecestorturesinfligesparlesprofesseursdemathmatiquespendantlescoursde6,5,4etc.Etbienonvareprendrel...Plusprcisment,nousallonsnousintresserparticulirementauxensemblesNerR...vousvousvouvenezmaintenant?

    LesNombresEntiers(N)

    Type Description Taille

    Octet Utilispourstockdepetitsnombresentierspositifscomprisentre0et255 1octet

    EntierCetypepermetdestockerdesnombresentierspositifsetngatifscomprisentre32768et32767

    2octets

    EntierLong

    C'estleplusgrandtypededonnespourdesnombresentiers.Onpourrastockerdesnombrescomprisentre2147483648et2147483647

    4octets

    LesNombresRels(R)(Pourrappel,cesnombressontdcimaux...)

    Type Description Taille

    RelSimple Utilispourstockdepetitsnombresentierspositifscomprisentre0et255 1octet

    RelDoubleCetypepermetdestockerdesnombresentierspositifsetngatifscomprisentre32768et32767

    2octets

    IV4biii.Lesautrestypes

    IV4c.Lespropritsdeschamps

    IV4d.Lespropritsdestables

    IV5.Lesrelations

    IV6.Avousdejouer...

    V.LesRequtes(venir)

    V1.C'estquoi?Aquoiasert?

    V2.Lesfondamentaux

    V2a.GestiondesColonnes

    V2ai.Ajouterunecolonne

    V2aii.Slectionnerunecolonne

    V2aiii.Dplacerunecolonne

    V2aiv.Insrerunecolonne

    V2av.Supprimerunecolonne

    V2avi.Renommerunecolonne

    V2b.GestiondesLignes

    V2bi.Dfinitiondel'ordredetri

    V2bii.Dfinitiondescritres

    V2c.Champscalculs

    V2ci.Lesoprations

    V2cii.Lesfonctions

    V2d.RegroupementsetSynthses

    V3.Lesrequtesmultitables

    V3a.Casd'unerequtemonotable

    Crerunerequtebasesurlatableclient

    Afficherlechamp[Socit]

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 10/21

    EnSQLonaurait:Slectionnez

    Z

    Quelestlersultatattendu?

    Aucuntraitementparticuliern'esteffectusurcetterequte.Ildevraitdoncs'agirdel'affichagebrutdelalistedeschamps[socit]delatabledesclients.Lenombredelignesdursultatdelarequtedevraitdonccorrespondreaunombredelignesdanslatable.

    Quelestlersultatobtenu?

    Nousobtenonsiciquatrevingtonzelignes.

    Quepouvonsnousendduire?

    Qu'ilya91clients.Pours'enassurerilsuffitderegarderlecontenudelatableClients.

    V3b.Casd'unerequtemultitables

    Danslarequteprcdenteajoutezlatablecommande.Nousallonsmaintenantexaminercequisepasselorsqu'onmetdansunerequtedestablesquineserventrienpourobtenirlersultatattendu.

    Notezaupassageladescriptionautomatiquedelarelationexistanteentrelatabledesclientsetcelledescommandes.ACCESSreprendicil'ensembledesinformationsdfiniespralablementdanslafentredesrelations.Ils'agitd'unerelationunplusieurs,tellequeunclientpeutavoirplusieurscommandes,chaquecommanden'ayantqu'unseulclient.

    Quelestlersultatattendu?

    EnSQLonaurait:Slectionnez

    \\Z

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 11/21

    Puisqu'oncontinuen'afficherquelechamp[socit],ons'attendlogiquementobtenirlalistedessocitsayantdescommandes,soitnos91lignestrouvesprcdemment.

    Quelestlersultatobtenu?

    Nousobtenonsmaintenant830lignes.

    Quepouvonsnousendduire?

    Larponsequinousvientl'espritimmdiatementest:les91clientsonteffectu830commandes.

    Cependant,cetteaffirmationn'estpasobligatoirementexacte.Pourquoi?Parcequelarelationentreles2tablesestqualifedejointurequivalente.C'estdirequecetterequtetravailleuniquementsurl'ensembledesassociationspossiblesentrelechamp[codeclient]delatabledesclientsetlechamp[codeclient]delatabledecommandes.Maissepourraitilqu'ilyaitdescommandesn'ayantpasdeclientsrfrencsdanslabase?N'oublionspaslaprsencedel'intgritrfrentielledanscetterelation.Commenousl'avonsvuprcdemment,ellepermetdes'assurerquepourunecltrangreilyatoujoursuneclprimairequiluicorresponde.Onpeutdoncdirequ'ilyaeffectivement830commandescarnoussommescertainsqu'iln'yaquedescommandesliesdesclients.

    Enregardantattentivementlersultatdelarequte,nousnotonsquelenomdelasocitapparatplusieursreprises.Celamontrelenombrederelationspossiblesentreleclientetlacommande.Lenomdelasocitapparatautantdefoisquecettesocitapassdescommandes.

    Attention!Notezbienceci:Sil'intgritrfrentiellen'avaitpastactivesurcetterelation,cenombrede830lignesnepourraientpassignifierautrechoseque830associationsclientcommandes.Ilseraiteneffetpossiblequ'ilyait,danslatabledescommandes,descommandesayantdescodesclientn'existantspasdanslatabledesclients.

    V3c.Casd'unerequtesansrelations

    Admettonsquenouscherchionsobtenirnouveaulesquatrevingtonzelignesdel'exercicenumroun,ilsemblequecesoitlarelationquinousempched'aboutir.Lalogiqueimmdiatevoudraitqu'onsupprimecetterelation.Alorssupprimonslaetvoyonscequisepasse.

    Quelestlersultatattendu?

    Nousvoudrionsrcuprerlesquatrevingtonzelignesdudpart.Eneffet,lagrilleindiquequenousn'affichonsquelechamp[socit]delatabledes"clients".

    EnSQLonaurait:Slectionnez

    Y

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 12/21

    Quelestlersultatobtenu?

    Ilyacettefois75530lignes.

    Quepouvonsnousendduire?

    Que,saufcasexceptionnel,ilfaudratoujoursveillercequ'ilyaitdesrelationsentrelesdiffrentessourcesd'unerequte.L'absencedel'uned'entreellessuffiraitraliserunproduitcartsien,c'estdirel'associationdechaqueenregistrementd'unetabletouslesenregistrementsdel'autretable.

    IciACCESS,n'ayantaucuneindicationdesrelationsqu'ildoitfaireentrelesclientsetlescommandes,vaassocierchacundes91clientsavecles830commandes.Nousobtenonsainsi91X830=75530lignes.

    Celanecorrespondpasauxrsultatsattendus.Nousallonsdoncrestaurernotrerequtedansl'tatprcdentensupprimantlatablecommandeetenlarajoutantlarequte.Nousnousretrouvonsdonciciexactementdanslemmetatqu'lafindel'exercicenumrodeux.

    V3d.Casd'unerequteavecregroupement

    Nousn'avonstoujourspasrussircuprerlesquatrevingtonzelignesdudpart.Enobservantattentivementlersultat,commenousl'avonsditprcdemment,nousobservonsquelenomdelasocitapparatplusieursfois.Sinousparvenionsregrouperenuneseulelignetouteslesoccurrencesd'unmmenomdesocit,nousobtiendrionsvraisemblablementlesquatrevingtonzelignesattendues.

    Faisonsdoncunclicsurleboutonsigmadenotrebarred'outils.Celafaitapparatreunenouvellelignedanslagrille.Ils'agitdelaligneopration.

    Nousobservonsquel'oprationslectionneestl'oprationderegroupement.

    Quelestlersultatattendu?

    EnSQLonaurait:Slectionnez

    \\ Z

    NB:Uneautresolutionauraittd'utiliserlaClauseDISTINCTafinden'afficherquelesrsultatsuniques,cequiauraitmodifileSQLainsi:Slectionnez

    \\Z

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 13/21

    ACCESSdevraitessayerderegroupertouteslessocitsidentiquespourn'enfairequ'uneseuleligne,etnousdevrionsainsircuprernosquatrevingtonzelignesdudpart.

    Quelestlersultatobtenu?

    Nousobtenonscettefoisseulement89lignes.

    Quepouvonsnousendduire?

    Premirement,ayantregroupsurlesnomsdesocit,iln'estpasimpossiblequenousayonsrcuprenuneseuleligneaumoinsdeuxsocitsdiffrentesdemmenom.Ils'agitdoncdes'assurerquechaqueclientapparatbiendanssaligne.Pourcela,riennevautleregroupementsurunevaleuruniqueetfacilementidentifiable,l'identifiantouclprimaire

    Rajoutonsdoncdansnotrerequtelechamp[codeclient]delatableclients.L'oprationestencoreunefoisl'oprationderegroupement.Ils'agiteneffetdel'oprationpardfaut.Dcochonslacaseafficher,car,sileregroupementestutile,l'affichageducodenenousestpasindispensablepourcetexercice.

    Quelestlersultatobtenu?

    Cettefois,ACCESSdevraitessayerderegrouperlesidentifiantdesclientsainsiqueleurssocits,demanirecrerdeslignesdontl'associationcodeclientsocitsoitunique.Parconsquent,siplusieurssocitsavaientlemmenom,ondevraitvoirapparatreautantdelignesqu'ilyadesclientsdiffrents,qu'ilsaientoun'aientpaslemmenomdesocit.

    Nousobtenonstoujours89lignes.

    Quepouvonsnousendduire?

    Cettefoisnoussommesabsolumentcertainsqu'ils'agitbiende89clientsdiffrents.

    Commenousl'avonsdcritl'exercicenumrodeux,lersultatdelajointurepermetd'obtenirl'ensembledesassociationspossiblesentrelatabledesclientsetcelledescommandes.Nousavonsgalementdterminaveccertitudequ'ilnepouvaitpasyavoirdecommandessansclient.Cependantilesttoutfaitprobablequ'ilexistedesclientsn'ayantpassaucunecommande.Conscientdecela,etauvudespointsexaminsprcdemment,nousenarrivonslaconclusionlogiquequenousavons2clientsn'ayantpaspassdecommandes.

    tantdonnlersultatquenousavonsobtenul'heureactuelle,commentfairepourobtenirlesquatrevingtonzelignesquenousavionsaudpart?Leproblmeesticiletypedejointurequiestunejointurequivalente.Lesassociationsnesontquelesassociationspermettantdejoindredeuxchampsidentiques.

    V3e.Lestypesdejointures

    IlexisteplusieurstypesdejointuresousACCESS:

    LajointurequivalenteLajointureGaucheLajointureDroite

    Examinonslaractiondechacuned'entreelles.

    Imaginonsdeuxtablesdanslaplussimpleexpression:quelqueschamps,pasdeclprimaire,pasd'index.Lechampdeliaisonestunchampdetypetexteunseulcaractre.Traonsunerelationduchampdeliaisondelatableunverslechampdeliaisondelatabledeux.Nousdironsainsiquelatabledegaucheestlatableun,etquelatabledroiteestlatabledeux.Eneffet,lectgaucheestlepointd'originedelarelation,etlectdroit,desonpointd'arrive.(Cettenotiondegaucheetdroiten'aaucunrapportaveclapositiondestablesdanslarequte.O

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 14/21

    seraientlagaucheetladroitesilesdeuxtablestaientl'unesurl'autre?Toutdpenddutracdelarelation.Lectgauchedelajointureestlepointd'originedelarelationlectdroitsonpointd'arrive.)Nousobtenonsleschmacidessous:

    Lorsquelarequtevas'excuter,ellechercheratravaillersurletableaursultantdecetterelationsavoirl'associationdetousleschampsquivalents.Celadonneralatablesuivante:

    Nousvoyonsbienquecertainspointsdecesdeuxtablesnesontpasprisencomptedanslatabledersultats.Parexemplecommentfairepourqu'apparaissentdanslatabledersultatstousleschampsdelatableun,doncdelatablegauche.Ilfautchangerletypedejointureetlatransformerenunejointuregauche.Latablersultantd'unerequteavecunejointuregaucheserasemblablelatablesuivante:

    Danscetypedejointurenousobtenonsunejointurequivalenteplustouslesenregistrementsorphelins(quin'ontputrelis)delatabledegauche,associsdeschampsNULL.

    Qu'enestildelajointuredroite?Ils'agitdel'inversedelajointuregauche.Silajointurequenousavionsmiseenoeuvretaitunejointuredroitelatablersultantd'unetellerequteseraitlasuivante:

    Cettefois,cesontdeschampsdelatablegauchequenousnevoyonsplus.Lajointuredroitecorrespondunejointurequivalentelaquelleonajouteratousleschampsorphelinsdelatabledroite,lisdeschampsNULL.

    V3f.Casd'unerequteavecjointureexterne

    Modifionsletypedejointure.

    Pourcela,ilsuffitdefaireundoubleclicsurlarelation.Appraitalorslafentresuivante:

    Les3pointsmentionnssontdansl'ordredel'exposcidessus:

    1=JointureEquivalente2=JointureGauche3=JointureDroite

    ChoisissonslepointN2(lajointuregauche)demanirepouvoiravoirl'ensembledesclients,avecetsanscommandes.Danslagrilled'Access,lersultatseralesuivant:

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 15/21

    EnSQLonaurait:Slectionnez

    \\ Z

    Dansnotrecassinousvoulonsvisualisertouslesclients,mmeceuxn'ayantpaspassdecommandes,ilfaudraprendrelajointuregauche.Eneffet,larelationayantttracedepuislatableclientsverslatablecommandes,latableclientsestlatabledegauche.Puisquenousvoulonstouslesclients,ilfaudrafaireunejointuregauche(Rappel:pourmodifierletypedejointure,ilsuffitdefaireundoubleclicaumilieudelarelation).

    Quelestlersultatobtenu?

    Nousobtenonscettefoislesquatrevingtonzelignesattendues.

    Quepouvonsnousendduire?

    Quenousavonsfiniparrcuprerlesenregistrementsdelatableclientsquinesontpaslislatablecommandes,toutenconservantchaqueoccurrencedesclientsayantdescommandes.

    V3g.Casd'unerequtedenoncorrespondance

    Maintenantquenousavonsrussircuprerles91clientsdudpartlaquestionquiseposeest:"peutonnercuprerquelesclientsn'ayantpaspassdecommandes?".

    Larponseestoui.Sinousrevenonssurletableauvudansl'exerciceprcdent,nousobservonsqu'ilestfaciled'identifierlesenregistrementsdontlesjointuresnesontpasquivalentes.Dansnotrecaslorsquelesenregistrementsjointsn'ontpasdedonnesquivalentesdanslatabledectcommandes,ilssonttousmisNULL.Sicesontcesderniersquenouscherchonsrcuprer,ilsuffitdedtermineruncritreNULLsurunchampquinedevraitpasl'tre(parexemplelaclexterneouunidentifiant,uneclprimaire).

    Dansnotrecasnousallonsdescendredansnotrerequte,leCodeClientquiestlacltrangredelatablecommande.

    Quelestlersultatattendu?

    EnSQLonaurait:Slectionnez

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 16/21

    \\ \Z

    Nousdevrionsobtenirdeuxlignescontenantlenomdelasocit.

    Quelestlersultatobtenu?

    Nousobtenonsles2lignesclientsattendues.Cesdernirescorrespondentsauxdeuxclientsn'ayantpaspassdecommandes.

    Nousvenonsdecrerunerequtedenoncorrespondance.

    V4.Avousdejouer!Cettepetitesried'exercicesvousaurapermiscertainementdetoucherdudoigtlasubtilitdestypesdejointure,etl'importancedesrelationsdansunerequte.

    Lorsqu'unerequteestfaitesuruneseuletable,ilfautfaireattentionauxchampssurlesquelsondemandeunregroupementNotezquepouridentifierunenregistrementilesttoujoursprfrabledefaireapparatrelaclprimaireLorsqu'unerequteestfaitesurplusieurstables,ilfaut,saufcasexceptionnel,veillercequetouteslestablessoientliesentreelles.EncascontrairenousaurionsunproduitcartsienPardfautlesjointuressontquivalentes.Celasignifiequecertainsenregistrementspeuvent"disparatre".Ilfautchangerletypedejointurepourqu'ilspuissentrapparatreSurACCESS,lestypesdejointuresont:quivalente(pardfaut),gaucheoudroite.Onnepeutpas,enuneseulerequte,rcuprerleschampsnonjointsdesdeuxtables.

    Avezvousbiencompris?

    Jevaisvousdonnericil'occasiondevoustester.Essayerderaliserlademandesuivante:

    Jesouhaiteavoiruntableaumepermettantdesuivrelesmouvementsattachsmesfournisseurs.CertainsFournisseurs(ausens'enregistrementsdelatablefournisseurs')sontpeuttreenregistrsdanslatableFournisseurs,mais,pourlemomentdumoins,jen'airfrencaucundeleursproduits.

    Ilestaussipossibleque,surlaquantitdesproduitsrfrencsdanslabase,certainsnesevendentpasdutout.Auquelcas,enpoussantloin,ilestpossibled'imaginerunFournisseurayantdesproduitsrfrencs,etpourtant,surcefournisseur,jenegnreaucunChiffred'affaires.

    J'aimeraidoncquevousessayezdeconstruirelarequtesuivante:

    Explicationdechaquecolonneretourne:

    NFournisseur:Ils'agitduCode,del'identifiantdufounisseurquejeveuxvisualiser.Cetidentifiantnedoitapparatrequ'uneseulefoisdanscetterequte,carvousnedevezfairequ'iln'yaitqu'uneseuleligneparfournisseur.Socit:CorrespondaunomdelasocitattacheauNFournisseurcorrespondant.NbProds:Correspondaunombrederfrencesproduitsquej'aidanslatabledesproduits,pourcefournisseursl.End'autrestermes,c'estlenombredeproduitsrfrencssurlefournisseur.NbCommands:Correspondaunombrederfrencesproduitsdiffrentesquiapparaissentdanslescommandes.Cenombrepeutdonctre,aumaximum,galNbProdsCA:Vousl'avezcertainementcompris,vousavezlleCAralissurlesproduitsdufournisseur.Ilcorresponddoncaursultatdesventesdesproduitdufournisseur.CAMoyen:CetlmentlreprendlanotiondeCA.Maiscequim'intresseici,estdeconnatreleCAmoyenparcommande,ralisparfournisseur.IlconviendradoncdefairelamoyennedesCAdechaquecommandedanslesquellesdesproduitsdufournnisseurapparaissent,etce,seulementsurlesproduitsdufournisseur.

    Bon...etbienmaintenant,c'estvous.

    Ilm'estavisquevousnepourrezpasralisercelaenuneseulerequte.

  • 16/2/2015 AccessLesBases

    http://mhubiche.developpez.com/Access/cours/bases/ 17/21

    PS:dernier'petittruc':Pourtesterquevotrerequtefonctionne,ajoutezdoncunfournisseurildevraitapparaitremmes'iln'yapasdeproduit.Puisrecommencerl'expriencesurunnouveauproduit.Eneffet,actuellement,touslesproduitssontcommands.iln'yadoncpasd'cartentreNbProdsetNbCommands.

    Prenezvotretemps...detoutesfaons,lasolutionestenannexeA.

    VI.LesFormulaires(venir)

    VII.LesEtats(venir)

    AnnexeA.Correctionsdesexercices(envolution)

    AnnexeA1.SolutionsduMEA1

    Auvudunombred'informationsquejevousaidonnilyavaitplusieurssolutions.Aussi,nousallonsdtaillerchaquecas,etprendreunesolution,fairedeschoix,afindetrouverunmodlequinousserviraultrieurement.

    AnnexeA1a.Messager

    C'estcertainement,lepointsurlequeljeprfrediscuter.Repartonsdenotremodledebase:

    Acemodle,ilfautmaintenantajouteruneEntit,l'entitMessager.Sachantquelemessagerestceluiquis'occupedeslivraisons,commeindiqudansl'nonc,onauraitimmdiatementtendancemodlisercommesuit:

    Lierl'entitMessageravecl'entitCommande,creruneassociationlivrer,et,grcelapetitephrasemagique:

    Estcequeun{Messager}peut{Livrer}plusieurs{Commandes}=>OuiEstcequeune{Commande}peut{trelivre}parplusieurs{Messagers}=>Non

    Onendduituneassociationde1n,deMessagerversCommande,etdonc,onreproduitl'identifiantdel'entitMessagerdansl'entitCommande.

    Cettesolution,est,priorisatisfaisante.Pourtant,l'examinerdeplusprs,onpeutentirerplusieursinformationsquantaufonctionnementdel'entreprisequevoustesentraindemodliser.Ainsi,cettesocitenvoiesescommandesenuneseulefois!Pourlecomprendre,jevaisvousdonnerunexemple:

    Imaginezque,dansunecommande,unclientsouhaiterecevoir20KgdePatates,mais,vousn'enavezque5enstock.Votremodlisationvousempchedelivrerd'abordles5Kg,pourlivrerlereliquatultrieurement,eneffet,nullepartvousn'avezlapossibilitdestockerl'informationrelativelaquantitdjlivre,etdonc,d'endduirelaquantitdeproduitrestantlivrer,cefameuxreliquat.Enfait,l'associationreliebienlesCommandesetlesMessagersparl'actionLivrer,doncunMessagervaeffectivementLivrerdesCommandes,etnondesProduits,cequ'ilestabsolumentncessairedefairedanslamesureol'onsouhaitefaireunsuiviprcisdecequiestlivrdanslaCommande.Enfait,pouryarriver,ilauraitfallulierMessageravecl'associationexistanteRegrouper.

    Ilauraitfalluraisonnercommesuit:

    Puisquejesouhaiteunsuivideslignesdecommande,nousavonsfaituneerreurlorsdenotreanalyse:L'associationRegrouperestenfaituneentitLigneCommande.Elledevraitdonccontenirunidentifiant.Eneffet,ilvanousfalloirsavoirgrerchaquelignedecommande,commesielletaitsurunefichetype,cequireprendnotreconceptdebasedel'entit.

    Maintenant,nousavonsdoncdeuxentitsquenousallonsessayerd'associer:MessageretLigneCommande.

    Utilisonsdonclapetitephrasemagique:

    Estcequeun{Messager}peut{Livrer}plusieurs{LignesCommandes}=>OuiEstcequeune{LignesCommandes}peut{trelivrepar}plusieurs{Messagers}=>Oui(ouparlemmemessager,maisenplusieursfois,cequirevientglobalementaumme)

    Cettefois,notreassociationestuneassociationnn(plusieursplusieurs).Nousdevonsdonc:

    L'agrandirYreproduirenosdeuxidentifiantsYmettrelesdonnesannexes,commelaquantitlivre,etladatedelivraison,parexemple.

    Cesquelquesrflexionsnousamnentuntoutautremodle,quevoici:

    http://mhubiche.developpez.com/Access/cours/bases/images/entites_A.gifhttp://mhubiche.developpez.com/Access/cours/bases/images/solutionmea1a.gif