access - les bases
DESCRIPTION
Access - Les Bases.pdfTRANSCRIPT
-
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