Vous êtes sur la page 1sur 21

16/2/2015

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

Vous aimerez peut-être aussi