Académique Documents
Professionnel Documents
Culture Documents
AccessLesBases
Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts
Accueil
ALM
Java
.NET
EDI
Programmation
Access
Excel
ForumAccess
F.A.QAccess
Office
Dv.Web
Word
Outlook
F.A.QVBA
SGBD
Office
PowerPoint
Tutoriels
Sources
Solutionsd'entreprise
SharePoint
Outils
MSProject
Livres
Applications
Mobiles
OpenOffice&LibreOffice
AccessTV
Systmes
Office2010
AccessLesBases
Voicilarplique'amliore'ducoursquej'ail'habitudededonnerpourl'initiationAccess.
J'esprequ'ilvousserautile...
Cecoursvavolueravecletemps,alorsrevenezvoiroj'ensuisrgulirement.
Articlelu27281fois.
L'auteur
MaxenceHUBICHE
L'article
Publile18aot2004Misjourle10janvier2007
Versionhorsligne
I.Introduction
ePub,AzwetMobi
Bonjour,
Lienssociaux
Nousallonsessayer,traverscescrits,decomprendrelesmcanismesetlesfonctionnalitsfondamentalesd'Access.L'objectifdecette
partien'estpasdematriserceproduit,maisd'enavoirunebonnevued'ensemble.
Danslecursusquenousvousproposons,vousvoussituezici:
Access:LesBases
Aprsunrapidetourd'horizond'une
mthodologied'analysesimplifie,
nousabordonslaquestionsdes
tables,desrequtesslection,des
formulairesetenfin,destats.
Lescourssuivantspermettentun
perfectionnementsurlesrequtes
etlestats(Exploitationdes
donnes),surlesformulaires,
accompagnsdel'apprentissagedes
macros(Interfaceet
automatisation)ouencore,dela
miseenplacedelascurit
(Scurit)
Ilserapossibledefinirparuncours
surleVBA,dcoupentrois
parties:
1lesbasesdulangage(Visual
BasicpourApplication),
2perfectionnementdecesbases
(PerfVBA)
3dveloppementClientServeur
avecAccesscommefrontal(VBA
C/S)
Pourquoicetteprogression?
Prenonsunexempledelaviecourante:Vousavezacquisunterrain,etvoussouhaitezconstruire.Parquoiallezvouscommencer?
Laplupartrpondront:"Lesfondations".
Celan'estpasjudicieux.Eneffet,ilestprfrabledecommencerparfaireunplan.Ensuite,nousbasantsurceplan,ilserafaciledefairele
grosuvre,puisdemettreenplaceleslmentsfonctionnels,telslaplomberieetl'lectricit,pourfinirparladcoration(peinture,parquet
etautrespapierspeints).
Leplan,c'estlersultatdel'analyse.
Legrosuvre,correspondauxtablesetrelationsdelabasededonneslapartiestockagedesdonnesgrer.
Laplomberie,l'lectricit,etc.,tousceslmentsfonctionnelsreprsententlesrequtes,quivouspermettrontd'exploiterlesdonnesbrutes
prsentesdanslestables.
Enfin,lesformulairesetlestatssontlesoutilsvouspermettantdecrerl'aspectcosmtique,ladcoration,devotreapplication,aussibien
l'cran(formulaires)qu'l'impression(tats).
I1.Remerciements
J'aimeraisremerciertoutparticulirementmonpreetmonpouse,quifurentmespremiersrelecteurs,censeursetsupporters,ainsique
Developpez.comLLCsited'entraidedesdveloppeurspourlesoutienqu'ilm'aapportdanslecadredelacorrectiondecescrits,ettout
particulirementThomasLebrunetStphaneEyskenspourl'normetravailquecelaleurademand.
http://mhubiche.developpez.com/Access/cours/bases/
1/21
16/2/2015
AccessLesBases
I2.Objetetobjectifs
Jevousproposederetrouvermaintenantl'ensembledelaformationquejefournishabituellementchez
,Organismedeformation.
Cettetapenecorrespondqu'l'explicationdespointsconcernsparleplandecoursdeDEMOSintitulAccess:LesBases,quevouspourrez
retrouverdanslasectioninformatique.
J'aimeraisquevousconsidriezcemanuelcommeunvritablecours.Jevaisvousexpliquer,calmement,maissrementchaquetapedela
ralisationd'unebasededonnessousAccess.
I3.LamthodeMerise
L'idal,pourconstruireunebasededonnesestdeconnatrelamthodeMerise.Sivousdcidezdefairedelaconception/ralisationdebases
dedonnesvotremtier,commencezparcela.Sinon,lesmthodesquejevaisvousdonnerparlasuitedevraienttresuffisantespourfaire
facelamajoritdescas.
Quelquesliensutiles:
RappelsfaitsparSQLProsurDeveloppez.comLLC
UnmagazineInternetassezsympa
Quelquesrfrences:
voir...
voir...
voir...
I4.PourquoiutiliserAccess?
Pourcomprendrel'importancedesbasesdedonnes,prenonsunexemple.NeseraitilpasplussimpledesaisirlescommandesdansExcel,
pourpermettreleursuivietd'utiliserWordpourfaireunmailingpourlesimprimeretdelesenvoyermesclients,quedesemettreun
logicieltelqu'Access?
Examinonslesfaits.SinousvoulonsfaireuntableaudansExcelcettefin,nousnousdirigeronsvraisemblablementversquelquechosede
semblablececi(j'aiprissoindemasquerquelquescolonnespourpouvoirtoutafficherl'cran):
Nousavonsbienl'ensembledesinformationsrelativesnotreclient,toutescellespropreslacommandedececlient,ainsiquetoutcequi
concernelesproduitscommands.
Noussaisissonslapremirelignedenotrepremirecommande,ettoutvapourlemieux.
MAIS,notreclientn'apascommandqu'unseulproduit.Etl,intervientlepremiersouci:qu'allonsnousfairedudeuximeproduit?Nous
allonsl'criresurlalignedudessous,enprenantbiensoinderecopierchaqueinformationrelativeauclientetlacommandecar,sanscela,
lemoindretririsqued'trefatal.Nousrisquonsdeperdrelarelationexistantentremonproduitetmacommande,doncmonclient
Celanousobligedupliquerlaplupartdesinformationsquenousavonsdjsaisies,mais,quoiqu'ilensoit,nouspouvonsdoncarriverce
rsultat,quinousdonnentunecertainesatisfaction:
Apartirdel,d'autressoucispeuventintervenir:Commentsavoircombiendecommandesontenregistres?Nousnepouvonspluscompter
leslignes.Certainescommandesferontuneseuleligne,d'autrescinquante(nousl'esprons).Nousseronsdoncamenfaireuntraitement
d'extractionpourrcuprerchaqueNdefacturesanssesdoublons,pourensuitecompterlenombredelignesainsircupres.Maiscela
restefaisableavecExcel.
Puislescommandess'enchanentetnousenarrivonsnousposerdesquestionsd'analyse.Parexemple,nousaimerions,partantdutableau
suivant:
http://mhubiche.developpez.com/Access/cours/bases/
2/21
16/2/2015
AccessLesBases
ConnatreleCApourleproduitTOMATES.Combiencelaatteintil?Ilestvraiqu'ilesttrssimpled'utiliserExcelpourfairedescalculs.Ilest
faitpourcela.Maisenl'occurrence,lersultatrenvoyparExcelserade239etnonde355car,lorsdemasaisie,j'aifaituneerreur:une
ligneindiqueTOMATESetl'autreTOMATE.OrpourExcel,ilyaunegrossediffrenceentreTOMATEetTOMATES.Celapourindiquerque,
mmesilarecopieestunoutilais,iln'enrestepasmoinssourced'erreurs.Nousneparlonsmmepasdelalimitephysiquedecetableau
quinepourrajamaisexcderles65535lignes.Et,danscecas,lestempsdelatenceserontextrmes,notammentdanslecasdecalculs
analytiquescomplexes.
Enrsum,mmesionpeuts'ensortirparlatechniqueExcel,denombreuxproblmespeuventvenirs'interposer:
Redondancedesdonnes.Cettercrituretantsourced'erreurs
Limitationdunombredelignes
Lemlangedesdiversensemblesdedonnes'(Client/Commande/Produit/)dansunseuletmmetableaunefacilitepasles
analysesstatistiques.
Ilfautdonctrouverunautresystme.C'estlqu'interviennentlesBasesdeDonnesRelationnelles.
I4a.C'estunSGBDR
UnSGBDRestunSystmedeGestiondeBasesdeDonnesRelationnel'.
Examinonscenomdansledtail:
AccessestunSystmedeGestion'.C'estunlogiciel,etenaucuncas,ilnes'agitd'unebasededonnes!C'estunSystme'quisert
Grer',etGrer'desBasesdedonnesRelationnelles'.LaBasedeDonnesRelationnelle'estdoncletypedefichiersgrsparAccess,au
mmetitrequeWordgredesdocumentsetExceldesclasseurs.
SurAccess,lesdocumentsgrsontuneextensionen.mdb(ou.mde)(1).Ils'agitdesbasesdedonnesaccessiblestraverslemoteurde
basededonnesutilisnativementparAccess,moteurquiporteledouxnomdeJET.
I4b.C'estunRAD
RADestl'acronymedeRapidApplicationDevelopment'
GrceAccess,vouspourrezeffectivementtrsrapidementdvelopperdesapplicationscompltes,stockagededonnesetinterfacecompris
danslemmefichier,parexemple.
II.Conception
II1.C'estquoi?Aquoiasert?
Laconceptiondelabaseestl'tapefondamentale.
Sinousvoulonsreprendrel'exempledelaconstructiondelamaison,ils'agittoutsimplementdelafabricationdesplans!Silesplanssont
vitefaits,sansconcertationaveclesdiffrentsintervenants,sansprendreenconsidrationleterrain,etc.ilparaitinconcevablequelamaison
soitbtiesanssoucis!
Enfait,leplanvatreralisparunarchitecte,bassurunetudeduterrainraliseparungomtre,enaccordaveclamairie,les
btimentsdeFrance(sincessaire),etc.
Demme,pourraliserlaconceptiondevotrebasededonnes,vousallezdevoirprendredesinformationsauprsdesdiffrentessources
concernes,auprsdesutilisateurs,desdcideurs,fairedesrunionsrgulirespoursavoirsicequevousconcevezestbienenadquation
aveclaralit...bref,c'estuntravailquidemanderauntempscertain.Nevousprcipitezdoncpasdanscettetapedelaralisationde
votrebasededonnes.Unefoislaconceptionfaite,leresteressembleraunepartiedeplaisir.
II2.Lesprincipesfondamentaux
Repartonsdenotrecasprcdent,ralissurExcel,quinousposaitquelquessoucis:celuidescommandes.
L'ideestderussirrassemblerlesinformations,commesurdesfichestypes.
Parexemple,unclientestunclient.Quelquesoitleclient,nousallonssystmatiquementavoirbesoind'informationsquisontpropres
chaqueclient,commel'adresse,lenom,letlphone,etc.Nouspouvonsgrerceclient,l'enregistrersurunefiche.D'ailleurs,neparleton
pasdeficheclient,etmme,defichierclient.
Nouspourrionsmmeimaginerprformater'desfeuillesainsi,nousn'aurionsplusqu'lesrempliretlesmettredansnotrefameuxfichier
client'.
Enfait,cetteficheprformate',onpourraitl'appelerentit'.Toutlejeuvadonctre,maintenant,derpartirlesdonnesquenousavons
dansnotretableaudedpart,etdelesrassemblerparfichetype'etdefaireautantdefichetype'ouentit'quenousavonsd'lments
distinctsgrer.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/
3/21
16/2/2015
AccessLesBases
Choseimportante,danschaqueentit,nousdevonscrerunezonequicontiendraunevaleurobligatoireetuniquetraverstouteslesfiches
tiresdecetteentit.Onappellecelaunidentifiant.Voiciladfinitionlapluscorrectedel'Identifiant:"L'identifiantassurel'unicitde
l'occurrence(delaficheremplie)del'entit".Danslecasduclient,ceseraleNdeclient.Pourlacommande,leNdeCommande.Pourles
produits,larfrenceproduitferal'affaire(uncodebarreparexemple).Aprsavoirajoutnosidentifiants,nousobtenonsceci(vousnoterez
laconventionquiconsistesoulignerl'Identifiant):
Maintenant,onvapouvoirajoutertouteslesinformations(onlesappelle'attributs')quel'onsouhaiteenregistrerdanschaquefiche.Le
rsultatobtenudoitressemblerceci:
Nousavonsmaintenantunesriedefichestype,etnoussommescapables,danschaquefiche,destockertoutel'informationquinous
intresse.
Deplus,commelesidentifiantssontuniques,onpeuttrsfacilementretrouverunclient,unecommandeouunproduit,simplementparson
identifiant.Enfin,riennenousempcherad'avoirdeuxclientsayantlemmenommaistantlocalissdansdesvillesdiffrentespar
exemple.Nousnerisquonspasdelesmlanger,puisqu'ilsontdesidentifiantsdiffrents.
Cependantriennenouspermetdedterminercequisepasseentrecesfichestype.Parexemple,sinouslisonsbienlafiched'une
commande,nousn'avonsaucunmoyendesavoirquelclientl'apasse.Nousavonsdoncunpeudemalexploiterlesfichesenl'tatactuel
deschoses.Ilvafalloirdterminerlesactionssepassantentrelesfiches,etsavoirengardertrace.C'esttoutl'objetdeladeuximetape.
II3b.DfinitiondesAssociationsetdeleurscardinalits
L'associationsertdfinirl'actionqu'exercentlesentitsentreelles.C'estpourcelaqu'onlesdsignesouventparunverbe.
Quefaitleclient?Ilpassedescommandes.Ilexistedoncuneactionquefaitleclientsurlescommandes,etcetteactionestdcriteparle
verbepasser'.Onpeutdonctracerl'associationentreleclientetlacommandecommececi:
Maintenant,onpeutaussidirequelescommandesregroupentdesproduits.Encoreunefois,leverberegrouperdcriticil'actionquisepasse
entrelescommandesetlesproduits.
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/
4/21
16/2/2015
AccessLesBases
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,livreune
autredateprcise,chezundestinataireclairementidentifi.Maismaintenant,apparataussisurcettefichelenumroduclient(C987)quia
passlacommande.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,sinousnousrfrons
autableauExcelquenousavionsfaitaudpart,etlecomparonsauxdonnesprsentesdansnosentits,onpeutsedemandercequ'ilest
advenudesquantits!
Enrflchissant,oncomprendbienquecesquantitsnepeuventtreprsentesdanslesproduits,carilnes'agitpasdequantitdeproduits'
maisdequantitdeproduitsdanslescommandes'.Demmepourl'entitdescommandes.Enaucuncasilnes'agitdelaquantitde
commandesn'estcepas!
Laplacedecettevaleurestdoncmaintenanttoutetrouve:dansl'associationRegrouper'.Maintenant,sijefaisaisceci,quepenseriezvous:
http://mhubiche.developpez.com/Access/cours/bases/
5/21
16/2/2015
AccessLesBases
Certainsdirontcertainementque,vuquenouscherchonsviterladuplicationdesdonnes,ilestinutiledereproduirelePrixUnitaireHTetla
TVAquisontdjprsentsdansl'entitProduit,maisquelaQuantitetlaRemisesontbienplaces.
Partagezvouscepointdevue?
C'estprobable.Pourtant,mmesicesinformationsontlemmenom,ellesn'emportentpaslammesignification:
LesPrixunitaireHTetTVAdel'entitProduitontrapportavecleprixetletauxactuels.Ceuxquisontappliquspourlafacturequ'onesten
traindefaire.
LesPrixUnitaireHTetTVAdel'associationRegrouperont,quanteux,rapportaveclesdonneshistoriques.Chaquelignedecommandetant
enregistreici,nousgardonsunetracedel'historiquedesprix.Cequenousnetrouvonsnullepartailleurs.Nousavonsdoncaussibienles
prixdescommandesdeJanvier2003queceuxd'avril2004.Etsanscesdonnes,nousserionsdansl'impossibilitdecalculerl'volutiondu
chiffred'affaire,carleseulprixetleseultauxdisponiblesconcerneraientl'instantprsent.
Donc,lorsquenoussommesenprsenced'uneassociationplusieursplusieurs,ilconvientdetoujoursseposerlesquestionsrelativesaux
donnescomplmentaires,ettoutparticulirementlesdonneshistoriques.
II3c.Enrsum
Aprsavoirposlaquestionmagique,vousretiendrez3situationsaumaximum.Nousn'avonspasencoreparldelatroisime,maisnousy
viendronsplustardbeaucoupplustardtellementelleestrare:
unplusieurs
plusieursplusieurs
unun
Cecasaussiesttrsfrquent.Il
Cecasestextrmementcourant.Il
estunpeupluscomplexemettre
esttrsfacilementgrgalement.
enuvre.Ilcorrespondenfait2
Cecasestextrmementrare.Siune
associationsunplusieurs
danscecas,ilfautreproduire
entitnepeuttreliequ'uneseule
l'identifiantdel'entitquiestdu
autreentitetrciproquement,ilest
reproduirelesidentifiantsdes
ctundansl'entitctplusieurs
fortprobablequ'ils'agisseenfaitde
deuxentitsdansl'association
(noterquelenommmeestpeu
lammeentit
Rflchirl'ensembledes
important,maisquel'information
donnesannexes(ycompris
qu'onvaymettre,elle,l'est)
historiques)
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.Je
commenceparmettreensituation.
Imaginezquevousinterveniezpourunesocitdeprestationsdeservicesinformatiques,afindeconcevoirunebasededonnespermettantle
suivietlafacturationdesinterventionsraliseschezlesclients.Lasocitestsusceptiblederalisern'importequelleintervention.Ilfaut
imprativementquelemodlequevousallezconcevoirpuisserpondreauxquestionssuivantes,sansenoublierunepartie:
1.
2.
3.
4.
5.
quelemployestdansquelservice,etquiledirige?
quelemploytravaillepourquelclientetquellesdates?
quelclientademandquelleintervention?
quelsmatrielssontfacturer,pourquellesinterventions,etenquellesquantits?
quelsmatrielscomposentquelsautresmatriels?
Voiciquelquesinformationssupplmentairesquevousdevezconnatre:
unemploynepeutappartenirqu'unseulservicemmesichaqueservicepeutcontenirunemultituded'employs.
aucunmomentmonclientnepeutprendrecontactdirectementavecmonemploy.Ilseraitd'ailleurstoutaussiinconvenantquemon
employprennedirectementcontactavecmonclient.
uneinterventionpeutncessiterplusieursjours,etlaprsencedeplusieursemploys.Ilestaussipossiblequ'uneinterventionne
ncessitelaprsencequed'unseulemploypouruneseulejourne.Laprsencedemesemployspouruneinterventionpeuttre
discontinue(vacances,weekend,...).
Essayezderaliserunesolutionparvousmme.VouspourrezretrouverlacorrectiondecetexerciceenannexeAduprsentmanuel,
l'entreSolutionduMEA2'
III.L'interfaceLogicielle(venir)
IV.Lestablesetrelations(venir)
IV1.C'estquoi?Aquoiasert?
Lestablessontlesstructures,destableauxenfait,unpeusurlemmeprincipequelesfeuillesdecalculd'Excel,quiserventuniquementau
stockagedesdonnes.
http://mhubiche.developpez.com/Access/cours/bases/
6/21
16/2/2015
AccessLesBases
Attention!MmesicertainslogicielstelsSQLServerpermettentlestockagededonnescalcules,cen'estpaslecasd'Access.DansAccess,
seulesdesdonnesstatiquespeuventtreconserves.Iln'yapasdepossibilit,cejour,demettredesdonnesdynamiquesdansles
colonnesdestables.
IV2.Apartird'unlogicieldemodlisation(CaseStudio)
SivousavezutilisunlogicieldemodlisationdebasededonnestelqueCaseStudio,ilseratrsaisdecreraussibienlestablesqueles
relations.Eneffet,laplupartdeslogicielsdemodlisationpermettentunegnrationdescriptqu'ilsuffirad'excuterpourgnrerlabasede
donnes.
Ceslogicielsdemodlisationvouspermettentderapidementmodliservotremodle.Ainsi,lersultatdevotreexercicedemodlisation
auraitdonnquelquechosecommececi:
Ensuite,enquelquesclics,CaseStudiovousgnreunscriptdansunepetitefentre:
Unefoislescriptdegnr,ilvoussuffitdesuivrelesindicationsfourniesdanscedernier:
Crerunenouvellebasededonnes
CrerunNouveauModule
Copiercollerlescriptdanscemodule
PrendresoindevrifierquelabibliothqueDAOestbienactivedansleprojetencours(outils/rfrences)
PositionnerlecurseurdelasourissurlaligneSubMain()
AppuyersurF5.
Vousobtiendrezalorsunebaseavectouteslestablesprpares,lesrelationsfaites,ettoutcelaseraconsultabledirectementdanslafentre
desrelationscommecelaestmontrdansl'imagesuivante(j'aiunpeurorganislestablespourquecelaparaisseplusclair):
Touteslestablesetlesrelationsonttgnres!
Etcelan'aprisquequelquessecondes.
SivousenvisagezdetravaillersouventlamodlisationdebasesdedonnesavecAccess,jenepeuxquevousrecommanderl'acquisition
d'untellogiciel.
Toutefois,lacrationd'unebasededonnesdetempsentempsnencessitepascesoutils,etAccessnouspermettrsfacilementdecrer
destables,unefoisnotremodleralis.Voyonsmaintenantcomment.
IV3.Crationd'unetablesimple
Iln'yariendeplusfacilequedecrerunetableunefoislemodlephysiquededonnescorrectementdfini.
Danslemodlequenousavonsgnrprcdemment,prenonslatabledesservices.Quepouvonsnousobserver?
Ilyatroisinformations:l'identifiant,lenom,lelieu.Cestroisinformationssontdeschamps.Lesidentifiantetlaclprimaire.Ilvanous
falloirreproduiretrsprcismentcesmmeslments.
Positionnonsnousdanslalistedestables.
Cliquonssurleboutonnouveau.
Parmitousleschoixquinoussontproposs,choisissonslemodecration.
Nousobtenonsl'interfacesuivante:
VousnoterezavecintrtlacolonneNomdeChamp'.Ils'agitenfaitd'untableau,etsurchaquelignedecetableauilestmaintenantpossible
dedfinirunnomdechamp.Nousarrivonsdoncrapidementcersultat:
Lestroischampstantdfinis,ilnousfautmaintenantindiquerquelechampidentifiantestbienlaclprimaire.Nousnouspositionnonssurce
dernier.Etnouspouvonscliquersurl'icnedelaclprimairecequiapoureffetdefaireapparatreunepetitecldansleslecteursitu
gauchedenotrechamp.Voil,nousavonsdfiniuneclprimaire.
Ilnenousresteplusqu'enregistrercettetable.Celas'effectuecommedanstousleslogicielsdeMicrosoft,encliquantsurlapetitedisquette.
AppelonscettetabletblServices(jeprfixelenomdonntablesystmatiquementparletrigrammestbl).
Nousvenonsdefinirdedfinirlastructuredenotretable.Pourvoirl'aspect'FeuilledeDonnes'decettetable,ilvoussuffitdecliquersurle
premierboutondelabarred'outils.
Nouspouvonsmaintenantfermercettetable.Nousvenonsdecrernotrepremiretable.
Vousavezconstatcommeilestfaciledecrerunetable.Cependant,Accessaussidesfonctionnalitsavancesquivontvouspermettre
d'affinerlespossibilitsdesaisiedesinformationsdansvotretable.
http://mhubiche.developpez.com/Access/cours/bases/
7/21
16/2/2015
AccessLesBases
IV3a.Diffrentsmodesdecration
Ilyaplusieursmthodespourcrerunetable.VouslesavezvueslorsquevousavezcliqusurleboutonNouveau...Sicesautresmodesne
nousintressentpasici,jevaismalgrtoutrapidementvouslesprsenter:
LemodeFeuilledeDonnesvousdonneuneinterfacesemblableunefeuilleExcel.VoussaisissezvosdonnesettitresetAccess
s'occupeseuldedciderdutyped'informationcontenudansvoscolonnes.
LasolutionavecAssistantTableestintressante,maisdanstouslescas,l'usagedesassistantsesttrslimit.Ilestdoncbeaucoup
plusintressantdeconnatrelemodecrationquivouspermettradecomprendrecommentlestablessontconstruitesafindesavoir
interveniraprsl'usagedel'assistant.Vouspourrezvousintresserauxassistantsdevotrect.Leprincipeestsimple:lireles
questions,rpondre,etpasserl'tapesuivante
ToutcequiconcernelesImportsetAttachesdetablesseraabordenAnnexeB.
IV3b.Basculerentrelesmodesd'affichage
J'ail'habitudedecomparerlabasculedesmodesd'affichageunemanipulationquevousaveztousdjfaite.Prenezunepicedemonnaie.
Vousenvoyezlectface.Sivousvoulezvoirlectpile,ilvousserainutilederemettrelapicedanslapochepourcela,ilsuffiradela
retourner.Ilenestdemmepourvotretable.Ilyadeuxaffichagespossibles,aummetitrequ'ilyadeuxfacessurunepice.Ilsera
inutiledefermerlatablepourenchangerl'affichage,lepremierboutongauchedevotrebarred'outils(quellequ'ensoitl'image)servant
cetteopration.Cebouton(lepremierdelabarred'outils)estretenir,cartouslesobjetsquenousverronsdansAccessaurontdeux
affichagespossibles,etchaquefois,pourbasculerdumoded'affichage'Structure'aumoded'affichage'Donnes',c'estceboutonquenous
pourronsutiliser.
IV4.Approfondissons
Jevouspropose,danslapartiesuivante,d'essayerderaliserlatabledesemploys,maisenparcourantlatotalitdesfonctionnalits
avancessurleschamps,aussibienquesurlestables.
Commenonscommepourlacrationdelatableprcdente:
Nouveau
ModeCration
SaisiedesNomsdeChamps
Dfinitiondelaclprimaire
Enregistrementdelatable
Nousvoicidoncarrivsunrsultatquidevraittresemblableceluici:
Pourl'instant,nousnenoustionsintresssqu'lapremirecolonneintitule'NomsdeChamps'.Passonsauxdeuxcolonnessuivantes.
'TypedeDonnes'et'Commentaires'.
IV4a.Lescommentaires
Vouspouvezcrireicitouttextevouspermettantdevousrappelertrsprcismentcequevousvouliezmettrel'originedansvotrechamp.
Cependant,cettezoneaunintrtparticulierpourl'utilisateurfinal.Eneffet,touttexteinscritdanscettezoneapparaitradanslabarred'tat
del'application.Parexemple,noussouhaitonsquel'utilisateursaisisselenomdefamilleenlettresmajuscules.LechampempNompourra
donctrecommentcommesuit:
L'effetdonnenmodefeuillededonnesseraceluici:
Cettezoneestfacultative.Cependant,sivousvoulezunconseilutile,considrezqu'ilestobligatoire.Ilvouspermettracertainement
d'conomiserdesheuresdetravailsivousavezrevenirmodifiervotrebasededonnesdansquelquesmois.Sinousprenonsletempsde
remplirchaquezonedecommentaire,nousarriveronscersultat:
IV4b.Lestypesdedonnes
Intressonsnousladernirecolonne:TypesdeDonnes.
Jedoisbienavouerqu'ici,jenepartagepaspleinementlechoixfaitparMicrosoft,auniveaududcoupagedestypes.Mmesicelaestfait
pourquetoutunchacunpuissetravaillerrapidementavecAccess,ilesttoujoursbondesavoiravecquoinoustravaillonsdansnoschampsou
colonnes,auseind'Access.
Aussi,j'aimeraiattirervotreattentionsurcepetitschmaquivouspermettracertainementdemieuxvoussituer:
IlyatroisgrandsTypes,etunemultitudedeSoustypes.
Voicimaintenantquelquesexplications
IV4bi.Lestypespourlescaractres
Cestypesdedonnescontiennenttouteslessriesdecaractresgnrsdepuisleclavier,nedevantpastreinterprtscommedes
numriques.
Type
Texte(N)
http://mhubiche.developpez.com/Access/cours/bases/
Description
Ncorrespondaunombremaximaldecaractresque
vouspouvezsaisirdanslacolonne.Cenombreest
comprisentre1et255.Cetypeestleplusutilispour
toutcequiconcernelestockagededonnescaractres.
Ilestaussilepluspratique.Vousnoterezcertainement
queleseullmentdanslalisteestTexte.Lalongueur
dutexte,leNbre,estdfinidanslaproprit'Tailledu
Champ'.
8/21
16/2/2015
AccessLesBases
Iln'estpastrspropredemettremmodanscette
catgorie.Cependant,j'aichoisidelemettreici,caril
concernegalementuniquementlescaractres,au
mmetitrequeletypededonnesTexte(Nbre).
Mmo
Ils'agitdetexte,stockscommetels,maisutiliss
commelienshypertexte.
LienHyperTexte
IV4bii.Lestypespourlesnumriques
Vousvoussouvenezcertainementdecestorturesinfligesparlesprofesseursdemathmatiquespendantlescoursde6,5,4etc.Etbien
onvareprendrel...Plusprcisment,nousallonsnousintresserparticulirementauxensemblesNerR...vousvousvouvenezmaintenant
?
LesNombresEntiers(N)
Type
Description
Taille
Octet
Utilispourstockdepetitsnombres
entierspositifscomprisentre0et255
Entier
Cetypepermetdestockerdesnombres
entierspositifsetngatifscompris
2octets
entre32768et32767
EntierLong
C'estleplusgrandtypededonnes
pourdesnombresentiers.Onpourra
stockerdesnombrescomprisentre
2147483648et2147483647
1octet
4octets
LesNombresRels(R)(Pourrappel,cesnombressontdcimaux...)
Type
Description
Taille
RelSimple
Utilispourstockdepetitsnombres
entierspositifscomprisentre0et255
1octet
RelDouble
Cetypepermetdestockerdes
nombresentierspositifsetngatifs
comprisentre32768et32767
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]
http://mhubiche.developpez.com/Access/cours/bases/
9/21
16/2/2015
AccessLesBases
EnSQLonaurait:
Slectionnez
SELECTSocit
FROMClients;
Quelestlersultatattendu?
Aucuntraitementparticuliern'esteffectusurcetterequte.Ildevraitdoncs'agirdel'affichagebrutdelalistedeschamps[socit]dela
tabledesclients.Lenombredelignesdursultatdelarequtedevraitdonccorrespondreaunombredelignesdanslatable.
Quelestlersultatobtenu?
Nousobtenonsiciquatrevingtonzelignes.
Quepouvonsnousendduire?
Qu'ilya91clients.Pours'enassurerilsuffitderegarderlecontenudelatableClients.
V3b.Casd'unerequtemultitables
Danslarequteprcdenteajoutezlatablecommande.Nousallonsmaintenantexaminercequisepasselorsqu'onmetdansunerequtedes
tablesquineserventrienpourobtenirlersultatattendu.
Notezaupassageladescriptionautomatiquedelarelationexistanteentrelatabledesclientsetcelledescommandes.ACCESSreprendici
l'ensembledesinformationsdfiniespralablementdanslafentredesrelations.Ils'agitd'unerelationunplusieurs,tellequeunclientpeut
avoirplusieurscommandes,chaquecommanden'ayantqu'unseulclient.
Quelestlersultatattendu?
EnSQLonaurait:
Slectionnez
SELECTSocit
FROMClientsINNERJOINCommandes
ONClients.[CodeClient]=Commandes.[CodeClient];
http://mhubiche.developpez.com/Access/cours/bases/
10/21
16/2/2015
AccessLesBases
Puisqu'oncontinuen'afficherquelechamp[socit],ons'attendlogiquementobtenirlalistedessocitsayantdescommandes,soitnos
91lignestrouvesprcdemment.
Quelestlersultatobtenu?
Nousobtenonsmaintenant830lignes.
Quepouvonsnousendduire?
Larponsequinousvientl'espritimmdiatementest:les91clientsonteffectu830commandes.
Cependant,cetteaffirmationn'estpasobligatoirementexacte.Pourquoi?Parcequelarelationentreles2tablesestqualifedejointure
quivalente.C'estdirequecetterequtetravailleuniquementsurl'ensembledesassociationspossiblesentrelechamp[codeclient]dela
tabledesclientsetlechamp[codeclient]delatabledecommandes.Maissepourraitilqu'ilyaitdescommandesn'ayantpasdeclients
rfrencsdanslabase?N'oublionspaslaprsencedel'intgritrfrentielledanscetterelation.Commenousl'avonsvuprcdemment,
ellepermetdes'assurerquepourunecltrangreilyatoujoursuneclprimairequiluicorresponde.Onpeutdoncdirequ'ilya
effectivement830commandescarnoussommescertainsqu'iln'yaquedescommandesliesdesclients.
Enregardantattentivementlersultatdelarequte,nousnotonsquelenomdelasocitapparatplusieursreprises.Celamontrele
nombrederelationspossiblesentreleclientetlacommande.Lenomdelasocitapparatautantdefoisquecettesocitapassdes
commandes.
Attention!Notezbienceci:
Sil'intgritrfrentiellen'avaitpastactivesurcetterelation,cenombrede830lignesnepourraientpassignifierautrechoseque830
associationsclientcommandes.Ilseraiteneffetpossiblequ'ilyait,danslatabledescommandes,descommandesayantdescodesclient
n'existantspasdanslatabledesclients.
V3c.Casd'unerequtesansrelations
Admettonsquenouscherchionsobtenirnouveaulesquatrevingtonzelignesdel'exercicenumroun,ilsemblequecesoitlarelationqui
nousempched'aboutir.Lalogiqueimmdiatevoudraitqu'onsupprimecetterelation.Alorssupprimonslaetvoyonscequisepasse.
Quelestlersultatattendu?
Nousvoudrionsrcuprerlesquatrevingtonzelignesdudpart.Eneffet,lagrilleindiquequenousn'affichonsquelechamp[socit]dela
tabledes"clients".
EnSQLonaurait:
Slectionnez
SELECTSocit
FROMClients,Commandes
http://mhubiche.developpez.com/Access/cours/bases/
11/21
16/2/2015
AccessLesBases
Quelestlersultatobtenu?
Ilyacettefois75530lignes.
Quepouvonsnousendduire?
Que,saufcasexceptionnel,ilfaudratoujoursveillercequ'ilyaitdesrelationsentrelesdiffrentessourcesd'unerequte.L'absencede
l'uned'entreellessuffiraitraliserunproduitcartsien,c'estdirel'associationdechaqueenregistrementd'unetabletousles
enregistrementsdel'autretable.
IciACCESS,n'ayantaucuneindicationdesrelationsqu'ildoitfaireentrelesclientsetlescommandes,vaassocierchacundes91clientsavec
les830commandes.Nousobtenonsainsi91X830=75530lignes.
Celanecorrespondpasauxrsultatsattendus.Nousallonsdoncrestaurernotrerequtedansl'tatprcdentensupprimantlatable
commandeetenlarajoutantlarequte.Nousnousretrouvonsdonciciexactementdanslemmetatqu'lafindel'exercicenumrodeux.
V3d.Casd'unerequteavecregroupement
Nousn'avonstoujourspasrussircuprerlesquatrevingtonzelignesdudpart.Enobservantattentivementlersultat,commenous
l'avonsditprcdemment,nousobservonsquelenomdelasocitapparatplusieursfois.Sinousparvenionsregrouperenuneseuleligne
touteslesoccurrencesd'unmmenomdesocit,nousobtiendrionsvraisemblablementlesquatrevingtonzelignesattendues.
Faisonsdoncunclicsurleboutonsigmadenotrebarred'outils.Celafaitapparatreunenouvellelignedanslagrille.Ils'agitdelaligne
opration.
Nousobservonsquel'oprationslectionneestl'oprationderegroupement.
Quelestlersultatattendu?
EnSQLonaurait:
Slectionnez
SELECTSocit
FROMClientsINNERJOINCommandes
ONClients.[CodeClient]=Commandes.[CodeClient]
GROUPBYSocit;
NB:Uneautresolutionauraittd'utiliserlaClauseDISTINCTafinden'af
rsultatsuniques,cequiauraitmodifileSQLainsi:
Slectionnez
SELECTDISTINCTSocit
FROMClientsINNERJOINCommandes
ONClients.[CodeClient]=Commandes.[CodeClient];
http://mhubiche.developpez.com/Access/cours/bases/
12/21
16/2/2015
AccessLesBases
ACCESSdevraitessayerderegroupertouteslessocitsidentiquespourn'enfairequ'uneseuleligne,etnousdevrionsainsircuprernos
quatrevingtonzelignesdudpart.
Quelestlersultatobtenu?
Nousobtenonscettefoisseulement89lignes.
Quepouvonsnousendduire?
Premirement,ayantregroupsurlesnomsdesocit,iln'estpasimpossiblequenousayonsrcuprenuneseuleligneaumoinsdeux
socitsdiffrentesdemmenom.Ils'agitdoncdes'assurerquechaqueclientapparatbiendanssaligne.Pourcela,riennevautle
regroupementsurunevaleuruniqueetfacilementidentifiable,l'identifiantouclprimaire
Rajoutonsdoncdansnotrerequtelechamp[codeclient]delatableclients.L'oprationestencoreunefoisl'oprationderegroupement.Il
s'agiteneffetdel'oprationpardfaut.Dcochonslacaseafficher,car,sileregroupementestutile,l'affichageducodenenousestpas
indispensablepourcetexercice.
Quelestlersultatobtenu?
Cettefois,ACCESSdevraitessayerderegrouperlesidentifiantdesclientsainsiqueleurssocits,demanirecrerdeslignesdont
l'associationcodeclientsocitsoitunique.Parconsquent,siplusieurssocitsavaientlemmenom,ondevraitvoirapparatreautantde
lignesqu'ilyadesclientsdiffrents,qu'ilsaientoun'aientpaslemmenomdesocit.
Nousobtenonstoujours89lignes.
Quepouvonsnousendduire?
Cettefoisnoussommesabsolumentcertainsqu'ils'agitbiende89clientsdiffrents.
Commenousl'avonsdcritl'exercicenumrodeux,lersultatdelajointurepermetd'obtenirl'ensembledesassociationspossiblesentrela
tabledesclientsetcelledescommandes.Nousavonsgalementdterminaveccertitudequ'ilnepouvaitpasyavoirdecommandessans
client.Cependantilesttoutfaitprobablequ'ilexistedesclientsn'ayantpassaucunecommande.Conscientdecela,etauvudespoints
examinsprcdemment,nousenarrivonslaconclusionlogiquequenousavons2clientsn'ayantpaspassdecommandes.
tantdonnlersultatquenousavonsobtenul'heureactuelle,commentfairepourobtenirlesquatrevingtonzelignesquenousavionsau
dpart?Leproblmeesticiletypedejointurequiestunejointurequivalente.Lesassociationsnesontquelesassociationspermettantde
joindredeuxchampsidentiques.
V3e.Lestypesdejointures
IlexisteplusieurstypesdejointuresousACCESS:
Lajointurequivalente
LajointureGauche
LajointureDroite
Examinonslaractiondechacuned'entreelles.
Imaginonsdeuxtablesdanslaplussimpleexpression:quelqueschamps,pasdeclprimaire,pasd'index.Lechampdeliaisonestunchamp
detypetexteunseulcaractre.Traonsunerelationduchampdeliaisondelatableunverslechampdeliaisondelatabledeux.Nousdirons
ainsiquelatabledegaucheestlatableun,etquelatabledroiteestlatabledeux.Eneffet,lectgaucheestlepointd'originedelarelation,
etlectdroit,desonpointd'arrive.(Cettenotiondegaucheetdroiten'aaucunrapportaveclapositiondestablesdanslarequte.O
http://mhubiche.developpez.com/Access/cours/bases/
13/21
16/2/2015
AccessLesBases
seraientlagaucheetladroitesilesdeuxtablestaientl'unesurl'autre?Toutdpenddutracdelarelation.Lectgauchedelajointure
estlepointd'originedelarelationlectdroitsonpointd'arrive.)Nousobtenonsleschmacidessous:
Lorsquelarequtevas'excuter,ellechercheratravaillersurletableaursultantdecetterelationsavoirl'associationdetousleschamps
quivalents.Celadonneralatablesuivante:
Nousvoyonsbienquecertainspointsdecesdeuxtablesnesontpasprisencomptedanslatabledersultats.Parexemplecommentfaire
pourqu'apparaissentdanslatabledersultatstousleschampsdelatableun,doncdelatablegauche.Ilfautchangerletypedejointureetla
transformerenunejointuregauche.Latablersultantd'unerequteavecunejointuregaucheserasemblablelatablesuivante:
Danscetypedejointurenousobtenonsunejointurequivalenteplustouslesenregistrementsorphelins(quin'ontputrelis)delatablede
gauche,associsdeschampsNULL.
Qu'enestildelajointuredroite?Ils'agitdel'inversedelajointuregauche.Silajointurequenousavionsmiseenoeuvretaitunejointure
droitelatablersultantd'unetellerequteseraitlasuivante:
Cettefois,cesontdeschampsdelatablegauchequenousnevoyonsplus.Lajointuredroitecorrespondunejointurequivalentelaquelle
onajouteratousleschampsorphelinsdelatabledroite,lisdeschampsNULL.
V3f.Casd'unerequteavecjointureexterne
Modifionsletypedejointure.
Pourcela,ilsuffitdefaireundoubleclicsurlarelation.Appraitalorslafentresuivante:
Les3pointsmentionnssontdansl'ordredel'exposcidessus:
1=JointureEquivalente
2=JointureGauche
3=JointureDroite
ChoisissonslepointN2(lajointuregauche)demanirepouvoiravoirl'ensembledesclients,avecetsanscommandes.Danslagrille
d'Access,lersultatseralesuivant:
http://mhubiche.developpez.com/Access/cours/bases/
14/21
16/2/2015
AccessLesBases
EnSQLonaurait:
Slectionnez
SELECTSocit
FROMClientsLEFTJOINCommandes
ONClients.[CodeClient]=Commandes.[CodeClient]
GROUPBYSocit;
Dansnotrecassinousvoulonsvisualisertouslesclients,mmeceuxn'ayantpaspassdecommandes,ilfaudraprendrelajointuregauche.
Eneffet,larelationayantttracedepuislatableclientsverslatablecommandes,latableclientsestlatabledegauche.Puisquenous
voulonstouslesclients,ilfaudrafaireunejointuregauche(Rappel:pourmodifierletypedejointure,ilsuffitdefaireundoubleclicaumilieu
delarelation).
Quelestlersultatobtenu?
Nousobtenonscettefoislesquatrevingtonzelignesattendues.
Quepouvonsnousendduire?
Quenousavonsfiniparrcuprerlesenregistrementsdelatableclientsquinesontpaslislatablecommandes,toutenconservantchaque
occurrencedesclientsayantdescommandes.
V3g.Casd'unerequtedenoncorrespondance
Maintenantquenousavonsrussircuprerles91clientsdudpartlaquestionquiseposeest:"peutonnercuprerquelesclients
n'ayantpaspassdecommandes?".
Larponseestoui.Sinousrevenonssurletableauvudansl'exerciceprcdent,nousobservonsqu'ilestfaciled'identifierles
enregistrementsdontlesjointuresnesontpasquivalentes.Dansnotrecaslorsquelesenregistrementsjointsn'ontpasdedonnes
quivalentesdanslatabledectcommandes,ilssonttousmisNULL.Sicesontcesderniersquenouscherchonsrcuprer,ilsuffitde
dtermineruncritreNULLsurunchampquinedevraitpasl'tre(parexemplelaclexterneouunidentifiant,uneclprimaire).
Dansnotrecasnousallonsdescendredansnotrerequte,leCodeClientquiestlacltrangredelatablecommande.
Quelestlersultatattendu?
EnSQLonaurait:
Slectionnez
SELECTSocit
http://mhubiche.developpez.com/Access/cours/bases/
15/21
16/2/2015
AccessLesBases
FROMClientsLEFTJOINCommandes
ONClients.[CodeClient]=Commandes.[CodeClient]
WHERECommandes.[CodeClient]IsNULL;
Nousdevrionsobtenirdeuxlignescontenantlenomdelasocit.
Quelestlersultatobtenu?
Nousobtenonsles2lignesclientsattendues.Cesdernirescorrespondentsauxdeuxclientsn'ayantpaspassdecommandes.
Nousvenonsdecrerunerequtedenoncorrespondance.
V4.Avousdejouer!
Cettepetitesried'exercicesvousaurapermiscertainementdetoucherdudoigtlasubtilitdestypesdejointure,etl'importancedes
relationsdansunerequte.
Lorsqu'unerequteestfaitesuruneseuletable,ilfautfaireattentionauxchampssurlesquelsondemandeunregroupement
Notezquepouridentifierunenregistrementilesttoujoursprfrabledefaireapparatrelaclprimaire
Lorsqu'unerequteestfaitesurplusieurstables,ilfaut,saufcasexceptionnel,veillercequetouteslestablessoientliesentreelles.
Encascontrairenousaurionsunproduitcartsien
Pardfautlesjointuressontquivalentes.Celasignifiequecertainsenregistrementspeuvent"disparatre".Ilfautchangerletypede
jointurepourqu'ilspuissentrapparatre
SurACCESS,lestypesdejointuresont:quivalente(pardfaut),gaucheoudroite.Onnepeutpas,enuneseulerequte,rcuprerles
champsnonjointsdesdeuxtables.
Avezvousbiencompris?
Jevaisvousdonnericil'occasiondevoustester.Essayerderaliserlademandesuivante:
Jesouhaiteavoiruntableaumepermettantdesuivrelesmouvementsattachsmesfournisseurs.CertainsFournisseurs(ausens
'enregistrementsdelatablefournisseurs')sontpeuttreenregistrsdanslatableFournisseurs,mais,pourlemomentdumoins,jen'ai
rfrencaucundeleursproduits.
Ilestaussipossibleque,surlaquantitdesproduitsrfrencsdanslabase,certainsnesevendentpasdutout.Auquelcas,enpoussant
loin,ilestpossibled'imaginerunFournisseurayantdesproduitsrfrencs,etpourtant,surcefournisseur,jenegnreaucunChiffre
d'affaires.
J'aimeraidoncquevousessayezdeconstruirelarequtesuivante:
Explicationdechaquecolonneretourne:
NFournisseur:Ils'agitduCode,del'identifiantdufounisseurquejeveuxvisualiser.Cetidentifiantnedoitapparatrequ'uneseule
foisdanscetterequte,carvousnedevezfairequ'iln'yaitqu'uneseuleligneparfournisseur.
Socit:CorrespondaunomdelasocitattacheauNFournisseurcorrespondant.
NbProds:Correspondaunombrederfrencesproduitsquej'aidanslatabledesproduits,pourcefournisseursl.End'autrestermes,
c'estlenombredeproduitsrfrencssurlefournisseur.
NbCommands:Correspondaunombrederfrencesproduitsdiffrentesquiapparaissentdanslescommandes.Cenombrepeutdonc
tre,aumaximum,galNbProds
CA:Vousl'avezcertainementcompris,vousavezlleCAralissurlesproduitsdufournisseur.Ilcorresponddoncaursultatdes
ventesdesproduitdufournisseur.
CAMoyen:CetlmentlreprendlanotiondeCA.Maiscequim'intresseici,estdeconnatreleCAmoyenparcommande,ralis
parfournisseur.IlconviendradoncdefairelamoyennedesCAdechaquecommandedanslesquellesdesproduitsdufournnisseur
apparaissent,etce,seulementsurlesproduitsdufournisseur.
Bon...etbienmaintenant,c'estvous.
Ilm'estavisquevousnepourrezpasralisercelaenuneseulerequte.
http://mhubiche.developpez.com/Access/cours/bases/
16/21
16/2/2015
AccessLesBases
PS:dernier'petittruc':Pourtesterquevotrerequtefonctionne,ajoutezdoncunfournisseurildevraitapparaitremmes'iln'yapasde
produit.Puisrecommencerl'expriencesurunnouveauproduit.Eneffet,actuellement,touslesproduitssontcommands.iln'yadoncpas
d'cartentreNbProdsetNbCommands.
Prenezvotretemps...detoutesfaons,lasolutionestenannexeA.
VI.LesFormulaires(venir)
VII.LesEtats(venir)
AnnexeA.Correctionsdesexercices(envolution)
AnnexeA1.SolutionsduMEA1
Auvudunombred'informationsquejevousaidonnilyavaitplusieurssolutions.Aussi,nousallonsdtaillerchaquecas,etprendreune
solution,fairedeschoix,afindetrouverunmodlequinousserviraultrieurement.
AnnexeA1a.Messager
C'estcertainement,lepointsurlequeljeprfrediscuter.Repartonsdenotremodledebase:
Acemodle,ilfautmaintenantajouteruneEntit,l'entitMessager.Sachantquelemessagerestceluiquis'occupedeslivraisons,comme
indiqudansl'nonc,onauraitimmdiatementtendancemodlisercommesuit:
Lierl'entitMessageravecl'entitCommande,creruneassociationlivrer,et,grcelapetitephrasemagique:
Estcequeun{Messager}peut{Livrer}plusieurs{Commandes}=>Oui
Estcequeune{Commande}peut{trelivre}parplusieurs{Messagers}=>Non
Onendduituneassociationde1n,deMessagerversCommande,etdonc,onreproduitl'identifiantdel'entitMessagerdansl'entit
Commande.
Cettesolution,est,priorisatisfaisante.Pourtant,l'examinerdeplusprs,onpeutentirerplusieursinformationsquantaufonctionnement
del'entreprisequevoustesentraindemodliser.Ainsi,cettesocitenvoiesescommandesenuneseulefois!Pourlecomprendre,jevais
vousdonnerunexemple:
Imaginezque,dansunecommande,unclientsouhaiterecevoir20KgdePatates,mais,vousn'enavezque5enstock.Votremodlisation
vousempchedelivrerd'abordles5Kg,pourlivrerlereliquatultrieurement,eneffet,nullepartvousn'avezlapossibilitdestocker
l'informationrelativelaquantitdjlivre,etdonc,d'endduirelaquantitdeproduitrestantlivrer,cefameuxreliquat.Enfait,
l'associationreliebienlesCommandesetlesMessagersparl'actionLivrer,doncunMessagervaeffectivementLivrerdesCommandes,etnon
desProduits,cequ'ilestabsolumentncessairedefairedanslamesureol'onsouhaitefaireunsuiviprcisdecequiestlivrdansla
Commande.Enfait,pouryarriver,ilauraitfallulierMessageravecl'associationexistanteRegrouper.
Ilauraitfalluraisonnercommesuit:
Puisquejesouhaiteunsuivideslignesdecommande,nousavonsfaituneerreurlorsdenotreanalyse:L'associationRegrouperestenfait
uneentitLigneCommande.Elledevraitdonccontenirunidentifiant.Eneffet,ilvanousfalloirsavoirgrerchaquelignedecommande,
commesielletaitsurunefichetype,cequireprendnotreconceptdebasedel'entit.
Maintenant,nousavonsdoncdeuxentitsquenousallonsessayerd'associer:MessageretLigneCommande.
Utilisonsdonclapetitephrasemagique:
Estcequeun{Messager}peut{Livrer}plusieurs{LignesCommandes}=>Oui
Estcequeune{LignesCommandes}peut{trelivrepar}plusieurs{Messagers}=>Oui(ouparlemmemessager,maisen
plusieursfois,cequirevientglobalementaumme)
Cettefois,notreassociationestuneassociationnn(plusieursplusieurs).Nousdevonsdonc:
L'agrandir
Yreproduirenosdeuxidentifiants
Ymettrelesdonnesannexes,commelaquantitlivre,etladatedelivraison,parexemple.
Cesquelquesrflexionsnousamnentuntoutautremodle,quevoici:
http://mhubiche.developpez.com/Access/cours/bases/
17/21
16/2/2015
AccessLesBases
Et,jusquel,nousn'avonsparlquedel'entitMessager!
Vouscomprenezbienqu'ilestparticulirementimportantdeprendresontemps,etdebienrflchirpourcrerunmodlequicorresponde
vraiment,leplusprcismentpossible,ausystmequevousessayezdedcrire.
AnnexeA1b.Employe
Voustestoujoursavecmoi?Cava?Cen'estpastropdur?
Alors,continuons,etintressonsnousmaintenantuniquementcequisepasseautourdel'entitEmploye.
L'intituldel'exerciceprcise:"ils'agitdel'employayantprislacommande".Ilyadoncuneassociationapparenteentrecesdeuxentits.
Posonslafameusequestionmagique:
Estcequeun{Employe}peut{Prendre}plusieurs{Commandes}=>Oui
Estcequeune{Commande}peut{trePrise}parplusieurs{Employes}=>Non
Onendduituneassociationde1n(unplusieurs),etnoussavonsque,danscecas,ilsuffitdereproduirel'identifiantduct1(Employe)
dansl'entitctplusieurs(Commande),cequidonneracersultatci:
Nousallonsnousarrterici,mais,encoreunefois,ilauraitfalluprendreletempsdelarflexion.Parexemple,danslemodleprsentci
dessus,vousnepouvezpassuivrelesaltrationsquesubitunecommandeetilettoutfaitprobablequevousn'enayezaucunintrt.Mais
imaginezunpeuqu'ilvousfaillesavoir
Quiainitilacommande?
Quil'amodifie,etquand?
Quil'aenvoye?
Etc.
Rien,danslemodleactuelnevouspermetcela!
Vousconstatezencoreunefoisqu'ilnefautpasseprcipiterdansvotremodlisation,afindenepasvousfourvoyer.Prenezletempsdeposer
desquestions,etdebienrflchircequisepassedanslaralitdanslesystmequevousmodlisez.Prvoyez,prvoyez,prvoyez,mais
sansexagrer.
AnnexeA1c.Fournisseur
Cen'estpaslemomentdesedcourager!Onn'apasfini...
Intressonsnousmaintenantl'entitFournisseur.Ils'agitdufournisseurauqueljepeuxm'approvisionnerenProduit.
DoncilexisteuneassociationentreProduitetFournisseur,l'associationFournir,carilestvraiqu'unfournisseurfaitrarementautrechoseque
defournir...
Estcequeun{Fournisseur}peut{Fournir}plusieurs{Produits}=>Oui
Estcequeun{Produit}peut{treFourni}parplusieurs{Fournisseurs}=>Oui
ATTENTION!Etesvousvraimentsrsdecettedernireaffirmation?Imaginezquevoussoyezunegrandesurface,pensezvousvraimentque
vousallezvousfournirlemmeproduit(parexemplelesYaourtsTartempion)chezplusieursfournisseurs?Non!Vousallezvousfournir
directementauprsdel'entrepriseTartempion.Donc,si,dansvotrecas,vousvousfournissezdirectementlasource,ilestpeut
vraisemblablequeladeuximerponsesoitOui.Silefournisseurnefabriqueplussonproduit,vousaurezbeauvousretournern'importeo,
CEproduitln'existeraplus.Ceciestencoreunefoisunexempledel'importancedeprendresontempsetdebienrflchirsurles
implicationsdesdcisionsquenousprenonsdansl'laborationdenotremodle.
Si,commenousl'avonsdfinicidessus,noussommesenprsenced'unerelationdenn(plusieursplusieurs),alors,lemodledonnerait
quelquechosecommececi:
http://mhubiche.developpez.com/Access/cours/bases/
18/21
16/2/2015
AccessLesBases
Notezbienquenousavonsprofitdel'occasionpourstockeruneinformationdansl'associationFournir:Lecotduproduit,lorsquejeme
fournischezunFournisseurdonn.
Sinon,c'estdire,sil'associationtaituneassociation1n(unplusieurs),lemodleseretrouveraitassezchang,puisquenous
obtiendrionscegenredemodle:
Modlepourlequelnousnousfournissonsdirectementchezleproducteuroulefabricant.
AnnexeA1d.Rsultatfinal
Vousavezconstatparvousmmequ'ilyavaitunemultitudedepossibilitspourrpondrecetexercice.
Cependant,commeilvanousresservirultrieurement,jeprendsvolontairementlepartidenevousprsentericiquelersultatfinaldanssa
formelaplussimple:
AnnexeA2.SolutionduMEA2
http://mhubiche.developpez.com/Access/cours/bases/
19/21
16/2/2015
AccessLesBases
AnnexeA3.LesTablesetRelations
AnnexeA4.LarequteMultiTables
AnnexeB.Import,AttacheetExport(venir)
AnnexeC.Lesfonctions(venir)
Mestutoriels:
(23/10/04)LanotiondeClassedeFormulaireAccess
(21/08/04)AccessLesBases:IntroductionetConception
(20/08/04)FermerautomatiquementunebaseAccess
(28/03/04)Comprendrelesjointures/RelationsdansAccess
Mesarticles:
(21/06/04)FautilDvelopperenPME(LeMondeInformatique)
(15/03/04)LesNouveautsAccess2003
Messites:
Suraccessmaxence
Monblog
CaseStudio(Logicieldemodlisationdedonnes)
Encoursdeproduction:
AccessLesBases:SuiteetFin
TutorielsurlesSousFormulaires
EnProjet:
http://mhubiche.developpez.com/Access/cours/bases/
20/21
16/2/2015
AccessLesBases
Listingexplicatifdesfonctionsd'Access
AccessPerfectionnement:Exploitationdesdonnes
AccessExpert:Interfaceetautomatisation
AccessVBA
AccessVBA:Perfectionnement
(1)
Aproposde...l'extension
Unfichier.mdeestunfichier.mdbquiatcompil'.C'estdireque,normalement,lecodeVBA(langagedeprogrammationvolu
utilisabledansAccess,entreautres)n'estplusaccessible.Cependant,ilfautcontinueravoiruneversiond'Accessouauminimumla
versionruntimepourpouvoirexploiterpleinementunebase.mde.Ellenedevientpaspourautantautonomehlas!
Attentioncependant!DepuisAccess2000(version9.0),ceSGBDRestgalementcapabledemanipulernativementlemoteurSQLServer.
Danscecasprcis,ilserapossiblededvelopperuneapplicationenrelationditeClient/Serveur'avecdesdonnessurunserveurSQLServer,
etlefichierauraalorsl'extension.adp(ou.ade)
Copyright20052010MaxenceHubiche.Aucunereproduction,mmepartielle,nepeuttrefaitedecesiteetdel'ensembledesoncontenu:textes,documents,images,etc.sansl'autorisation
expressedel'auteur.Sinonvousencourezselonlaloijusqu'troisansdeprisonetjusqu'300000dedommagesetintrts.
ResponsablesbnvolesdelarubriqueAccess:PierreFauconnierArkham46Contacterparemail
Developpez.com
Nouscontacter
Participez
Informationslgales
Services
ForumAccess
Blogs
Hbergement
Partenaires
PlanetHoster
Copyright20002015www.developpez.com
http://mhubiche.developpez.com/Access/cours/bases/
21/21