Sunteți pe pagina 1din 20

CURS_3_2008

PAGINA ADO A PALETEI DE COMPONENTE


Active X Data Objects, sau mai scurt obiectele ADO ofer o interfa ctre o surs de
date OLE DB. ADO este prevzut ca interfaa standard de programare pentru OLE DB.
Componentele din aceast pagin permit realizarea aplicaiilor cu baze de date ADO Delpi. !e
utilizeaz baze de date "i obiecte Active# din $icrosoft, sistemul dispun%nd de obiecte DB
&baz de date' care pot furniza conecsiunile la sursa de date "i accesul la acele date. ADO
provider reprezint o variant "i un tip de acces direct la obiectele bazelor de date de pe diferite
drivere. Dac aplicaiile utilizeaz SQL database, au fost realizate (n Microsoft SQL Server sau
Oracle se solicit conectarea lor la sursa de date prin intermediul componentei ADOConection.
Logarea unei componente la sursa de date se realizeaz de ctre proprietatea Connection!tring.
!istemul realizeaz)
Logarea la server*
$anagementul tranzaciilor*
Lucru cu baze de date asociate*
Obinerea de metadate.
Fig nr. 3.. !agina ADO a paletei de co"ponente
+unciile celor "apte componente din pagina ADO sunt centralizate (n tabelul urmtor)
,abelul nr. -... Funiie c!"#!nente!$ %in #a&ina ADO
'u"e Desc$ie$e
ADO#onnection /ealizeaz controlul atributelor de conectare la sursa de date.
ADO#o""and Diri0eaz accesul la sursele de date accesate prin Active #.
ADODataSet /ealizeaz accesul direct la tabelul cutat utiliz%nd Data
$anipulation Language &D$L' sau prin intermediul
instruciunilor de tip !1L.
ADO$able Acceseaz datele dintr2un singur tabel al bazei de date conectate
prin ADO#onnection.
ADOQuer% /ealizeaz accesul direct la una sau mai multe tabele din baza de
date activ prin instruciuni !1L.
ADOStored!roc 3rocedur utilizat (n aplicaiile de tip client, cuprinde un grup de
instruciuni pentru metadate &legturi (ntre tabele din baze de date
diferite, inde4ri ".a.'.
&DS#onnection 5ndepline"te rolul unui manager ce coordoneaz multi2
applications utiliz%nd baze de date de tip business &Application
!ervers'.
Delp'i i"ple"enteaz( obiecte vizuale ADO pentru a permite dezvoltatorilor
crearea celor mai performante "i rapide aplicaii cu suport pentru bazele de date. 3entru a
putea lucra cu ADO, este nevoie s cunoa"tem obiectele, coleciile, proprietile "i metodele pe
care le implementeaz, (n scopul facilitrii accesului la bazele de date.
.
6
CO()O'E'*ELE U*+L+,A*E -' .ES*+U'EA
BA,ELOR DE DA*E
Componentele non-visuale
#o"ponenta $able
#o"ponenta DataSource
#o"ponenta #onnection
Componentele visuale (de date)
!ropriet(i co"une ale co"ponentelor de date
#o"ponenta D)*rid
#o"ponenta D)+avigator
#o"ponenta D)$e,t
ntrebri i rspunsuri
Chestionar
Exerciii
5n procesul de gestiune a bazelor de date sistemul De#/i utilizeaz dou categorii de
componente)
Componente non-visuale (componente de acces la date ))
component $able pentru descrierea bazei de date*
o component DataSource de transmisie a datelor (ntre componenta de descriere a
bazelor de date "i componentele vizuale*
o component #onnection cu rolul de a conecta forma la sursa de date.
Componente vizuale (componente de vizualizare a datelor), care permit afi"area,
editarea "i actualizarea articolelor unei baze de date, de e4emplu D)*rid,
D)+avigator, D)$e,t, D)-dit, D)Me"o, D)."age, D)#'ec/)o,, D)List)o,,
D)#o"bo)o,, D)&adio*roup, D)Loo/upList)o,, D)Loo/up#o"bo)o,,
D)&ic'-dit, D)#trl*rid, D)#'art "i Decision #ube.
CO()O'E'*ELE 'O'01+SUALE
Componenta Table ( )
Componenta Table, reprezentat de clasa $$able, ofer un acces simplu "i rapid la un
tabel. !e gse"te (n pagina de componente ADO. ,abelele sunt cele mai utilizate pentru
ma0oritatea aplicaiilor simple de baze de date. De obicei, se va folosi componenta ,able c%nd se
gestioneaz baze de date locale.
3roprietatea Dataame &de tip string'.
3rin intermediul ei se specific calea complet spre directorul &dosarul' (n care este
memorat baza de date ce urmeaz a fi prelucreat.
3roprietatea Tableame &de tip string'.
5n proprietatea $able+a"e se va specifica numele tabelului din baza de date activ. !e
selecteaz tabelul, din lista afi"at, dup desciderea acesteia.
-
3roprietatea !ctive &de tip )oolean'.
!pecific dac baza de date este descis sau nu. Dac se alege valoarea $rue, atunci
baza de date este descis, deci se pot efectua operaiile de citire "i de scriere a articolelor bazei.
Dac se alege valoarea False, baza de date este (ncis, nu pot fi citite sau scrise articole ale
bazei de date.
3roprietatea "ndexame &de tip string'.
7dentific un nume de inde4 ata"at bazei de date &un nume de inde4 de regul este
numele unui c%mp al bazei, (ns se poate construi "i o e4presie folosind diverse nume de
c%mpuri'. Aceast proprietate stabile"te c%mpul sau c%mpurile utilizate pentru sortarea
articolelor bazei de date. 5n cazul (n care aceast proprietate nu este specificat ordinea de
sortare este stabilit de ordinea fizic a articolelor.
3roprietile #aster$ource "i #aster%ields a tabelei master.
!unt utilizate la aplicaiile de tip "aster 0 detaliu. 5n cazul acestor aplicaii se lucreaz
cu dou tabele. 8nul dintre tabele, denumit master, coordoneaz afi"area articolelor (ntr2o
component D)*rid al celuilalt tabel, care este denumit detaliu. Cu a0utorul proprietilor
MasterSource "i MasterFields se realizeaz o (nlnuire, (ntre cele dou nume de indec"i, din
cele dou tabele. 5n componena D)*rid corespunztoare tabelei detaliu vor fi afi"ate numai
articolele din respectiva tabel, pentru care valoarea actual din c%mpul master selectat,
coincide cu valoarea actual e4istent (n c%mpul tabelei detaliu.
3roprietatea #aster$ource a tabelei detaliu.
Aparine tabelei detaliu "i specific numele componentei DataSource va fi utilizat de
tabela master.
3roprietatea #aster%ields &de tip string' a tabelei detaliu.
!e specific unu sau mai multe nume de c%mpuri, care sunt nume de indec"i, ale unei
tabelei master separate de caracterul 92:&punct "i virgul'. 3roprietatea $aster+ields trebuie
definit doar dup ce a fost specificat proprietatea MasterSource. !istemul consult tabela
master, dup c%mpurile inde4, articol de articol. 5n acela"i timp sunt analizate valorile actuale
ale c%mpurilor din tabela master specificate (n proprietatea MasterFields a tabelei detaliu. Din
tabela detaliu vor fi afi"ate numai acele articole, pentru care valoarea c%mpului specificat de
c%mpul .nde,+a"e al tabelei detaliu coincide cu valorile actuale din c%mpurile MasterFields ale
tabelei master.
Componenta DataSource ( )
Aceast component se gse"te (n pagina Data Access "i are urmtoarele proprieti1
3roprietatea !utoEdit &de tip boolean'.
!e selecteaz pe $rue pentru a da voie s se cupleze form2ul actual la sursa de date.
3roprietatea ame.
!e va seta pe DataSource+ &; este numrul sursei de date active'.
3roprietatea Data$et.
/ealizeaz cuplarea la tabelul de date prin ADO$able.
<
Componenta Connection ( )
Componenta Connection realizeaz conectarea la bazele de date e4terne permi%nd
selectarea tipului de baz de dat ce va fi accesat, selectarea bazei de date "i desciderea
acesteia. Aceste operaii sunt realizate prin intermediul proprietii #onnectionString. Dup
descidere se efectueaz "i un test de conectare corect. Dac conectarea a e"uat se poate relua
operaia prin intermediul form2ului Connection!tring, butonul )uild. !e gse"te (n pagina de
componente ADO.
CO()O'E'*ELE 1+SUALE 3DE DA*E4
Componentele visuale utilizate (n gestiunea bazelor de date mai sunt denumite "i
co"ponente de date. $a0oritatea componentelor de date sunt derivate din componente standard
"i au multe dintre proprietile asociate cu acest tip de component. !e vor prezenta doar
proprietile care sunt specifice gestiunii datelor pentru fiecare component.
Proprieti comune ale componentelor de date
,oate componentele de date au proprieti comune. De e4emplu, toate componentele au
o proprietate Data$ource. Aceast proprietate este folosit pentru a face legtura (ntre o
component de date "i o surs de date, care este ea (ns"i legat de un "ir de date.
$a0oritatea componentelor de date au "i o proprietate Data%ield. Aceast proprietate se
folose"te pentru a lega componenta de date de un c%mp particular din "irul de date. C%nd se
leag o component de date de un c%mp din "irul de date, coninutul c%mpului respectiv este
afi"at direct (n componenta de date.
$a0oritatea componentelor de date au "i proprietatea %ield. Aceast proprietate se
folose"te pentru a obine acces la coninutul &de programare' unei componente. !e pot, de
asemenea, scimba caracteristicile de afi"are ale c%mpurilor sau alte proprieti ,+ield cu
a0utorul proprietii +ield.
!e poate folosi proprietatea &ead'nl( pentru a (mpiedica utilizatorul s modifice datele
(ntr2o component de date care permite editarea &DB=rid "i DBEdit, de e4emplu'.
Componenta DGrid
Componenta D)*rid+ din pagina de componente Data Controls, afi"eaz articolele
bazei de date (ntr2un format tabelar sau foaie de lucru. Coninutul diferitelor celule poate fi
editat. 5n fiecare linie a foii de lucru se afi"eaz un articol al bazei de date. 3rima linie va
conine numele c%mpurilor tabelei de date consultate.
8na din cele mai importante proprieti ale D)*rid0ului este proprietatea Columns.
Aceast proprietate permite s se scimbe numrul "i ordinea coloanelor care apar (n
tabel. !e vor putea aduga, (nltura sau ordona coloanele folosindu2se Columns Editor.
3entru a lucra cu #olu"ns -ditor, se va da un clic> pe tabel aps%ndu2se pe butonul din
dreapta al mouse2ului "i apoi se alege comanda Columns Editor din meniul conte4tual.
O alt variant ar fi s se apese pe butonul (n form de elips, aflat l%ng opiunea
Columns, (n Ob0ect 7nspector. +olosind Columns Editor, se pot aduga sau "terge
?
coloane "i sorta (n ordine coloanele. De e4emplu, un tabel de date poate conine foarte
multe c%mpuri, dar la un moment dat, se dore"te s se vad doar 0umtate din acele
c%mpuri (n DB=rid. +olosind Columns Editor, se pot ascunde c%mpurile care nu se
doresc a fi vzute.
'O*56 A nu se confunda proprietatea D)*rid #olu"ns &modificat cu Columns
Editor' cu proprietatea componentelor tabelului FieldDefs &modificat cu +ields Editor'.
3roprietatea +ieldDefs a componentelor tabelului controleaz care coloane sunt de fapt
coninute (n "irul de date. 3roprietatea Columns afecteaz doar c%mpurile care sunt
vizibile (n tabel.
3roprietatea De,aultDra-in. indic dac @CL deseneaz celulele (n tabel sau sunt
desenate implicit. Dac DefaultDraAing este +alse B nu este activat B trebuie s se
rspund evenimentelor OnDraAColumnCell "i OnDraADataCell pentru a realiza
desenarea celulelor.
3roprietatea 'ptions permite s se stabileasc opiunile de afi"are "i comportament
pentru tabel. +olosind aceast proprietate, se pot Cstinge: titlurile coloanelor, se poate
sau nu permite redimensionarea coloanelor, afi"a sau nu liniile celulelor "i a"a mai
departe.
3roprietatea Title%ont permite s se stabileasc tipurile de caractere folosite la titlurile
coloanelor. !e va folosi aceast proprietate pentru a stabili tipurile de caractere folosite
(n celulele tabelului.
DB=rid are doar dou metode publice. C%nd se folose"te un tabel desenat de utilizator,
se vor apela metodele DefaultDra2#olu"n#ell "i DefaultDra2Data#ell pentru a cere @CL2
ului s deseneze celula tabelului.
Componenta DB=rid are c%teva evenimente, dintre care ma0oritatea in de editarea
celulelor "i navigarea printre date.
Componenta DNa!i"ator
Componenta D)avi.ator+ din pagina de componente Data Controls, afi"eaz o
bar cu diferite butoane care permit utilizatorului s navigeze printr2un "ir de date, (nregistrare
cu (nregistrare put%ndu2se efectua "i operaii de editare. ;avigatorul ofer butoane pentru prima
(nregistrare, urmtoarea, precedenta, ultima (nregistrare, introducere, "tergere, editare
(nregistrare, oprirea editrilor, afi"area editrilor "i actualizarea articolelor. Aceast component
este aproape automatic, deoarece tot ceea ce trebuie s fac utilizatorul este s o pun pe
form, s o lege de sursa de date "i s o lase s funcioneze.
Bara afi"at are aspectul urmtor)
3rincipalele proprieti ale componentei DB;avigator care se vor seta sunt)
3roprietatea Con,irmDelete, c%nd este setat pe ,rue, adic este activat, determin
apariia unei ferestre de dialog care va fi afi"at de fiecare dat c%nd utilizatorul apas
pe butonul Delete.
D
!etarea proprietii /ints &de tip !trings' pe ,rue &activat' descide fereastra List
String -ditor (n care sunt denumirile butoanelor, permi%nd sugestii pentru fiecare buton
de pe navigator. La editorul de cod se pot introduce sugestii pentru fiecare buton de pe
navigator)
o First record
o Prior record
o Next record
o Last record
o Insert record
o Delete record
o Edit record
o Post edit
o Cancel edit
o Refresh data
3roprietatea 0isible)uttons d posibilitatea s se aleag care butoane s fie vizibile pe
navigator. !e pot aduga sau "terge butoane (n timpul crerii sau (n timpul funcionrii
programelor. 3entru fiecare buton e4ist posibilitatea de a fi activat sau dezactivat &a"a
cum se vede (n +ig nr. '
Fig. nr. Dezactivarea unor butoane din bara de navigare
DB;avigator are doar o metod &)tn#lic/3 de interes "i un eveniment 4On#lic/3. !e
poate folosi "etoda )tn#lic/ pentru a simula apsarea unui buton pe navigator. !e va putea
folosi eveni"entul On#lic/ pentru a detecta o apsare pe un buton de pe navigator. Oricum,
foarte rar trebuie folosit evenimentul OnClic>, deoarece navigatorul "tie de0a ce s fac atunci
c%nd butoanele sale sunt apsate.
Componenta DTe#t
Componenta D)Text+ din pagina de componente Data #ontrols, este o versiune a
componentei standard Label dar care ine cont de datele din tabelele bazei de date. Ofer un
mod de a afi"a datele dintr2un c%mp, fr a permite utilizatorului s efectueze modificri asupra
lor. !pecificarea c%mpului se realizeaz prin proprietatea DataField. Aceast component nu
ofer( propriet(i, "etode 5i eveni"ente specifice bazelor de date, altele dec%t cele comune
tuturor componentelor.
Obs6 5n vederea realizrii programelor de consultare a tabelelor din bazele de date
trebuie cunoscute cel puin componentele Button "i Label din pagina de componente
!tandard.
E
5n aceast variant butonul Delete va fi
ascuns, nu va aprea (n bara de navigare
C!"#!nenta Butt!n
Butoanele de comand sunt componentele cel mai des utilizate (n proiectele Delpi. Ele
sunt destinate lansrii (n e4ecuie a diferitelor aciuni. 5n momentul (n care se efectueaz un clic
pe un buton, se declan"eaz eveni"entul On#lic/ "i se e4ecut procedura corespunztoare
evenimentului. Evident "i alte componente sesizeaz faptul c s2a efectuat un clic de mouse
asupra lor, deci "i pentru alte componente pot fi scrise proceduri de tratare a evenimentului
OnClic>.
Componenta )utton &de tip $)utton' se gse"te pe pagina standard a paletei de
componente. !imbolul grapic al componentelor de tip buton de comanda are forma)
Cele mai importante proprieti specifice componentelor de tip $)utton sunt urmtoarele)
!roprietatea Cancel 4de tip )oolean3
!tabile"te "odul de utilizare a tastei -S#. Dac pentru aceast proprietate se selecteaz
valoarea True, atunci prin acionarea tastei E!C se va lansa (n e4ecuie procedura ata"at
evenimentului On#lic/ &adic efectuarea unui clic de mouse pe buton sau acionarea tastei E!C
sunt ecivalente'. E4ist cazuri, (n care o form conine mai multe butoane de comand cu
proprietatea #ancel puse pe $rue. 5n acest caz se va e4ecut doar o singur( procedur( On#lic/
"i anume acea procedur, care corespunde primului buton vizibil, (n ordinea de parcurgere cu
tasta $A) a formei. @aloarea implicit a proprietii este False.
!roprietatea De,ault 4de tip )oolean3
!tabile"te "odul de utilizare a tastei -+$-&. Dac pentru aceast prorietate se
selecteaz valoarea $rue, atunci prin acionarea tastei E;,E/ se va lansa (n e4ecuie procedur
ata"at evenimentului OnClic> &adic efectuarea unui clic de mouse pe buton sau acionarea
tastei Enter sunt ecivalente'. E4ist cazuri, (n care o form conine mai multe butoane de
comand cu proprietatea Default &implicit' puse pe ,rue. 5n acest caz se va e4ecuta doar o
singur procedur OnClic>, "i anume acea procedur, care corespunde primului buton vizibil, (n
ordinea de parcurgere cu taste ,AB a formei. !e menioneaz (ns, c dac un buton a0unge (n
focar atunci butonul respectiv se transform (ntr2un buton temporar implicit. Astfel, dac (nainte
de a apsa E;,E/ se selecteaz un alt buton se va e4ecuta procedura On-vent a butonului
selectat "i nu procedura On-vent a butonului iniial. @aloarea implicit a proprietii este False.
!roprietatea #odal&esult
!e utilizeaz (n cazul butoanelor care au fost plasate pe forme corespunztoare
diferitelor ferestre de dialog. O fereastr( de dialog ese o fereastr modal, adic nu se
poate efectua nici o activitate (n fereastra principal p%n c%nd fereastra respectiv nu se
(ncide. 3roprietatea $odal/esult comunic dac se (ncide sau nu fereastra de dialog a
butonului precum "i modul de (ncidere a ferestrei. 5n momentul (n care se efectueaz
un clic pe un buton al ferestrei de dialog proprietatea $odal/esult a ferestrei de dialog
se va transforma (n aceia"i proprietatea butonului. @alorile posibile ale proprietii sunt
urmtoarele) "r+one, "rO6, "r#ancel, "rAbort, "r&etr%, "r.gnore, "r7es, "r+o,
"rAll, "r+o$oAll, , "r7es$oAll. @aloarea implicit este "r+one
C!"#!nenta Labe
Componenta Labe &eticet, de tip $Label', din pagina de componente
standard, permitea fi"area unor te4te statice. ,e4tul respectiv poate fi specificat prin
F
proprietatea Caption a componentei (n faza de eleboratre a proiectului sau printr2o
instruciune de atribuire de forma )
1abel2 Caption345Textul static56 &unde ; G ., 6, - ".a.m.d.'
Componenta Label se gse"te (n pagina standard a paletei de componente av%nd ata"at
simbolul grafic 3oate fi folosit "i pentru definirea ceilor de accelrare. Ceile
astfel definite pot fi puse (n coresponden cu alte controale care un au proprietatea
Caption. 3rin apsarea ceii de accelrare controlul referenial va fi pus (n focar.
3roprietile specifice componentei sunt)
!roprietatea !li.nment
!pecific poziionarea orizontal a te4tului. @alorile posibile sunt)
taLeft8ustif% 0 &valoarea implicit' te4tul este aliniat la mucia din st%nga a
dreptungiului*
ta&ig't8ustf% 9 te4tul este aliniat la mucia din dreapta a dreptungiului*
ta#enter0 te4tul este centrat.
!roprietatea 1a(aut
!pecific poziionarea vertical a te4tului. @alorile posibile sunt)
tl$op 9 te4tul este plasat (n partea superioar a dreptungiului &valoare
implicit'*
tl#enter 9 te4tul este centrat (ntre mucia superioar "i cea inferioar a
dreptungiului*
tl)otto" 9 te4tul este plasat (n partea inferioar a dreptungiului.
!roprietatea !uto$ize &de tip boolean'
/ealizeaz redimensionarea automat a dreptungiului (n funcie de lungimea
te4tului. 3e varianta $rue dimensiunea dreptungiului se modific (n funcie de
lungimea te4tului.
!roprietatea Transparent &de tip boolean'
!pecific dac componenta este sau nu este transparent. 3e varianta $rue
conponenta va fi transparent. De e4emplu, dac (n spatele eticetei se afl o imagine
grafic, iar eticeta este transparent, graficul un va fi acoperit de eticet.
!roprietatea 7ord7rap &de tip boolean'
!pecific dac te4tul eticetei poate fi afi"at pe mai multe linii. Are dou valori
,rue "i +alse. 3e valoarea $rue, dac te4tul eticetei este prea lung, va fi (mprit pe mai
multe linii. 3e varianta False te4tul eticetei se limiteaz la o singur linie &poate fi
trunciat'.
!roprietatea $ho-!ccelChar &de tip boolean'
!e refer la modul de afi"are a caracterului CH: &ampersand' situat (n te4tul
aferent comonentei. 3e varianta $rue caracterul ce urmeaz dup H va fi subliniat. 8n
caracter subliniat 0oac rolul unui accelerator. Dac se acioneaz ta4ta corespunztoare
caracterului subliniat atunci focarul va a0unge la componenta specificat de proprietatea
Focus#ontrol. Dac se alege varianta False atunci caracterul CH: va fi afi"at ca atare,
iar proprietatea Focus#ontrol nu poate fi utilizat.
I
E*A)ELE 'ECESARE CO'SUL*5R++ U'E+ BA,E DE
DA*E
/ealizarea unui program prin care s se consulte o baz de date creat (n mediul de
lucru !ccess "i s se vizualiueze un tabel, din cadrul acesteia, (ntr2o form Delpi.
Ce$inee #$!be"ei6
,abelul din baza de date creat (n Access s se poat vizualiza (n totalitate. 3e forma
final s se regseasc urmtoarele elemente)
O eticet care s conin denumirea tabelului*
O bar cu butoane de control*
7nformaiile din tabel s fie afi"ate sub form de !eet*
,abelul afi"at s conin bare de defilare &:orzScroll)ar 5i ;ertScroll)ar' at%t pe
vertical c%t "i pe orizontal*
8n buton pentru prsirea aplicaiei.
Re7!va$e6
8. 8re.tirea consultrii bazei de date.
3e form se va plasa o component de tip non2visual ADO#onnection av%nd ca scop
conectarea form2ului la tipul de baz de date ce va fi accesat "i se va descide dup
operaia de selectare.
O component non2visual ADO$able se aduce pe form, prin intermediul ei se va seta
tabelul de lucru din baza de date activ.
O a treia component non2visual, intitulat DataSource se va fi4a pe form, av%nd rolul
de a preciza sursa de date activ (n acel moment.
Dup selectarea proprietilor celor trei componente, tabelul selectat devine activ a"tept%nd s
fie vizualizat.
2. !,iarea coninutului unui tabel pe ,orm.
Dac se solicit vizualizarea fi"ierului sub form de foaie de calcul, (n care s se poat
vedea "i denumirile c%mpurilor, se va folosi componenta visual D)*rid care permite aceast
variant de afi"are. 5n acest scop, se va fi4a pe form un DB=rid, se redimensioneaz conform
cerinelor "i se cuplez la sursa de date. 5n urma acestor operaii =rid2ul a fost pregtit pentru a
primi informaii. 3reluarea informaiilor din tabelul activ "i aducerea (n grid se realizeaz prin
intermediul componentei ADO$able set%ndu2i proprietatea Active pe $rue.
3. !du.area elementelor adiionale.
,itlul tabelului se realizeaz printr2o etic'et( plasat pe form "i creia i se scimb
numele (n concordan cu fi"ierul "i tabelul consultat.
Butoanele de navigare se afi"eaz prin intermediul componentei visuale D)+avigator.
Componenta se va cupla la sursa de date pentru a fi activ pe sursa respectiv.
Butonul de (ncidere va fi creat de componenta )utton. +uncia butonului se va realiza
prin cod program.
9. 1ansarea 9n execuie a ,orm-ului2
!e salveaz <nit2ul realizat cu a0utorul comenzii File = Save As, eventual se poate, (n
aceast faz, s i se atibuie alt nume dac se dore"te acest lucru.
.J
!e salveaz proiectul generat cu a0utorul comenzii File = Save !ro>ect As. Denumirea
implicit dat de sistem se poate scimba.
!e lanseaz (n e4ecuie proiectul realizat prin comanda &un = &un din meniul principal.
Detaie$ea eta#e!$ %e uc$u
. !e descide o nou aplicaie File?+e2?Application.
@. 5n coloana de valorii a proprietii #aption a form2ului se va scrie numele apllicaiei, de
e4emplu, #onsultare )D.
3. 3e form se aduc urmtoarele componente)
ADO#onnection din pagina ADO*
ADO$able din pagina ADO*
DataSource din pagina Data Access.
A. 5n vederea conectrii la sursa de date se va e4ecuta dublu clic> pe ADOConnection. 5n
fereastra #onnection String se e4ecut dublu clic> pe butonul intitulat )uild av%nd ca efect
desciderea ferestrei cu numele Data Lin/ !roperties. Din aceast fereastr se va selecta
tipul de obiect corespunztor bazei de date ce va fi activat. Dac baza de date a fost creat
(n Access se va selecta Microsoft 8et A,B OL- D) !rovider ca provider de date. Acest
provider folose"te motorul KE, pentru a accesa bazele de date Access. 5n continuare
vom selecta butonul +e,t.
+ig nr Conectarea la sursa de date
C. 5n fereastra Data Lin/ !roperties se va selectaLintroduce calea spre o baz de date
Access, prin intermediul casetei de dialog 82 $elect or enter a database name2 5n caseta
de dialog respectiv se poate introduce calea spre fi"ierul cutat &dac se cunoa"te'
..
sau se e4ecut dublu clic> pe butonul trei puncte din dreapta permi%ndu2se selectarea bazei
de date. !e descide apoi baza de date selectat prin butonul Open.
D. !e e4ecut te4tul de conectare corect, prin $e,t #onnection. !e revine la caseta de dialog
anterioar aps%nd butonul O: din partea de 0os, pentru a (ncide caseta de dialog
care a permis stabilirea unei cone4iuni, unde, (n caseta de editare :se Connection
$trin. se observ c s2a generat un "ir de cone4iune ctre baza de date &+ig nr. '.
+ig nr. Mirul de cone4iune ctre baza de date
E. !e aps butonul O: pentru a (ncide "i aceast caset de dialog. 5n acest momen,
s2a stabilit o cone4iune prin ADO la o baz de date Access. Acum trebuie activat
aceast cone4iune. Acest lucru (l vom face modific%nd proprietatea C!nnecte% din
Fase la *$ue.
Fig nr Activarea cone,iunii la baza de date
F. 3e form se selecteaz ADO$able. !e verific dac la proprietatea +a"e este ADO$able.
3roprietatea #onnection se va seta pe ADO#onnection. Ceea ce s2a fcut de fapt a fost
s se stabileasc c obiectul ADO$able va fi legat la baza de date stabilit (n
cone4iunea realizat anterior.
.6
Fig nr. #onectarea tabelului la obiectul ADO#onnection
G. De pe form se selecteaz componenta Data Source. 3roprietatea Data Set se seteaz pe
ADO$abe. 3roprietatea +a"e trebuie s fie DataSource.
B. !e revine la ADO$able. !e selecteaz proprietatea $able+a"e. Din lista tabelelor afi"ate,
care se descide, acion%nd sgeata din dreapta a coloanei de valorii, se va selecta un tabel,
de e4emplu tabelul +acturi, a crui structur este prezentat (n Fig nr.3.@ HStructura
tabelului FacturiI.
Fig nr.3.@. Structura tabelului Facturi
. Din pagina de componente Data #ontrols se selecteaz componenta D)*rid "i se duce pe
form. 5n aceast component se va afi"a tabelul a crui imagine se aduce din baza de date.
!e stabile"te mrimea gridului prin tragere cu mouse2ul de punctele din mi0locul liniilor sau
de la colurile dreptungiului.
Fig nr. Fi,area co"ponentei D)*rid pe for"
.-
@. !e selecteaz prorietatea DataSource a DB=rid2ului "i se seteaz pe DataSource. +orma
gridului este pregtit s primeasc informaii. 5n aceast faz gridul a fost cuplat la sursa de
date.
Fig nr. !reg(tirea gridului pentru a pri"i infor"aii
3. !e revine la ADO$able "i se seteaz proprietatea Active pe $rue. 5n acest moment DB=rid2
ul a preluat informaiile din tabelul selectat.
Fig nr Setarea propriet(ii Active pentru ADO$able
A. !e salveaz unit2ul prin Save As "i proiectul prin Save !ro>ect As din meniul File "i apoi se
lanseaz (n e4ecuie cu &un din meniul principal. +orma realizat poate fi conform Fig nr.
3.3. H<n "odel de consultare fi5ier Access Jn Delp'iI
.<
Fig nr.. <n "odel de consultare fi5ier Access Jn Delp'i
Dac se dore"te (mbuntirea formei se mai poate aduga
o bar de navigare*
un titlu pentru tabel*
un buton de (ncidere a aplicaiei.
C. )ara de navi.are. Din componenta Data#ontrols se selecteaz D)+avigator "i se plaseaz
pe form (n poziia dorit. !e redimensioneaz dup dorin. !e cupleaz la sursa de date
set%nd2ui proprietatea DataSource pe DataSource.
D. Titlu pentru tabel. Din componenta Standard se alege Label "i se fi4eaz pe form. 5n
proprietatea #aption a eticetei se va scrie denumirea tebelului. !e poate scimba font2ul,
stNle2ul, dimensiunea "i culoarea caracterelor select%nd proprietatea Font "i e4ecut%nd dublu
clic> pe butonul cu trei puncte din &$Font' care descide fereastra Font din care se
selecteaz opiunile dorite.
E. )uton de inchidere2 Din componenta Standard se alege )utton. 5n proprietatea Caption a
acestuia se va scrie numele butonului, de e4emplu -K.$. !e e4ecut dublu clic> pe buton,
operaie care descide editorul de cod progra". 5n procedur, la poziia cursorului, se scrie
comanda pentru ie"ire. Aceasta este CApplication.$er"inateLI dup care cu F@ se revine la
form 4Fig. nr. 3.A. For"a J"bun(t(it(3.
.?
Fig nr 3.A. For"a J"bun(t(it(
F. !e e4ecut salvrile &Fie; $ave !s pentru 8nit', &Fie;$ave 8ro;ect !s salvarea proiectului'
"i se lanseaz programul (n e4ecuie prin comanda &un<&un 4Fig. nr.3.C. &ezultatul
e,ecuiei3.
Fig nr.3.C. &ezultatul e,ecuiei
@iteza de acces la baza de date depinde de puterea motorului ADO, de
fiabilitatea serverului de baze de date folosit "i de performana driverului OLEDB
folosit pentru a acesa datele. 3uterea mediului Delpi const (n faptul c pa"ii de creare
.D
a unei aplicaii de baze de date sunt identici indiferent de baza de date folosit, ceea ce
difer este driverul prin care se acceseaz sursa de date.
CO'SUL*ARE BD U*+L+,<'D *ABEL5 (AS*ER
Crearea unei aplicaii, prin care s se consulte dou tabele cu relaie de tip 80' (ntre ele,
considerate o tabel master "i una detaliu, presupune parcurgerea mai multor etape de lucru.
3entru a e4emplifica, se consider baza de date *est#li din care se vor consulta dou fi"iere
(ntre care se va stabili o relaie de tip master2detaliu. Fi5ierul "aster va fi tabela #lieni, iar
fi"ierul detaliu tabela Facturi. 3rin programul, ce urmeaz a fi realizat, se dore"te s se
vizualizeze, (n tabela detaliu, toate facturile pentru clientul cu un anumit cod a crui selecie se
va face (n tabelul master. Corespondena dintre cele dou tabele va fi realizat prin intermediul
c%mpului de legtur #od#li. ;u este necesar s se creeze (n Access relaia dintre tabele.
/ealizarea acestei aplicaii presupune consultarea a dou tabele, din cadrul acelea"i
baze de date. 8nul dintre tabele va fi declarat "aster iar al doilea detaliu. /elaia dintre cele
dou tabele se va realiza printr2un c%mp comun. 5n acest scop pe form se vor plasa ?&cinci'
componente non2visuale "i ?&cinci' componente visuale)
6 &dou' componente D)*rid pentru afi"area datelor*
6 &dou' componente Label pentru a denumi cele dou griduri*
o component )utton pentru prsirea rulrii aplicaiei.
Eta#e %e uc$u6
. !e descide o nou aplicaie File?+e2?Application.
@. 5n coloana de valorii a proprietii #aption a formei se va scrie Consultare utiliz=nd Tabel
#aster2
3. 3e form se aduc urmtoarele componente non2visuale)
ADO#onnection din componenta ADO 3842
ADO$able din componenta ADO 324 *
DataSource din componenta Data Access 3242
D)*rid din componenta Data Controls 324.
A. 5n vederea conectrii la sursa de date se va e4ecuta dublu clic> pe ADO#onnection. 5n
fereastra #onnection String se e4ecut dublu clic> pe butonul intitulat )uild av%nd ca efect
desciderea ferestrei cu numele Data Lin/ !roperties. Din aceast fereastr se va selecta
tipul de obiect corespunztor bazei de date ce va fi activat. Dac baza de date a fost creat
(n Access se va selecta Microsoft 8et A,B OL- D) !rovider "i apoi butonul +e,t.
.E
Fig nr. 3.D. #o"ponente necesare consult(rii
prin tabel( "aster
C. 5n fereastra Data Lin/ !roperties se e4ecut dublu clic> pe butonul trei puncte din dreapta
csuei . Select or enter a database na"e. !e selecteaz baza de date &de e4emplu *est#li'
"i se descide prin butonul Open.
D. !e e4ecut te4tul de conectare corect, prin $e,t #onnection. Apoi O6 de dou ori.
E. !e selecteaz pri"a ADO$able. !e scimb proprietatea +a"e (n #aster. 3roprietatea
#onnection se va seta pe ADOConnection.. 3roprietatea $ableDirect de seteaz pe ,rue, iar
la proprietatea $able+a"e, acion%nd sgeata din dreapta a coloanei de valorii, din lista
tabelelor bazei de date afi"ate de sistem, se va selecta tabelul ce va fi "aster, de e4emplu
tabelul #lieni. La proprietatea .nde,Field+a"es se va trece codul inde4, de
e4emplu)#od#li2 Cele dou tabele care vor intra (n relaie, prin intermediul c%mpului de
legtur CodCli, create (n Access, sunt prezentate (n +ig nr. -.E. C$abelele #lienti 5i Facturi
din baza de date *est#liI.
Fig nr.3.E. $abelele #lienti 5i Facturi din baza de date *est#li
F. !e selecteaz cea de2a doua ADO$able. !e scimb proprietatea +a"e (n Detaliu.
3roprietatea #onnection se va seta pe ADOConnection.. 3roprietatea MasterSource de
seteaz pe Data!ource., iar la proprietatea $able+a"e, acion%nd sgeata din dreapta a
coloanei de valorii, din lista tabelelor bazei de date afi"ate de sistem, se va selecta tabelul ce
va fi detaliu, de e4emplu tabelul Facturi. 3roprietatea Active se seteaz pe ,rue. La
proprietatea .nde,Field+a"es se va trece codul inde4, de e4emplu) #od#li2 La proprietatea
MasterField se va seta c=mpul de le.tur cu tabela master, de e4emplu) #od#li2 Acest
cod se va obine acion%nd pe butonul cu trei puncte din coloana de valori a proprietii care
descide fereastra FieldLin/Designer. Din lista Detail Fields se va alege c%mpul de legtur
al tabelei declarat Detail, iar din lista Master Fields se va alege c%mpul de legtur al
tabelei master. Cele dou c%mpuri selectate se vor regsi (n lista 8oined Fields legate (ntre
ele printr2o sgeat. Dac selecia este corect se acioneaz butonul OO 4Fig nr. 3.F.
&ealizarea leg(turii dintre cele dou( tabele3.
.F
Fig nr.3.F. &ealizarea leg(turii dintre cele dou( tabele
G. !e selecteaz pri"a component DataSource. 3roprietatea DataSet se seteaz pe Master.
3roprietatea +a"e trebuie s fie Data!ource.. !e trece la evenimente unde DataSet se va
seta pe #aster.
B. !e selecteaz cea de2a doua component DataSource. 3roprietatea DataSet se seteaz pe
Detaliu. 3roprietatea +a"e trebuie s fie Data!ource6. !e trece la evenimente unde
DataSet se va seta pe Detaliu.
. Din componenta Data #ontrols se selecteaz DB=rid "i se duce pe form de dou ori. !e
stabilesc mrimile acestora prin tragere cu mouse2ul de punctele din mi0locul liniilor sau de
la colurile dreptungiurilor. 5n prima component se va afi"a tabelul master ce se aduce din
baza de date. 5n cea de2a doua component se vor afi"a elementele de detaliu din cea de2a
doua tabel. 3roprietatea +a"e va fi D)*rid "i respectiv D)*rid@. !e selecteaz
prorietatea DataSource a primului DB=rid "i se seteaz pe DataSource. 3roprietatea
DataSource pentru cel de a2l doilea se va seta pe DataSource@. !e verific -vents dac
Data!ource este Data!ource. pentru primul DB=rid "i Data!ource6 pentru cel dea2l doilea
DB=rid. 5n acest moment forma cu cele dou griduri este pregtit s primeasc informaii.
@. !e revine la pri"a ADO$able unde proprietatea Active se seteaz pe ,rue. Ca efect al
acestei operaii (n DB=ridul setat pe Data!ource. se vor regsi toate in,ormaiile din
tabela master2
3. !e revine la cea de2a doua ADO$able "i se seteaz proprietatea Active pe ,rue. DB=rid2ul
setatat pe Data!ource6 va prelua in,ormaiile de detaliu din tabelul conectat conform
seleciilor din tabela master 4Design0ul realizat va fi ase"(n(tor cu cel din Fig. nr. 3.G.
H&ealizarea for"ei pentru consultate cu tabel( MasterI 3.
.I
Fig nr.3.G. &ealizarea for"ei pentru consultate cu tabel( Master
!e salveaz unit2ul creat prin Save As iar proiectul realizat prin Save !ro>ect As din meniul +ile
"i apoi se lanseaz (n e4ecuie cu &un din meniul principal &Dup e4ecuie form2ul realizat poate
fi asemntor cu cel din Fig nr. 3.B.H$abelul Facturi prezint( toate Jnregistr(rile
corespondente confor" seleciei din tabeul #lientiI.
Fig nr.3.B. $abelul Facturi prezint( toate Jnregistr(rile corespondente confor" seleciei din
tabelul #lienti
Obs: Obiectele, din paginile !D' i Data Controls+ precum !D'Table+ !D'>uer(,
D)*rid+ D)avi.ator+ funcioneaz identic pentru toate tipurile de surse de date,
datorit aritecturii motorului ADO.
3rin acest e4emplu s2a creat o relaie Jntre tabelul "aster 5i tabelul detail. Aceast
relaie a legat cele dou tabele printr2un c%mp comun) C!%Ci. 3entru a (nelege (n totalitate ce
(nseamn acest lucru, se va rula programul "i se trece de la o (nregistrare la alta (n tabelul
master. 3e msur ce se va selecta codul clientului (n tabelul master se vor vedea numai facturile
clientului selectat (n tabelul detail.
6J

S-ar putea să vă placă și