Академический Документы
Профессиональный Документы
Культура Документы
Ce support est libre de droit pour une utilisation dans un cadre priv ou non commercial. Vous n!avez pas l"autorisation de le modi#ier sans l!autorisation crite de son auteur. $oute mise % disposition du support sur un autre site &ue Developpez.com est interdite. Pour un usage dans un but commercial' reportez(vous au) conditions d!utilisation % l!adresse * +++.beaussier.com,-pg.condition Si vous souhaitez des am liorations' /e suis videmment ouvert % toute suggestion. 0l en est de m1me si vous constatez une erreur 2nul n!est par#ait 3. Pour cela' il su##it de m! crire avec pour su/et 4 Programmation Delphi / Dbuter avec l'ADO 5 dans la rubri&ue 4 Contact 5 de mon site principal * +++.beaussier.com 6es mar&ues et noms de soci t cit s dans ce support sont d pos es par leurs propri taires respecti#s. Delphi est la propri t e)clusive de 7896:;D. <indo+s et :CC=SS sont la propri t e)clusive de >icroso#t Corporation. ?e ne suis li avec aucun diteur ou constructeur in#ormati&ue. Ce support a t r alis avec la suite bureauti&ue libre Open Office 1.1 2disponible gratuitement sur http*,,#r.openo##ice.org3 :vertissement compl mentaire * 6es l ments 2donn es ou #ormulaires3 ventuellement inclus dans ce support vous sont #ournis % titre d!e)emple uni&uement. 6eur utilisation peut avoir' dans certains cas' des cons &uences mat riels et /uridi&ues importantes &ui peuvent varier selon le su/et dont ils traitent. 0l est recommand d!1tre assist par une personne comp tente en in#ormati&ue ou de consulter un conseiller /uridi&ue ou #inancier avant de les utiliser ou de les adapter % votre activit .
2,22
Sommaire
1. INTRODUCTION....................................................................................................................................4 1.1. @; >8$ S@9 6":D8............................................................................................................................. A 1.2. 60>0$= D@ S@PP89$.................................................................................................................................A 2. PRSENTATION.................................................................................................................................... 5 3. PARTIE SERVEUR................................................................................................................................ 6 3.1. 7:S= D= D8;;B=S.................................................................................................................................. C 3.2. C8;;=D08; .......................................................................................................................................... E 4. PARTIE C IENT.................................................................................................................................... ! A.1. S$9@C$@9= D= 6":PP60C:$08;.................................................................................................................. F A.2. 0;$=9G:C= @$060S:$=@9.........................................................................................................................10 A.3. 6: C8@CH= :D8................................................................................................................................11 A.A. :CCIS :@D D8;;B=S............................................................................................................................ 1C A.J. :GG0CH:K= D=S D8;;B=S.......................................................................................................................1E A.C. >8D0G0C:$08; D=S D8;;B=S.................................................................................................................. 1L 5. A" IORATION................................................................................................................................. 2# 6. CONC USION...................................................................................................................................... 22
3,22
1. Introduction
Ce support traite de l!accMs % une base de donn es >S(:ccess depuis Delphi. :Nant d marr d but 2003 sous cet :K6' /!ai eu tout de suite besoin de d velopper ce tNpe d"application. Vous trouverez donc % travers ces pages' un didacticiel traitant de mon e)p rience sur ce su/et. Vous n!avez pas besoin de connaOtre le Pascal 8b/et 2le langage de Delphi3 car vous allez d couvrir &u!avec la puissance des composants :D8' il n!N a presque pas besoin de programmer. 1.1. Un mot sur lADO 6":D8 &ui signi#ie en clair 4 :ctiveD Data 8b/ects 5' est un sNstMme d"accMs au) donn es purement >icroso#t dit de haut niveau. C"est(%(dire &ue la comple)it de la conne)ion et des op rations de lecture criture est mas&u e pour le d veloppeur &ui l"utilise. 6e sNstMme :D8 a donc l" norme avantage' si vous d sirez vous connecter % des bases >icroso#t comme :ccess ou SP6,Server' d"avoir ses bibliothM&ues en standard sur la plupart des versions r centes de <indo+s 2FL,2000,DP3. Ce &ui #acilite le d ploiement en clientMle de vos applications. N$%e & Pour des versions <indo+s comme FJ ou ;$' vous aurez probablement besoin d"avoir recours au moteur :D8 &ui est distribu sous la #orme du >D:C 2reportez(vous au chapitre 3.2. Conne ion3. 1.2. Limite du support Pour une bonne compr hension de ce support 2avec notamment les copies cran3' /e pars du principe &ue vous utilisez Delphi dans sa version E et >S(:ccess dans une version FE minimum. 6a version de <indo+s n"a pas d"importance bien &ue mon ordinateur soit sous une anti&ue version FLS=. =n revanche' assurez(vous de disposer d!un pa&uetage >D:C sur votre ordinateur. 9eportez(vous pour cela au chapitre 3.2. Conne ion
A,22
2. Prsentation
:#in de rester le plus simple possible' /e d crirai dans ce document' une architecture en mode client,serveur avec le sNstMme de gestion de base de donn es de >icroso#t :ccess. =n e##et' >S(:ccess est certainement le SK7D le plus simple % mettre en place puis&u!il ne n cessite pas de serveur d di et &u!il peut 1tre install sur la m1me machine &ue le programme client. Du cQt de Delphi' nous avons % notre disposition un ventail de composants &ui vont nous permettre d"utiliser le mode de conne)ion :D8. C$'($sa)%
TADOConnection
Des*ri(%i$) Permet la conne)ion % la base et assure le support des transactions. S!utilise principalement pour e) cuter des commandes SP6 &ui ne renvoie pas d!ensemble de r sultats1. :ccMs au) tables de la base avec retour d"in#ormation possible. :ccMs phNsi&ue % une table avec retour d"in#ormation possible. Permet l"envoi de re&u1te SP6 avec retour d"in#ormation. =) cute les proc dures stocR es d"une base. Permet le trans#ert de donn es avec possibilit de triage.
TADOCommand
TADODataSet
TADOTable
TADOQuery
TADOStoredProc
TRDSConnection
1 6a documentation Delphi pr cise &u!avec la m thode =)ecute' un $:D8Command est capable de renvoNer un ensemble d!enregistrements. >ais pour l!utiliser' vous aurez besoin d!un composant ensemble de donn es :D8 distinct.
J,22
3. Partie serveur
;ous allons maintenant proc der au d veloppement d!une petite application. Celle(ci sera une gestion trMs simple d!un #ichier de clients et &ue nous appellerons... A+$Pri'$. 6"int gralit des sources est #ournie avec ce support dans le m1me pa&uetage. Vous avez les sources des programmes' le programme compil et la base de donn es :ccess. ?e vous encourage cependant' % ne vous en servir &u"en dernier recours. 3.1. Base de donnes D"abord' nous allons cr er la structure de notre base de donn es. 6"int r1t de >S( :ccess #ait &ue nous n"avons &u"un seul #ichier g n r . 6es tables comme les inde) sont en e##et int gr s dans le #ameu) . DB. ;otre base Clie)% se compose d!une table uni&ue du m1me nom et dont la structure est la suivante *
Client Id Nom Adr Cp Ville Tel
;um ro automati&ue ChaOne 2J03 ChaOne 22003 ChaOne 2J3 ChaOne 2J03 ChaOne 22J3
Pour bien #aire les choses' n"oublions pas les inde) sur les tables. 6a colonne Client.Id tant d clar e en tant &ue cl primaire' elle sera ainsi automati&uement inde) e2.
2 6a documentation >S(:ccess pr cise &u!un inde) est automati&uement cr tant &ue cl primaire.
C,22
3.2. !onne"ion 0l est courant pour tablir un point de conne)ion sur une base de donn es % travers l!:D8' de cr er ce &ue >icroso#t appelle un DS;3. >ais ce n!est pas obligatoire et cela tend % ralentir la conne)ion :D8. Donc dans ce support nous n!aborderons pas ce principe puis&u!avec Delphi' nous pouvons compl tement nous passer de cette tape. A )$%er & 0l ne #aut pas con#ondre le DS; et le D;S 2Domain !ame "erver3. Ce sont deu) choses complMtement di## rentes. 6!utilisation d!un DS; est utile notamment pour permettre % l!utilisateur de modi#ier lui( m1me le chemin d!accMs % la base >S(:ccess. 0l est cependant contraignant car il vous #audra cr er ce DS; sur cha&ue poste oS vous installerez votre application. V ri#iez &ue vous disposez bien de l!accMs 8D7C % >S(:ccess. Pour cela' allez dans le panneau de con#iguration <indo+s et lancez l!icQne de l!A+'i)is%ra%eur ODBC.
Dans l!onglet 4 Pilote 5' v ri#iez &ue le pilote 8D7C >icroso#t :ccess est install . S!il n!est pas dans la liste' vous devez $,li-a%$ire'e)% l!installer. 9eportez(vous sur le site de >icroso#t en tapant le mot cl "DAC pour obtenir le pa&uetage n cessaire. :ttention cependant % la version &ue vous t l chargez. 6e >D:C 2.E n!inclut pas par e)emple' le pilote O#$ D% &icrosoft 'et. Pr # rez une version 2.1.
E,22
#. Partie client
;ous allons maintenant passer % la programmation de notre application A+$Pri'$. Cr ez pour cela un dossier du m1me nom et dans le&uel nous allons mettre l!ensemble des #ichiers du pro/et. ;otre application va se construire en &uatre tapes trMs simples * 6a d #inition de l!inter#ace utilisateur avec la #iche principale. 6a mise en place des composants :D8 pour l!accMs au) donn es. 6a mise en place du composant d!inter#ace entre l!:D8 et l!inter#ace utilisateur. 6a mise en place des composants de gestion des donn es pour l!a##ichage et les op rations d! criture des donn es.
;ous allons ainsi avoir une hi rarchie de composants &ui nous permet d!a##icher et de modi#ier les donn es de notre table :ccess.
L,22
#.1. Structure de lapplication 6!application ne comporte &u!une seule #iche &ue nous appellerons .Pri'$ et uPri'$ pour son unit Pascal. @ne #ois Delphi lanc ' enregistrons notre #iche principale avec comme nom d"unit Pascal uPrimo et en changeant les propri t s suivantes pour la #iche * !ame pour 4 $Primo 5 Caption pour 4 %estion !lient ADO 5. =nregistrez en#in le pro/et sous le nom A+$Pri'$. Dans le menu Pro&et / Options' donnez une /olie icQne pour votre application.
F,22
#.2. Inter$ace utilisateur Pour &ue notre inter#ace soit agr able pour l!utilisateur' nous allons d!abord placer un composant Pa-eC$)%r$l sur la #iche. Pa-eC$)%r$l se trouve sur la palette des composants dans l!onglet (in32... @ne #ois le composant pos ' dimensionnez le pour &u!il tienne sur la totalit de la sur#ace de la #iche. Vous pouvez laisser le nom donn par d #aut PageControl)' cela n!a pas d!importance.
Dans la Vue ar,$res*e)%e +es $,/e%s' #aOtes un clic droit sur PageControl) et choisissez le menu 'ouvelle pa(e pour a/outer un onglet de #euille. 9enouvelez l!op ration une seconde #ois a#in d!obtenir deu) onglets attach s % PageControl) et nomm s respectivement *ab"heet) et *ab"heet2. Changez les propri t s !aption de ces deu) onglets pour T)ListeU et T)*ic+eU
10,22
#.3. La couc+e ADO ;ous allons maintenant utiliser les composants :D8. Ce sont eu) &ui vont assurer la conne)ion % la base de donn es >S(:ccess. Depuis la palette' placez un composant ADOC$))e*%i$) et un composant ADOTa,le.
;ous allons ensuite proc der au param trage de la chaOne de conne)ion a#in de d terminer le pilote de donn es % utiliser et le chemin d!accMs % la base. Depuis l!I)s(e*%eur +0$,/e%s' s lectionnez dans la liste votre composant ADOConnection). Double cli&uez sur la propri t Lo(inPrompt pour la mettre % *alse a#in de ne pas avoir de demande d!identi#ication utilisateur lors de la conne)ion % la base. Cli&uez sur le bouton de con#iguration de la propri t !onnectionStrin( 2comme illustr % gauche3.
11,22
S lectionnez le pilote
icroso$t ,et #.- OL. DB Provider.
Ra((el & Si le pilote Gournisseur icroso$t ,et #.- OL. DB n!est pas dans cette liste' c!est &ue votre version de >D:C est certainement trop r cente.
12,22
: l! tape 1' s lectionnez votre base de donn es Clie)%.'+,. =n principe' vous 1tes d /% dans le bon r pertoire. : l! tape 2' inutile de supprimer le nom d!utilisateur 2+ser name3 * A+'i) si vous laissez cocher la case 4 7lanR pass+ord 5 2mot de passe vide3.
=n#in' cli&uez sur le bouton 0est !onnection pour v ri#ier &ue la conne)ion est correcte. =t en principe' vous devez voir s!a##icher *
13,22
Passons % notre composant ADO*able). $ou/ours depuis l!I)s(e*%eur +0$,/e%s' modi#iez les propri t s suivantes * 1. S lectionnez le composant ADOConnection) dans la liste de la propri t !onnection. 2. S lectionnez la table !lient dans la liste de la propri t 0a1le'ame. 3. Passez % la valeur 0rue dans la propri t Active. Vous devez maintenant en 1tre au m1me point &ue dans l!illustration de droite.
1A,22
Passez % nouveau dans la #en1tre Vue ar,$res*e)%e +es $,/e%s. GaOtes un clic droit sur le composant ADO*able) et s lectionnez le menu
.diteur de c+amps
Cette petite #en1tre va nous permettre d!ins rer les colonnes de la table !lient &ui vont nous servir ensuite pour l!a##ichage des donn es.
:ppuNez sur les touches !trl V A pour a##icher la liste des champs disponibles. Par d #aut' tous les champs de la table sont s lectionn s. =nlevez le champ Id &ui n!a pas besoin d!1tre a##ich puis&u!il s!agit de la *l1 (ri'aire de la table. Cli&uez sur le bouton O2 pour valider
1J,22
#.#. Acc3s au" donnes ;ous allons utiliser un composant Da%aS$ur*e pour nous permettre de #aire le lien entre les composant :D8 d!accMs au) donn es et les contrQles d!a##ichage de donn es de notre #iche. Ce composant se trouve sur l!onglet A**2s BD
Comme pour les deu) composants :D8' placez le Da%aS$ur*e en haut % droite pour ne pas 1tre g1n . Dans l!E3(l$ra%eur +0$,/e%s' placez(vous sur Data"ource). >ettez(vous sur la propri t DataSet et s lectionnez dans la liste ADO*able). Votre Vue ar,$res*e)%e +es $,/e%s doit maintenant a##icher la hi rarchie des composants comme dans l!illustration ci(dessous.
1C,22
#.4. A$$ic+a(e des donnes Placez maintenant sur votre #iche et sur l!onglet is%e' un composant D%,ri-. :grandissez votre composant D%,ri-) au) dimensions ma)ima de l!onglet. Placez(vous dans l!E3(l$ra%eur +0$,/e%s et s lectionnez dans la propri t DataSource' le composant Data"ource).
6!a##ichage de vos donn es apparaOt alors dans la grille. N$%e & Pensez % r gler la largeur des colonnes de la grille en agissant sur la propri t 5idt+ depuis la Vue ar,$res*e)%e +es $,/e%s.
1E,22
#.6.
6e composant DB4ri+ est g n ralement utilis pour avoir une vision globale des enregistrements. 0l est en revanche peu prati&ue pour la modi#ication d!une ligne d!in#ormations. ;ous allons donc passer sur l!onglet 5i*6e de notre #en1tre pour cr er des champs sp ci#i&ues % cha&ue colonne et rendre plus ais la mise % /our. Dans la Vue ar,$res*e)%e +es $,/e%s' double cli&uez sur le composant ADO*able) pour #aire apparaOtre la #en1tre des champs. GaOtes alors glisser l!ensemble des champs sur la #iche comme dans l!illustration ci(dessous.
N$%e & Pensez % r gler la largeur des champs en agissant sur la propri t 5idt+ depuis l!I)s(e*%eur +0$,/e%.
1L,22
6!onglet Giche est &uand m1me peu prati&ue si l!on veut naviguer d!un enregistrement % un autre. De plus' il nous man&ue une #onction de cr ation et de suppression. ;ous allons r gler ce problMme avec le composant DBNa7i-a%$r disponible sur l!onglet C$)%r8le BD. Placez le comme sur l!illustration. ;!oubliez pas de s lectionner dans la propri t DataSource' votre composant Data"ource) sinon les boutons seront inacti#s.
N$%e & Vous pouvez galement param trer les boutons du composant DBNa7i-a%$r &ui seront ou non visibles dans votre #iche.
1F,22
4. Amlioration
;ous allons maintenant proc der % &uel&ues modi#ications de notre application pour &u!elle soit plus #acile d!utilisation. 6!a##ichage des donn es pour la navigation n!est pas trMs ais e puis&u!il s!agit du classement par le champ Id. ;ous allons donc param trer le composant ADO*able) pour &u!il e)traie les donn es dans l!ordre alphab ti&ue des noms de client. Dans l!E3(l$ra%eur +0$,/e%' placez(vous sur la propri t Inde"*ield'ames. Saisir dans le champ' la colonne sur la&uelle on doit trier les enregistrements 2pour notre e)emple * 'om3.
20,22
;ous allons en#in e)traire la chaOne de conne)ion du composant ADOConnection) pour l!inclure directement dans le code d!ouverture de la #iche. GaOtes un couper , coller du contenu de la propri t !onnectionStrin( et placez le code suivant dans la proc dure de cr ation de la #iche.
procedure TfPrimo.FormCreate Sender! TOb"ect#$ var c%emin&D' c%aineCn( ! string$ begin c%emin&D !) *C!+Pro,ram File-+&orland+Delp%i.+Pro"ect-+* / *AdoPrimo+Client.mdb*$ c%aineCn(!) *Pro0ider)1icro-oft.2et.O34D&.5.6$* / *7-er ID)Admin$* / *Data Source)* / c%emin&D / *$* / *1ode)S%are Deny None$4(tended Propertie-)88$* { Toutes les lignes qui suivent sont inutiles la connexion. Vous pouvez les enlever. Jet Jet Jet Jet Jet Jet Jet Jet Jet Jet Jet Jet Jet OLEDB:Syste !ata"ase#$$% OLEDB:&egistry 'at(#$$% OLEDB:Data"ase 'ass)or!#$$% OLEDB:Engine Type#*% OLEDB:Data"ase Loc+ing ,o!e#-% OLEDB:.lo"al 'artial Bul+ Ops#/% OLEDB:.lo"al Bul+ Transactions#-% OLEDB:0e) Data"ase 'ass)or!#$$% OLEDB:1reate Syste Data"ase#2alse% OLEDB:Encrypt Data"ase#2alse% OLEDB:Don3t 1opy Locale on 1o pact#2alse% OLEDB:1o pact 4it(out &eplica &epair#2alse% OLEDB:S2'#2alse
N$%e & Pour viter d!avoir % recompiler le programme % cha&ue d placement phNsi&ue de la base :ccess' il serait plus prati&ue de mettre la variable c+eminBD dans un #ichier I'I ou dans la base de registre. 7ien sWr comme la chaOne de conne)ion est vide' les composants n!a##ichent plus les donn es. 9assurez(vous % l!e) cution du programme' tout est normal.
21,22
6. !onclusion
Voil% votre application est pr1te. 0mpressionnant &uant au temps de d veloppement puis&u!il m!a #allu % peine 30 minutes pour la #aire. Ceci n!est &u!une introduction % la compr hension et la programmation sous Delphi d!une petite application :D8 sans avoir besoin de recourir au langage Pascal 8b/et. ?e vous invite % t l d charger la suite intitul e 4 6a conne)ion :D8 PremiMre application 5. Ce second manuel vous permettra de poursuivre votre apprentissage avec une application beaucoup plus complMte. Pour plus d!in#ormation' reportez(vous % l!adresse suivante * +++.beaussier.com,-pg.doc
22,22