Sunteți pe pagina 1din 208

erban CRICOT

Proiectarea n ACCESS a aplicaiilor informatice

Editura CARMINIS Piteti, 2003

Coperta: Raluca Cri cot

Referen i tiin ifici: Prof. univ. Dr. Gheorghe SECAR Lector univ. Drd. Viorel P UN

Redactor: erban Cri cot Tehnoredactori: Marius Hrzoiu , erban Cri cot

ISBN 973-8418-71-2
I-2

Prefa
Desfurarea n zilele noastre a oricrei activiti economice, financiare sau bancare, necesit un puternic suport informaional, capabil s menin concurena cu competitorii de pe pia, informaia devenind de la un simplu instrument n fundamentarea deciziilor, unul dintre cei mai importani factori ai cunoaterii. Rolul tehnologiei informaiei (IT) este acela de a dobndi cunoatere prin informaie. Tehnologia informaiei nseamn hardware, software, reele, comunicaii, baze de date, etc., precum i toate echipamentele i componentele software necesare prelucrrii informaiei. n prezent, se manifest necesitatea realizrii n diferite domenii de activitate, a unui numr din ce n ce mai mare de aplicaii informatice cu baze de date relaionale, de diferite complexiti, care pot conine structuri de la cteva sute pn la structuri cu milioane de entiti. n acelai timp, instrumentele puse la dispoziie pentru realizarea unor astfel de aplicaii trebuie s depeasc ca arie de utilizare cercul restrns al specialitilor n programare i s se adreseze direct specialitilor din domeniile respective. Access este primul i cel mai performant produs informatic care satisface aceste cerine. El poate permite, pe de o parte, realizarea unor aplicaii informatice cu baze de date relaionale fr scrierea vreunei instruciuni de program, fiind produsul cel mai indicat pe care specialitii din diferite domenii de activitate l pot utiliza direct pentru gestionarea complex a structurilor de date pe care le manipuleaz, iar pe de alt parte, prin diferite instrumente puse la dispoziie (limbajele de programare SQL i VBA, sincronizare, cuplarea la un ODBC) posibilitatea de realizare de ctre specialitii n informatic a unor aplicaii profesionale performante de tip front-end. Prof. univ. dr. Gheorghe Barbu Rectorul Universit ii Pite ti
I-3

GHID RAPID
Bara general de meniu - Menu Bar File
New Database Open Database Get External Data Save Save As/Export Page Setup Print Preview Print Send Database Properties

Edit

Undo Cut (^X) Copy Paste (^V) Create Shortcut Delete (Del) Rename

Tools

Spelling (F7) Auto Correct Office Links Relationships Analyze Database Utilities Security Replication Startup Macro ActiveX Controls Add-Ins Options

View

Database Objects Large Icons Small Icons List Details Arrange Icons Line Up Icons Properties Code Toolbars

Esc - Anularea modificrilor din cmpul curent; Esc (de 2 ori) - Anularea modificrilor nregistrrii curente; Tab / Shift + Tab - Deplasare nainte / napoi cu un cmp; Click pe selectorul de nregistrri + Del - tergere nregistrare(ri); Click selector nregistrri + Copy + Click nregistrare nou + Paste -Duplicare nregistrare(ri); Shift + F2 - Zoom (fereastr mrit pentru introducerea datelor); I-4

CUPRINS
CAP.I BAZE DE DATE - NOIUNI GENERALE ......................... I-11 I.1 Modelarea .........................................................................................I-11 I.1.1 Modelarea conceptual ..............................................................................I-12 I.1.2 Modelarea logic ........................................................................................I-14 I.1.3 Modelarea tehnic ......................................................................................I-15 I.2 Etapele realizrii unui sistem informatic .......................................I-15 I.2.1 Studiul de fezabilitate.................................................................................I-16 I.2.2 Analiza sistemului (produsului) informatic.............................................I-16 I.2.3 Proiectarea sistemului (produsului) informatic .......................................I-17 I.2.4 Realizarea sistemului (produsului) informatic ........................................I-17 I.2.5 Instalarea sistemului (produsului) informatic..........................................I-17 I.2.6 Exploatarea i ntreinerea .........................................................................I-17 I.2.7 Dezvoltarea sistemului (produsului) informatic......................................I-18 I.3 Metode de organizare a datelor n aplicaii ...................................I-18 I.3.1 Organizarea datelor n fiiere clasice........................................................I-18 I.3.2 Organizarea datelor n baze de date..........................................................I-20 I.4 Sisteme de administrare a bazelor de date.....................................I-21 I.4.1 Modelul ierarhic .........................................................................................I-21 I.4.2 Modelul reea ..............................................................................................I-23 I.4.3 Modelul relaional ......................................................................................I-24 I.4.3.1 Tabele..........................................................................................................I-25 I.4.3.2 Relaii..........................................................................................................I-27 I.5 Descrierea modelului relaional. Terminologia relaional ..........I-30 I.5.1 Tabela, cmpul (tipul, dimensiunea i domeniul datelor), nregistrarea (entitatea).............................................................................I-30 I.5.2 Relaii ntre tabele.......................................................................................I-31 I.5.2.1 Tipuri de relaii ..........................................................................................I-32
I.5.2.1.a) Relaiile unu la unu (one to one).....................................................................I-32 I.5.2.1.b) Relaiile unul la mai muli (one to many)......................................................I-33 I.5.2.1.c) Relaiile mai muli la unu (many to one) .......................................................I-34 I.5.2.1.d) Relaii mai muli la mai muli (many to many) ............................................I-34

I.5.2.2 Tipurile de legtur ale relaiilor (join type)..........................................I-35 I.5.3 Schema ........................................................................................................I-35 I-5

I.5.4 Chei..............................................................................................................I-35 I.5.5 Normalizarea bazelor de date relaionale.................................................I-36 I.5.6 Integritatea datelor n bazele de date relaionale .....................................I-37 I.5.7 Elemente specifice proiectrii bazelor de date relaionale .....................I-38 I.6 Algebra relaional...........................................................................I-39 I.6.1 Produsul cartezian extins ...........................................................................I-40 I.6.2 Selecia (selection)......................................................................................I-41 I.6.3 Proiecia (projection)..................................................................................I-41 I.6.4 Alturarea (join)..........................................................................................I-42 I.6.5 Reuniunea (union)......................................................................................I-42 I.6.6 Intersecia ....................................................................................................I-43 I.6.7 Diferena......................................................................................................I-43 I.6.8 mprirea ....................................................................................................I-44 I.7 Extinderea algebrei relaionale - limbaje de programare relaionale .......................................................................................I-44 I.8 Stabilirea ordinii nregistrrilor n tabele - sortarea i indexarea.........................................................................................I-45 I.9 Exemple de modele relaionale........................................................I-47 I.9.1 Modelul relaional cu fiiere plate.........................................................I-48 I.9.2 Modelul relaional orientat pe obiecte......................................................I-48 CAP.II ACCESS - PREZENTARE GENERAL ......................... II-51 II.1 Obiecte de rang superior.............................................................. II-51 II.2 Ferestrele utilizate n mediul Access ........................................... II-55 II.3 Sesiuni dinamice de lucru Access ................................................ II-56 II.4 Fereastra "Database"................................................................... II-57 II.5 Structura aplicaiilor Access........................................................ II-58 II.5.1 Accesul la date n aplicaiile Access ..................................................... II-59 II.5.1.1 Utilizarea datelor externe n aplicaii Access ..................................... II-59 II.5.1.2 Structura coleciilor i obiectelor din DAO ........................................ II-60 II.5.2 Interfaa utilizator a aplicaiilor Access ................................................ II-62 II.6 Expresiile n Access....................................................................... II-64 II.6.1 Termenii expresiilor n Access.............................................................. II-64 II.6.2 Operatorii expresiilor din Access .......................................................... II-66 I-6

CAP.III OBIECTE ACCESS - TABELA..................................... III-70 III.1 Strile unei tabele...................................................................... III-70 III.2 Proiectarea tabelelor................................................................. III-70 III.2.1 Cmpurile tabelei..................................................................................III-71 III.2.1.1 Numele cmpurilor..............................................................................III-71 III.2.1.2 Tipurile de date ale cmpurilor..........................................................III-71 III.2.1.3 Comentariul despre semnificaia cmpurilor...................................III-73 III.2.1.4 Proprietile cmpurilor.....................................................................III-73 III.2.2 Lookup - legarea unui cmp de o surs de date ................................III-79 III.2.3 Cheia primar (principal)...................................................................III-82 III.2.4 Proprietile tabelei...............................................................................III-83 III.3 Vizualizare (Datasheet) tabelelor............................................. III-84 III.4 Structura coleciei de obiecte TableDefs ................................. III-86 CAP.IV OBIECTE ACCESS - RELAIA ...................................IV-87 IV.1 Domeniul de valabilitate al relaiilor ........................................IV-87 IV.1.1 Relaiile permanente ............................................................................IV-87 IV.1.2 Relaiile temporare...............................................................................IV-88 IV.2 Crearea relaiilor permanente. .................................................IV-89 IV.3 Proprietile relaiilor ................................................................IV-90 IV.3.1 Tipul relaiei..........................................................................................IV-90 IV.3.2 Integritatea referenial ........................................................................IV-91 IV.3.3 Tipul de legtur al unei relaii - Join Type.......................................IV-94 IV.3.4 Relaia intrinsec (n aceiai tabel) - Self Join.................................IV-96 IV.4 Crearea relaiilor multiple.........................................................IV-97 IV.5 Structura coleciei de obiecte Relations....................................IV-97 CAP.V OBIECTE ACCESS - CEREREA ...................................V-98 V.1 Prezentarea general a unei cereri .............................................. V-98 V.1.1 Rolul cererilor .........................................................................................V-99 V.1.2 Cereri permanente i temporare ..........................................................V-100 V.1.3 Strile unei cereri permanente.............................................................V-101 V.1.4 Execuia unei cereri ..............................................................................V-102 V.2 Construcia cererilor prin metoda QBE ................................... V-103 V.2.1 Tipul cererilor........................................................................................V-103 I-7

V.2.2 Subschema utilizat de o cerere ..........................................................V-106 V.2.3 Proiectarea ieirii unei cereri ...............................................................V-107 V.2.4 Cereri cu cmpuri calculate .................................................................V-111 V.2.5 Cereri cu parametri...............................................................................V-111 V.2.6 Cereri cu clauza TOTALS...................................................................V-112 V.2.7 Funciile agregate..................................................................................V-115 V.2.7.1 Funciile agregate SQL ....................................................................... V-115 V.2.7.2 Funciile agregate de domeniu........................................................... V-119 V.3 Proprietile cererii..................................................................... V-121 V.4 Tipuri de cereri ........................................................................... V-124 V.4.1 Select Query..........................................................................................V-124 V.4.2 Crosstab Query .....................................................................................V-127 V.4.3 Union Query..........................................................................................V-130 V.4.4 Sub-query ..............................................................................................V-132 V.4.5 Cererile aciune .....................................................................................V-132 V.4.5.1 Update Query....................................................................................... V-134 V.4.5.2 Delete Query......................................................................................... V-136 V.4.5.3 Append Query....................................................................................... V-138 V.4.5.4 Make-Table Query............................................................................... V-141 V.5 Limbajul de programare Access SQL....................................... V-143 V.5.1 Instruciuni (fraze) SQL.......................................................................V-144 V.5.2 Descrierea prin instruciuni SQL a cererilor......................................V-144 V.5.2.1 Cererea Select....................................................................................... V-144 V.5.2.2 Cererea Crosstab................................................................................. V-146 V.5.2.3 Cererea Union...................................................................................... V-147 V.5.2.4 Cererea Update.................................................................................... V-147 V.5.2.5 Cererea Delete...................................................................................... V-148 V.5.2.6 Cererea Append ................................................................................... V-148 V.5.2.7 Cererea Make-Table............................................................................ V-149 V.5.2.8 Cererea Date-Definition...................................................................... V-150 V.6 Structura coleciei de obiecte QueryDefs.................................. V-151 CAP.VI OBIECTE ACCESS. MACRO-COMANDA.................VI-152 VI.1 Crearea macro-comenzilor......................................................VI-152 VI.1.1 Macro-instruciuni............................................................................. VI-153 VI.1.2 Condiionarea executrii macro-instruciunilor ............................. VI-155 I-8

VI.2 Macro-grupuri ..........................................................................VI-156 VI.2.1 Macro-comanda AutoKeys.............................................................. VI-156 CAP.VII OBIECTE ACCESS - FORMULARUL......................VII-158 VII.1 Prezentarea general a unui formular................................ VII-158 VII.1.1 Rolul formularului ..........................................................................VII-158 VII.1.2 Strile unui formular.......................................................................VII-159 VII.1.3 Seciunile unui formular.................................................................VII-159 VII.1.4 Tipuri de formulare.........................................................................VII-161 VII.1.5 Structura unui formular..................................................................VII-161 VII.1.5.1 Personalizarea obiectelor utilizate n formular prin proprieti metode i evenimente .........................................................................VII-162 VII.1.5.2 Polimorfismul obiectelor utilizate n formular.............................VII-164 VII.1.5.3 Natura obiectelor utilizate n formular .........................................VII-165 VII.1.6 Utilizarea controalelor n formulare..............................................VII-168 VII.1.7 Utilizarea proprietilor, metodelor i evenimentelor obiectelor din formulare......................................................................................VII-171 VII.2 Obiectul FORM..................................................................... VII-172 VII.2.1 Structura coleciei de obiecte Forms.............................................VII-172 VII.2.2 Proprietile formularului...............................................................VII-173 VII.2.2.1 Numele formularului.......................................................................VII-173 VII.2.2.2 Pagina FORMAT............................................................................VII-173 VII.2.2.3 Pagina DATA ..................................................................................VII-175 VII.2.2.4 Pagina OTHER...............................................................................VII-177 VII.2.3 Evenimentele formularului............................................................VII-178 VII.2.4 Metodele formularului....................................................................VII-180 VII.3 Obiectele Detail, Form Header, Form Footer .................... VII-182 VII.4 Controalele folosite n formulare......................................... VII-182 VII.4.1 Text_Box - caseta de text...............................................................VII-182 VII.4.1.1 Proprietile controlului Text Box.................................................VII-182
VII.4.1.1.a) Text Box - pagina FORMAT .............................................................VII-183 VII.4.1.1.b) Text Box - pagina DATA ...................................................................VII-185 VII.4.1.1.c) Text Box - pagina OTHER.................................................................VII-187 VII.4.1.1.d) Text Box - proprietile implicite........................................................VII-188 VII.4.1.1.e) Text Box - proprietile dinamice.......................................................VII-189

VII.4.1.2 Evenimentele controlului Text Box................................................VII-190 VII.4.1.3 Metodele controlului Text Box.......................................................VII-191 I-9

VII.4.2 Combo Box - list ascuns ............................................................VII-191 VII.4.2.1 Combo Box - proprieti specifice.................................................VII-191 VII.4.2.2 Combo Box - evenimentul specific ................................................VII-193 VII.4.3 List Box - list desfurat .............................................................VII-193 VII.4.4 Option Button, Check Box, Toggle Button .................................VII-193 VII.4.5 Option Group - grup de opiuni.....................................................VII-194 VII.4.6 Label - etichet ................................................................................VII-194 VII.4.7 Line, Rectangle, Picture - controale grafice.................................VII-194 VII.4.8 Command Button - buton de comand ........................................VII-194 CAP.VIII OBIECTE ACCESS - RAPORTUL .........................VIII-195 VIII.1 Prezentarea general a unui raport..................................VIII-195 VIII.1.1 Rolul rapoartelor...........................................................................VIII-195 VIII.1.2 Strile unui raport .........................................................................VIII-195 VIII.1.3 Seciunile unui raport ...................................................................VIII-196 VIII.1.3.1 Seciunile Report Header, Report Footer..................................VIII-196 VIII.1.3.2 Seciunile Page Header, Page Footer.......................................VIII-196 VIII.1.3.3 Seciunea Detail ...........................................................................VIII-197 VIII.1.3.4 Seciunile Group Header, Group Footer..................................VIII-197
VIII.1.3.4.a) Sortarea i gruparea............................................................................VIII-197 VIII.1.3.4.b) Comanda Sorting and Grouping......................................................VIII-199

VIII.1.4 Utilizarea funciilor agregate SQL..............................................VIII-199 VIII.1.5 Utilizarea funciilor agregate de domeniu..................................VIII-200 VIII.2 Proiectarea rapoartelor .....................................................VIII-201 VIII.2.1 Obiectul REPORT .......................................................................VIII-202 VIII.2.1.1 Proprietile obiectului REPORT..............................................VIII-202
VIII.2.1.1.a) Numele raportului ..............................................................................VIII-202 VIII.2.1.1.b) Pagina FORMAT..............................................................................VIII-202 VIII.2.1.1.c) Pagina DATA.....................................................................................VIII-203 VIII.2.1.1.d) Pagina OTHER..................................................................................VIII-204

VIII.2.1.2 Evenimentele obiectului REPORT.............................................VIII-204 VIII.2.2 Obiectele ce coin seciunile raportului ......................................VIII-204 VIII.2.3 Controalele folosite n rapoarte...................................................VIII-204 VIII.3 Controlul Subraport / Subformular .................................VIII-206

BIBLIOGRAFIE ............................................................VIII-208
I-10

Cap.I Baze de date - no iuni generale


I.1 Modelarea Prin modelare se nelege reprezentarea unui obiect, fenomen sau proces din lumea real ntr-un anumit sistem (matematic, fizic, grafic, informatic, etc.). Un model este creat pentru a permite studiul obiectului, fenomenului sau procesului respectiv, ntr-un anumit context. n urma analizei obiectului, fenomenului sau procesului din lumea real, modelul va pstra numai acele caracteristici ce sunt considerate importante pentru reprezentarea acestuia n contextul n care va funciona. De exemplu, dac dorim s crem modelul unei maini n scopul studierii performanelor tehnice ale acesteia, atunci modelul realizat va conine informaiile despre vitez, consum, putere, etc., dar nu va conine date despre culoarea sau materialul din care sunt confecionate scaunele, deoarece acestea nu au nici un rol n contextul respectiv. Un model informatic, realizat pentru a fi implementat pe calculator, conine informaii (date) i prelucrri, care provin din caracteristicile (proprietile) i aciunile (metodele) obiectului, fenomenului sau procesului din lumea real. n acest caz, vom avea deci dou procese de modelare, i anume: modelarea datelor i modelarea prelucrrilor. Aceste procese de modelare, vor parcurge mai multe grade de abstractizare, obinndu-se mai multe tipuri intermediare de modele: conceptual, logic i tehnic. Modelul care poate fi implementat pe calculator este cel care are gradul de abstractizare cel mai mare (modelul tehnic). Dup efectuarea codificrii informaiilor (datelor) din modelul tehnic, acestea, ntr-un calculator, pot fi memorate, transmise sau supuse execuiei anumitor operaii. Scopul modelrii este studiul unui obiect, fenomen sau proces real, prin simularea diferitelor situaii n care se poate afla acesta.
I-11

n figura de mai jos este prezentat activitatea de modelare efectuat asupra unui obiect, fenomen sau proces real n scopul realizrii unei aplicaii informatice (care se concretizeaz practic prin implementarea pe calculator a modelelor tehnice - de date i prelucrri - prin folosirea anumitor metode, tehnici i instrumente). Proprieti (caracteristci, atribute) Metode (aciuni)

Obiect, Proces, Fenomen

Informaii Modelul conceptual al datelor Modelul logic al datelor Modelul tehnic al datelor

Prelucrri Modelul conceptual al prelucrrilor Modelul logic al prelucrrilor Modelul tehnic al prelucrrilor

Aplicaia informatic
I.1.1 Modelarea conceptual Modelul conceptual - reprezint definirea realitii obiectului supus modelrii printr-un ansamblu de concepte i reguli de combinare a acestor concepte.
I-12

calculator

Modelare

Modelul conceptual este definite sub forma unor enunuri, cu un grad de generalitate foarte ridicat, ce duc la o asemnare ct mai apropiat ntre obiect i model. Fiind cel mai apropiat de realitatea obiectiv, gradul de abstractizare introdus de modelul conceptual este sczut. Modelul conceptual cuprinde trei aspecte ale analizei obiectului supus modelrii i anume: 1) Analiza structural, static - care studiaz componentele obiectului supus modelrii precum i legturile stabilite ntre acestea; 2) Analiza comportamental (temporal), dinamic - care studiaz: strile prin care trec componentele i legturile obiectului ca reacie la apariia unor anumite evenimente externe, precum i a efectelor provocate asupra acestora n perioada tranziiei de la o stare la alta; 3) Analiza funcional - care studiaz transformrile produse n componentele i legturile obiectului pentru satisfacerea cerinelor determinate de funcionarea sistemului (cerinele informaionale) - adic a prelucrrilor efectuate asupra datelor; Modelul conceptual al datelor (MCD) are dou pri eseniale: conceptele i legturile ntre concepte. Conceptele se creeaz n funcie de scopul urmrit i de interdependena dintre elemente. Modelul entitate-asociere Definirea structural a modelului conceptual al datelor se realizeaz prin diferite modele semantice, dintre care modelul entitate-asociere (EA) este cel mai utilizat. n acest model sunt scoase n eviden lucruri ce se consider definitorii i care constituie de fapt, componentele acestuia: Entitatea - reprezint un obiect al realitii modelate caracterizat printr-o existen proprie, cu o identitate proprie (care-l face identificabil n raport cu celelalte obiecte de acelai tip) i o mulime de caracteristici care exprim proprietile acestuia.
I-13

Atributul - definete o proprietate distinct a unei entiti. Fiecare atribut prezint un domeniu, adic o mulime de valori admise. Asocierea - exprim legtura stabilit ntre entit i precum i rolul pe care l joac fiecare entitate participant la legtur. Exprimnd o legtur dintre entiti ea nu are o existen de sine stttoare. O asociere poate prezenta unul sau mai multe atribute proprii cu rol de a caracteriza, explicita, legtura stabilit ntre entitile participante la asociere. Modelul entitate-asociere este completat de: Restriciile de integritate - care exprim cerinele care trebuiesc respectate pentru obinerea unui model corect i coerent n raport cu realitatea pe care o reflect. Dependenele funcionale - care evideniaz raporturile de determinare stabilite ntre atributele entitilor. Modelul entitate-asociere folosit pentru definirea modelului conceptual al datelor este un model static, structural. El analizeaz componentele obiectului supus modelrii precum i legturile stabilite ntre acestea. Cu toate acestea exist tehnici prin care se poate asocia modelului i componentele dinamice i funcionale. Modelul conceptual este creat n funcie numai de realitatea obiectiv. Modelul conceptual este singurul model n care nu va exista nici un element referitor la implementarea sa informatic, el fiind total independent de aceasta. Din aceast cauz dac se dorete o alt implementare informatic, modelul conceptual rmne valabil pe cnd modelele logice i tehnice se vor schimba.

I.1.2 Modelarea logic Modelarea logic reprezint aducerea modelului conceptual ntr-o form n care prin precizarea anumitor metode de organizare i prelucrare a datelor, sunt stabilite anumite cerine informatice pe care modelul trebuie s le ndeplineasc.
I-14

Astfel, pentru crearea modelului logic al datelor (MLD), trebuie inut cont de modul de organizare pe care l vor avea acestea pe calculator, i anume (aa cum se va arta n continuare) n fiiere clasice sau n baze de date. De asemenea dac se dorete un model logic bazat pe baze de date, va exista posibilitatea alegerii ntre mai multe tipuri de arhitecturi (ierarhic, reea, funcional, deductiv, orientat obiect, etc.). De asemenea, pentru crearea modelului logic al prelucrrilor (MLP), trebuie inut cont n general de principiile sistemului de programare ce se va utiliza: procedural, formal, LMD (limbaj de manipulare a datelor) etc. Modelul logic relaional, creeaz suportul necesar pentru definirea bazelor de date relaionale (ca Microsoft Access). Elementele de baz definite n acesta sunt relaiile (ce provin din entitile i asocierile modelului conceptual).

I.1.3 Modelarea tehnic Modelul tehnic1, reprezint aducerea modelului logic ntr-o form precis, dependent strict de hardware-ul (calculatoarele, reeaua de calculatoare, echipamentele de transmisie a datelor, etc.) i de software-ul (sistemul de operare, limbajele de programare, SGBD-ul (Sistemul de gestiune al bazelor de date), alte programe utilitare, etc.) ce vor fi efectiv utilizate, prin modificarea componentelor definite la nivel logic funcie de facilitile oferite de echipamentele i produsule informatice folosite. I.2 Etapele realiz rii unui sistem informatic Un sistem sau un produs informatic se realizeaz printr-un proces de proiectare ce conine mai multe etape a cror parcurgere conduce la atingerea scopului propus.
1

n aceast lucrare ne vom referi la modelul tehnic implementat prin bazele da date Microsoft Access. Elementele principale ce definesc acest model sunt prezentate n capitolul I-5.
I-15

I.2.1 Studiul de fezabilitate Ca la realizarea oricrui proiect i elaborarea unui sistem (produs) informatic presupune mai nti un studiu de fezabilitate (tem de proiect), n care se stabilete n primul rnd oportunitatea proiectului respectiv, urmnd apoi alegerea celei mai bune metode pentru rezolvarea problemei respective. Studiul de fezabilitate presupune n principal efectuarea urmtoarelor aciuni: Evaluarea costului sistemului (produsului) informatic (evaluarea financiar); Evaluarea inteniei de participare a beneficiarului (ct este dispus s se implice sau nu n proiect); Evaluarea oportunitii realizrii sistemului (produsului) informatic; Evaluarea tuturor elementelor favorabile i nefavorabile ce decurg din acest proiect, lund n considerare i o marj de siguran, urmat de decizia de realizare sau nu a proiectului; Cel mai important lucru n proiectarea unui sistem informatic l reprezint dorina real a beneficiarului de a realiza acest sistem. I.2.2 Analiza sistemului (produsului) informatic Analiza are ca obiect stabilirea cerinelor ce trebuie avute n vedere n realizarea proiectului. Acestea sunt determinate de: Cerinele utilizatorilor - obiectivele pe care urmeaz s le ndeplineasc viitorul sistem informatic, criteriile de eficien, securitate, performan pe care acesta urmeaz s le asigure; Cerinele sistemului - se stabilesc pornind de la cerinele utilizatorilor i vor reprezenta prezentarea detaliat a rezultatelor pe care sistemul informatic urmeaz s le asigure. Se va evidenia ce anume urmeaz s fac sistemul fr a se sugera n nici un fel cum se va face acest lucru; Cerinele software i hardware - evideniaz ce funcii va avea produsul software i care sunt condiiile necesare exploatrii sale.
I-16

I.2.3 Proiectarea sistemului (produsului) informatic Cuprinde dou etape n care se realizeaz modelele conceptuale i logice ale datelor i prelucrrilor. Aceste etape sunt: Proiectarea de ansamblu (general) - n cadrul creia se definesc soluii cadru, conceptuale privind viitorul sistem informatic. n aceast etap se stabilete structura sistemului informatic, componentele i interaciunile dintre ele; Proiectarea amnunit (de detaliu) - n cadrul creia se rafineaz soluia cadru, avnd ca finalitate definirea soluiei finale a sistemului informatic; I.2.4 Realizarea sistemului (produsului) informatic Se efectueaz n trei etape, i anume: Realizarea propriu-zis a aplicaiei prin elaborarea, din modelul logic, a modelului tehnic al datelor i al prelucrrilor; Testarea - se verific dac sistemul rspunde sau nu cerinelor pentru care a fost proiectat; Integrarea componentelor i testarea final a sistemului - reunirea componentelor n cadrul produsului final i verificarea funcionrii lui n ansamblu. I.2.5 Instalarea sistemului (produsului) informatic Instalarea presupune n primul rnd achiziionarea i punerea n funciune a calculatoarelor (reelei de calculatoare) i a softwareului de baz, urmrindu-se realizarea arhitecturii alease pentru configurarea sistemului (centralizat sau descentralizat) dup care, sistemul (produsul) informatic se va implementa i retesta n condiii reale de funcionare. Etapa se ncheie cu acceptarea sistemului (produsului) informatic de ctre beneficiar. I.2.6 Exploatarea i ntre inerea Reprezint utilizarea curent a sistemului informatic i ntreinerea lui. Dup exploatare se pot evalua rezultatele i interveni acolo unde sunt necesare modificri.
I-17

I.2.7 Dezvoltarea sistemului (produsului) informatic Evaluarea final a sistemului informatic presupune i analiza feed-back, concretizat de obicei cu apariia unor versiuni noi. Prin dezvoltarea produselor se vor realiza i integra module noi, care mbuntesc i / sau dezvolt funciile i performanele sistemului. Aceste servicii noi sunt de cele mai multe ori destul de costisitoare. I.3 Metode de organizare a datelor n aplica ii O aplicaie este format dintr-un program, care prelucreaz un set de date ce sunt de obicei stocate pe un suport de memorie extern (hard-disc, floppy-disc, CD-ROM etc.). Exist dou metode de organizare a acestor date: n fiiere clasice i n baze de date. I.3.1 Organizarea datelor n fi iere clasice Limbajele de programare universale ca: BASIC, PASCAL, C, COBOL, FORTRAN, etc., au pe lng instruciunile de transfer, de atribuire sau de control, instruciuni specifice pentru crearea i manipularea fiierelor de date. Un fiier de date este o colecie de date, care n general se refer la anumite entiti ce au de obicei acelai tip de caracteristici. El va conine nregistrri care au n general aceiai structur. Exemplu: n figura alturat avem Popescu Ion Piteti un fiier format din 4 nregistrri Marinescu Dan Costeti (entiti), care au aceiai structur, Georgescu Ana Ploieti compus din 3 caracteristici, numite Ionecu Vlad Piteti cmpuri (nume, prenume, localitate). Instruciunile specifice care manipuleaz un fiier de date trebuie s rezolve n general urmtoarele categorii de probleme: Descrierea structurii fiierului; Conectarea i deconectarea programului la fiierul de date. Pentru aceste aciuni se folosesc termenii de deschidere i nchidere a fiierului; Poziionarea pe o anumit nregistrare, pentru a permite prelucrarea ei;
I-18

Citirea sau actualizarea (modificarea datelor dintr-un cmp, adugarea unor noi nregistrri sau tergerea unor nregistrri) fiierului; Organizarea i accesul la nregistrrile fiierelor clasice de date se poate face n dou feluri: secvenial - selectarea unei anumite nregistrri se face numai prin parcurgerea tuturor nregistrrilor precedente; direct (random) - selectarea unei nregistrri se face pe baza unei relaii de calcul care determin locul (adresa) unde se gsete pe suport nregistrarea respectiv, permind astfel accesul direct la ea; Mai exist o metod hibrid de organizare a datelor n fiiere i anume metoda secvenial indexat, implementat de limbajul COBOL. Prin aceast metod se creeaz grupe cu mai multe nregistrri la care accesul se face direct, urmnd ca selecionarea unei anumite nregistrri dintr-o grup s se fac secvenial. Metoda de realizare a unei aplicaii, folosind organizarea datelor n fiiere clasice, creeaz trei mari neajunsuri, i anume: Independena datelor fa de programele de aplicaii. Frecvent exist situaii n care mai multe aplicaii folosesc aceleai date. Programarea clasic necesit pentru fiecare program n parte descrierea structurilor de date (fiierelor) pe care le folosete, indiferent de faptul dac acestea mai sunt descrise i n alt program. O modificare n aceast structur de date implic refacerea tuturor programelor care au acces la aceasta. Dei exist posibiliti de modernizare a programrii clasice prin proceduri, funcii sau fiiere incluse, totui dependenta programului de structurile de date este foarte strns n cazul lucrului cu fiiere clasice, ceea ce duce la greuti deosebite n activitatea de dezvoltare a aplicaiilor. Redundana datelor din fiierele clasice. Noiunea de redundan se refer la repetarea unor informaii. O aplicaie conine n general mai multe fiiere. Acestea au legturi ntre ele prin nite date comune. Aceste date comune

I-19

(redundante) pot la aplicaii complexe s ajung n cantiti foarte mari. Acest lucru creeaz pe lng ocuparea unui spaiu de memorare inutil, n special dificulti n actualizarea fiierelor (deoarece modificarea unei date comune trebuie s se fac n toate fiierele care o conin pe aceasta). Integritatea datelor. Noiunea de integritate se refer la faptul c datele, care au o anumit structur, trebuie s respecte anumite restricii i corelaii logice, care s le permit s reflecte corect i coerent realitatea pe care o reprezint. De exemplu, dac avem un cmp care reprezint vrsta unei persoane, o valoare negativ introdus n acesta va determina o 'eroare de integritate' n date. Integritatea datelor .reprezint cel mai important lucru pentru o aplicaie complex. Fiierele clasice nu dispun de metode proprii, speciale, de verificare i protecie a integritii datelor aparinnd unuia sau mai multor fiiere, ele necesitnd pentru aceasta, module de cod introduse n programele de aplicaie. I.3.2 Organizarea datelor n baze de date Conceptul de baz de date a aprut n anii aizeci ai secolului trecut ca urmare a eforturilor pentru crearea unei structuri de date care s elimine cele trei mari neajunsuri introduse de programarea cu fiiere clasice: independena, redundana i integritatea datelor. n general este acceptat urmtoarea definiie pentru acest termen: O baz de date este o colecie de date operaionale, stocate, folosit de sistemele de aplicaii ale unei anumite activiti". Din aceast definiie trebuie remarcat n primul rnd urmtorul aspect: organizarea datelor ntr-o baz de date se face n funcie de activitatea pe care aceasta o modeleaz, reprezentnd o structur de sine stttoare. Baza de date va fi folosit de una sau mai multe aplicaii, care vor gestiona activitatea respectiv. Un sistem care permite crearea i manipularea bazelor de date se numete SGBD (Sistem de Gestiune a Bazelor de Date ) sau DBMS (Data Base Management System).
I-20

Implementarea acestei noiuni de ctre sisteme ca IMS, IDMS, ORACLE, DBASE, FOXPRO, ACCESS, SQL Server, etc. s-a fcut n principal cu scopul de a elimina sau reduce cele trei neajunsuri ale programrii clasice. Evident, prioritile eliminrii problemelor critice referitoare la deficienele programrii clasice, sunt n funcie i de performanele echipamentelor hardware pe care sunt implementate aceste SGBD-uri. De exemplu, dac la nceput, datorit capacitii relativ mici de stocare pe care o aveau echipamentele de calcul, problema redundanei era foarte important, n prezent dezvoltarea deosebit a mediilor de memorare a redus simitor importana acesteia, prioritatea acordndu-se n prezent problemelor de integritate, care s permit realizarea de aplicaii ct mai complexe. Deci practic, fiecare SGBD rezolv ntr-o msur mai mare sau mai mic anumite probleme legate de utilizarea structurilor de date, neexistnd pn n prezent un model perfect. n general se poate considera un SGBD sistemul care rezolv acceptabil problema independenei datelor de programe. I.4 Sisteme de administrare a bazelor de date Pn n prezent s-au utilizat practic i dezvoltat trei categorii de sisteme de organizare i administrare a bazelor de date, realizndu-se urmtoarele modele de SGBD-uri: ierarhic, n reea i relaional. Tendina actual i n viitorul apropiat este aceea de elaborare a unor modele orientate pe obiect, care n mare parte sunt fundamentate pe modelul relaional. I.4.1 Modelul ierarhic Modelul ierarhic a fost propus de firma IBM spre sfritul anilor '60. El st la baza SGBD-urilor ierarhice care sunt primele care au aprut ca sisteme software ale bazelor de date. Sistemele ierarhice (arborescente) au dat rezultate foarte bune pentru aplicaiile cu baze de date din domenii bine precizate, cum ar fi de exemplu tehnologia construciilor de maini.
I-21

IMS (Information Management System) este primul SGBD ierarhic realizat de IBM. El a fost conceput pentru gestiunea datelor, organizate n baze de date, din industria constructoare aero-spaial (1968). mbuntirile succesive au fcut din el cel mai utilizat SGBD ierarhic. Modelul ierarhic se reprezint printr-o diagrama de structur. Exemplu: Mai jos este prezentat schematic, diagrama de structur a unei pri dintr-o baz de date organizat ierarhic, care conine componentele unui produs. Produsul X Model 1 Model 2 Model 3
Subans.3.1 Reper 1.3.3

Model 4
Subans.3.2

Subans.1.1 Subans.1.2 Subans.1.3 Reper 1.3.1 Reper 1.3.2

Abordarea ierarhic pare cea mai natural. Din figur se observ organizarea piramidal a datelor sub forma unei structuri arborescente ramificate, cu un singur vrf numit rdcin. n modelul ierarhic fiecare nod din arbore corespunde unei clase de entiti (nregistrri) din lumea real, descris prin atributele (cmpurile) ei, iar drumurile (arcurile) dintre noduri reprezint legturile existente ntre obiecte (adic ntre realizrile tipurilor de entiti aflate n asociere). ntr-o asemenea structur fiecare 'printe' poate avea mai muli 'copii', dar un 'copil' nu poate avea dect un singur 'printe'. Deci realizarea unei clase de entiti 'printe', poate avea mai multe realizri ale clasei de entiti 'copil', dar unei realizri a clasei de entiti 'copil' nu poate s i corespund dect o realizare a clasei de entiti 'printe'.
I-22

O asemenea abordare rezolv complect problema redundantei i permite modificri relativ uoare a structurii bazei de date. Modelul ierarhic creeaz totui dificulti majore, i anume: mrimea exagerat a timpului de regsire a informaiilor (deci i a actualizrii datelor), deoarece pentru a ajunge la o anumit entitate este necesar parcurgerea fiecrei ramificaii de la vrf pn la nivelul pe care se gsete aceasta; numrul de ierarhii posibile crete combinatoric cu numrul nregistrrilor, ceea ce poate conduce la "explozia" volumului de date, greu controlabil; abordarea ierarhic este posibil numai pentru anumite structuri de date; Aceste limite ale modelului ierarhic au determinat evoluia spre modelul reea. I.4.2 Modelul re ea Modelul reea folosit intens pentru realizarea bazelor de date n anii '70 i avnd un domeniu de aplicabilitate mult extins fa de modelul ierarhic, a fost propus de CODASYL (Conference of Data System Languages), un organism internaional de lucru pentru baze de date. IDMS (Integrated Database Management System) realizat de firma Cullinet Software Inc., este cel mai utilizat SGBD pentru baza de date reea, destinat s funcioneze pe calculatoare IBM. Modelul reea ca i cel ierarhic, stau la baza primei generaii de SGBD-uri. Schema conceptual descris cu un SGBD reea este sub forma unui graf orientat, compus dintr-o o colecie de noduri conectate prin arce, fiecare nod putnd fi legat de oricare altul. Ea se caracterizeaz prin definiia tipurilor de nregistrri ce reprezint entitile i de legturile dintre ele, precum i prin conceptul de set, adic a ansamblului care exprim legturile multi-valoare dintre
I-23

nregistrri (un singur nod proprietar legat de unul sau mai multe noduri dependente). Dei asemntoare, structura de tip reea permite fa de structura de tip ierarhic, ca un nod 'copil' s poat avea mai mult dect un singur nod 'printe'. Structurile de tip reea se reprezint grafic prin diagrama de tip reea, ca n figura de mai jos. Nod 1 Nod 5 Nod 8 Nod 2 Nod 6 Nod 9 Nod 3 Nod 7 Nod 10 Nod 4

Modelul este destul de performant dar foarte complicat i dificil de implementat. Legturile formeaz trasee care permit o regsire uoar a informaiilor de pe orice nivel., ns o actualizare a structurii (modificare nodurilor sau legturilor) creeaz probleme deosebit de complicate i complexe. Ca i la modelul ierarhic, modelul reea rezolv complet problema redundanei. I.4.3 Modelul rela ional Limitele SGBD-urilor ierarhice i reea, au determinat evoluia spre sistemele relaionale, care reprezint a doua generaie de SGBD-uri. Modelul relaional a fost prezentat pentru prima dat n anul 1970 de ctre E.F. Codd i a fost perfecionat de ctre C.J. Date cercettori ai companiei IBM. Concretizarea acestor studii a dus la apariia SGBD-ului DBAZE 2. Modelul relaional, este puternic, dar n acelai timp este flexibil, simplu i natural, permind o proiectare relativ uoar a structurilor de date. Acest lucru se face totui printr-o cretere a redundantei datelor fat de celelalte dou modele.
I-24

Modelul relaional se compune din dou elemente principale, tabele i relaii, prin care, un obiect, proces sau fenomen se poate descrie schematic (modelare). I.4.3.1 Tabele Tabelele, printr-o structur asemntoare cu a fiierelor clasice, vor conine toate entitile care se gsesc n baza de date. Fiecare tabel poate fi considerat ca o structur n plan, bidimensional (vezi explicaia *1), care descrie prin entitile pe care le conine o anumit mulime de obiecte de acelai tip. n acest fel, toate entitile unei tabele vor reprezenta realizri ale unui anumit tip de entitate, ele constituind nregistrrile tabelei. Fiecare tip de entitate, specific unei tabele, va avea o anumit structur, constituit din toate atributele i caracteristicile entitilor acesteia. Componentele acestei structuri sunt numite cmpurile tabelei. Deci o realizare a unui tip de entiti se va face prin atribuirea unor valori cmpurilor tabelei respective, ceea ce va duce la crearea unei nregistrri a tabelei (adic a unei entiti ce reprezint un obiect al activitii modelate). n concluzie toate entitile (nregistrrile) coninute ntr-o tabel vor avea aceiai structur, care va reprezenta atributele i caracteristicile (cmpurile) acestora.

Definirea tabelelor, a proprietilor lor i a cmpurilor componente, permit (aa cum se va vedea ulterior) rezolvarea problemelor legate de integritatea existenial i de domeniu a bazei de date, adic de garantarea existenei unor entiti unice, logice i coerente.

Exemplu: Putem reprezenta printr-un model activitatea desfurat ntr-un proces de nvmnt prin crearea urmtoarelor tabele: o tabel de 'SPECIALIZRI' cu informaii despre specializrile unei faculti (cod i nume specializare, numr locuri, numr ani de studiu, tip de nvmnt, adresa paginii Web, etc.);
I-25

o tabel de 'STUDENI', care conine informaiile generale (cod student - CNP2, nume, prenume, data naterii, adresa, telefon, etc.) despre persoanele care urmeaz facultatea respectiv; o tabel de 'NSCRISI' care va conine date despre felul n care sunt repartizai studenii pe specializri (cod student - CNP, cod specializare, forma de nvmnt (cu tax, fr tax) etc.); o tabel de 'MATERII' care va reprezenta planul de nvmnt al fiecrei specializri (codul specializrii, codul materiei, numele materiei, numrul punctelor de credit, numrul orelor curs, etc.); o tabel de 'NOTE', cu informaiile referitoare la rezultatele procesului de nvmnt (cod student -CNP, cod materie, nota); Se pot introduce n continuare i alte tabele referitoare la profesorii i materiile pe care le predau, la taxele percepute, la drepturile salariale ale personalului facultii etc. CNP - Codul Numeric Personal, este un cod unic, structurat, cu o lungime de 13 caractere, care se acord tuturor persoanelor din ara noastr. Acest cod, prin elementele sale componente, precizeaz i anumite informaii suplimentare. Structura codului este: Caracter 1 - Sexul i secolul n care s-a nscut, i anume: 1 sau 2: Masculin sau feminin secolul 20 (1900-1999); 3 sau 4: Masculin sau feminin secolul 19 (1800-1899); 5 sau 6: Masculin sau feminin secolul 21 (2000-2099); Caracter 2,3 - Anul naterii (ultimele dou cifre); Caracter 4,5 - Luna naterii; Caracter 6,7 - Ziua naterii; Caracter 8,9 - Codul judeului n care s-a nscut; Caracter 10,11,12 - Numr curent acordat la nregistrare; Caracter 13 - Cifra de control, folosit pentru validarea corectitudinii codului;
I-26
2

Explicaie: (*1) S-a folosit pentru tabel noiunea de structur bidimensional deoarece se poate ca prin prelucrarea datelor coninute n aceasta s se obin numai informaii care nu permit prsirea structurii de plan. Astfel, analiznd separat datele aflate n tabela 'STUDENI' se pot prelua numai informaii referitoare la nivelul respectiv, i anume despre localitile din care provin studenii, despre media de vrst sau repartizarea pe sexe a acestora, etc.

Dac ns se dorete informaia despre numrul de studeni, pe sexe, care sunt nscrii la fiecare specializare, atunci este necesar ca cele 2 tabele care conin aceste date: 'STUDENI' i 'NSCRISI', s fie concomitent vizibile. Practic, se pot reprezenta cele cinci tabele din exemplul anterior, prin cinci planuri, aezate unul deasupra altuia, ntre care ns nu exist nici o posibilitate de legtur (ca la o cas cu cinci nivele la care s-a uitat construirea scrilor), deci n care nu este permis la un moment dat dect s se obin informaii despre planul (tabela) n care eti plasat. I.4.3.2 Rela ii Relaiile, au rolul de a introduce a treia dimensiune n modelul relaional, ceea ce permite extragerea, n acelai timp, a informaiilor din mai multe tabele (asemntor scrilor care fac legtura ntre nivele unei cldiri). Aa cum se observ i din figura de mai jos, relaiile se formeaz ntre dou cmpuri care conin acelai tip de informaie i
I-27

aparin celor dou tabele ntre care se stabilete relaia. Deci pentru a realiza o relaie ntre dou tabele este necesar ca n fiecare din cele dou tabele s existe un cmp care s conin acelai tip de date. Dealtfel, datorit acestei dublri a informaiei folosit la realizarea relaiilor, modelul relaional are un grad ridicat de redundan.
nregistrri (Entiti) Cmpuri (Atribute)

Relaii

Tabele

Relaiile introduse ntre tabele permit obinerea de informaii complexe despre datele coninute n tabele. Deci o relaie introdus permite completarea informaiilor dintr-o tabel, cu informaiile din cealalt tabel, deci cu obinerea practic a unei noi tabele, virtuale, care are atributele (cmpurile) ambelor tabele.

Relaiile au, aa cum se va vedea ulterior, o proprietate foarte important, care va permite ca n baza de date s se rezolve problemele de integritate referenial, adic de a se pstra corelaiile logice care trebuie s existe ntre cmpurile tabelelor cuplate prin relaii.

Exemplu: Dac ne referim la exemplul prezentat anterior vom avea urmtoarele relaii ntre tabele: ntre tabelele 'STUDENI' i 'NSCRISI', relaia dintre entitile celor dou tabele se va realiza prin cmpul (atributul) 'Cod student -CNP'. n acest fel, se poate afla de exemplu codul specializrii la care este nscris fiecare student, dei informaia folosit pentru aceasta se va gsi n ambele tabele;
I-28

ntre tabelele 'SPECIALIZRI' i 'NSCRISI', relaia dintre entitile celor dou tabele se va realiza prin cmpul (atributul) 'Cod specializare'. Cu ajutorul celor dou relaii introduse pn acum se vor putea extrage informaii complexe din toate cele 3 tabele legate ('STUDENI', 'SPECIALIZRI' i 'NSCRISI') ceea ce va permite de exemplu cunoaterea numelui specializrii la care este nscris fiecare student; Tabela 'SPECIALIZRI'

Tabela 'MATERII'

Cod specializare Nume specializare Alte informaii

Cod specializare Cod materie Nume materie

Tabela 'STUDENI'
Cod student Nume Prenume Alte informaii

Tabela 'NSCRII'
Cod specializare Cod student Tip nvmnt

Tabela 'NOTE'
Cod student Cod materie Nota

ntre tabelele 'SPECIALIZRI' i 'MATERII', relaia dintre entitile celor dou tabele se va realiza prin cmpul (atributul) 'Cod specializare'. Cu ajutorul celor trei relaii introduse pn acum se va putea cunoate care sunt materiile de la fiecare specializare i care sunt materiile pe care le are de parcurs fiecare student; Tabela 'NOTE', va fi legat prin cmpul 'Cod student' de tabela 'STUDENI' i prin cmpul 'Cod materie' de tabela de 'MATERII'

I-29

I.5 Descrierea modelului rela ional. Terminologia rela ional I.5.1 Tabela, cmpul (tipul, dimensiunea i domeniul datelor), nregistrarea (entitatea) Aa cum s-a artat informaiile care se introduc ntr-o baz de date relaional sunt stocate n unul sau mai multe tabele (n 2 dimensiuni) n care rndurile (nregistrrile) sunt cazurile posibile, iar coloanele (cmpurile) reprezint atributele unei nregistrri. n felul acesta printr-o tabel se descriu entiti, acestea fiind reprezentri unice a anumitor obiecte de acelai tip din lumea real. O entitate dintr-o tabel este definit prin stabilirea tuturor atributelor acesteia. Deci practic termenii de entitate - nregistrare i atribut - cmp nseamn acelai lucru. n modelul relaional, pentru ca fiecare entitate s fie unic este necesar ca cel puin unul dintre cmpurile tabelei s aib valori unice pentru toate nregistrrile. De asemenea fiecare tabel din baza de date va avea un nume unic pentru a putea fi identificat. Acesta mpreun cu alte caracteristici (prezentate n alt capitol) vor reprezenta proprietile tabelei. O tabel este constituit din cmpuri, care la rndul lor au anumite proprieti (atribute, caracteristici), printre cele mai semnificative fiind: Numele (identificatorul) cmpului; Tipul de date: numeric, boolean, string, etc.; Dimensiunea: pentru anumite tipuri de date3 (de exemplu string) trebuie precizat i lungimea pe care o va avea cmpul n memoria calculatorului;
3

Anumite tipuri de date au o dimensiune implicit. n acest caz nu se mai precizeaz dimensiunea cmpului. De exemplu tipul de date numeric integer, are dimensiunea de 16 bii (2 octei).
I-30

Domeniul de valabilitate, adic limitele pe care le iau valorile pentru a fi acceptate ntr-un cmp; Exemplu: Tabela : 'NOTE' Cmpul : 'NOTA' Tip de date: numeric, byte (8 bii, pozitiv) Domeniul: ntre 0 i 10 Din cele prezentate s-ar prea c fiierele clasice i tabele sunt la fel, amndou fiind constituite din cmpuri i nregistrri. Deosebirea esenial este ataarea de proprieti complete la definirea unei tabele i a cmpurilor sale. Astfel, n exemplul dat: Dac se lucreaz cu un fiier clasic cu cmpul 'NOTA', de fiecare dat cnd se introduc valori n acesta, prin instruciuni de program se va verifica dac data introdus este n intervalul 0..10; Dac se lucreaz cu o tabel cu cmpul 'NOTA', acest lucru nu va mai fi necesar, deoarece respectivul domeniu de valabilitate va fi precizat la descrierea (proprietile) cmpului.

I.5.2 Rela ii ntre tabele ntre tabelele unei baze de date se stabilesc relaii. Acestea reprezint practic modalitatea de completare a unei tabele cu cmpuri provenite din alte tabele. Pentru realizarea relaiei este obligatorie existena unui cmp comun n cele dou tabele care intr n legtur (cele dou cmpuri conin acelai fel de date). Aceasta duce totui la un aspect negativ i anume la creterea redundantei i la "mprtierea" datelor. Exemplu: 'Codul materiei' se afl att n tabela 'NOTE', ct i n tabela 'MATERII'. n acest fel se pot crea tabele virtuale, care conin date din mai multe tabele. Tabelele care intr intr-o relaie vor fi n tandemul 'printe - copil'. Relaia dintre dou tabele se caracterizeaz prin: tipul relaiei; tipul de legtur a relaiei (join type);
I-31

I.5.2.1 Tipuri de rela ii Tipul unei relaii este stabilit funcie de numrul posibil de nregistrri (i anume: una sau mai multe) din fiecare tabel, care pot fi selecionate pentru o anumit valoare din cmpul comun. Deci, tipul relaiei va fi definit de existena sau nu a caracterului de unicitate a cmpului comun, n cele dou tabele. ntre tabelele unei baze de date se pot stabili patru tipuri de relaii, i anume: I.5.2.1.a) Relaiile unu la unu (one to one) Relaiile one to one se creeaz atunci cnd ntre entitile celor doua tabele exist o coresponden biunivoc (unu la unu). O asemenea relaie este folosit pentru a diviza tabelele cu multe cmpuri n tabele mai 'nguste' n scopul creterii lizibilitii lor i a mririi vitezei de prelucrare a datelor din acestea. Pentru ca o relaie s fie one to one, este necesar ca n ambele tabele, cmpul de legtur s aib caracter de unicitate pentru toate nregistrrile tabelei respective. Exemplu: Relaia dintre tabelele 'STUDENTI' i 'INSCRISI', realizat prin cmpul 'Cod student', va fi o relaie one to one, dac un student nu se poate nscrie dect la o singur specializare. Tabela 'INSCRISI' 1 one to one 1 Cod Tip CNP-cod CNP-cod spec. nv. student student
002 002 002 003 003 003 Tax Fr Tax Fr Tax Fr 2-84,01,09 1-85,04,11 2,84,10,06 2-83,08,10 1-75,12,17 1-84,09,13

Tabela 'STUDENTI' Nume Prenume


Anca-Cristina Marius-Alin Ana-Maria Alin-tefan Romic

2-84,01,09Enescu 1-85,04,11Calot 2-83,08,10Groanu 1-84,09,13Voicu 1-75,12,17Caciuc

2-84,10,06Marincea Ana-Maria

I-32

Se observ, c datorit relaiei biunivoce care exist ntre cmpurile 'Cod student', din cele dou tabele se poate face una singur, virtual, care va avea acelai numr de nregistrri ca al tabelelor din care provine. I.5.2.1.b) Relaiile unul la mai muli (one to many) Relaiile one to many se creeaz atunci cnd o entitate din tabela printe este legat de nici una, una, dou sau mai multe entiti din tabela copil. O asemenea relaie se realizeaz n general ntre cheia principal(*2) a tabelei printe i cheia extern(*3) a tabelei copil. Este cel mai rspndit tip de relaie. Pentru ca o relaie s fie one to many, este necesar ca n tabela printe cmpul de legtur s aib caracter de unicitate pentru toate nregistrrile acesteia, pe cnd n tabela copil, cmpul de legtur poate s ia n mai multe nregistrri aceiai valoare. Exemplu: Aceiai relaie dintre tabelele 'STUDENTI' i 'INSCRISI', realizat prin cmpul 'Cod student', va fi o relaie one to many, dac un student se poate nscrie la mai multe specializri. Tabela 'STUDENTI' 1 one to many 1 Tabela 'INSCRISI' Nume
Enescu

Prenume

CNP-cod student
2-84,10,06

CNP-cod student
2-84,01,09.. 2-84,01,09.. 2-84,10,06.. 2-84,10,06.. 2-83,08,10.. 1-84,09,13.. 1-75,12,17.. 1-75,12,17.. 1-75,12,17..

Cod spec.
002 003 002 003 003 003 001 002 003

Tip nv.
Tax Fr Tax Fr Tax Fr Fr Tax Tax

Anca-Cristina 2-84,01,09

Marincea Ana-Maria Calot

Marius-Alin 1-85,04,11 2-83,08,10

Groanu Ana-Maria Voicu Caciuc

Alin-tefan 1-84,09,13 Romic 1-75,12,17

Observm caracterul de unicitate al datelor cmpului de legtur numai n tabela printe.

I-33

De asemenea n tabela virtual de ieire pentru o nregistrare din tabela printe care are coresponden n tabela copil se pot crea mai multe nregistrri i anume: cte nregistrri vor fi n tabela copil cu aceiai valoare a cmpului de legtur ca n tabela printe. Astfel n exemplul de mai sus: pentru ultima nregistrare din tabela printe se vor genera n tabela virtual de ieire 3 nregistrri, deoarece exist n tabela copil 3 nregistrri cu aceiai valoarea a cmpului de legtur, (CNP=1-75,12,17..). pentru a treia nregistrare din tabela printe nu se va genera n tabela virtual de ieire nici o nregistrare, deoarece nu exist n tabela copil nici o nregistrare cu aceiai valoarea a cmpului de legtur (CNP=1-55,04,15..).

I.5.2.1.c) Relaiile mai muli la unu (many to one) Relaiile many to one sunt opusele relaiilor one to many. O asemenea relaie este reflexiv daca se poate crea prin inversarea rolurilor entitilor participante la o relaie one to many. Bazele de date Access accept numai relaii reflexive. I.5.2.1.d) Relaii mai muli la mai muli (many to many) Relaiile many to many, se creeaz atunci cnd pentru cmpul de legtur, exist posibilitatea ca unei nregistrri din prima tabel s i corespund mai multe nregistrri din a doua tabel, i invers, adic cnd unei nregistrri din a doua tabel i corespund mai multe nregistrri din prima tabel. Pentru ca o relaie s fie many to many, este necesar ca n ambele tabele, cmpul de legtur s nu aib caracter de unicitate pentru toate nregistrrile tabelei respective. Aceste relaii nu se pot crea ntre entitile a dou tabele (conform celei de a patra forme de normalizare(*4). O asemenea relaie se creeaz prin intermediul unei tabele intermediare care are relaii many to one cu cele doua tabele.
I-34

n exemplul prezentat acest rol de tabel intermediar l are tabela 'INSCRIERI', plasat ntre tabelele 'STUDENI' i 'SPECIALIZRI'. Se observ c n tabela intermediar vor exista dou cmpuri de legtur, (cod student i cod specializare) cu care se vor realiza cele dou relaii de tip many to one. I.5.2.2 Tipurile de leg tur ale rela iilor (join type) Tipul de legtur al unei relaii definete modalitatea n care se selecioneaz n tabelei virtual de ieire, nregistrrile din cele dou tabele n cazul n care n cmpul comun exist pentru anumite valori, nregistrri numai n una din tabele. Astfel exist pentru o relaie urmtoarele tipuri de legtur: inner join - se preiau numai nregistrrile care au realizri n ambele tabele pentru valorile din cmpul comun; outer join - se preiau toate nregistrrile unei tabele urmnd ca din cealalt tabel s fie selecionate numai nregistrrile care pentru anumite valori din cmpul comun au realizri n ambele tabele; I.5.3 Schema Schema bazei de date reprezint structura logic (descrierea datelor, nu apariia explicit a acestora) a unei colecii de tabele i a relaiilor dintre acestea, care descriu o anumit activitate din lumea real (modelare). Deci schema conine: descrierea tabelelor, cmpurilor acestora (prin stabilirea tipului de date, dimensiunii i a domeniului) precum i relaiile dintre tabele. n terminologia curent se mai folosete cuvntul structur, n loc de schema. Un sub-set al unei baze de date necesar pentru o anumit aplicaie se numete subschem. I.5.4 Chei O tabel, n mod natural trebuie s conin cel puin o zon (un cmp sau o operaie relaional ntre mai multe cmpuri - de ex. reuniune) care s permit o unicitate a entitilor. Aceast zon se numete - (*2)cheie primar sau cheie principal. Acest lucru se
I-35

concretizeaz n dou aspecte, i anume: n unicitatea datelor din cheia primar i implicit n inexistena ntr-o tabel a nregistrrilor duplicate. O cheie primar reprezint un cmp care nu conine pentru nici o nregistrare o valoare "NULL" (nu zero) sau duplicat. Explicaie: NULL este valoarea pe care un cmp al unei nregistrri o ia pentru a arta lipsa de date. O tabel poate s conin i alte cmpuri cu caracteristici de unicitate (acestea pot lua locul cheii primare). Aceste cmpuri se numesc chei alternative sau chei candidate. Evident la un moment dat o tabel are o singur cheie primar. Cnd doua tabele sunt asociate (intr ntr-o relaie), atunci una dintre tabele va fi cea dominant (printe) iar cealalt va fi dominat (copil). Pentru a se realiza relaia, trebuie ca n cele dou tabele s existe cte un cmp (sau o operaie relaional ntre mai multe cmpuri) care s conin acelai tip de date. Acest lucru se realizeaz n principal prin exportul din tabela dominant (printe) a unui cmp cu caracter de unicitate (cheie primar sau cheie alternativ) n tabela dominat (copil). Acest cmp special din tabela subordonat (copil), care permite legtura cu tabela printe se numete - (*3)cheie extern sau cheie strin. Dac lungimea cheii externe este mai mic dect lungimea cheii din tabela asociat, atunci aceasta se numete cheie extern trunchiat sau cheie extern parial. Din ceea ce s-a prezentat se deduce c o cheie poate fi constituit dintr-un cmp sau o combinaie de cmpuri, caz n care se numete cheie compus.

I.5.5 Normalizarea bazelor de date rela ionale O baz de date relaional trebuie s prezinte anumite caracteristici pentru a reprezenta o structur de date funcional, logic, permind astfel prelucrarea datelor din aceasta. De exemplu:
I-36

ntr-o tabel fiecare element (uneori se mai folosete i termenul de celul), adic intersecia unui rnd cu o coloan, trebuie s aib o singur valoare, denumit valoare atomic; o tabel nu trebuie s conin nregistrri duplicate; schema unei baze de date trebuie creat astfel nct s permit modificri ale acesteia; Normalizarea unei bazei de date relaionale reprezint un proces iterativ prin care se aduc mbuntiri succesive schemei (structurii) acesteia, pentru a deveni logic i funcional i a permite implementarea pe calculator. Normalizarea unei baze de date relaionale, se realizeaz n 5 pai (dintre care primii trei sunt mai importani) i anume: 1) nregistrrile s conin pentru cmpuri numai valori atomice i s nu conin grupuri care se repet; 2) Datele din cmpurile care nu sunt chei, s depind de cheia principal; 3) Toate cmpurile s fie independente unul fa de altul; 4) (*4)- ntre tabele s nu existe entiti independente ntre care s existe relaii de tipul many to many. 5) O tabel originar, care a fost descompus n mai multe tabele, s poat fi refcut. Fiecare dintre paii prezentai mai sus vor conduce la crearea unor forme normalizate a bazei de date (FN1, FN2.FN5).

Obinerea unei anumite forme normalizate se poate face numai dac s-a obinut n prealabil forma normalizat precedent. I.5.6 Integritatea datelor n bazele de date rela ionale Aa cum s-a mai artat noiunea de integritate se refer la faptul c datele trebuie s respecte anumite cerine, restricii i corelaii logice, numite reguli de integritate, care s le permit s reflecte corect i coerent realitatea pe care o reprezint.
I-37

Principalele tipuri de integritate a datelor unui model relaional sunt: Integritatea existenial - impune ca ntotdeauna ntr-o tabel s nu existe dect nregistrri bine definite i unice. Acest lucru determin ca s nu fie acceptate dou nregistrri identice sau nregistrri care nu conin valori coerente n cmpurile ce identific nregistrarea (nu este permis valoarea Null n aceste cmpuri). Acest lucru se realizeaz de la sine dac se definete o cheie primar pentru tabela respectiv; Integritatea de domeniu - impune ca pentru un cmp care are definit un anumit domeniu, s nu fie acceptate datele care sunt n afara acestuia; Integritatea referenial - impune ca orice valoare dintr-o cheie extern a unei tabele copil s se regseasc printre valorile pe care n tabela printe asociat le ia cmpul de legtur; I.5.7 Elemente specifice proiect rii bazelor de date rela ionale Activitatea de modelare prin baze de date relaionale se realizeaz prin crearea pentru un obiect din lumea real a unei reprezentri sub forma unor tabele i a asocierilor (relaiilor) dintre acestea, care s permit furnizarea informailor necesare metodelor respectivului obiect. n proiectarea bazelor de date relaionale, prin procesul de normalizare a tabelelor care conin datele primare ale obiectului real supus modelrii se produce: Eliminarea din tabele a informaiilor care se repet prin extragerea acestora i mutarea n noi tabele, care conin nregistrri cu valori unice ale datelor. Repartizarea n tabele numai a cmpurilor care depind de cheia primar; Eliminarea cmpurilor care pot fi obinute prin operaii a cror operanzi sunt alte cmpuri;
I-38

Stabilirea relaiilor ntre tabelele cu valori comune ale cmpurilor de date; Introducerea de tabele intermediare n cazul relaiilor many to many; obinndu-se astfel o structur (schem) de baza de date relaional. I.6 Algebra rela ional Algebra relaional cuprinde un set de opt operaii, care preiau una sau mai multe tabele ca operanzi i produc o nou tabel (virtual) ca rezultat. Deoarece o tabel este o mulime, multe dintre aceste operaii sunt preluate din teoria mulimilor, avnd o arie redus de aplicabilitate. Operaiile de algebr relaional cu cea mai mare frecven de utilizare sunt selecia i proiecia. Prin intermediul operaiilor de algebr relaional, ntr-o baz de date relaional se pot efectua principalele prelucrri necesare i anume: interogarea i actualizarea bazei de date. Interogarea unei baze de date. O dat ce este creat i ncrcat o baz de date, n momentul n care trebuiesc furnizate anumite informaii, prin operaiile de algebr relaional se realizeaz o tabel virtual, numai cu datele necesare solicitrii respective. Aceasta reprezint o operaie de interogare a unei baze de date. Operaia de interogare se efectueaz prin aplicarea unor operaii de algebr relaionale asupra datelor din una sau mai multe tabele. n cazul n care exist mai multe tabele ca intrri pentru o operaie de algebr relaional, rezultatul final (tabela virtual din ieire) va depinde i de tipul de legtur al relaiei care exist ntre tabelele de intrare. Actualizarea unei baze de date. Prin intermediul celor opt operaii de algebr relaional, din punct de vedere teoretic, se poate actualiza (ntreine) o baza de date relaional. Operaia de actualizare permite efectuarea urmtoarelor 3 operaii:
I-39

Adugarea - introducerea de noi nregistrri ntr-o tabel; tergerea - eliminarea unor nregistrri dintr-o tabel; Modificarea - schimbarea valorii unor cmpuri dintr-o nregistrare a unei tabele; Actualizarea bazei de date se face printr-o succesiune de operaii relaionale, grupate n tranzacii. Tranzacia reprezint unitatea elementar de prelucrare a unui set de date. Reuita execuiei unei tranzacii este condiionat de respectarea regulilor de integritate ale bazei de date. n cazul eurii unei tranzacii baza de date poate reveni (printr-o comand) la starea pe care o avea nainte de execuia operaiilor efectuate n tranzacia respectiv. Cele opt operaii de algebr relaional vor fi prezentate n continuare: I.6.1 Produsul cartezian extins Produsul cartezian extins produce la ieire, o tabel virtual care va avea toate coloanele tabelelor de intrare i un numr suficient de nregistrri pentru a exprima toate combinaiile posibile ale acestor tabele. Aceast tabel virtual este cea mai mare care se poate obine dup o operaie de algebr relaional. Tabela 'Input 1' C-1 C-2 C-3 A A1 A2 B B1 B2 Tabela 'Input 2' C-4 C-5
C D E 1 2 3

Tabela 'Output'

Produsul cartezian extins


C-1 A A A B B B C-2 A1 A1 A1 B1 B1 B1 C-3 A2 A2 A2 B2 B2 B2 C-4 C D E C D E C-5 1 2 3 1 2 3

I-40

I.6.2 Selec ia (selection) Selecia produce la ieire o tabel virtual care n urma unei operaii de filtrare reprezint un sub-set orizontal al tabelei originare. Prin selecie, dintr-o tabel sunt pstrate numai acele entiti (nregistrri, rnduri) care respect condiiile impuse de filtru. Tabela 'Output' Tabela 'Input' C-1 C D E A C-2 1 2 3 3 C-3 C1 D1 E1 A1

Selecie
C-2 3 3

Selecie C-2=3

C-1 E A

C-3 E1 A1

I.6.3 Proiec ia (projection) Proiecia produce la ieire o tabel virtual care reprezint un sub-set vertical al tabelei originare. Prin proiecie, dintr-o tabel sunt pstrate numai anumite coloane (cmpuri). n urma acestei operaii pot rezulta i cmpuri virtuale. Tabela 'Input' C-1 C-2 C-3 1 C C1 2 D D1 3 E E1 3 A A1 Tabela 'Output'

Proiecie Proiecie C-1; C-3


C-1 C D E A C-3 C1 D1 E1 A1

I-41

I.6.4 Al turarea (join) Alturarea produce la ieire o tabel virtual care se obine pstrnd numai nregistrrile care satisfac o anumit condiie din rezultatul produsului cartezian extins efectuat ntre dou tabele. Deci alturarea rezult prin execuia succesiv a dou operaii relaionale: un produs cartezian extins urmat de o selecie. Tabela 'Input 1'
C-1 A B C-2 A1 B1 C-3 A2 B2

Tabela 'Output'

JOIN pentru C-5 < 3


C-1 A A B B C-2 A1 A1 B1 B1 C-3 A2 A2 B2 B2 C-4 C D C D C-5 1 2 1 2

Tabela 'Input 2'


C-4 C D E C-5 1 2 3

I.6.5 Reuniunea (union) Reuniunea produce o tabel virtual care conine toate nregistrrile celor dou tabele originare. Operaia de reuniune nu se poate efectua dect dac tabelele de intrare au aceiai structur (aceleai cmpuri). Adugarea unei nregistrri la o tabel este o operaie de reuniune, ca n exemplul de mai jos: Tabela 'Input 1' Tabela 'Output' C-1 C-2 C-3 Reuniunea C-3 A A1 A2 C-1 C-2 B B1 B2 A A1 A2 Tabela 'Input 2' C-1 C-2 C-3 C C1 C3
I-42

B C

B1 C1

B2 C3

I.6.6 Intersec ia Intersecia reprezint mulimea tuturor nregistrrilor care se gsesc simultan n ambele tabele. Evident, pentru a se produce aceasta operaie condiia de la reuniune (ca ambele tabele s conin aceleai cmpuri) trebuie respectat. Tabela 'Input 1' C-1 C-2 C-3 A A1 A2 B B1 B2 Tabela 'Input 2' C-1 C-2 C-3 B B1 B2 C C1 C3

Tabela 'Output'

Intersecia
C-1 B C-2 B1 C-3 B2

I.6.7 Diferen a Diferena dintre dou tabele, X i Y (compatibile pentru reuniunedeci cu aceleai cmpuri) const n mulimea nregistrrilor din X care nu sunt n Y. Tabela 'Input X' C-1 C-2 C-3 A A1 A2 B B1 B2 Tabela 'Input Y' C-1 C-2 C-3 B C B1 C1 B2 C3

Tabela 'Output'

Diferena
C-1 A C-2 A1 C-3 A2

I-43

I.6.8 mp r irea mprirea tabelei X la tabela Y, produce o tabel virtual care conine cmpurile din X care nu sunt n Y i nregistrrile din X care sunt identice cu cele din Y (pentru cmpurile comune). Tabela 'Input X' Cmp1 Cmp2 Cmp3 A A1 A2 B B1 B2 Tabela 'Input Y' Cmp1 Cmp4 Cmp5 B X1 X2 C Z1 Z3 Tabela 'Output'

mprirea
Cmp2 B1 Cmp3 B2

I.7 Extinderea algebrei rela ionale - limbaje de programare rela ionale Extinderea algebrei relaionale se refer la modalitile practice de implementare ntr-un SGBD a operaiilor de algebr relaional (sau numai a unei pri dintre acestea). n general aceasta se realizeaz prin definirea limbajelor relaionale. Limbajele relaionale sunt limbaje de programare neprocedurale4, care, teoretic, sunt mprite n dou categorii5 funcie de rolul pe care l au n gestionarea bazei de date - i anume: DDL (data definition language) - prin care sunt definite funciile de creare i ntreinere a obiectelor din baza de date
4

Limbajele procedurale conin instruciuni prin care se pot reprezenta proceduri de prelucrare de date (algoritmi); limbajele neprocedurale conin definiii, descrieri ale aciunilor pe care calculatorul trebuie s le efectueze. SGBD Access dispune de un singur limbaj de programare relaional, numit SQL (Structured Query Language). Access SQL este foarte puin diferit de standardul ANSI SQL.
I-44

(metadate). Trebuie remarcat modalitatea prin care sunt reprezentate descrierile de entiti i asocieri, i anume prin tabele, adic la fel ca aceea a datelor propriu-zise, ceea ce confer bazei de date un aspect simplu i uniform. DML (data manipulation language) ) - prin care sunt definite funciile referitoare la gestionarea datelor cu care este ncrcat baza de date. Funciile pe care le ofer cele dou limbaje relaionale sunt: DDL - Limbajul de definire a datelor Crearea de tabele i definirea cmpurilor acestora; Stabilirea cheilor; Indexri i sortri; Stabilirea relaiilor; Asigurarea proteciei datelor; DML - Limbajul de manipulare a datelor Interogarea bazei de date (execuia de cereri); Actualizarea bazei de date; I.8 Stabilirea ordinii nregistr rilor n tabele sortarea i indexarea Cea mai utilizat operaie care se efectueaz pe tabelele unei baze de date este sortarea. Sortarea reprezint operaia prin care nregistrrile unei tabele sunt aranjate n ordine ascendent sau descendent dup valorile pe care le ia un cmp, numit cheie de sortare. Exist posibilitatea ca dup ce se sorteaz toate nregistrrile unei tabele dup un cmp, pentru acele nregistrri n care cmpul respectiv are valorile egale s se procedeze la o nou sortare dup alt cmp. n acest caz se va produce o sortare dup mai multe chei de sortare. Pentru a se putea realiza operaii relaionale cu tabele, de cele mai multe ori acestea trebuie n prealabil s fie sortate. Realizarea sortrii se poate efectua n dou feluri, fizic sau logic (prin intermediul indecilor).
I-45

Sortarea fizic necesit aranjarea efectiv, fizic, pe disc a nregistrrilor n ordinea dorit dup valorile cheii (cheilor) de sortare. Ea este o operaie care consum foarte mult timp i memorie. Sortarea logic nu modific poziia nregistrrilor de pe disc, ci ea permite numai regsirea acestora n ordinea ascendent sau descendent pe care o iau valorile din cheia (cheile) de sortare. Sortarea logic (vezi figura) se poate efectua numai dac n prealabil cmpul (cmpurile) care reprezint cheia (cheile) de sortare au fost indexate, adic dac li s-au ataate tabele de indeci, caz n care sortarea se poate face rapid prin intermediul acestora.
Adresa de pe disc a nreg. tabelei

1000 1320 1640 1920 2240

Tabela original aflat pe disc Cmp1 Alte Indexat cmpuri A3 333 A1 111 A4 444 A6 666 A2 222

Tabela de indeci ataat lui Cmp1 Cmp1 Adresa nreg. 1000 1320 A1 333 111 1320 2240 A2 111 222 1640 1000 A3 444 333 1920 1640 A4 666 444 2240 1920 A6 222 666 Indexarea reprezint operaia de ataare a tabelelor de indeci la un cmp, care va deveni indexat.

-O nregistrare din tabela originar ocup 320 de octei. -O nregistrare din tabela de indeci este mult mai mic, avnd numai dou cmpuri, indiferent de mrimea nregistrrilor din tabela original. Sortarea fizic a acesteia nu creeaz probleme. - Accesarea n ordinea cheii de sortare (cresctoare) Tabela de indeci a celorlalte cmpuri sortat cresctor din nregistrare dup Cmp1 Adresa adresa aflat n nreg. tabela de indeci

I-46

Tabelele de indeci sunt nite tabele de dimensiuni reduse, care conin 2 coloane, i anume cmpul efectiv (indexul) i adresa fizic de pe disc a nregistrrii corespunztoare. Sortarea fizic dup index a acestei tabele de indeci, datorit dimensiunii reduse consum foarte puin timp i memorie. Dup efectuarea acestei operaii exist posibilitatea accesrii nregistrrilor tabelei bazei de date n ordine cresctoare sau descresctoare dup cheia de indexare, fr ca acestora s li se modifice poziia fizic de pe disc. Acest lucru este posibil deoarece, aa cum s-a artat, n tabela de indeci, asociat unei valori a indexului este adresa de pe disc unde se gsete nregistrarea care conine indexul respectiv. n felul acesta operaia de sortare logic a tabelei originare prin intermediul indexrii prealabile a cmpului ce este cheie de sortare se va efectua n condiiile unui consum minim de timp i memorie. Indexarea este utilizat i la alte operaii n afar de sortare. Astfel selecia nregistrrilor care au o anumit valoare pentru un cmp, se realizeaz de zeci de ori mai rapid dac acest cmp este indexat. Totui operaia de indexare are i aspecte negative, dar incomparabile fa de avantajele produse de aceasta. Aceste minusuri se refer la memoria ocupat de tabela de indeci i la prelungirea timpului de actualizare a tabelelor (deoarece trebuiesc actualizate i tabele ataate de indeci). I.9 Exemple de modele rela ionale n practic, realizarea modelului fizic al unei baze de date relaionale nu preia toate elementele teoretice i / sau introduce faciliti noi, n diferite scopuri (compatibilitatea cu alte produse, optimizri ale anumitor prelucrri, dificulti n implementarea anumitor funcii, etc.).

I-47

I.9.1 Modelul rela ional cu fi iere plate O asemenea implementare a fost realizat pentru bazele de date DBase i FoxPro. Acestea sunt baze de date "aproape" relaionale, deoarece, dei datele sunt memorate n tabele de sine stttoare, denumite fiiere plate (flat file), totui nu permit legturile cu alte tabele (structura bazei de date este bidimensional). n aceste baze de date, legaturile ntre tabele se pot realiza numai prin instruciuni introduse n secvenele de program, ceea ce face ca principiul independentei datelor s fie respectat parial. De asemenea, un alt neajuns se refer la partea de indexare, care necesit i ea introducerea de cod de program. I.9.2 Modelul rela ional orientat pe obiecte Un asemenea model se caracterizeaz prin faptul c ofer facilitile SGBD-ului relaional respectiv, sub forma unor obiecte6. Produsul MS Access este un SGBD relaional (face parte din pachetul MS Office, realizat de firma Microsoft) care ofer toate instrumentele necesare realizrii unor aplicaii sub forma unor obiecte. Principalele caracteristici ale sale sunt urmtoarele: Structura (schema) bazei de date poate fi realizat n aa fel nct s garanteze (cel puin teoretic) integritatea datelor (existenial, de domeniu i referenial); Independena total a datelor de codul de program;
6

Obiectul este o entitate bine definit (exist i poate fi identificat) care are o anumit structur, anumite caracteristici i poate efectua una sau mai multe aciuni (funcii). Un obiect se caracterizeaz prin: proprieti structura i caracteristicile (atributele) sale; metode aciunile pe care poate s le efectueze obiectul; evenimente aciuni exterioare produse asupra obiectului, care determin lansarea (execuia) unei metode (aciuni) a acestuia;
I-48

Modularitatea aplicaiei datorate constituirii acesteia din module independente, realizate ca nite obiecte care sunt la rndul lor formate din alte obiecte; Transferul obiectelor, att intern ct i cu alte aplicaii de pe platforma Windows se poate realiza att simplu ct i prin tehnologiile OLE sau Automation, care permit utilizarea ntr-o aplicaie (numit client) a obiectelor provenite din alte aplicaii (numite server)7. Interfaa utilizator foarte 'prietenoas', respectnd specificaiile standardului Windows.

Poate cea mai interesant caracteristic a unei aplicaii Access este aceea c poate fi realizat fr a fi necesar scrierea de instruciuni de program. Aplicaiile Access sunt recomandate n special pentru: baze de date ale cror tabele s nu depeasc cteva sute de mii de nregistrri; accesul la baza de date s se fac de pe un numr mic de staii (preferabil de pe una singur n care s se afle i baza de date); Tehnologia OLE permite ca ntr-o aplicaie client s se foloseasc obiecte provenite dintr-o aplicaie server, prin lansarea acesteia chiar n aplicaia client, n scopul manipulrii obiectului respectiv. Exist dou forme de implementare a acestei tehnologii, n funcie de locul unde va fi memorat obiectul respectiv i anume: Embedded (ncapsulare) obiectul este memorat n aplicaia client, avnd o existen independent; Linked (legare) obiectul exist numai n aplicaia server, n aplicaia client memorndu-se adresa acestuia; Tehnologia Automation permite crearea de ctre aplicaiile server a unor obiecte independente care nu mai au nevoie de aplicaia server pentru a fi utilizate ntr-o aplicaie client. Obiectele create prin tehnologia Automation se numesc ActiveX.
I-49

Explicaie: Dificultatea utilizrii practice a aplicaiilor Access n reelele de calculatoare cu un numr mai mare de utilizatori, este consecina faptului c execuia tuturor prelucrrilor (actualizri i cereri) din baza de date se face chiar pe calculatoarele de pe care se lanseaz, ceea ce determin ca n cazul n care baza de date este pe alt calculator, transferul de date pe reea s fie foarte mare, deoarece va conine toat subschema necesar efecturii actualizrii sau cererii respective (toate datele din tabelele i relaiile necesare prelucrrii). Depirea limitelor prezentate, se realizeaz prin proiectarea de aplicaii server-client, folosind servere de baze de date relaionale. Aceste servere, n afar de rolul de a conine baza de date (structura i datele efective) efectueaz i execuia tuturor prelucrrilor solicitate de utilizatori, ceea ce face ca traficul pe reea s fie relativ mic, fiind format numai din informaia util (traficul pe reea nu va mai conine toat subschema actualizrii sau cererii respective, ca n cazul aplicaiilor folosind baze de date Access, ci este format numai din transmiterea cererii de prelucrare i ntoarcerea rezultatului acesteia). SQL Server este un server de baze de date relaionale a crui utilizare este destul de asemntoare cu a bazelor de date Access. SQL Server este un produs realizat tot de firma Microsoft.

I-50

Cap.II Access - prezentare general


Produsul MS Access, este un SGBD, care ofer proiectanilor de aplicaii att posibilitatea crerii unei baze de date relaionale Access, ct i a realizrii interfeei utilizator. O aplicaie Access va conine deci n principal urmtoarele componente: Modulele de definire a bazei de date relaionale (schema bazei de date); Datele efective cu care este ncrcat baza de date; Modulele interfeei utilizator, necesare att pentru actualizarea ct i pentru extragerea informaiilor din baza de date; Module utilitare pentru gestionarea aplicaiei (salvare, restaurare, compactare8, reparare, transferuri de obiecte, asisten, analize asupra corectitudinii schemei bazei de date, etc.) Toate aceste componente vor fi plasate ntr-un singur fiier cu extensia MDB (care conine i sursa modulelor de program introduse) sau MDE (n care modulele de program se gsesc numai compilate - deci n format executabil). II.1 Obiecte de rang superior O aplicaie Access se realizeaz n totalitate numai prin configurarea corespunztoare a unor obiecte, numite obiecte de "rang superior". Acestea sunt n numr de apte i sunt prezentate succint n continuare:
8

Compactarea unei baze de date este operaia prin care se elimin din aceasta toate informaiile redundante pstrate dup actualizrile succesive ale acesteia (n scopul reparrii acesteia n caz de eroare). De asemenea, compactarea defragmenteaz spaiul ocupat de tabelele bazei de date, micornd considerabil timpul de acces la informaiile din acestea n cazul n care n baza de date sunt frecvente actualizrile.
II-51

1) Tabele (Tables) - obiecte pentru pstrarea entitilor din baza de date, ntr-o structur bidimensional format din nregistrri i cmpuri. Prin definirea proprietilor tabelei i a cmpurilor acesteia se introduc restriciile de integritate existenial i de domeniu ale bazei de date. 2) Relaii (Relationships) - obiecte care conin relaiile dintre entitile coninute n tabele. Prin definirea proprietilor relaiilor se introduc restriciile de integritate referenial ale bazei de date. Prin definirea tuturor tabelelor i a relaiilor dintre acestea se realizeaz schema unei baze de date relaionale Access. 3) Cereri (Queries) - obiecte prin care se execut prelucrri n bazele de date Access prin efectuarea unor operaii relaionale, implementate prin limbajul de programare formal (neprocedural) SQL (Structured Query Language). Cererile, funcie de rolul lor, sunt de dou feluri, i anume: cereri de selecie - prin care se poate efectua extragerea de informaii din bazele de date Access; cereri de actualizare - prin care se poate modifica baza de date. n funcie de ceea ce se modific, acestea pot fi: cereri aciune - prin care se poate efectua ori actualizarea datelor din tabelele bazei de date (modificarea datelor din cmpuri, adugarea sau tergerea de nregistrri) ori memorarea datelor (ntr-o tabel temporar) de la ieirea unei cereri de selecie; cereri de definiii de date (data-definition query) prin care se pot actualiza structural tabelele; Cererile se mai numesc i interogri. 4) Formulare (Forms) - obiecte care constituie interfaa de intrare a aplicaiilor Access, realizate ntr-o structur standardizat uor de nsuit i utilizat. Oferind prin proprietile lor posibilitatea "legrii" cu tabele din baza de date Access, formularele permit ori actualizarea asistat a datelor din tabele ori numai vizualizarea lor.
II-52

n formulare (ca i n rapoarte dealtfel), datele din cmpurile tabelelor vor fi afiate prin intermediul unor obiecte standardizate numite controale9. Formularele se mai numesc i machete sau video-formate. 5) Rapoarte (Reports) - obiecte care realizeaz interfaa de ieire a unei aplicaii Access, oferind utilizatorului informaiile prelucrate din baza de date, de obicei la imprimant, sub forma unor liste sau grafice. Rapoartele, permit printre altele, editarea formatat, gruparea i sortarea dup unul sau mai multe cmpuri a nregistrrilor, precum i folosirea anteturilor (header) sau a subsolurilor (footer) de pagin sau raport. Formularele i rapoartele sunt obiectele prin care se realizeaz interfaa dintre baza de date Access i utilizator. Prin felul n care sunt construite ele permit o standardizare i tipizare a aplicaiilor Access, ceea ce le face uor de implementat. De asemenea prin aceste obiecte se pot introduce diferite faciliti oferite de "standardul Windows", ca de exemplu ataarea unui "tips text"10 sau unui "help" la datele afiate prin controale. Urmtoarele dou obiecte de "rang superior", Macros i Modules, permit introducerea automatizrii proceselor de prelucrare posibile n aplicaiile Access. Dei ele pot fi omise n marea majoritate a aplicaiilor, totui pentru realizarea unor aplicaii cu prelucrri complexe sau la un standard profesionist, sunt absolut necesare (de exemplu pentru crearea metodelor sau chiar a unor proprieti a obiectelor din aplicaiile Access).
9

10

Controale - obiecte standardizate, de diferite tipuri prin intermediul crora se pot afia n formulare sau rapoarte datele. Anumite tipuri de controale (de exemplu: Text Box sau Combo Box) se pot "lega" direct la cmpurile tabelelor. Tips Text - proprietate prin care se ataeaz un text explicativ unui control. Acest text poate fi vizualizat dup 1-2 secunde de la plasarea mouseului deasupra controlului.
II-53

6) Module (Modules) - sunt coduri de program scrise n limbajul de programare VBA11 (Visual Basic for Application), n vederea introducerii unor prelucrri de finee, grupate n clase de obiecte12, colecii de obiecte13, obiecte, proceduri sau funcii i care reprezint o modalitate superioar de automatizare a prelucrrilor. 7) Macro-comenzi (Macros14) - se realizeaz prin selectarea dintr-o colecie a unor aciuni sau comenzi (macro-instruciuni) prin care se pot efectua automat aproape toate prelucrrile posibile oferite de o aplicaie Access. De asemenea, existnd posibilitatea realizrii Macro-comenzilor i prin crearea unor structuri de control (secveniale sau alternative) cu macro-instruciuni, ele reprezint o modalitate simpl de automatizare a prelucrrilor, similar celei
11

12

13

14

Aceast lucrare nu conine descrierea limbajul de programare VBA. El este prezentat n cartea "Programarea n VBA", aprut n anul 2003, n aceiai editur i de acelai autor. Clasa de obiecte conine toate definiiile unui obiect, adic tipurile de proprieti, metode i evenimente care vor determina structura unui obiect. Prin setarea caracteristicilor unei clase de obiecte (de exemplu atribuirea de valori proprietilor) se obine un obiect nou. Deci definirea unei clase de obiecte creeaz un format, o structur pe care o vor avea toate obiectele ce provin din aceasta. Colecia de obiecte este constituit din totalitatea obiectelor care provin din aceeai clas de obiecte i care din aceast cauz au aceleai tipuri de proprieti i metode. Obiectele dintr-o colecie pot fi privite i folosite ca un tablou de obiecte, formnd o structur de tip tablou, la care este posibil referirea la un anumit obiect prin indexul acestuia. Nu trebuie confundate Macro-urile Access, cu cele oferite de celelalte aplicaii ale Microsoft Office (de exemplu Word sau Excel) - care sunt realizate prin "nregistrarea" unei secvene de comenzi - chiar dac scopul este acelai: o modalitate simpl de automatizare a prelucrrilor solicitate.
II-54

oferite de un limbaj de programare, dar care este abordabil i nespecialitilor n informatic deoarece nu necesit cunotine de programare. II.2 Ferestrele utilizate n mediul Access Ferestrele utilizate n Access, respect standardul Windows, ele putnd prin "agare" s fie mutate ori redimensionate i fiind alctuite din: bara de titlu - n care se va afia pictograma i textul introdus prin: Tools | Startup | Application Icon respectiv Application Title; bara de meniuri - n care, funcie de context15, sunt plasate comenzile care pot fi efectuate (n continuare aceasta se va denumi MenusBar); bara de unelte (instrumente) - n care, funcie de context, sunt plasate pictogramele comenzilor care pot fi efectuate (n continuare aceasta se va denumi ToolsBar); bara de stare - n care sunt afiate informaii despre comanda care se execut; barele de derulare orizontale sau verticale - numai cnd este cazul; zona de lucru; O aplicaie Access comunic cu utilizatorul printr-o fereastr principal. n continuare, orice obiect accesat, care are interfa cu utilizatorul, i va deschide n fereastra de unde a fost lansat, propria sa fereastr de lucru. n aplicaiile Windows se folosesc dou modaliti de aranjare pe ecran a mai multor ferestre ce provin din acelai printe: MDI Multiple Documents Interface n care ferestrele copil sunt aranjate numai n interiorul ferestrei printe. Acest
15

n Access pentru fiecare modul (obiect) exist definite bare de meniuri i de unelte specifice.
II-55

tip de interfa este specific implementrilor superioare versiunii Access 97 precum i mediilor de programare din pachetul "Microsoft Visual Studio" (de exemplu Visual Basic, Visual C, etc.). SDI Simple Documents Interface n care ferestrele copil sunt aranjate nu numai n interiorul ferestrei printe, ci oriunde se poate pe suprafaa ecranului. Acest tip de interfa este specific n Access 97, fiind folosit att n proiectare (design) ct i n execuie (view). Deci n acest sistem, dac exist mai multe ferestre simultan, ele pot fi plasate oriunde pe ecran. nchiderea unui obiect (deci i a ferestrei sale) se face n mod obinuit, adic ori prin apsarea pe butonul din dreapta sus a ferestrei respective [ X ] ori prin comenzile Exit sau Close. nchiderea ferestrei principale va duce la terminarea aplicaiei Access. II.3 Sesiuni 16 dinamice de lucru Access Lansarea n execuie a unei aplicaii Access se face n dou etape, i anume: Etapa 1-a. Lansarea n execuie a programului (mediului de programare) Access se face din meniul: Start | Programs | Microsoft Access, sau prin activarea pictogramei Access specifice. Dup aceast operaie va aprea fereastra principal de lucru Access, care nu va conine ns nimic n interiorul ei (n zona de lucru). Etapa a 2-a. n continuare trebuie ca n mediul de programare Access s se ncarce o baz de date Access. Acest lucru se face prin comanda Open Database (pentru o baz de date creat anterior i
16

Sesiunea de lucru a unei aplicaii, reprezint timpul scurs ntre lansarea i nchiderea acesteia. Dac sesiunea este dinamic, atunci la nchiderea aplicaiei se vor salva toate prelucrrile efectuate, urmnd ca urmtoarea sesiune s porneasc de la aceast starea.
II-56

aflat ntr-un fiier de tip mdb sau mde) sau prin comanda New Database (pentru crearea unei baze de date noi, care va fi configurat n continuare). La terminarea sesiunii de lucru Access (nchiderea ferestrei principale), se va efectua automat i salvarea strii din acel moment n care se gsete aplicaia.

Dac la terminarea sesiunii de lucru, exist mai multe ferestre deschise, atunci acestea vor fi nchise automat.
Se poate lansa i direct o baz de date Access, prin dublu-clic efectuat pe obiectul care o conine (fiier cu extensia mdb sau mde). II.4 Fereastra "Database" Fereastra care apare la deschiderea unei baze de date Access este fereastra "Database". Aa cum se observ i din figur, ea se prezint sub forma unui control TAB17.

Fereastra Database, conine 6 pagini, corespunztor tuturor obiectelor de "rang superior" (Tables, Queries, Forms, Reports, Macros, Modules) n afar de Relationships, care se poate accesa separat, din meniul Tools sau direct de pe bara cu unelte.
17

Control TAB - control care are forma unei cartoteci, prin care se poate selecta o anumit pagin.
II-57

Orice pagin a acestei ferestrei are n dreapta 3 butoane i anume: New pentru crearea unui obiect nou de tipul respectiv; Design pentru reproiectarea unui obiect (selectat n prealabil); Open sau Preview sau Run pentru lansarea n execuie a obiectului selectat; n fereastra Database sunt valabile facilitile specifice sistemului de operare Windows n ceea ce privete copierea, tergerea sau redenumirea obiectelor din interiorul fiecrei pagini ale acesteia (cut, copy, paste sau drag and drop).

Copierea (sau mutarea) obiectelor se poate face i ntre ferestre Database din aplicaii Access diferite.

II.5 Structura aplica iilor Access Aa cum s-a mai artat o aplicaie Access este format din configurarea celor apte obiecte de "rang superior". Ele vor forma structuri ierarhic-arborescente, constituite dintro mulime de obiecte individuale i colecii de obiecte18, n care sunt bine precizate relaiile de dependen19 dintre componente i care sunt preluate din diferite biblioteci20, unde se gsesc grupate dup funciile i rolul lor.
18

19 20

Deosebirea ntre numele obiectelor i a coleciilor de obiecte, se face prin folosirea pentru acestea din urm a pluralului (se termin cu s). De exemplu, o tabel va avea definit structura ntr-un obiect care va face parte din colecia de tabele (biblioteca DAO). ntr-o bibliotec se gsesc definite clase de obiecte, colecii de obiecte, obiecte individuale, rutine (proceduri i funcii), constante sau tipuri de date. Toate componentele unei biblioteci sunt nsoite i de module de help, n care sunt prezentate funciile, modul de utilizare i exemple.
II-58

Implicit, aplicaiile Access au ataate 3 biblioteci21, i anume: 1) Biblioteca DAO - Data Access Objects; 2) Biblioteca Access-Application; 3) Biblioteca VBA - Visual Basic for Applications; II.5.1 Accesul la date n aplica iile Access Prin colecia de obiecte i obiectele individuale coninute n biblioteca DAO, se permit n primul rnd urmtoarele: definirea schemei bazei de date prin configurarea obiectelor de "rang superior": Tables i Relationships; extragerea i actualizarea informaiilor din baza de date prin crearea obiectelor de "rang superior": Queries; II.5.1.1 Utilizarea datelor externe n aplica ii Access Exist diferite tipuri de formate de memorare a datelor, specifice diverselor pachete de programe. Aplicaiile Access folosesc pentru bazele de date proprii, formatul numit Microsoft Jet. Produsul Access are la dispoziie drivere22 care ofer posibilitatea utilizrii n aplicaiile Access, de date n diferite tipuri de formate, ca de exemplu: Microsoft Jet - folosit n produsele: Access, VB, VC++ sau Excel; Microsoft ISAM (Indexed Sequential Access Method) folosit n produse ca: FoxPro, DBase, Paradox, Lotus sau HTML;
21

22

Aceast lucrare nu conine descrierea componentelor acestor biblioteci, ci numai o prezentare sumar a lor. O descriere amnunit a bibliotecilor DAO i ACCESS se gsete n cartea "Programarea n VBA", aprut n anul 2003, n aceiai editur i de acelai autor. Programe prin care se pot utiliza diferite componente hardware sau software ale unui sistem de calcul.
II-59

ODBC (Open Database Connectivity) folosit pentru conectarea la o surs de baze de date (de exemplu SQL Server); TEXT - pentru utilizarea datelor din fiiere n format ASCII, neformatate; Exist dou posibiliti de utilizare a acestor date, i anume prin: importul acestora prin tabele n aplicaia Access; legarea de datele externe prin intermediul tabelelor sau a cererilor, n continuare ele fiind utilizate prin mecanismele oferite de Microsoft Jet; Deci, ntr-o aplicaie Access exist posibilitatea deschiderii mai multor tipuri de formate de baze de date. II.5.1.2 Structura colec iilor i obiectelor din DAO Principalele obiecte23 utilizate din biblioteca DAO, sunt urmtoarele: DBEngine obiectul superior n ierarhia DAO; Workspace spaiul de lucru DAO; Error informaii despre erorile din baza de date; Database baza de date curent24; User, Group utilizatorii i grupele de utilizatori, folosite la securizarea bazei de date; TableDef structura tabelelor bazei de date; QueryDef structura cererilor bazei de date; Relation relaiile dintre entitile bazei de date; Field cmpurile tabelelor, cererilor, indecilor, relaiilor sau ale recordset-urilor; Index tabelele de indeci ale cmpurilor tabelelor;
23 24

Unele dintre aceste obiecte aparin unor colecii de obiecte. Baza de date curent este baza de date utilizat la un moment dat ntr-o aplicaie Access. Ea poate fi baza de date din acea aplicaie sau alt baz de date dintr-o aplicaie extern.
II-60

Parameter parametrii folosii n cereri; Recordset datele folosite ntr-o tabel sau cerere; Container informaii de securitate despre coleciile de obiecte din baza de date; Document informaii despre obiectele bazei de date; Coleciile de obiecte i obiectele individuale preluate din biblioteca DAO, vor forma o structur ierarhic-arborescent, care va defini la un moment dat baza de date curent. Aceast structur este prezentat n schema de mai jos (n care nu sunt ns detaliate toate coleciile de obiecte). DBEngine
Workspaces Errors

Workspace(0) Databases Users Groups

Workspace(1)

Current DB
TableDefs QueryDefs Relations RecordSets Containers Are 8 obiecte:

Ob.tabela
Fields Indexes

Ob.cerere

Ob.relaii Recordset

Fields Parameters Fields Fields Fields

0-Databases 1-Forms 2-Modules 4-Reports 5-Scripts 6-SysRel 7-Tables

3-Relationships

Legend Obiecte Colecii

Documents

II-61

II.5.2 Interfa a utilizator a aplica iilor Access 25 Obiectele i coleciile de obiecte necesare realizrii interfeei utilizator a aplicaiilor Access provin n cea mai mare parte din biblioteca Access-Application prin configurarea a patru obiecte de "rang superior": Forms, Reports, Macros26 i Modules. Ele permit realizarea unor aplicaii deosebit de "prietenoase", cu un efort minim, care sunt concepute n "standardul" Windows. Pentru definirea complet a obiectului de rang superior Modules se utilizeaz i componente din biblioteca VBA, i anume: Debug - pentru testarea i corectarea codului de program; ErrObject - pentru gestionarea erorilor de execuie; Structura bibliotecii Access-Application este prezentat n schema de mai jos (n care ns nu sunt detaliate toate coleciile):

Application Forms Reports

formularele deschise rapoartele deschise

colecia formularelor deschise (FM_1 i FM_2) Forms FM_1


Controls

Controls Controls Modules Screen DoCmd


References

FM_2
Controls

Legend Obiecte Colecii

Cbox_1

Cbox_2

25 26

Access este considerat cel mai performant produs informatic n ceea ce privete prezentarea datelor. Cea mai mare parte din macro-instruciuni sunt metode ale obiectului DoCmd.
II-62

Principalele colecii de obiecte i obiecte individuale sunt: Application obiect care reprezint aplicaia aflat n execuie. Forms - colecia formularelor aplicaiei, care se gsesc la un moment dat deschise. Controls - colecia controalelor dintr-un formular. Reports - colecia rapoartelor aplicaiei, care se gsesc la un moment dat deschise. Controls - colecia controalelor dintr-un raport. Modules - colecia modulelor de cod ale aplicaiei. Aa cum se observ, codul VBA introdus la acest nivel poate fi folosit de ctre toate obiectele aplicaiei. DoCmd - obiect care are ca metode majoritatea comenzilor disponibile n Access i care pot fi folosite fie n codul VBA fie la formarea macro-comenzilor. Biblioteca Access mai conine: Screen obiect ce se refer la formularul, raportul sau controlul care are la un moment dat focusul27. References colecie de obiecte ce conine legturile ctre bibliotecile de pe platforma Windows i care eventual pot fi folosite, dac se precizeaz acest lucru prin comanda: Tools | References. Implicit sunt setate cele trei biblioteci prezentate. n Access, descrierea prii superioare a ierarhiilor prezentate, este opional dac se lucreaz cu baza de date local28. Astfel, ierarhia DAO poate ncepe direct de la coleciile din obiectul Database, care este baza de date curent a aplicaiei - iar n ierarhia Access-Application obiectul Application este implicit.

27 28

Focus - Obiectul care la un moment dat deine controlul comunicrii cu utilizatorul. Baza de date local este baza de date din aplicaia Access.
II-63

II.6 Expresiile n Access 29 O expresie este format din termeni, asupra crora se efectueaz anumite operaii. O expresie al crui rezultat este o valoare logic (True sau False) se numete condiie. II.6.1 Termenii expresiilor n Access n expresiile Access se pot utiliza urmtorii termeni: Literali - valori de tip numeric, ir de caractere, Date/Time etc., care se introduc direct ntr-o expresie fiind evaluai exact aa cum sunt scrii. Literalii de tip iruri de caractere se scriu ntre ghilimele: . Literalii de tip Date/Time se scriu ntre diezi: #.# Literalii de tip numeric se scriu n zecimal. Funciile standard care se gsesc n bibliotecile Access, ca de exemplu: SQR - calculeaz radicalul; SIN, COS, TAN, ATN - funcii trigonometrice; LEFT, RIGHT, MID - extragerea unui sub-ir dintr-un ir de caractere; UCASE, LCASE - transform toate literele dintr-un ir de caractere n litere mari, respectiv mici; .DAY, MONTH, YEAR, SECOND, MINUTE, HOUR extrage dintr-o valoare de tip data/time a prii specificate de numele funciei; NOW - furnizeaz data curent a sistemului; IIF, SWITCH, CHOOSE - implementeaz structuri de control alternative;

29

Exist deosebiri (nu foarte mari) ntre expresiile utilizate n Access i cele din limbajul de programare VBA.
II-64

Funciile utilizator, scrise n VBA i care se gsesc n obiectul de "rang superior": Modul. Separatorul folosit ntre parametrii unei funcii apelat ntr-o expresie Access este caracterul punct i virgul( ; )30 Nume de obiecte din aplicaia Access ca de exemplu: Numele unor cmpuri din tabele sau cereri; Numele unor controale din formulare sau rapoarte; Numele unor obiecte componente ale structurilor ierarhice ale coleciilor care definesc obiectele de rang superior Access; Etc. Convenia de reprezentare a numelor obiectelor Access este scrierea acestora ntre paranteze drepte [ ] Obiectele se scriu calificat - folosindu-se pentru aceasta semnul exclamrii(!) sau punctul(.)31 - cu obiectele superioare din ierarhia acestora. De exemplu numele unui cmp se calific cu numele tabelei unde se afl. Calificarea se scrie n ordinea ierarhiei, de la stnga la dreapta. Calificarea se folosete petru a elimina ambiguitatea referirii la dou obiecte care au acelai nume dar se gsesc n obiecte

30

n VBA, caracterul separator ntre parametrii unei funcii este diferit i anume virgula(,); 31 Referitor la alegerea utilizrii a unui anumit semn dintre cele dou, regula stabilit n Access (inclusiv SQL sau VBA) este: punctul se folosete cnd urmeaz un obiect cunoscut de sistem n momentul definirii acestuia; semnul exclamrii se folosete cnd urmeaz un obiect definit de utilizator i cunoscut de sistem de abia n momentul execuiei (n momentul definirii obiectului printe, acest obiect nu este cunoscut);
II-65

diferite. De exemplu dac ntr-un modul se face referire la dou cmpuri cu acelai nume dar care se gsesc n tabele diferite. Calificare nu este obligatorie de obicei, deoarece nu este necesar dac nu exist ambiguiti. Utilizarea semnului exclamrii(!) este oriunde acceptat n locul utilizrii punctului(.) Sunt permise folosirea datelor care se gsesc n controalele din formularele (sau rapoartelor) deschise, prin folosirea unei expresii n care se pornete de la numele controlului respectiv i prin calificri succesive se ajunge la formularul unde se gsete acesta i mai departe la colecia formularelor deschise.

Valoarea NULL NULL arat n Access lipsa unei valori dintr-un termen al unei expresii (de exemplu dintr-un cmp dintr-o nregistrare a unei tabele sau dintr-un control de tip TextBox dintr-un formular sau raport). Valoarea NULL poate fi testat sau folosit n expresii. Ea se comport ntr-un mod specific i anume: cnd este folosit ca termen al unei expresii cu operaii aritmetice, relaionale, logice sau ca argument al unei funcii se propag n rezultat, indiferent de forma expresiei.

Exist totui dou excepii de la regula cu privire la comportamentul valorii NULL n expresii i anume: prin concatenarea cu NULL a unui ir de caractere, se obine irul i nu NULL; n funciile agregate (prezentate n alt capitol) NULL se ignor.

II.6.2 Operatorii expresiilor din Access Operatorii utilizai n expresiile din Access sunt de trei tipuri, i anume:
II-66

Operatorii aritmetici - se aplic asupra unor termeni scalari (numere, stringuri, date calendaristice, etc.) determinnd un rezultat de aceiai natur.

^
Ridicare la putere

*
nmulire

/
mprire real 5 / 2=2.5

\
mprire ntreag 10 \ 3=3

Mod
Restul mpririi 10 Mod 3=1

5 ^ 2=25 5 * 2=10

+
Adunare 5 + 2=7

Scdere 5 - 2=3

&
Concatenare iruri. "Ab"& "2"="Ab2"

Dei operatorul pentru concatenarea datelor este &, uneori se poate folosi i semnul + .

Operatorii relaionali - se aplic asupra unor termeni scalari (numere, stringuri, date calendaristice, etc.) determinnd un rezultat logic (boolean).

<
mai mic (1<1) = False

<=
mai mic sau egal (5<=5) = True

>
mai mare (5>4) = True

>=
mai mare sau egal (5>=5) = True

=
egal (5=5) = True

<>
ne egal (5<>5) = False

n expresiile Access se mai folosesc urmtorii operatorii relaionali: IS - operatorul relaional de comparare cu valoarea NULL. BETWEEN dat1 AND dat2 se folosete pentru a verifica apartenena unui rang n intervalul nchis [dat1, dat2]. LIKE - reprezint operatorul relaional de egalitate (=) care se aplic irurilor de caractere i care evalueaz caracterele generice (wildcard characters) din termenul din partea dreapta a sa.
II-67

Caracterele generice sunt utilizate pentru a genera o mulime de caractere. Caracterele generice folosite n expresiile Access precum i mulimile generate, sunt prezentate n tabelul urmtor: Caracterul generic ? * Mulimea generat
Un singur caracter

Exemplu
("a2B3a" Like "a?a") = False ("a2B3a" Like "a*a") = True ("a2a" Like "a#a") = True ("F" Like "[A-Z]") = True ("F" Like "[!A-Z]") = False

Mai multe caractere sau nici unul Un singur numr # (0-9) [List caractere] Un singur caracter din list Ex. [A-X] Un singur caracter [!List caractere] care nu este n list

Operatorii logici - au ca operanzi valori logice (True, False) i vor determina un rezultat tot logic. Tabelele de adevr al celor mai utilizai operatori logici sunt: Op. 1 True True False False Op. 1 True True False False Op. 2 True False True False Op. 2 True False True False

AND
True False False False

Op. 1 True True False False

Op. 2 True False True False Op.

OR
True True True False

XOR
False True True False
II-68

NOT
False True

True False

Mai exist dou funcii logice, mai puin folosite, i anume:

EQV - utilizat pentru verificarea echivalenei logice a dou expresii; IMP - utilizat pentru verificarea implicrii logice ntre dou expresii;

Operatorii sunt aezai n tabelele de mai sus, de la stnga la dreapta n ordinea prioritii lor n execuie (care este n general cea obinuit din matematic). Parantezele rotunde sunt folosite pentru stabilirea unei ordini explicite a prioritii n execuie a operaiilor.
n programare, n general nu este indicat utilizarea ordinii implicite a prioritii n execuie a operaiilor, ci folosirea pentru stabilirea acesteia a parantezelor.

Access corecteaz automat n anumite module (de exemplu n cereri) anumite greeli de scriere (de exemplu introduce automat ghilimele, operatorul IS sau paranteze drepte acolo unde consider c s-au omis). Din aceast cauz, este indicat s se verifice dup scrierea unei expresii i cum arat aceasta dup auto-corecie. n Access exist un constructor de expresii - Expression Builder32 (pictograma sa este afiat alturat) care poate fi lansat din ToolsBar sau meniul contextual, n orice moment n care este posibil introducerea unei expresii. El este util n special prin asistena oferit cnd se lucreaz cu funciile standard sau utilizator.

Expresiile Access sunt cel mai des utilizate n proprietile Validation Rule, n criteriile din cereri sau n cmpurile calculate. Standardul Windows utilizeaz dou metode pentru ghidarea utilizatorului n rezolvarea unei probleme mai deosebite: Wizard (vrjitor) care ghideaz utilizatorul prin mai multe pagini de configurare. Builder (constructor) care prezint utilizatorului pentru configurarea o singur pagin, pe care acesta o va completa, ajutat de obicei de un Help.
II-69

32

Cap.III Obiecte Access - Tabela


Tabela este obiectul de rang superior cel mai important al unei baze de date. n aceasta se pstreaz toate datele din entitile bazei de date. Proiectarea tabelelor (design) este activitatea care are rolul esenial n realizarea unei baze de date, celelalte obiecte fiind definite funcie de tabelele create. III.1 St rile unei tabele O tabel se poate afla n dou stri, ntre care poate balansa prin activarea comenzii specifice de pe ToolsBar. Acestea sunt: Proiectare (Design View) - n care se poate defini o tabel nou, sau modifica structura uneia deja create; Vizualizare (Datasheet View) - n care se pot afia sau actualiza (adugarea de nregistrri noi, tergeri de nregistrri sau modificarea valorilor din cmpuri) datele din tabel; III.2 Proiectarea tabelelor Pentru crearea sau modificarea unei tabele se folosete un formular (prezentat n figura alturat), care datorit facilitilor oferite face aceast aciune foarte simpl.
III-70

Definirea unei tabele se face prin precizarea a trei elemente: Numele tabelei care: se stabilete la crearea tabelei n urma unei ntrebri explicite adresate de ctre sistem; se modific din fereastra Database, prin metodele obinuite utilizate n Windows (ca de altfel orice nume a unui obiect din Database); Cmpurile i proprietile acestora. Proprietile tabelei. Modificarea structurii unei tabele n care au fost deja introduse date, poate duce la pierderea sau la deteriorarea caracteristicilor acestora, fiind o operaie a crei efectuare este indicat a fi precedat de realizarea unei copii a tabelei respective.

III.2.1 Cmpurile tabelei III.2.1.1 Numele cmpurilor Definirea unui cmp ncepe prin stabilirea numelui acestuia. Acesta se va introduce n coloana Field Name, aflat n partea superioar a formularului de proiectare a tabelelor. Regulile de constituire a numelui unei tabele (ca i a celorlalte nume de obiecte din Access), sunt cele obinuite folosite n Windows.

Numele obiectelor n Access (ca i n Windows) poate s conin spaii. Dei nu este obligatoriu, cnd se face referire la un obiect Access, numele acestuia se scrie ntre paranteze drepte. Totui, pentru numele de obiecte care conin spaii (sau alte caractere speciale), prezena parantezelor drepte este obligatorie. III.2.1.2 Tipurile de date ale cmpurilor n calculator, orice dat introdus ntr-un cmp se memoreaz ca o succesiune de bii. Tipul de date reprezint modul n care pentru o astfel de succesiune de bii se asociaz o valoare.
III-71

Tipul de date este o noiune, un concept, prin care se definesc pentru o dat, trei caracteristici, i anume: mulimea valorilor care pot fi luate; dimensiunea ocupat n memorie; operaiile ce se pot efectua; n Data Type, a doua coloan din partea de sus a formularului de proiectare a tabelelor, se introduce tipul de date al cmpului prin selecie acestuia dintr-o list ascuns de valori (list combo): Text ir de caractere, a crui lungime maxim poate fi de 255 de caractere; Memo tot ir de caractere, dar de o dimensiune nedeterminat; Number numere n diferite sisteme de codificare; Date/Time data i ora. n Access acest tip special de dat permite nmagazinarea ntr-o singur celul a tabelei att a datei calendaristice (An, Lun, Zi) ct i a timpului (Ora, Minutul, Secunda); Currency numr asociat la o anumit moned; Yes/No valoare boolean; AutoNumber numere generate automat (secvenial sau aleator); OLE Object definete o celul n care se pot memora obiecte (ncapsulate sau legate). De exemplu ntr-un asemenea cmp se pot introduce fotografiile unor cldiri pentru un catalog cu imobile.

Conveniile de reprezentare grafic a anumitor tipuri de date (de exemplu: semnul pentru separatorul zecimal sau de grupe la numere, simbolurile folosite n datele calendaristice sau la timp) funcie de specificul diferitelor ri, sunt preluate n aplicaiile Access din setrile existente n: Windows | Control Panel | Regional Settings.
III-72

Dei sunt asemntoare nu trebuie s se confunde tipurile de date ale cmpurilor din Access cu cele folosite n VBA.

n Access n momentul seleciei unei casete dintr-un formular de proiectare, poate aprea semnul unei liste ascunse - care este o sgeat - sau al unui vrjitor (wizard) - care este trei puncte.

III.2.1.3 Comentariul despre semnifica ia cmpurilor Acesta se introduce n Description, a treia coloan din partea de sus a formularului de proiectare a tabelelor. Dei nu este obligatorie, folosirea comentariilor este n general foarte util la creterea lizibilitii aplicaiilor. n cazul proiectrii prin wizard a formularelor, n controlul legat de cmpul respectiv, comentariul din zona Description este introdus automat n proprietatea Status Bar Text, ceea ce provoac afiarea acestuia pe bara de stare atunci cnd se acceseaz controlul.

III.2.1.4 Propriet ile cmpurilor Un cmp al unei tabele este la rndul su un obiect. Rolul lui n contextul bazei de date este stabilit de felul n care sunt fixate proprietile acestuia. Cea mai important proprietate a unui cmp este tipul de date, pe care lam prezentat anterior. Proprietile (atributele) unui cmp l vor nsoi oriunde va fi folosit, existnd totui posibilitate ca unele dintre acestea s fie modificate temporar (de exemplu prin intermediul unor controale folosite n formulare sau rapoarte aa cum se va prezenta n capitolele urmtoare). Dup ce s-a selecionat pentru un cmp un anumit tip de dat, funcie de acesta, se vor afia n partea de jos a formularului de proiectare a tabelelor i restul de proprieti (atribute) care pot fi stabilite pentru acel cmp. Setarea proprietilor cmpurilor este uurat prin utilizarea wizard-urilor i listelor ascunse. De asemenea n fereastra din
III-73

dreapta jos a formularului se vor afia informaii contextuale i de ghidare a operaiei de stabilire a proprietii respective. Felul proprietilor este specific fiecrui tip de date care se fixeaz pentru un cmp. Totui multe dintre proprieti sunt comune la cele mai utilizate tipuri de date (Text, Number, Date/Time, Currency, Yes/No). n continuare sunt prezentate cele mai utilizate proprieti: Caption Titlul afiat pentru un cmp. Acesta va fi folosit ca nume pentru coloana n care se afieaz datele introduse n acest cmp, n modulul de vizualizare a datelor (Datasheet). Deci, aceast proprietate este valabil numai la afiarea numelui cmpului (pentru orice referire a cmpului se poate utiliza numai numele efectiv al acestuia). Implicit, dac n proprietatea Caption nu se introduce nimic, n afiare se va folosi chiar numele cmpului. Default Value Introducerea unei date valide (din domeniul definit pentru cmp) n aceast caset, reprezint valoarea cu care se iniializeaz cmpul la crearea unei nregistrri noi. Dac n aceast proprietate nu se introduce nimic, cmpul va fi iniializat cu valoarea NULL. Validation Rule definete domeniul de valabilitate al valorilor care pot fi introduse ntr-un cmp. Este cel mai puternic instrument prin care se configureaz integritatea de domeniu. Prin aceast caset se introduce o condiie, care dac nu este adevrat, va produce dou aciuni, i anume: Afiarea unui mesaj (definit prin proprietatea Validation Text); Blocarea prsirii de ctre focus (obiectul unde se afl cursorul) a cmpului respectiv pn n momentul n care operatorul va introduce o dat care s determine ca respectiva condiie s fie adevrat; La construirea condiiei introduse n caseta Validation Rule, se vor utiliza specificaiile prezentate n capitolul II-6.
III-74

n principal se va ine seama de urmtoarele dou reguli, la formularea condiiei introduse n Validation Rule: Expresiile se creeaz avnd obligatoriu ca unul din termini valoarea introdus n cmpul respectiv. Numele acestui cmp se va omite, considerndu-se implicit; Dac nu se introduce nici un operator, acesta va fi implicit operatorul relaional de egalitate =; Aa cum s-a mai artat, dac cu data introdus n cmpul respectiv, evaluarea regulii de validare este fals, atunci valoarea respectiv este respins, ateptndu-se introducerea unei date corecte. Deci pentru ca o dat s fie acceptat ntr-un cmp al unei tabele, trebuie s: fie de tipul de dat al cmpului; respecte regula de validare; s se potriveasc cu masca (ablonul) de introducere (Input Mask); Aceste trei proprieti determin practic integritatea de domeniu al cmpului respectiv. Exemplu: < 50 - se accept valori de la 0 la 49 (cmpul este de tip byte) >=1 AND <=10 - se accept valori numerice de la 1 la 10; Between 100 AND 999 - accept un numr format din 3 cifre; "DA" OR "NU" - accept numai DA sau NU (cmpul este de tip text); operatorul relaional de egalitate este implicit; Validation Text stabilete un text care va fi afiat dac regula de validare nu este adevrat. Este indicat ca acest mesaj s fie foarte explicit i clar pentru a lmuri operatorul asupra erorii comise i a cmpului care a provocat-o. Indexed stabilete dac cmpului i se ataeaz sau nu, un tabel de indeci, lucru foarte important pentru parcurgerea ntr-un timp rezonabil a datelor din nregistrrile tabelei. Exist trei posibiliti la setarea acestei proprieti, i anume:
III-75

No; Yes, Duplications Ok; Yes, No Duplications evident, aa se seteaz un cmp cheie primar; Stabilirea indexrii sau neindexrii unui cmp se va face funcie de frecvena utilizrii cmpului respectiv n operaii de sortare sau selecie. Aceast proprietate i arat eficiena n special la tabele cu mii de nregistrri, unde se pot face economii de timp de execuie la nivelul orelor. Access este prevzut cu un mecanism foarte simplu i direct de efectuare chiar n timpul utilizrii (vizualizarea datelor din tabel) a sortrii, pe unul sau mai multe cmpuri. Acest sistem este activ n orice obiect unde este utilizat o tabel. El const din selecia sau poziionarea cursorului pe cmpului respectiv i lansarea acestei operaii din meniul contextual (clic dreapta), aa cum se vede i din figura prezentat alturat. Un mecanism identic cu cel prezentat anterior este folosit n Access i pentru efectuarea unor operaii simple de selecie, numite filtre. n meniul contextual afiat dup poziionarea pe o anumit valoare dintr-un cmp sunt disponibile 3 posibiliti de filtrare, i anume: Filter By Selection - prin care se selecioneaz toate nregistrrile care pentru cmpul respectiv au aceiai valoare cu cea n care este plasat cursorul; Filter Excluding Selection - prin care se selecioneaz toate nregistrrile care pentru cmpul respectiv au o valoare diferit de cea n care este plasat cursorul; Filter For - prin care se selecioneaz toate nregistrrile care pentru cmpul respectiv au aceiai valoare ca aceea introdus n caseta respectiv;
III-76

Operaiile de sortare sau filtrare efectuate pot fi anulate prin execuia comenzii Remove Filter/Sort. Din punctul de vedere al utilizatorului operaiile de sortare sau selecie (filtrare) se efectueaz la fel, indiferent dac respectivul cmp este sau nu indexat. Diferena va fi numai la nivelul intern n care Access va efectua operaiile respective, adic fizic (pentru cmpurile neindexate) sau logic (pentru cmpurile indexate). De asemenea rezultatul operaiei se va obine n cazul cmpurilor indexate de zeci de ori mai rapid dect n cazul neindexrii acestora. Required Stabilirea la Yes a acestei proprieti, duce la obligativitatea de a se introduce o dat valid n acest cmp. Deci pentru cmpurile, care nu sunt chei primare (unde evident este implicit, deoarece o cheie primar nu poate lua valoarea NULL), dar n care lipsa de date nu este permis pentru ca o nregistrare s aib sens, se va introduce aceast restricie. Prin aceast proprietate care face ca o nregistrare introdus ntr-o tabel s aib sens, s fie logic, se introduce o nou metod de realizare a integritii bazei de date. Exemplu: Fie tabela 'STUDENTI' n care vom studia prin prisma acestei proprieti dou cmpuri: Nume: evident, lipsa de date n acesta face nregistrarea ilogic. Proprietatea Required se va seta pe YES. Telefon: lipsa de date n acest cmp se poate datora chiar lipsei acestuia. Deci lipsa de date pentru acest cmp este normal, logic. Proprietatea Required se va seta pe deci pe NO. Format Reprezint felul n care vor fi afiate datele din cmp, respectndu-se un anumit ablon. Pentru anumite tipuri de date (Number, Date) se pot folosi abloanele standardizate din Windows | Control Panel | Regional Settings. Input Mask ablon (masc) folosit la introducerea datelor n cmpuri. Se poate crea cu un wizard (utilizarea acestuia trebuie menionat n mod special la instalarea mediului Access).
III-77

Prin aceast proprietate respingndu-se anumite caractere la introducere, se vor completa restriciile integritii de domeniu. Caracterele folosite la crearea abloanelor sunt: Caracterul
0

Funcia
Cifre, fr spaiu, fr + sau -

Observaii
Obligatoriu de introdus cursorul nu se oprete la sfritul cmpului. Opional de introdus cursorul se oprete n momentul n care s-au introdus date pe toat lungimea cmpului.

Cifre, spaiu, eventual cu + sau -

Ca mai sus, dar spaiile sunt editate ca blanc, dar salvate ca 0 Litere L Litere Litere sau cifre A Litere sau cifre a Orice caracter sau spaiu & Orice caracter sau spaiu C Utilizai ca separatori pentru . , : ; - / numere, sau la tipul date/time sau ca placeholder33 # ! Foreaz introducerea datelor de la dreapta la stnga

Obligatoriu de introdus Opional de introdus Obligatoriu de introdus Opional de introdus Obligatoriu de introdus Opional de introdus Vezi: Windows | Control Panel | Regional Settings

Caracterul introdus n ablon va \ char apare n caseta de introducere.

Field Size La tipul de date Text, reprezint lungimea cmpului.


33

Placeholder = caractere afiate iniial ntr-un cmp gol i care vor fi nlocuite treptat de datele introduse de ctre operator.
III-78

La tipurile de date numerice, precizeaz codificarea: Byte: ntreg, 8 bii, pozitiv (028-1); Integer: ntreg, 16 bii, pozitiv i negativ (-2828-1); Long Integer: 32 bii, pozitiv i negativ(-216..216-1); Single: real, simpl precizie (~7 cifre semnificative); Duble: real, dubl precizie (~14 cifre semnificative); Decimal Places este folosit numai la tipurile de date numerice i reprezint numrul de zecimale (opiunea Auto, va seta automat numrul de zecimale n funcie de data introdus n cmp). New Value proprietate existent numai la tipul de date AutoNumber, i care stabilete modalitatea de obinere automat a numerelor cmpului respectiv la crearea nregistrrilor noi, i anume: prin incrementare sau aleator. III.2.2 Lookup - legarea unui cmp de o surs de date ntr-un cmp (de tip Number sau Text) al unei tabele exist posibilitatea aducerii directe a datelor prin selectarea acestora dintro list i nu prin introducere caracter cu caracter de la tastatur. Lista de pe care se selecioneaz datele poate fi afiat prin dou tipuri de controale, i anume: ComboBox (list ascuns) - lista este vizibil numai atunci cnd se acceseaz cmpul i se apas butonul din dreapta casetei de date; ListBox (list derulat) - lista este tot timpul vizibil34; Deci introducerea datelor ntr-un cmp (care este ntr-o caset de tip ComboBox sau ListBox), se va efectua ori prin introducerea pe rnd a caracterelor ori prin selecionarea datei dorite dintr-o list (se face clic pe informaia respectiv).
34

n modulul de vizualizare Datasheet (prin care se acceseaz datele din tabele i care va fi prezentat tot n acest capitol), controlul ListBox este practic la fel cu controlul ComboBox, adic i lista acestuia este ascuns. Diferenele dintre cele dou controale se manifest numai la utilizarea acestora n formulare.
III-79

La proiectarea tabelelor, se poate ca unui cmp care conine date de tip Number sau Text, prin pagina Lookup a formularului de setare a proprietilor, s i se specifice forma casetei de afiare, i anume: TextBox (implicit) ComboBox sau ListBox. Acest lucru se face prin setarea corespunztoare a proprietii Display Control din pagina Lookup a cmpului respectiv. Tabela n vizualizare Tabela n proiectare

Celelalte proprieti care se afl n pagina Lookup definesc caracteristicile pentru casetele cu list (ComboBox sau ListBox). Astfel: Row Source Type stabilete tipul (felul) sursei de date. Datele care sunt afiate n lista de selecie pot proveni din trei surse, i anume: Table/Query - Lista de selecie va conine datele dintrun cmp (sau cmpuri) al unei alte tabele sau cereri. Aceasta este sursa de date cea mai utilizat. Value List - Lista de selecie va fi format dintr-o list fix de valori, introdus de operator la proiectarea casetei. Field List - Lista de selecie va conine numele cmpurilor unei alte tabele sau cereri
III-80

Row Source precizeaz sursa de date. Pentru aceasta exist dou posibiliti, i anume: Numele tabelei /cererii ce este folosit ca surs de date (acesta se va selecta dintr-o list ascuns, care va conine numele tuturor tabelelor i cererilor din baza de date); Valorile unei liste, separate prin caracterul <;> (aceast form este valabil numai pentru tipul de surs Value List); Bound Column Numrul (ncepnd de la 1) de ordine al cmpului din tabela /cererea surs, cu ale crui date se va completa coloana din lista de selecie, de la care se vor importa datele n cmpul curent al tabelei (destinaia). Column Count Numerele de ordine (ncepnd tot de la 1 i separate prin caracterul <;>) ale cmpurilor din tabela /cererea surs, care se vor afia n lista de selecie (). Deci, pe lng cmpul din care se va crea coloana din lista de selecie din care se vor importa direct datele (cmpul legat) i care de obicei trebuie s fie primul (Bound Column = 1), este uneori necesar afiarea i a altor cmpuri (stabilite prin Column Count) pentru a permite transmiterea tuturor informaiilor necesare operatorului n vederea efecturii unei selecii corecte. De exemplu, dac se dorete importarea dintr-o tabel a datelor unui cmp care conine un cod, este necesar afiarea n lista de selecie att a codului ct i a denumirii explicite a ceea ce este codificat. Column Head specific dac se vor afia i denumirile cmpurilor Column Widths i List Widths specific limea coloanelor i respectiv a ntregii liste n unitatea de msur setat n Windows | Control Panel | Regional Settings (se folosete acelai separator, adic <;>). List Row specific numrul de linii care se afieaz, concomitent, restul liniilor fiind accesate prin bare de derulare vertical.
III-81

Limit to List setat pe Yes blocheaz introducerea de date din afara celor din list. Totui, exist o metod care nu va fi prezentat ns n aceast carte, deoarece necesit cunoaterea limbajului de programare VBA prin care dac se dorete introducerea unei valori noi n lista de selecie, se va permite mai nti introducerea acesteia n tabela surs (mpreun cu toate datele necesare), dup care, evident, se va putea seleciona. n Access, unui cmp i se poate ataa o caset cu list de selecie i i se seta caracteristicile i printr-o alt metod, asistat, Wizard Lookup, care se poate lansa din lista tipurilor cmpurilor (vezi prima figur din acest capitol).

III.2.3 Cheia primar (principal ) Dei nu este obligatoriu, este indicat ca la proiectarea unei tabele s se declarare o cheie primar (Primary Key). Motivul pentru care este de dorit ca o tabel s aib cheie primar se refer la faptul c n acest fel, tabela va avea garantat integritatea existenial, adic a identificrii i a unicitii entitilor (nregistrrilor) sale. Stabilirea cheii primare i configurarea cu atenie a proprietilor cmpurilor tabelelor, prin care se introduc restriciile de integritate existenial i de domeniu, sunt cele mai simple i puternice metode pentru crearea unei baze de date relaionale n care coerena logic a datelor din tabele - deci la nivel bidimensional - este pstrat. Exist mai multe metode de stabilire a cheii primare. Cea mai simpl dintre acestea este poziionarea mouseului pe cmpul care va fi declarat cheie primar, afiarea meniului contextual35 i selecia din acesta a rndului Primary Key .
35

Meniul contextual al unui obiect, n care se gsesc afiate cele mai plauzibile aciuni pe care le poate efectua acesta, apare dac se face clic dreapta pe el.
III-82

Aa cum se observ din figur, cmpul setat ca cheie primar va fi evideniat prin o pictogram specific, care reprezint o cheie.

Exist posibilitatea de a declara o reuniune de cmpuri ca cheie primar, prin selecia prealabil a mai multor cmpuri, nainte de lansarea meniului contextual.

III.2.4 Propriet ile tabelei. Proprietile tabelei se introduc n faza de proiectare printr-un formular ce apare la acionarea pictogramei specifice pentru proprieti de pe ToolsBar (o mn ce arat un tabel) sau prin selecie din meniul contextual. Aceste proprieti, se refer la setri ce se refer la comportamentul tabelei n ansamblu. Cea mai utilizat proprietate a tabelei este: Validation Rule prin care se introduce o condiie a crei evaluare se face n momentul cnd se termin de introdus (modificat) datele dintr-o nregistrare i se trece la alta. Prin aceast proprietate se introduce o regul de validare care se poate referi la dependenele funcionale dintre cmpuri - datele dintr-un cmp (sau din mai multe cmpuri) determin anumite valori posibile pentru datele altui cmp (sau a mai multe cmpuri) ea completnd n acest fel configurarea integritii de domeniu. Dac evaluarea condiiei nu este adevrat, se vor produce dou aciuni (ca i la proprietatea similar de la cmpuri): Afiarea mesajului introdus n Validation Text; Blocarea ieirii din nregistrare pn cnd evaluarea condiiei va fi adevrat;
III-83

Observaie-1 Aceast facilitate se folosete pentru a se verifica corelaiile (dependenele funcionale) dintre datele introduse n mai multe cmpuri, deoarece evaluarea se va face dup ce se termin introducerea datelor n toate cmpurile nregistrrii. n exemplu se verific ca data din cmpul Output s fie mai mic dect data din cmpul Stoc. Observaie-2 Pentru a se referiri un cmp acesta trebuie scris obligatoriu ntre paranteze drepte.

Dei proprietile tabelei i a cmpurilor acesteia, pot fi setate i prin formulare, totui este bine ca aceast activitate s fie efectuat la proiectarea tabelei i nu a formularelor. Acest lucru devine evident dac ne gndim c aceiai tabel poate fi folosit de mai multe formulare.

III.3 Vizualizare (Datasheet) tabelelor Datasheet este un modul care este folosite pentru vizualizarea datelor din tabele ca i din alte obiecte din Access bazate pe tabele: cereri sau formulare.

Datasheet este o interfa utilizator simpl i deosebit de performant, bazat aproape exclusiv pe lucrul cu mouseul, care permite faciliti deosebite privind personalizarea structurii de afiare. Astfel: Datasheet are implementate toate facilitile Windows privind lucrul cu ferestre (redimimensionri, poziionri, copieri sau mutri de obiecte, etc.)
III-84

n partea de jos a ferestrei Datasheet, se gsete un control prin care se pot efectua deplasri prin nregistrrile afiate, asemntor cu tastele de comand a unui aparat recorder. n principiu, o operaie n Datasheet se efectueaz conform standardelor Windows, adic printr-o selecie, urmat fie de o aciune direct efectuat cu mouseul (prin tragere), fie prin alegerea comenzii dorite din meniul contextual (clic dreapta pe obiect). Prezentm n continuare cele mai frecvente operaii care se pot efectua n Datasheet: Selecia unei nregistrri: clic pe marcajul din dreptul nregistrrii; Selecia unui cmp: clic pe numele cmpului; Selecia multipl: clic urmat de parcurgerea cu mouseul apsat a zonei respective (sau selecii multiple cu tasta Shift apsat); tergerea unei nregistrri: selecie + meniu contextual + Delete; Mutarea unei coloane: selecie + 'tragere' pe noua poziie; Modificarea limii unei coloane: poziionare pe linia de demarcare dintre numele coloanelor + tragere; Sortare sau filtrare: selecia unei celule + meniu contextual + comand; Cutarea sau nlocuirea unor date: ca n standardul Windows prin comenzile Find i Replace; Formatul de prezentare a ferestrelor Datasheet Exist posibilitatea setrii anumitor proprieti, referitoare la felul n care sunt vizualizate datele prin ferestrele Datasheet ale unei aplicaii Access. Cele mai importante sunt: Culoarea fontei i a fundalului casetelor de afiare; Setarea fontei, a mrimii i a caracteristicilor ei; Aceste proprieti se seteaz prin: Tools | Options | Datasheet. Rolul ferestrelor Datasheet, este acela de a oferi proiectanilor de aplicaii un modul prin care s i testeze obiectele create. Pentru

III-85

introducerea i afiarea datelor dintr-o baz de date, se construiesc obiecte specializate pentru aceste operaii (formulare sau rapoarte). III.4 Structura colec iei de obiecte TableDefs Structura unui tabel se gsete n obiectul numit TableDef. Colecia tuturor tabelelor (ca structur) unei baze de date se numete TableDefs, se gsete n DAO, are pe Database ca obiect superior i este constituit din obiecte de tip TableDef (cte unul pentru fiecare tabel). Ea formeaz urmtoarea arhitectur ierarhic:
Fields

Cmpul 1 Cmpul 2 etc

Tabla 1
TableDefs

Tabla 2 Legend

Indexes

Primary Key etc


Fields

etc = colecie de obiecte = obiect

Cmpul 1

Datele din tabelele (de altfel ca i din cererile) bazei de date se vor gsi n colecia Recordsets, care aparine tot lui DAO i are pe Database ca obiect superior. Ea este constituit din obiecte Recordset.

III-86

Cap.IV Obiecte Access - Rela ia


IV.1 Domeniul de valabilitate al rela iilor Relaia reprezint al doilea obiect, care definete structura (schema) unei baze de date (cellalt obiect este aa cum s-a artat, tabela). Utilizarea relaiilor permit accesarea mai multor tabele n acelai timp. Aa cum s-a mai artat o relaie se realizeaz ntre dou cmpuri care se gsesc n tabele36 diferite. Pentru ca o relaie s fie coerent este necesar ca n cele dou tabele, cmpurile ntre care se stabilete relaia, s se refere la aceleai date (evident, ele trebuiesc s fie i de acelai tip). Din aceast cauz se spune c o relaie este creat printr-un cmp comun care se gsete n ambele tabele. Rolul unei relaii n Access, se refer la dou aspecte, i anume: Actualizarea tabelelor la care particip relaia; Extragerea de informaii din tabelele la care particip relaia; n Access se pot crea i folosi, funcie de domeniul lor de valabilitate (vizibilitate), dou tipuri de relaii, i anume: permanente i temporare. Diferena dintre aceste dou tipuri de relaii este condiionat i de operaia (actualizare sau extragere) la care acestea particip. IV.1.1 Rela iile permanente Relaiile permanente, sunt valabile n toate obiectele din baza de date care le folosesc (cereri, formulare, rapoarte). Ele se vor ataa definitiv la tabele (sau cererile) ntre care se creeaz. Oriunde se vor folosi aceste obiecte, ele vor fi legate prin relaiile permanente create.
36

O relaie se poate crea i ntre dou cmpuri ale unor cereri de selecie diferite, deoarece acestea sunt considerate de obicei n Access, tot ca nite tabele, dar virtuale).
IV-87

Dac o relaie permanent37, este definitiv i nemodificabil n ceea ce privete structura bazei de date (utilizat n operaia de actualizare a bazei de date), totui, referitor la extragerea de informaii din baza de date, prin cereri, ea poate fi modificat prin crearea relaiilor temporare. Unei relaii permanente i se poate seta proprietatea de integritate referenial, care joac un rol major asupra structurii bazei de date. Metoda prin care se creeaz sau modific relaiile permanente, este implementat printr-un formular de proiectare numit Relationships. Acesta se poate lansa n mai multe feluri: prin meniul Tools (figura alturat); acionnd pictograma specific relaiilor, direct de pe ToolsBar; din meniul contextual, lansat din fereastra Database. O tabel sau o cerere care particip la o relaie nu va mai putea fi tears dect dac n prealabil sunt eliminate toate relaiile la care aceasta particip.

IV.1.2 Rela iile temporare. Relaiile temporare sunt create de obicei n cereri, fiind valabile numai n obiectul n care au fost definite. Ele se folosesc numai n operaiile de extragere a informaiilor din baza de date. Prin relaiile temporare nu se poate introduce proprietatea de integritate referenial. Din aceast cauz ele nu au nici un rol n ceea ce privete structura bazei de date (i anume la operaia de actualizare a bazei de date). Crearea relaiilor temporare se face n etapele de proiectare a unei cereri, utilizndu-se o tehnologie asemntoare (prezentat n capitolul Cereri) cu aceea folosit la crearea relaiilor permanente.
37

n acest capitol se prezint n special relaiile permanente.


IV-88

O relaie temporar poate nlocui ntr-o cerere o relaie permanent, dar numai atunci cnd se refer la operaia de extragere a informaiilor din baza de date. Acest lucru se face prin setarea n mod diferit a proprietii Join Type, specific acestei operaii.

IV.2 Crearea rela iilor permanente . Aa cum s-a artat, modulul prin care se definesc relaiile permanente dintr-o baz de date este Relationships (prezentat n figura de mai jos). Ca i la definirea tabelelor, tehnologia folosit respect standardele Windows. Practic definirea relaiilor se face prin aciuni de selecie din liste i prin tragere sau setare, fcute numai cu ajutorul mouseului. Sistemele de dirijare n aceast aciune sunt performante, toate acestea ducnd la o interfa de proiectare simpl i eficient. Aa cum se va arta, tot cu modulul Relationships se vor putea defini i relaii multiple ntre dou tabele (cereri), adic relaii care se stabilesc ntre mai multe cmpuri (nu numai ntre dou).

Exist mai multe etape n crearea relaiilor, i anume: Dup apariia ferestrei Relationships, din meniul contextual al acesteia, se lanseaz formularul Show Table. Prin intermediul
IV-89

acestuia se vor seleciona pentru a fi trimise n fereastra Relationships, tabelele i cererile pentru care se vor realiza relaii. n tabele, cmpurile care apar ngroate sunt chei primare. n continuare, prin tragerea (drag and drop) cmpurilor ntre tabelele (cererile) aflate n fereastra de proiectare Relationships, se construiesc relaiile dorite. Se poziioneaz mouseul pe o relaie i prin clic dreapta, se lanseaz meniul contextual al acesteia, prin care se poate terge sau edita respectiva relaie. Editarea relaiei se face n formularul Edit Relationship. Prin aceast operaie se vor seta proprietile relaiei permanente. IV.3 Propriet ile rela iilor IV.3.1 Tipul rela iei Tipul unei relaii definete felul n care se va face asocierea nregistrrilor ce provin de la cele dou tabele sau cereri, i anume: se stabilesc numrul posibil de nregistrri pe care fiecare dintre aceste tabele (sau cereri) l furnizeaz n realizarea relaiei. El este determinat automat funcie de proprietile cmpurilor care particip la relaie, fiind afiat n partea de jos a ferestrei ca n figura de mai sus. Astfel dac: un cmp este cheie primar sau are proprietatea de indexare setat pe No Duplication, relaia va fi n acel capt: One; un cmp are proprietatea de indexare setat pe No sau pe Duplication OK, atunci relaia n acel loc va fi: Many.
IV-90

n ambele capete relaia are proprietatea de indexare setat pe No sau Duplication OK, atunci relaia va fi: nedeterminat (many to many). IV.3.2 Integritatea referen ial Integritatea referenial are efect deosebit n ceea ce privete pstrarea corelaiilor logice care se stabilesc ntre cmpurile unei relaii. Ea este o proprietate, valabil numai pentru relaiile permanente. Pentru setarea proprietii de integritatea referenial se va bifa caseta de validare Enforce Referential Integrity, din formularul de editare, Edit Relationship. Reamintim c dac o relaie ntre dou tabele are setat proprietatea de integritate referenial, atunci nu pot exista n tabela copil pentru cmpul de relaie, valori care s nu se gseasc n cmpul corespunztor din tabela printe. Dac relaia este de tip one to many, ntotdeauna tabela printe va fi n partea one a relaiei.

Dac relaia este de tip one to one, oricare dintre tabele poate fi printe; aceasta va fi aceea de la care se pornete 'tragerea' i care n formularul de editare se va gsi afiat n partea din stnga. Dac relaia este de tip many to many (nedeterminat), atunci proprietatea de integritate referenial nu se poate seta. Dac o relaie are setat proprietatea de integritate referenial, atunci se pot selecta (bifa) dou opiuni specifice, care vor permite ca aciunea de actualizare a unui cmp sau de tergere a unei nregistrri din tabela printe s se propage i n tabelele copil legate de aceasta, n acest fel pstrndu-se coerena datelor din tabelele respective (adic s nu existe o 'nregistrare copil' care s nu aib o 'nregistrare printe' corespunztoare). Aceste opiuni sunt:

IV-91

Cascade Update Related Fields - actualizarea n cascad a cmpurilor din relaie; n cazul setrii acestei opiuni, dac se modific valoarea cmpului de legtur din tabela printe, atunci aceast modificare se va efectua automat (se va propaga) i n cmpul corespunztor din tabela copil. n felul acesta, restricia de integritatea referenial este pstrat pentru acea relaie. Cascade Delete Related Records - tergerea n cascad a nregistrrilor din relaie; n cazul setrii acestei opiuni, tergerea unei nregistrri din tabela printe, va duce la tergerea automat din tabela copil a tuturor nregistrrilor care vor avea n cmpul de relaie aceiai valoare cu aceea din nregistrarea care a fost tears. n felul acesta, restricia de integritatea referenial este pstrat i n aceste condiii pentru respectiva relaie. Deci, dac relaiei care are setat proprietatea de integritatea referenial, i se activeaz cele dou opiuni, atunci actualizrile efectuate n tabela printe care ar fi trebuit s fie refuzate pentru c ar fi produs n tabelele copil 'stricarea' restriciei de integritate referenial, vor fi acceptate i efectuate, dar, n acelai timp, automat, se vor face i actualizrile necesare n tabelele copil, pentru ca restricia de integritate referenial de care discutm s se menin, adic s nu existe un copil care s nu aib prini n tabelele din ierarhiile superioare. Exemplu: n tabelele care vor fi prezentate n continuare este creat o relaie de tip one to many, ntre cmpurile 'CNP' din tabelele 'STUDENTI' i 'INSCRISI'. n funcie de activarea sau nu a integritii refereniale i de setarea sau nu a celor dou opiuni, operaiile permise i n acest caz modificrile care se propag sunt: Cazul 1. Integritatea referenial nu este setat; Sunt permise orice modificri de cmpuri sau tergeri de nregistrri n ambele tabele.
IV-92

Se observ c dac de exemplu se terge nregistrarea 1 din 'STUDENTI' atunci nregistrrile 1 i 2 din 'INSCRISI' rmn fr informaiile de nivel superior (fr prini). Cazul 2. Integritatea referenial este setat, dar nu i tergerea i actualizarea n cascad; Tabela 'STUDENTI' 1 one to many 1 Tabela 'INSCRISI' CNP-cod Cod Tip CNP-cod Nume Prenume student spec. nv. student
1-Enescu Anca-Cristina 2-84,01,09 2-Marincea Ana-Maria 3-Calot 4-Groanu 5-Voicu 6-Caciuc Ana-Maria Romic 2-84,10,06 2-83,08,10 1-75,12,17 Marius-Alin 1-85,04,11 Alin-tefan 1-84,09,13 1) 2-84,01,09.. 2) 2-84,01,09.. 3) 2-84,10,06.. 4) 2-84,10,06.. 5) 2-83,08,10.. 6) 1-84,09,13.. 7) 1-75,12,17.. 8) 1-75,12,17.. 9) 1-75,12,17.. 002 003 002 003 003 003 001 002 003 Tax Fr Tax Fr Tax Fr Fr Tax Tax

Se terge nregistrarea 1 din 'STUDENTI' - operaie neacceptat; Se terge nregistrarea 3 din 'STUDENTI' - operaie acceptat; Se modific CNP din nregistrarea 1 din 'STUDENTI' cu valoarea 22 - operaie neacceptat; Se modific CNP din nregistrarea 3 din 'STUDENTI' cu valoarea 22 - operaie acceptat; Se terge nregistrarea 1 din 'INSCRISI'- operaia este acceptat; Se modific CNP din nregistrarea 1 din 'INSCRISI' cu valoarea 22 - operaie neacceptat;

Cazul 3. Integritatea referenial este setat, precum i tergerea i actualizarea n cascad; Se terge nregistrarea 1 din 'STUDENTI' - operaie acceptat, dar se vor terge automat i nregistrrile 1 i 2 din 'INSCRISI';
IV-93

Se terge nregistrarea 3 din 'STUDENTI' - operaie acceptat; Se modific CNP din nregistrarea 1 din 'STUDENTI' cu valoarea 22 - operaie acceptat, dar se vor modifica automat i n nregistrrile 1 i 2 din 'INSCRISI', CNP cu 22; Se modific CNP din nregistrarea 3 din 'STUDENTI' cu valoarea 22 - operaie acceptat; Se terge nregistrarea 1 din 'INSCRISI'- operaie acceptat; Se modific CNP din nregistrarea 5 din 'INSCRISI' cu valoarea 22 - operaie neacceptat;

IV.3.3 Tipul de leg tur al unei rela ii - Join Type Tipul legturii (asocierii) unei relaii (Join Type), reprezint o proprietate a relaiei care are efect n ceea ce privete extragerea de date corelate din tabelele care particip la acea relaie. Problema pe care o rezolv aceast proprietate este urmtoarea: dac n unul din tabele, exist nregistrri pentru care cmpul de relaie conine valori care nu se regsesc n cmpul corespondent din cealalt tabel, care vor fi nregistrrile care vor fi seleciona din ambele tabele? Tipul legturii este o proprietate care este valabil att pentru relaiile permanente ct i pentru cele temporare (din cereri). Este o proprietate care are un rol hotrtor n execuia cererilor care folosesc la intrare mai multe tabele legate prin relaii. Setarea tipului de legtur al relaiei se face prin acionarea din formularul de editare a relaiei a butonului de comand Join Type, care va duce la apariia formularului de proiectare Join Properties, prezentat n figura de mai sus.
IV-94

n cazul relaiilor temporare, fereastra Join Properties, apare direct n momentul n care se editeaz relaia. Funcie de nregistrrile care sunt selectate din cele dou tabele (cereri) care intr n relaie exist dou tipuri de legturi: Inner Join n acest tip de legtur vor fi selecionate numai acele nregistrri care au cmpul de legtur egal n ambele tabele. Deci, n acest tip de legtur, vor fi selecionate dintr-o tabel, numai acele nregistrri, care n cmpul de legtur, conin valori care se regsesc i n cmpul corespondent al celeilalte tabele cu care este n relaie. Evident, aceast regul va fi valabil pentru ambele tabele ce se afl n relaie. Outer Join n acest tip de legtur vor fi selecionate toate nregistrrile unei tabele, iar din cealalt numai acele nregistrri care au cmpul de legtur egal n ambele tabele. Funcie de tabela care intr cu toate nregistrrile sunt: Left Outer Join (stnga) sau Right Outer Join (dreapta) Exemplu: Fie dou tabele 'STUDENTI' i 'INSCRISI', legate printr-o relaie de tip one to many ntre cmpurile 'CNP' i care nu are setat integritatea referenial (figura de mai jos).

Tabela 'STUDENTI' Nume


1-Enescu 2-Marincea 3-Calot 4-Groanu 5-Voicu 6-Caciuc

Prenume
Anca-Cristina Ana-Maria Marius-Alin Ana-Maria Alin-tefan Romic

1 one to many 1 Tabela 'INSCRISI' CNP-cod CNP-cod Cod Tip spec. nv. student student
2-84,01,09 2-84,10,06 1-85,04,11 2-83,08,10 1-84,09,13 1-75,12,17 IV-95 1) 2-84,01,09.. 2) 2-84,01,09.. 3) 2-84,10,06.. 4) 2-81,11,11.. 5) 2-83,08,10.. 6) 1-84,09,13.. 002 003 002 003 003 003 Tax Fr Tax Fr Tax Fr

Funcie de tipul legturii, selecia nregistrrilor va fi:

Cazul 1. Tipul de legtur a relaiei este Inner Join; Din tabela 'STUDENTI' - nregistrrile: 1; 2; 4; 5 Din tabela 'INSCRISI' - nregistrrile: 1; 2; 3; 5; 6

Cazul 2. Tipul de legtur a relaiei este Left Outer Join; Din tabela 'STUDENTI' - toate nregistrrile: 1; 2; 3; 4; 5; 6 Din tabela 'INSCRISI' - nregistrrile: 1; 2; 3; 5; 6 Cazul 3. Tipul de legtur a relaiei este Right Outer Join; Din tabela 'STUDENTI' - nregistrrile: 1; 2; 4; 5 Din tabela 'INSCRISI' - toate nregistrrile: 1; 2; 3; 4; 5; 6 IV.3.4 Rela ia intrinsec (n aceia i tabel ) - Self Join Pentru realizarea acestui tip de relaii, se va introduce prin Show Table, respectiva tabel de dou ori (sau de mai multe ori) i se va proceda n continuare ca la crearea relaiilor dintre dou tabele (care reprezint practic aceiai tabel). Aceste relaii sunt n general folosite pentru realizarea unor structuri arborescente, ca n exemplul de mai jos. Relaia ntre dou cmpuri ale aceleiai tabele

Tabela

Selecia efectuat pentru o legtur de tip Inner Join a relaiei create.

IV-96

Dac se introduce de mai multe ori prin Show Table, respectiva tabel, se pot crea mai multe nivele de ascenden (n exemplul de mai sus, este un singur nivel de ascenden).

IV.4 Crearea rela iilor multiple ntre dou tabele se pot crea relaii multiple, adic relaii ntre mai multe cmpuri din cele dou tabele. Practic, n acest caz 'cmpul comun' care st la baza relaiilor este format din reuniunea mai multor cmpuri. Metoda folosit pentru a crea relaii multiple const n realizarea la nceput a unei relaii obinuite ntre dou cmpuri, dup care, n modulul de editare al acesteia se vor selecta n cele dou casete din partea superioar, cmpurile din tabelele ntre care se vor stabili i celelalte relaii.

O relaie multipl accept o singur setare a proprietii tipului de legtur.

IV.5 Structura colec iei de obiecte Relations Structura fiecrei relaii permanente dintr-o baz de date, se gsete ntr-un obiect numit Relation. Colecia tuturor relaiilor permanente se numete Relations, se gsete n DAO, are pe Database ca obiect superior i este constituit din obiecte de tip Relation (cte unul pentru fiecare relaie). Ea formeaz urmtoarea arhitectur ierarhic:
TStudenti tInscrisi Relations TStudenti tNota Fields Fields

CodStudent CodStudent

etc Legend = colecie de obiecte = obiect


IV-97

Cap.V Obiecte Access - Cererea


n Access, este utilizat ca limbaj de programare relaional (de definiie i de manipulare), limbajul formal, neprocedural SQL (Structured Query Language). Ca orice limbaj de programare relaional i SQL se bazeaz pe operaiile de algebr relaional pe mulimi.

V.1 Prezentarea general a unei cereri Cererile reprezint obiectul Access de rang superior, n care se gsesc programele de prelucrare a bazei de date, scrise n limbajul SQL38. n limbajul de programare SQL, o prelucrare nu este definit procedural (printr-un algoritm care precizeaz operaiile de efectuat i ordinea de execuie a lor), ci neprocedural, adic printr-o serie de fraze (instruciuni SQL), formate din comenzi, clauze, opiuni i operaii, prin care se descrie aciunea care va fi executat. Exemplu: O cerere prin care se execut operaia de proiecie a dou cmpuri (C1 i C2) din tabela Tab1, va arta astfel: SELECT Tab1.C1, Tab1.C2 FROM Tab1; O cerere este un obiect, care reprezentnd un program va avea de obicei urmtoarele 3 module: modulul de intrare al cererii; modulul de prelucrare al cererii; modulul de ieire al cererii a crui existen este determinat de natura modulului de prelucrare;
38

Aa cum se va arta n continuare, crearea unei cereri nu necesit neaprat cunoaterea limbajului SQL (n afar de 4 tipuri de cereri care au ns o frecven de utilizare foarte mic), deoarece n Access realizarea unei cereri se poate face i printr-o alt metod, QBE (Query By Example), n care prelucrrile ce urmeaz a fi efectuate prin cererea respectiv sunt definite grafic.
V-98

Intrarea unei cereri, adic obiectele asupra crora se vor efectua prelucrrile definite n cerere, poate fi constituit din una sau mai multe tabele39 corelate prin relaii. Acestea vor constitui subschema utilizat de ctre cerere. V.1.1 Rolul cererilor Rolul unei cereri depinde de prelucrrile pe care le execut. Din acest punct de vedere se pot deosebi dou tipuri mari de prelucrri, i anume: Prelucrri care selecteaz (extrag) date din baza de date. Cererile care efectueaz astfel de prelucrri se numesc cereri de selecie (Select Query) i vor avea o ieire format dintr-o mulime de date organizate din punct de vedere structural ca o tabel. Din aceast cauz, se consider c ieirea unei cereri de selecie este o tabel virtual (care va exista numai temporar n memoria de lucru). n Access, aceasta va putea nlocui, n cele mai multe cazuri, o tabel real. Prelucrri care modific baza de date. n funcie de ceea ce se modific, acestea pot fi la rndul lor de dou feluri, i anume: Prelucrri care acioneaz asupra datelor din baza de date. Cererile care efectueaz astfel de prelucrri se numesc cereri aciune (Action Query). Ele pot permite: actualizarea datelor din tabelele bazei de date (modificarea datelor din cmpuri, adugarea sau tergerea de nregistrri), ori

39

n Access, n orice obiect care folosete n intrare tabele (deci i n cereri), o tabel poate fi nlocuit de ieirea unei cereri de selecie. Din aceast cauz, pentru o exprimare mai clar, nu se va explicita ntotdeauna aceast posibilitate. .
V-99

memorarea datelor (ntr-o tabel de obicei provizorie) de la ieirea unei cereri de selecie (practic se creeaz o tabel real dintr-o tabel virtual); Prelucrri care acioneaz asupra structurii (schemei) bazei de date. Cererile care efectueaz astfel de prelucrri se numesc cereri de definiii de date (Data-definition Query). Ele pot permite: Crearea unor tabele; Modificarea unor tabele; Crearea de indeci; tergerea unor indeci sau tabele; V.1.2 Cereri permanente i temporare 40 n Access se pot utiliza dou tipuri de cereri, n funcie de posibilitatea ca ele s fie sau nu salvate ca obiecte permanente n baza de date. Cererile care nu se salveaz, sunt instruciuni SQL, al cror enun este scris direct n anumite module i care sunt executate numai atunci cnd modulul respectiv devine activ. Ele sunt cereri temporare, care exist numai n memoria de lucru Access i care vor fi terse automat la terminarea modulului n care se gsesc introduse. Cererile care se salveaz n baza de date se gsesc n fereastra Database, pagina Queries. Ele sunt cereri permanente, care prin utilizarea numelui lor se pot introduce oriunde este permis. Crearea sau modificarea unei cereri permanente se face prin acionarea butoanelor NEW sau DESIGN, din pagina Queries a ferestrei Database. Este indicat a se folosi ntotdeauna cnd este posibil cererile permanente. Acest lucru se datoreaz faptului c Access dispune de

40

n aceast lucrare se vor prezenta n special cererile permanente.


V-100

un instrument performant de optimizarea a execuiei cererilor, ale crui rezultate sunt memorate dup execuia acesteia i aplicate la urmtoarea utilizare a cererii respective. Aceast facilitate duce la reducerea simitoare a timpul de execuie a unei cereri n condiiile utilizrii ei cu datele reale ale aplicaiei. V.1.3 St rile unei cereri permanente O cerere permanent se poate afla n una din urmtoarele trei stri41: Proiectare (Design View) - n care se pune la dispoziie un instrument grafic, de creare sau modificare a unei cereri, sub forma unui formular ce trebuie completat / modificat. Metoda utilizat pentru aceast activitate se numete QBE (Query By Example) i va fi prezentat n continuare. Vizualizare (Datasheet View) - care permite afiarea datelor extrase dup execuia prelucrrilor definite n cerere, cu ajutorul obiectului Datasheet (prezentat anterior la capitolul despre tabele). SQL42 (SQL View) - n care o cerere este prezentat n starea ei real, adic sub forma unui program scris n limbajul de programare SQL. n aceast stare se permite scrierea sau modificarea unei cereri direct n SQL. Trecerea de la o stare la alta se poate face oricnd prin acionarea pictogramei specifice de pe ToolsBar (ca n figura alturat) sau din meniul contextual.
41

42

Dei cererea este un program format numai din instruciuni SQL totui ea poate fi prezentat n dou formate, i anume: formatul SQL - prin SQL View; formatul QBE - prin Design View (exist 4 excepii); n capitolul V-5 se face o prezentare succint a ctorva instruciuni scrise n "Limbajul Access SQL".
V-101

Crearea unei cereri n Design urmat de trecerea strii ei n SQL View, reprezint o modalitate practic i comod de a obine "programul scris n SQL" (format din una sau mai multe instruciuni SQL), chiar n condiiile n care nu se cunoate limbajul SQL. Instruciunile SQL, astfel obinute, se pot apoi copia (prin Copy sau ^C) i dup aceea depune (prin Paste sau ^V) oriunde este acceptat ntr-o expresie o cerere (de exemplu n acele proprieti ale obiectelor care solicit o tabel /cerere, sau direct n codul VBA).

Dei mai puin folosit se poate utiliza i metoda invers: adic a scrierii (sau modificrii) cererii direct n SQL, dup care prin trecerea ei n Design, se poate uor verifica, grafic, corectitudinea i coerena ei.

V.1.4 Execu ia unei cereri Execuia unei cereri permanente se face de obicei prin acionarea butonului OPEN din fereastra Database, pagina Queries. n funcie de tipul prelucrrii efectuate prin cerere, aceast aciune determin dou feluri de comportament, i anume. Pentru o cerere de selecie, deci de extragere a datelor din baza de date, se va lansa direct modulul Datasheet, prin care se vor prezenta datele de la ieirea cererii sub forma unei tabele (virtuale). Aceast aciune este echivalent cu trecerea cererii n starea de vizualizare (Datasheet View). Pentru o cerere care modific baza de date (Action Query sau Data-definition Query) se va face efectiv prelucrarea specificat. Acest lucru va fi nsoit de afiarea unor mesaje explicative a prelucrrilor ce se vor efectua i de ateptarea unei confirmri de la operator pentru a fi executate. Execuia unei cereri temporare va avea acelai efect ca al execuiei uneia permanente. Lansarea execuiei acesteia se va face prin diferite metode (de exemplu printr-o macro-comand sau din codul VBA).
V-102

V.2 Construc ia cererilor prin metoda QBE Modulul prin care se creeaz sau modific o cerere permanent, Queries, se lanseaz din fereastra Database, prin selectarea paginii corespunztoare acesteia (la fel ca la tabele). Aa cum s-a mai artat, pentru simplificarea proiectrii unei cereri, Access pune la dispoziie un instrument grafic, care se numete QBE (Query By Example). Cu QBE, se pot defini toate tipurile de cereri acceptate de Access, cu 4 excepii i anume cererile SQL Specific. Implicit, modulul Query pentru realizarea unei cereri noi se va lansa n formatul QBE. Formularul QBE, este constituit din dou pri, fiecare din acestea avnd urmtorul rol: Definirea intrrii cererii (subschema utilizat) - partea superioar a QBE; Definirea prelucrrilor efectuate (selecia datelor din subschem i a eventualelor aciuni specifice) - partea inferioar a QBE; n continuare sunt prezentate aciunile care se efectueaz n realizarea unei ceri, prezentndu-se n ordinea n care trebuie efectuate. V.2.1 Tipul cererilor Prima operaie care trebuie efectuat la crearea unei cereri este stabilirea tipului cererii. Acesta se face n starea Design, prin comanda Query din MenusBar sau din meniul contextual (vezi figura urmtoare). Aa cum se va constata, ntre diferitele tipuri de cereri nu exist diferene majore. n general datorit acestui lucru exist posibilitatea ca unei cereri deja create, s i se modifice ulterior tipul. n acest caz, proiectantul va efectua configurarea numai a caracteristicilor specifice noului tip al cererii.
V-103

Dup schimbarea tipului unei cereri deja create se vor pierde de obicei anumite date sau setri. Din aceast cauz este indicat a se crea naintea de schimbarea tipului ei, a unei copii a cererii respective. n continuare sunt prezentate principale tipuri de cereri grupate dup tipul de prelucrare efectuat, aa cum s-a mai artat anterior. Cereri de selecie (care provoac extragerea de date): Select Query (SELECT)43 - Cel mai utilizat tip de cerere, care produce o extragere de informaii din subschema utilizat la intrare (tabele i relaiile dintre acestea). La ieire datele sunt prezentate sub forma unui tabel virtual. Implicit, tipul cererilor este Select Query. Crosstab Query (TRANSFORMPIVOT) - Cerere de selecie, cu clauz Totals care are la ieire datele prezentate ncruciat, ca la o tabl de ah. Union Query (UNION) - Realizeaz reuniunea a dou cereri de selecie, care au la ieire aceleai cmpuri. Este o cerere SQL Specific, deci care nu poate fi creat prin QBE. Pass-Through Query44 - Cerere de utilizare a unei surse de date ODBC. Este tot o cerere SQL Specific.

43 44

ntre paranteze este scris instruciunea SQL care descrie prelucrarea specificat. Poate fi i de alt tip dect de selecie.
V-104

Sub-query (sub-cerere) - Este tot o cerere creat numai n SQL45 care poate fi utilizat direct ntr-o expresie din alt cerere, folosit pentru definirea unui criteriu de selecie sau a unui cmp calculat. Cereri aciune (care actualizeaz datele din tabele sau salveaz tabele virtuale): Update Query (UPDATE) - Modific valoarea din cmpurile nregistrrilor unei tabele; Delete Query (DELETE) - terge nregistrri dintr-o tabel; Append Query (INSERT INTO) - Adaug nregistrri noi la o tabel; Make-Table Query (SELECTINTO) - Creeaz o tabel nou, cu datele obinute la ieirea unei cereri de selecie. Deci, tabela virtual definit de cerere, se va salva. Cereri care modific structura tabelelor bazei de date: Data Definition Query - Prin aceast cerere, care este SQL Specific se poate: Crea tabele (CREATE TABLE); Modifica tabele (ALTER TABLE); Crea indeci (CREATE INDEX): terge tabele sau indeci (DROP). Cele patru cereri SQL Specific, se scriu direct n SQL, neexistnd formatul QBE pentru ele. Pentru celelalte cereri exist posibilitatea prezentrii lor n dou formate, SQL i QBE.

Cererea de tip Select are caracteristici care se regsesc la majoritatea celorlalte tipuri de cereri. n continuare se va prezenta modalitatea de realizare a acesteia, urmnd ca pentru celelalte tipuri s se precizeze care sunt diferenele.
45

Sub-cererile nu se pot salva separat ci numai mpreun cu cererea n care sunt utilizate.
V-105

V.2.2 Subschema utilizat de o cerere Definiia subschemei utilizate n cerere (tabele i relaiile dintre acestea) se introduc n partea superioar a formularului QBE, iar descrierea ieirii cererii (selecia efectuat plus eventualele aciuni specifice) se face n partea de jos a acestuia. IEIREA INTRAREA
Subschema cererii - tabelele (sau cererile) i relaiile temporare Cmpurile de ieire ale cererii; Caracteristicile cmpurilor;

CASETA DE SELECIE a unui cmp Prin aceasta se permite:


tergerea cmpului; Mutarea prin tragere a cmpului n alt poziie; Lansarea meniului contextual i din acesta a proprietilor cmpului;

Tehnica de realizare a subschemei este identic cu cea de la crearea relaiilor, i anume: Prin meniul contextual se aduce fereastra Show Table i din aceasta a tabelelor (sau cererilor) asupra crora vrem s efectum cererea.
V-106

Implicit, o dat cu introducerea tabelelor n subschema cererii, se vor aduce automat i relaiile permanente existente ntre tabelele respective. Dup aceea, eventual, se introduc sau se modific relaiile dintre aceste tabele. Din meniul contextual al relaiei se lanseaz fereastra Join Properties, prin care se stabilesc (sau modific) tipul legturilor dintre relaii (Inner sau Outer Join).

Meniul contextual al relaiei, va conine, ca i la relaiile permanente, dou comenzi: Delete i Join Properties. Totui, comanda Join Properties este diferit de cea de la relaiile permanente (Edit) prin faptul c va conine numai modulul de setare a tipului de legtur a relaiei (Join Type).

Observaie-1 Relaiile i tipul legturilor stabilite prin QBE, sunt valabile numai n cererea curent, ele nemodificnd relaiile permanente din baza de date. Observaie-2 Relaiile din cereri se refer numai la partea de extragere de informaii din tabelele care definesc cererea. V.2.3 Proiectarea ie irii unei cereri Descrierea prelucrrii efectuate de cererea propriu-zise stabilete operaiile relaionale de selecie i proiecie (n general majoritare) care se aplic asupra subschemei i eventualele aciuni specifice. Aceste definiii se efectueaz n partea de jos a formularului QBE, prin completarea unui tabel. Funcie de tipul cererii care se va proiecta vor aprea anumite rnduri specifice n acest tabel. Indiferent de tipul de cerere, se vor efectua ns ntotdeauna urmtoarele operaii: Se trag din tabelele plasate n subschem, n partea de descrie a ieirii, cmpurile care ne intereseaz n construirea cererii, realizndu-se n acest fel proiecia subschemei. n felul acesta se completeaz automat primele dou rnduri din QBE, i anume:
V-107

Field numele cmpului care se trage; Table tabela din care provine cmpul;

Exist posibilitatea ca din tabel s se trag caracterul (*) ceea ce duce la preluarea tuturor cmpurilor tabelei.

Observaie-1 Dac se schimb structura tabelei de intrare - prin introducerea, tergerea sau schimbarea denumirii unor cmpuri atunci prin folosirea (*) se va lucra n cererea respectiv cu noua structur, fr s fie necesar reproiectarea acesteia. Observaie-2 Exist i posibilitatea completrii manuale a celor dou cmpuri, folosind listele derulante ale cmpurilor respective. Observaie-3 Aa cum se observ n figura de mai jos, din caseta de selecie a cmpului se poate lansa prin metoda obinuit (clic dreapta), meniul contextual al cmpului, i din acesta proprietile cmpului.

Acestea, sunt o parte din proprietile cmpurilor stabilite la crearea tabelei (care conform a ceea ce am mai artat referitor la domeniul de valabilitate al setrilor n Access vor fi valabile i n cererea la care particip tabela respectiv), putnd fi eventual modificate, dar numai la nivelul obiectului curent. De obicei se seteaz proprietile Format i Caption, pentru a permite o afiare corespunztoare a datelor din cmpurile de la ieire cererii n obiectul Datasheet. Se marcheaz n rndul Show cmpurile pe care utilizatorul dorete s le aib la ieirea din cerere. Acest lucru se datoreaz faptului c la o cerere, pot participa i cmpuri necesare
V-108

numai pentru prelucrrile efectuate, dar care nu mai sunt necesare n continuare. n rndul Sort, se stabilete cu ajutorul listei derulante a acestuia, dac se dorete ordonarea datelor la ieirea din cerere dup un anumit cmp (cmpuri) precum i ordinea, Ascending sau Descending. Dac exist mai multe cmpuri astfel marcate, atunci ordinea de sortare a acestora, va fi de la stnga la dreapta - deci cmpul plasat cel mai n stnga fiind primul dup care se va efectua aceast operaie. Criteriile de selecie46, se introduc cu ajutorul rndurilor Criteria i Or (se pot introduce mai multe rnduri Or). Prin acestea se va face o selecie a rndurilor (nregistrrilor) care vor apare la ieirea din cerere. Criteriile de selecie se vor constitui n felul urmtor: 1) Mai nti se va forma cte o regul de selecie (asemntoare cu cea prezentat la proprietatea Validation Rule) pentru fiecare completare cu date a celulei de la intersecia unui cmp cu unul din rndurile Criteria sau Or astfel: Datele introduse n aceast celul trebuie s conin unul sau mai multe 'grupuri' formate dintr-un operator relaional i un termen. Fiecare din aceste 'grupuri' va forma cte o expresie relaional (un termen | operator relaional | alt termen) n care: Al doilea termen va fi obligatoriu: valoarea din cmp (aceasta nu se va specifica, fiind implicit); Dac dintr-un 'grup' lipsete operatorul relaional, implicit se va folosi operatorul relaional de egalitate(=);

46

La construirea expresiilor din care este alctuit criteriul de selecie, se vor utiliza specificaiile prezentate n capitolul II-6.
V-109

Se formeaz regula de selecie n funcie de existena unui singur 'grup' sau a mai multor 'grupuri' astfel: Dac exist un singur 'grup' atunci regula de selecie va fi chiar expresia relaional. Dac exist mai multe 'grupuri' atunci ntre ele trebuie introdui operatori logici, iar regula de selecie se va forma prin aplicarea operatorilor logici expresiilor relaionale (care n acest caz reprezint termenii funciilor logice). 2) Se va evalua fiecare din rndurile Criteria sau Or care conin introduse date astfel: dac exist mai multe reguli de selecie scrise pe acelai rnd ele vor fi legate prin operatori logici AND (fiecare regul de selecie va fi termen al unei funcii logice AND). 3) Dac exist mai multe rnduri Criteria sau Or completate atunci acestea vor fi legate prin operatori logici OR (fiecare rnd va fi termen al unei funcii logice OR). Aceast ultim valoare logic obinut va reprezenta evaluarea criteriului de selecie pentru datele din nregistrarea respectiv. 4) Aceast evaluare a criteriului de selecie va fi efectuat pentru toate nregistrrile acceptate pn n acel moment. n urma acesteia se vor selecta numai acele nregistrri la care evaluarea criteriului de selecie este adevrat (True).

ntr-o cerere se vor efectua mai nti operaiile relaionale de proiecie i selecie. Astfel: Proiecia cmpurilor cererii se face prin alegerea acelora care se introduc (trag) n partea de ieire a cererii; Selecia nregistrrilor se face prin dou operaii care se execut n urmtoarea ordine: Selectarea nregistrrilor conform tipului de legtur a relaiei (inner join sau outer join) existente ntre tabelele (dac sunt mai multe) subschemei cererii. Selectarea nregistrrilor conform criteriilor de selecie introduse n definirea cmpurilor cererii;
V-110

Dup efectuarea acestor dou prelucrri, mai pot interveni i alte tipuri de operaii relaionale. Exemplu: n cererea prezentat anterior, criteriul de selecie poate fi explicitat (se introduc termenii implicii - cmpurile i operatorul relaional implicit - operatorul de egalitate) n felul urmtor: ([tSpecializari]![TipInvatamint]="FR") OR ([tMaterii]![PtCredit]<5) AND [tSpecializari]![TipInvatamint]="ZI") V.2.4 Cereri cu cmpuri calculate Exist posibilitatea ca un anumit cmp din QBE s nu provin dintr-o tabel a subschemei ci s fie introdus printr-o expresie, utiliznd regulile de formare a expresiilor Access (capitolul II-6). Se va folosi urmtoarea sintax - NumeCmp : Expresie Exemplu: Dac n subschem exist dou cmpuri - Input i Pret atunci se poate defini un cmp calculat cu numele Val astfel: VAL : [Input]*[Pret] V.2.5 Cereri cu parametri n expresiile scrise n QBE sunt admii parametri. Acetia sunt nite nume de obiecte care se iniializeaz cu o valoare corespunztoare, numai n momentul executrii cererii, printr-un dialog iniializat de sistem cu utilizatorul. Astfel, valoarea introdus de utilizator n momentul executrii cererii va nlocui numele parametrului, n evaluarea expresiilor. Numele unui parametru, trebuie s fie diferit de numele cmpurilor folosite n cerere i trebuie scris ntre paranteze drepte. Implicit parametrii sunt considerai de tip Text. Dac un parametru este de alt tip, atunci prin fereastra Parameters (lansat ori din meniul contextual al ferestrei QBE ori prin pictograma specific ori din meniul Query) se declar n mod explicit tipul parametrului, ca n exemplul de mai jos.
V-111

Exemplu: n cererea prezentat n continuare este utilizat parametrul [pTVA], de tip Integer. n momentul execuiei cererii, va aprea caseta de dialog alturat n care operatorul introduce valoarea 10.

Execuia cererii

Se observ c la proiectarea cererii: S-au introdus dou cmpuri calculate: Val : [Input]*[Pret] i TVA : [Val]*[pTVA]/100 n expresia celui de-al doilea cmp calculat, TVA, sunt folosii att parametrul pTVA ct i cellalt cmp calculat Val. S-a introdus criteriul de selecie: "toate nregistrrile n care sunt valori diferite de 0 att n cmpul Input ct i (AND este operatorul relaional care se aplic asupra a dou reguli de selecie introduse n acelai rnd de criterii) n cmpul Pret".

La execuia cererii, valoarea introdus n parametrul pTVA, (i anume 10), va fi utilizat n evaluarea cmpului calculat TVA.

V.2.6 Cereri cu clauza TOTALS Clauza Totals se activeaz din ToolsBar prin pictograma specific, sau din meniul View. Ea se poate aplica la toate cererile (mai puin Delete i Update).
V-112

Introducerea ei duce la inserarea n partea inferioar a ferestrei QBE, a rndului Total, care trebuie configurat obligatoriu pentru toate cmpurile selecionate. n acesta se pot introduce cuvintele cheie: Group By; Where; Expression; sau numele unei funcii agregate47 SQL48 (SUM, AVG, MIN, MAX, COUNT etc) Efectul produs de aceast clauz este prezentat n continuare: 1) Se rezolv condiiile de selecie ale nregistrrilor cererii tipul legturii i criteriile de selecie. n continuare se vor efectua prelucrri numai asupra nregistrrilor selectate. 2) Datele din cmpul care n rndul Total are introdus opiunea Group By, vor determina gruparea nregistrrilor, fiecare grup fiind format din toate nregistrrile care au n cmpul respectiv aceiai valoare. Dac nici unui cmp nu i s-a introdus opiunea Group By, atunci se va forma o singur grup care va conine toate nregistrrile selecionate pn n acest moment. 3) Pentru fiecare grup astfel constituit se va crea cte o singur nregistrare ale crei cmpuri vor fi completate n funcie de opiunea introdus n rndul Total.

47

48

Noiunea de funcie agregat se refer la o funcie care are ca domeniu de definiie o mulime de valori care provin dintr-un cmp al unei tabele. Funciile agregate se pot calcula pentru toate nregistrrile unei tabele sau numai pentru o parte din acestea determinat de un criteriu de selecie (n cazul care se prezint nregistrrile dintr-o grup). Noiunea de funcie agregat SQL, se refer la o funcie agregat definit pentru o tabel care se gsete legat de obiectul de rang superior n care este folosit. De exemplu o tabel din subschema unei cereri sau o tabel care este legat de un formular sau raport.
V-113

Astfel data introdus n cmpul setat cu opiunea: Group By - va fi valoarea comun tuturor nregistrrilor din grup pe care acest cmp o are (i care a determinat formarea grupei). Funcie agregat SQL - va fi valoarea calculat conform specificaiilor funciei, din toate datele din acest cmp care se gsesc n nregistrrile grupei. De exemplu, dac o grup e format din 5 nregistrri, atunci funcia SUM introdus pe un cmp va avea la ieire o valoare calculat prin nsumarea datelor existente n acel cmp n cele 5 nregistrri. Expression - va fi valoarea obinut din evaluarea expresiei unui cmp calculat pentru toate nregistrrile grupei. Cmpul calculat va fi definit pentru coloana respectiv cu o condiie obligatorie, i anume ca expresia sa de calcul s fie format din una sau mai multe funcii agregate SQL (n exemplul care se va prezenta: cmpul Val).. Where nu va exista o valoare deoarece cmpul nu va fi trimis la ieirea cererii, fiind folosit numai la introducerea unor criterii de selecie (cmpul Data din exemplul urmtor). Valoarea NULL, aa cum s-a mai artat, nu este luat n consideraie n calculul funciilor agregate, fiind ignorat. (atenie!! - acest lucru nu nseamn c este echivalent cu zero!).

Ieirea unei cereri cu clauza Totals, va avea un numr de nregistrri egal cu numrul grupelor constituite. n cererea cu clauza Totals se poate introduce n mai multe cmpuri n rndul Total opiunea Group By. n acest caz, datele din aceste cmpuri vor forma n ordine, de la stnga la dreapta (ca i ordinea de la sortare), mai multe grupe. nregistrrile aferente ultimei grupri (numit de obicei subgrup) vor constitui domeniul pentru calculul funciilor agregate SQL din celelalte cmpuri ale cererii.
V-114

V.2.7 Func iile agregate V.2.7.1 Func iile agregate SQL n Access sunt definite urmtoarele funcii agregate SQL: SUM calculeaz suma datelor din domeniul specificat; AVG calculeaz media aritmetic a datelor din domeniul specificat; COUNT49 numr nregistrrile din domeniul specificat. VAR calculeaz variana datelor din domeniul specificat; StDEV calculeaz deviaia standard a datelor din domeniul specificat; MIN ntoarce cea mai mic valoare a cmpului respectiv din domeniul specificat; MAX ntoarce cea mai mare valoare a cmpului respectiv din domeniul specificat; FIRST ntoarce prima valoare a cmpului respectiv din domeniul specificat, conform ordinei de sortare active; LAST - ntoarce ultima valoare a cmpului respectiv din domeniul specificat, conform ordinei de sortare active;

Funciile FIRST i LAST nu sunt valabile dect n rndul Total deci ele nu se pot aplica i n cmpurile calculate. n cmpurile calculate, sintaxa pentru funciile agregate SQL este: Funcie (expresie) - n care: Expresia identific cmpul de definiie al funciei; Cmpul trebuie s aparin subschemei cererii i dac exist ambiguitate trebuie calificat cu numele tabelei din care provine; Funcia Count numr numai nregistrrile care au introduse date n cmpul respectiv (nu le numr i pe cele cu Null). Dac se dorete ns numrarea tuturor nregistrrilor dintr-o grup (deci i pe acelea care au Null), se folosete expresia Count(*).
V-115

49

Funciile agregate SQL sunt utilizate n cereri, n rndul Total sau n cmpurile calculate. Ele se mai pot folosi i n formularele sau rapoartele legate la o tabel. Exemplu: Subschema cererii cExTotal, este format din dou tabele, cPRODUSE i cMISCARE, care sunt legate prin cmpul CodProdus ntr-o relaie de tip one to many.

n figura urmtoare sunt prezentate datele cu care sunt ncrcate cele dou tabele de intrare precum i tabela virtual care se obine n urma execuiei cererii.

Tipul de legtur a relaiei (Inner Join) este nesemnificativ deoarece, aa cum se observ, nu exist valori ale cmpului de legtur care s nu se gseasc n ambele tabele.
V-116

Tabela virtual din ieirea cererii are trei nregistrri, adic cte una pentru fiecare grup de nregistrri definit de datele din cmpul DenProdus. Se va arta n continuare cum se formeaz la ieire una dintre nregistrri, i anume aceea cu: DenProdus= Fier Din cele dou tabele sunt selecionate mai nti nregistrrile, conform relaiei i tipului de legtur al acesteia. Pentru nregistrarea cu DenProdus= Fier, se vor seleciona i corela pentru ieire, cele care au CodProdus=1, formndu-se n prima instan 4 nregistrri virtuale ca n tabela de mai jos. Cod Produs 1 1 1 1 Den Produs Fier Fier Fier Fier Pre um 22 22 22 22 buc buc buc buc Inp 4 1 Null 5 Out 2 4 3 0 Data 25.03.1999 11.01.1998 17.04.1999 20.03.1999

1 2 3 4

Din tabela cProduse se preia nregistrarea: 1 Din tabela cMiscare se preiau nregistrrile: 1, 2, 3, 4 Se aplic criteriului de selecie de la cmpul Data, adic: (Between 01.01.99 And 31.12.99) n urma acestei operaii se elimin a doua nregistrare deoarece are o dat din anul 1998, deci n afara intervalului de selecie. Se observ introducerea cu clauza Where a acestui criteriu, deoarece nu se dorete apariia datei la ieire (de altfel fr sens). Se aplic proieciile pentru cmpurile selecionate, fiind eliminate celelalte cmpuri (cele prezentate n tabela de mai sus cu litere nengroate) Din nregistrrile rmase se face o grupare a nregistrrilor dup valorile introduse n cmpul DenProdus - deoarece acesta are opiunea Group By.
V-117

Pentru toate nregistrrile care au: DenProdus]= Fier adic nregistrrile de pe poziiile: 1, 3 i 4 - se va obine la ieire o singur nregistrare care va fi constituit astfel: n cmpul de ieire: DenProdus, valoarea Fier; n cmpul de ieire: AvgOfInput, se va calcula media aritmetic cu funcia agregat Avg. Acest calcul se va face pentru nregistrarea Fier, prin aplicarea funciei Avg datelor care se gsesc n cmpul Input din nregistrrile selecionate: 1, 3, 4. Deci se va calcula: (4+ 5) / 2 = 4,5 Se observ c a treia nregistrare, care are Input=NULL, nu este luat n considerare; dac ar fi fost Input=zero, atunci rezultatul era: (4+0+5) / 3 = 3 n rndul Total, s-a setat opiunea Expression pentru cmpul calculat de ieire: Val=Sum([Input]*[Pre]). Dup execuia cererii acest cmp va avea valoarea 198, pe care sistemul a calculat-o astfel: Pentru nregistrrile selecionate, adic: (1, 3, 4) se calculeaz mai nti expresia aritmetic: Val= [Input]*[Pre] Pre 1 3 4 22 22 22 Input 4 Null 5 Val 88 n expresii aritmice Null se Null propag 110 Observaie

Se aplic funcia agregat Sum (nsumare), pe valorile calculate anterior. Sum(88, Null, 110)=198 n funciile agregate Null n se ignor. Se vor calcula n continuare i celelalte 2 nregistrri de ieire dup aceiai metod.

V-118

V.2.7.2 Func iile agregate de domeniu Noiunea de funcie agregat de domeniu, se refer la o funcie agregat definit pentru o tabel care se poate gsi oriunde n baza de date, indiferent de obiectul din care este folosit. Din aceast cauz, pentru o funcie agregat de domeniu trebuie precizat explicit att tabela ct i cmpul pe care se aplic. Funciile agregate de domeniu au acelai nume ca cele SQL, dar cu un D n fa. De asemenea, ele provoac aceiai aciune. Specific pentru funciile agregate de domeniu este: Au o frecven mai mare de utilizare dect funciile agregate SQL . Sunt folosite n special n codul VBA. n cereri, funciile agregate de domeniu, se execut nainte de constituirea grupelor, pe cnd funciile agregate SQL, se execut dup constituirea grupelor. Funciile agregate de domeniu, specific explicit domeniul de definire. Deci ele pot s se refere n cereri i la tabele care nu sunt n subschem. n afar de DSum. DAvg, DCount, DVar, DStDev, DMin, DMax, mai exist funcia DLookUp, care ntoarce valoarea cmpului din domeniul specificat. Aceste funcii se gsesc n biblioteca Access, clasa Application. Ele sunt prezentate n acest capitol datorit asemnrii cu funciile agregate SQL. Sintaxa funciilor agregate de domeniu este: Funcie (expresie; domeniu; [criteriul de selecie]) n care:

Expresie: identific cmpul asupra cruia se va aplica funcia; Domeniu: identific tabela de unde provine cmpul; Criteriul: face o selecie n nregistrrile din domeniu, folosind regulile obinuite prezentate (este opional);

V-119

Toi cei trei parametrii sunt iruri de caractere, deci se pun ntre ghilimele50 (). Criteriul de selecie se formeaz de obicei astfel: "NumeCimpDinTabelaDeDomeniu = expresie" La criteriul de selecie trebuie inut cont de tipul datelor din expresie, numerice sau iruri de caractere i dac ele sunt literali sau provin dintr-un cmp al tabelei legate de obiectul unde se gsete funcia. Astfel dac considerm c tabela pe care e definit funcia agregat de domeniu are un cmp CpD, iar obiectul de unde se execut funcia (de exemplu o cerere) are un cmp INP, vom avea 4 cazuri, i anume: Date numerice, literal: "CpD > 0" Date numerice din cmpul INP: "CpD > " & [INP] ir caractere, literal: " CpD = 'DOI' " ir caractere, din cmpul INP: "CpD = '" & [INP] & "'" Funciile agregate de domeniu, sunt utilizate de obicei n codul VBA, atunci cnd este necesar preluarea direct a unor date dintr-o tabel fr a se mai folosi cereri sau recordset-uri, sau n controalele din formulare sau rapoarte, cnd acestea trebuie 'legate' la o alt tabel dect la aceea folosit de formularul sau raportul respectiv.

Exemplu: La cererea din exemplul precedent mai sunt definite dou cmpuri calculate, unul cu funcia agregat SQL, SUM, i cellalt cu funcia agregat de domeniu DSUM (vezi figura). Dup execuia cererii se poate observa diferena dintre cele dou tipuri de funcii agregate i anume:
50

n toate modulele Access, ca s se poat introduce ghilimele ntr-un ir de caractere se folosesc ori dou ghilimele alturate ori semnul apostrof.
V-120

Funcia agregat SQL - va fi definit de nregistrrile selectate prin cerere din tabelele cMiscare i cProduse. Funcia agregat de domeniu - se va executa direct pe tabela cMiscare, ea ignornd toate prelucrrile pe care cererea le efectueaz. De exemplu funcia DSum nu va elimina nici o nregistrare din tabel, deoarece nu are introdus ca argument criteriul de selecie, prin care se putea efectua acest lucru.

V.3 Propriet ile cererii Numele unei cereri se stabilete n acelai mod ca i la celelalte obiecte de rang superior din fereastra Database, i anume: pentru o cerere nou, dup crearea acesteia n urma unei ntrebri explicite fcut de sistem; pentru o cerere deja creat, numele se modific din fereastra Database, prin metodele obinuite din standardul Windows. Celelalte proprieti ale unei cereri se gsesc ntr-un formular, Query Properties, care se lanseaz numai cnd cererea este n starea Design, din meniul contextual sau prin activarea pictogramei specifice pentru proprieti de pa ToolsBar. n continuare se vor prezenta proprietile cele mai utilizate.
V-121

Top Values Limiteaz la un anumit numr (sau procent) nregistrrile care se vor gsi la ieirea cererii, n ordinea sortrii acestora; Unique Values Exist posibilitatea ca n urma proieciilor efectuate asupra subschemei cererii, la ieirea din aceasta, s fie mai multe nregistrri identice (nregistrri care au aceleai valori n cmpuri). Setarea acestei proprieti pe Yes, face ca la ieirea cererii s nu existe nregistrri duplicate. Deci, aceast proprietate se aplic la ieirea cererii. Unique Records Aceast proprietate este valabil, numai n cazul n care cererea are la intrare mai multe tabele. i n acest caz, este posibil, ca la intrarea n cerere s existe nregistrri identice, pentru toate cmpurile schemei (i nu numai pentru cele care se vor regsi la ieire). Setarea pe Yes a acestei proprieti, elimin duplicatele de la intrarea n cerere. Observaie-1 Numai una din cele dou proprieti Unique poate fi Yes. Observaie-2 Rezultatul unei cereri de selecie trebuie privit ca o tabel virtual. Practic, o cerere de selecie creeaz un filtru prin care se ajunge la tabelele originare, iar atunci cnd se utilizeaz un cmp din ieirea acesteia se acceseaz cmpul din tabela originar. Deci o modificare efectuat asupra unui cmp afiat la ieirea dintr-o cerere de selecie, va duce la modificarea cmpului respectiv n tabela originar. Evident, modificarea unui cmp afiat la ieirea unei cereri de selecie se poate face numai dac acel cmp poate fi identificat ntro nregistrare din tabela originar. Astfel, n cazul setrii pe Yes a uneia din proprietile Unique, identificarea sursei datelor nu mai poate fi fcut i ca urmare se blocheaz posibilitatea modificrii acestor cmpuri (acelai lucru e valabil i la cmpurile calculate sau la cererile cu clauza Totals).

V-122

O cerere de selecie care permite accesarea i actualizarea datelor din tabela originar se numete actualizabil51 (updateable query) Source Database Source Connect Str Prin aceste dou proprieti, se poate crea o cerere definit pe tabele sau cereri externe52 (care se afl n alt baz de date n format JET, ISAM sau prin ODBC). Astfel: Pentru a folosi tabelele sau cererile dintr-o alt baz de date Access (format JET) se va: introduce n proprietatea Source Database, numele complet (cu cale i extensie) al fiierului care conine baza de date extern (cu extensia Mdb sau Mde); se las necompletat proprietatea Source Connect Str; n acest caz, cnd se va lansa fereastra Show Table, vor aprea toate tabelele i cererile din baza de date extern, din care se va crea ulterior subschema cererii. Pentru a folosi tabelele unei baze de date externe n format ISAM, se va introduce n: Source Database - numele folderului (cu calea complet) unde se afl acestea; Source Connect Str - tipul bazei de date (lista cu toate tipurile de baze de date externe care se pot accesa din Access se gsete n Help-ul din Access, la DAO Connect Property);
51

52

Deoarece cererea aciune funcioneaz n dou etape, n prima efectundu-se selecia iar n a doua actualizarea cu datele selectate a tabelei originare, n cazul n care selecia nu este actualizabil, se va bloca execuia cererii respective. n Access se mai pot accesa tabele externe prin importarea lor sau prin 'legarea' direct de acestea, prin comanda din MenusBar | File | Get External Data
V-123

n acest caz, cnd se va lansa fereastra Show Table, vor aprea toate tabelele ISAM, care se gsesc n folderul respectiv. Exemplu: n exemplu de mai jos se arat modalitatea prin care se poate crea n Access o cerere care s fie definit folosind o subschem format numai din fiiere DBF, create n FoxPro. Nu uitai s punei (;) la sfrit !!! V.4 Tipuri de cereri n continuare vor fi prezentate n special sub aspect funcional cele mai utilizate tipuri de cereri. V.4.1 Select Query Select este cea mai utilizat cerere din aplicaiile Access. Ea const din proiecia i selecia cmpurilor i nregistrrilor din subschema cererii, n vederea extragerii unor informaii din baza de date, care pot fi utilizate n alte module ale aplicaiei sub forma unei tabele virtuale. Este folosit foarte des ca suport pentru realizarea rapoartelor (pentru prezentarea datelor), a formularelor (pentru introducerea datelor), ca intrare pentru alte cereri, n controale, etc. . Aa cum s-a artat, rndurile care trebuiesc completate n proiectarea unei cereri Select sunt prezentate n Field figura alturat. La acestea se poate aduga, Table eventual, rndul Total. Sort Execuia cererii Select, nu modific Show direct datele din subschem. Totui, dup Criteria execuia cererii, datele afiate prin intermediul Or ferestrei Datasheet, dac sunt actualizabile, pot fi modificate de ctre operator.
V-124

Exemplu: Vom urmri pas cu pas ordinea i felul n care sistemul va prelucra (executa) o cerere Select n care: Subschema are dou tabele: STUDENTI i INSCRISI; Relaia ntre tabele este de tip one to many, fiind creat ntre cmpurile 'CNP' Tipul de legtur a relaiei este Left Outer Join Tabela 'STUDENTI' Nume
1-Enescu 2-Marincea 3-Calot 4-Groanu 5-Voicu 6-Caciuc

Prenume
Anca-Cristina Ana-Maria Marius-Alin Ana-Maria Alin-tefan Romic

1 one to many 1 Tabela 'INSCRISI' CNP-cod CNP-cod Cod Tip spec. nv. student student
2-84,01,09 2-84,10,06 1-85,04,11 2-83,08,10 1-84,09,13 1-75,12,17 1) 2-84,01,09.. 2) 2-84,01,09.. 3) 2-84,10,06.. 4) 2-81,11,11.. 5) 2-83,08,10.. 6) 1-84,09,13.. 002 003 002 003 003 003 Tax Fr Tax Fr Tax Fr

1) Se selecioneaz i coreleaz nregistrrile conform relaiei i tipului de legtur, indiferent de cum este formulat efectiv cererea. Astfel se vor seleciona: Din tabela STUDENTI - toate nregistrrile: 1; 2; 3; 4; 5; 6 Din tabela INSCRISI - nregistrrile: 1; 2; 3; 5; 6 n urma acestei operaii se va crea o prim tabel intermediar virtual, prezentat mai jos: Cod Tip CNP-cod Nume Prenume spec. nv. student
1-Enescu 1-Enescu 2-Marincea 3-Calot 4-Groanu 5-Voicu 6-Caciuc Anca-Cristina Anca-Cristina Ana-Maria Marius-Alin Ana-Maria Alin-tefan Romic 2-84,01,09 2-84,01,09 2-84,10,06 1-85,04,11 2-83,08,10 1-84,09,13 1-75,12,17 002 003 002 003 003 Tax Fr Tax Tax Fr

V-125

nregistrrile virtuale create datorit tipului de relaie i a tipului de legtur vor: avea valori NULL n partea care nu are corespondent n cealalt tabel; se vor completa de mai multe ori informaiile din partea one (ca la nregistrarea nr.1) dac exist mai multe nregistrri corespondente n partea many; 2) Dac exist n aceast tabel virtual, dou sau mai multe nregistrri identice (ceea ce nu este cazul n acest exemplu) cele duble vor fi eliminate dac proprietatea Unique Records este setat. 3) Se vor opera pe tabela intermediar obinut, proiecia i seleciile precizate n cerere. Dac cererea va avea structura de mai jos atunci aceasta va produce o nou tabel intermediar virtual dup aceste prelucrri.
Field Table Sort Show Criteria Or CNP
STUDENTI

Nume_Complet:[Nume] & Cod Sp Tip nv. " " & [Prenume]


INSCRISI INSCRISI

Ascending x

x 002 "Tax" IS Null

Observaie-1 Cmpurile preluate sunt: [CNP][Cod Sp][Tip Inv] Observaie-2 Cmpul calculat se va forma prin concatenarea cmpurilor [Nume] i [Prenume], ntre ele insernduse spaiu " ". Caracterul de concatenare stringuri este &. Observaie-3 Criteriul de selecie poate fi formulat matematic aa: ([Cod Sp]=002 AND [Tip Inv]="Tax") OR ([Cod Sp]=NULL) Observaie-4 Cmpul [Tip Inv] este folosit numai pentru selecie, el nefiind 'trimis' la ieire. Observaie-5 n tabela virtual de ieire nregistrrile vor fi sortate cresctor dup cmpul calculat: [Nume_Complet]
V-126

n urma acestor operaii tabela virtual de ieire va arta ca n figura de mai jos: Cod CNP Nume_Complet sp.
6 3 1 2 1-75,12,17 1-85,04,11 2-84,01,09 2-84,10,06 Caciuc Romic Calot Marius-Alin Enescu Anca-Cristina 002 Marincea Ana-Maria 002

4) Dac n aceast tabel virtual, exist dou sau mai multe nregistrri identice (ceea ce nu este cazul n exemplu), cele duble vor fi eliminate dac proprietatea Unique Value este setat. V.4.2 Crosstab Query Crosstab (cerere ncruciat) este o cerere de selecie cu clauza Totals, care are cel puin dou cmpuri de grupare i un singur cmp pe care se calculeaz o funcie agregat SQL. Exemplu: Pe tabela gStud (cu cmpurile Fac, An, Gr, Nume) se face o cerere de selecie cu clauza Totals. Aceasta va avea setrile: Group By: cmpurile Fac, An, Gr - ordinea de grupare este de la stnga la dreapta; Funcia agregat SQL, Count (numr): cmpul Nume:

Execuia cererii de selecie cu clauz TOTALS

V-127

Execuia cererii (vezi figura de mai sus) va grupa nregistrrile n ordinea: Fac, An, Gr, iar funcia Count se va aplica pentru cmpul Nume, utiliznd ultima grupare declarat (numit subgrup), adic Gr. Deci aceast cerere, va afia o tabel virtual n care pentru fiecare Fac, An i Gr, se vor afia numrul de nregistrri care au date introduse n cmpul Nume (cele cu Null nu se iau n considerare). Cererea Crosstab, funcioneaz similar, ns n fereastra Datasheet afiarea este diferit, lund forma unei table de ah. Acest lucru se face prin deplasarea pe orizontal, ca denumiri ale coloanelor, a valorilor comune pe care le ia subgrupa (ultima grupare din dreapta). Pentru celelalte grupe rmase (minim 1, maxim 3) modalitatea de afiare a datelor comune rmne la fel ca la cererile de selecie obinuite cu clauz Totals, adic pe vertical, valorile respective reprezentnd denumiri ale rndurilor. n exemplul dat, prin transformarea cererii de selecie n cerere Crosstab (vezi figura urmtoare) se va seta : Fac i An ca primele dou cmpuri de grupare; valorile comune din acestea rmn tot denumiri de rnduri; Gr ca ultimul criteriu de grupare - adic subgrupa; valorile comune din subgrupa vor deveni denumiri de coloane. Aceast separare a datelor comune ale subgrupei de a datelor comune din celelalte grupe, va duce la o condensare a valorilor comune att pentru grupe ct pentru subgrup. Cmpul pentru care se va calcula funcia agregat (n exemplu cmpul Nume, pe care se aplic funcia Count) va avea ca domeniu de definire pentru grupurile comune de nregistrri, ultima grupare efectuat, adic aceea a subgrupei (n exemplu cmpul Gr). Aceast operaie, dei diferit ca modalitatea de afiare a rezultatului este din punct de vedere al calculului identic cu aceea de la cererile de selecie obinuite cu clauz Totals.

V-128

O diferen semnificativ ntre cele dou tipuri de cereri de selecie const n acceptarea n cererile Crosstab a un singur cmp pentru calculul unei funcii agregate). Field Formularul QBE care trebuie Table completat n cazul cererilor Crosstab, va avea Total pe lng rndul obinuit Total, un rnd Crosstab specific, Crosstab (vezi figura alturat). Sort n rndul Crosstab, obligatoriu se va Criteria introduce unul din urmtoarele cuvinte cheie: Or Column Heading - denumirile coloanelor, reprezint cmpul pentru subgrup, care va determina ca datele comune din acesta s devin titluri de coloane n cererea Crosstab (n exemplu, cmpul Gr). Acest cmp trebuie s fie obligatoriu un cmp de grupare, definit n rndul Total cu opiunea Group By. n cererile Crosstab numrul coloanelor de la ieire nu este fixat, el fiind stabilit de numrul de grupri posibile53 ale cmpului subgrupa. Exist totui posibilitatea prestabilirii (fixrii) valorilor comune pe care le ia aceast grup (indiferent dac ele se regsesc sau nu dup o execuie a cererii), prin completarea cu aceste valori implicite a unei proprieti a cererii, i anume: Column Headings.

Opiunea Column Heading se poate folosi numai la un cmp. Row Heading - denumirile rndurilor, reprezint celelalte cmpuri de grupare (maxim 3) de nivel superior (cmpul de grupare din stnga este primul cmp dup care se face gruparea). Aceste cmpuri, declarate n rndul Total cu opiunea Group By, vor arta la fel ca la o cerere obinuit de selecie, adic valorile comune ale acestora, vor fi afiate pe vertical ca titluri de rnduri. n exemplu, Row Heading sunt cmpurile Fac i An.

53

Numrul de grupri posibile (numrul datelor comune) al unui cmp reprezint numrul datelor diferite din cmpul respectiv n toate nregistrrile selectate.
V-129

Value - opiunea se atribuie cmpului pentru care se calculeaz o funcie agregat SQL. Denumirea funciei se introduce n rndul Total. Domeniul de definire pentru calculul funciei va fi format din grupurile de nregistrri cu valori comune n subgrup (Column Heading n rndul Crosstab). Afiarea n tabela virtual de ieire a valorii calculate cu funcia agregat SQL, se face sub forma unei table de ah, adic la intersecia dintre un rnd (care definete grupele) i o coloan (care definete subgrupa). n exemplul dat, funcia Count se va aplica pe cmpul Nume. Nu este acceptat dect o singur opiune Value. Not Shown - se atribuie unui cmp care nu va aprea la ieire, dar care va fi folosit ntr-un criteriu de selecie. Exemplu: Cererea Crosstab astfel obinut este prezentat mai jos.

Cererea de tip crosstab

execuia cererii

Valorile comune din subgrup

V.4.3 Union Query Union este o cerere de selecie care permite obinerea la ieire a unei tabele virtuale care s conin reuniunea a dou sau mai multe cereri Select, care au aceleai cmpuri. Union este o cerere SQL Specific, deoarece nu se poate crea dect direct prin SQL. Crearea unei cereri Union nu este dificil, ea implicnd executarea urmtoarei succesiuni de operaii: 1) Se definete prin QBE prima cerere de selecie.
V-130

2) Se trece aceasta n format SQL i se copiaz prin comanda obinuit 'Copy', textul afiat. 3) Se face o nou cerere i i se stabilete tipul Union, prin meniul contextual sau din comanda Query de pe meniul principal urmat de SQL Specific | Union. Se observ c cererea nu va avea dect formatul SQL. 4) Se face 'Paste', n aceast cerere - aceasta va determina ca textul cererii create la punctul 1 i preluat anterior cu 'Copy' s fie introdus pe pagina SQL a cererii Union. Se terge caracterul punct i virgul (;) de la sfrit, care semnific sfritul unei fraze SQL. 5) n continuare se scrie cuvntul Union (eventual i ALL54). 6) Se definete prin QBE a doua cerere de selecie, care trebuie s aib aceleai cmpuri de ieire cu a celei dinti. 7) Se trece i aceasta n formatul SQL i se copiaz prin comanda 'Copy', formatul SQL al acesteia. 8) Se face 'Paste', i cu aceast informaie, la sfritul textului introdus pn atunci pe cererea Union. 9) Se verific ca textele introduse s fie separate prin spaii. 10) Se introduc eventual i alte cereri de selecie dup aceiai metod. La sfritul instruciunii SQL, se va introduce caracterul (;). 11) Se nchide cererea i i se d un nume, aa cum se procedeaz de obicei la crearea unei cereri noi. Exemplu: Reuniunea a dou tabele TAB1, TAB2, pentru cmpurile C1 i C2 va arta n formatul SQL astfel: SELECT Tab1.C1, Tab1.C2 FROM Tab1 UNION SELECT Tab2.C1, Tab2.C2 FROM Tab2;
54

Exist posibilitatea ca din reuniune, s se obin la ieire nregistrri duble. Acestea n mod obinuit sunt eliminate. Dac totui se dorete pstrarea tuturor nregistrrilor, atunci se va introduce n instruciunea SQL opiunea ALL.
V-131

V.4.4 Sub-query Sub-query (sub-cerere) - Este o cerere care nu poate fi utilizat dect n interiorul altei cereri. Ea nu are machet de proiectare (se scrie direct n SQL) i nu poate fi salvat separat, ci numai o dat cu cererea n care se gsete. Sub-cererile sunt utilizate de obicei direct ntr-o expresie a unei cereri, folosit pentru definirea unui criteriu de selecie sau a unui cmp calculat. Scrierea frazei SQL se face ntre paranteze i fr caracterul punct i virgul la sfrit. O caracteristic a sub-cererii este posibilitatea definirea ei pe orice tabel din baza de date (i nu numai din subschem). Exemplu: Cererea din figur va avea un criteriu de selecie scris direct n SQL (sub-cerere). Prin acesta se vor seleciona toate nregistrrile n care datele din cmpul Nota nu sunt mai mari dect media aritmetic a tuturor notelor (calculate pe acelai cmp al aceleai tabele).

V.4.5 Cererile ac iune Aceste cereri funcioneaz n doi pai, i anume: n primul moment se realizeaz o cerere de selecie dup regulile obinuite prezentate deja.

V-132

n al doilea moment cu datele astfel selectate se va efectua operaia de actualizare a bazei de date prin operaia specificat de numele cererii. Dac se trece n forma Datasheet View, atunci nu se va executa dect pasul 1, deci vor fi afiate numai datele selectate, fr a se efectua ns actualizarea bazei de date. Prin aceast facilitate se permite testarea nainte de execuie a unei cereri aciune. Actualizarea efectiv a bazei de date cu datele selectate anterior se va realiza numai la execuia cererii aciune. Execuia unei cereri se face din fereastra Database, pagina Query, prin selectarea cererii, urmat ori de acionarea butonului OPEN, ori prin dublu clic pe cererea respectiv55.

nainte execuiei unei cereri aciune, sistemul avertizeaz utilizatorul despre modificarea tabelei respective precum i a numrului de nregistrri care se vor actualiza, oferind opiunea renunrii la aceasta. Acest avertisment poate fi activat sau dezactivat: Prin folosirea macro-ului Set Warnings; n codul VBA prin setarea proprietii corespunztoare a obiectului DoCmd, prin folosirea instruciunilor: DoCmd.SetWarnings False - se anuleaz mesajele de avertizare. DoCmd.SetWarnings True - se activeaz apariia mesajelor de avertizare. Tehnologia de realizare a unei cereri aciune este similar cu cea a unei cereri de selecie. Totui, fiecare tip de cerere aciune are un rnd specific n formatul QBE, prin care se precizeaz aciunea pe care o va efectua cererea. Prezentm n continuare cele 4 cereri aciune.
55

Se pot executa n acelai mod, nu numai cererile aciune ci i cererile de selecie, caz n care efectul va fi afiarea ferestrei Datasheet.
V-133

V.4.5.1 Update Query Cererea Update provoac modificarea valorii datelor din cmpurile nregistrrilor unei tabele aflate n subschema cererii. Field Macheta de proiectare a cererii Update Table (vezi figura alturat) are urmtoarele Update To caracteristici: Criteria specific este rndul Update To; Or lipsesc rndurile Total, Sort i Show, pentru c sunt fr sens fa de aciunea efectuat de cerere; Aciunea efectuat prin completarea rndul Update To cu o expresie56 este nlocuirea cu valoarea obinut prin evaluarea acesteia a valorii aflate n cmpul respectiv, n toate nregistrrile selectate prin criteriul introdus pentru cerere. Validarea aciunii efectuate de cererea Update, va conine urmtoarele verificri: rezultatul evalurii expresiei s fie inclus n domeniul de integritate a cmpului respectiv; modificarea efectuat s nu ncalce restriciile de integritate existenial sau referenial ale bazei de date; cererea s fie actualizabil (updateable).57 n caz contrar, modificarea cmpului respectiv nu se efectueaz, utilizatorul fiind informat despre acest lucru. Actualizabilitatea unei cereri Update (ca de altfel i a altor cereri aciune) se refer la dou aspecte: identificarea nregistrrilor selecionate prin cerere n tabelele originare. De exemplu dac n urma unei selecii rezult nregistrri duble care sunt eliminate (prin setarea proprietii Unique Value sau prin neutilizarea opiunii ALL

56 57

n definirea acestor expresii se utilizeaz regulile de formare obinuite din Access (capitolul II-6). Aceast noiune s-a prezentat n cap. V.3
V-134

ntr-o cerere Union), atunci selecia rezultat nu va putea actualiza baza de date. cmpurile care se modific s fie i ele actualizabile (updateable). De exemplu un cmp calculat nu se modific. n cazul n care se modific printr-o cerere Update, un cmp dintr-o tabel care este cheie extern a unei alte tabele (copil) i dac relaia dintre tabele este setat cu proprietatea Cascade Update Related Fields (a integritii refereniale), atunci aceast modificare se va efectua automat i n cmpul corespunztor din tabela copil. Exemplu: Astfel, cererea Update prezentat alturat, va selecta la nceput din tabela cProduse, datorit criteriului ei de selecie, toate nregistrrile care au cmpul CodProdus=1. n continuare pentru toate nregistrrile selectate, se va introduce n cmpul CodProdus valoarea 6. Practic aceast cerere nlocuiete n toate nregistrrile din tabela cProduse, valoarea 1 din cmpul CodProdus, cu valoarea 6. Tabela cMiscare, este legat printr-o relaie de tip one to many, de tabela cProduse, prin cmpul CodProdus. Aceast relaie are setate proprietatea de integritate referenial i opiunea Cascade Update Related Fields. n aceast relaie, tabela cMiscare fiind la captul many, va avea rol de tabel copil.

Selecia efectuat Tabelele cProduse i cMicare nainte de execuia cererii


V-135

Dei tabela cMiscare nu este folosit n cerere, totui datorit caracteristicilor relaiei dintre aceste tabele, execuia cererii Update va produce aceleai modificri i n toate nregistrrile tabelei cMiscare n care cmpul CodProdus are valoarea 1 (se face 6).
Modificarea cmpului CodProdus

Tabelele cProduse i cMicare dup execuia cererii

V.4.5.2 Delete Query Cererea Delete provoac tergerea Field nregistrrilor selectate prin criteriile sale Table de selecie. Deci toate nregistrrile selectate prin Delete aceast cerere, vor fi terse din tabela respectiv. Macheta de proiectare a cererii Delete (vezi Criteria Or figura alturat) are urmtoarele caracteristici: specific este rndul Delete; lipsesc rndurile Total, Sort i Show (ca i la cererea Update), pentru c sunt fr sens fa de aciunea efectuat de cerere; Prin rndul Delete se va introduce obligatoriu unul dintre cuvintele cheie Where sau From - care ns se completeaz automat de ctre sistem n funcie de context. Aceste opiuni nu se manifest dect n cazul n care subschema cererii conine mai multe tabele. Rndul Delete este important atunci cnd se dorete tergerea de nregistrri dintr-o tabel (cu From introdus n rndul Delete) care sunt selectate ns prin criteriile introduse ntr-o alt tabel cu care aceasta este n relaie (cu Where introdus n rndul Delete) din care ns nu se vor terge nregistrri.
V-136

Nu trebuie confundat tergerea unei nregistrri, cu tergerea datelor dintr-un cmp care se realizeaz cu o cerere de tip Update (de exemplu prin introducerea valorii NULL n cmp). Aciunea de tergere este ireversibil. Deci n Access, tergerile58 sunt definitive, efectundu-se la nivel fizic i nu la nivel logic (cum este n FoxPro de exemplu). Similar cererilor de tip Update i n cazul cererilor Delete, dac dintr-o tabel - care este printe n relaie (i aceasta cu proprietatea Delete Update Related Records a integritii refereniale, setat) cu o alt tabel (partea din fa a unei relaii one to one sau one to many), se terg nregistrri, atunci i din tabela copil se vor terge automat toate nregistrrile care n cmpul de relaie au valorile terse n tabela printe. Evident aceast operaie se efectueaz chiar dac tabela copil nu este inclus n subschema cererii. Exemplu: Cererea Delete din figura alturat va lmuri cum funcioneaz opiunile Where i From din rndul Delete. Aceast cerere, pornind de la starea tabelelor din exemplul precedent, va terge din tabela Micare toate nregistrrile corespunztoare celei care n tabela cProduse are DenProdus =Fier.

58

Toate tergerile efectuate n Access (nregistrri din tabele, diferite obiecte ale aplicaiei tabele, cereri, formulare etc.) nu elibereaz imediat spaiul ocupat. Din aceast cauz, aplicaiile care suport multe adugri i tergeri i mresc semnificativ spaiului ocupat, chiar dac volumul de date sau numrul de obiecte nu crete. Pentru eliberarea spaiului ocupat se folosete comanda Compact din meniul Tools | Database Utilities.
V-137

Sistemul va selecta la nceput (datorit opiunii Where din rndul Delete) nregistrarea care n tabela cProduse are DenProdus=Fier. Tabelele dup execuia cererii Delete

De asemenea se vor selecta i din tabela cMicare toate nregistrrile corespunztoare, care sunt legate de nregistrarea selectat anterior din tabela cProduse prin cmpul CodProdus. Deoarece n tabela cProduse, nregistrarea selectat are pentru cmpul de relaie, CodProdus=6, atunci se vor selecta i din tabela cMicare, cele patru nregistrri care au aceast valoare n cmpul CodProdus (vezi cum arta tabela cMicare nainte de execuia cererii Delete, n exemplul dat la cererea Update). n continuare sistemul va terge nregistrrilor selecionate dar numai din tabela care are n rndul Delete opiunea From. Se observ din figur, c: n urma execuiei cererii Delete, n tabela cMicare s-au ters cele patru nregistrri cu CodProdus=6; n acelai timp tabela cProduse a rmas neschimbat datorit faptului c n cerere la aceast tabel s-a introdus opiunea Where n rndul Delete; V.4.5.3 Append Query Cererile Append provoac adugarea de nregistrri noi la o tabel (denumit tabel destinaie) aflat ntr-o baz
V-138

de date, local sau extern. Ele funcioneaz n doi timpi, astfel: 1) cerere obinuit de selecie i n continuare, 2) nregistrrile obinute prin execuia cererii de selecie, sunt adugate la tabela destinaie; Field Formularului de proiectare a acestei Table cereri i este specific rndul Append To. n Total acest rnd se pot introduce denumiri ale Sort cmpurilor din tabela destinaie. Append To n felul acesta se creeaz o Criteria corespondent ntre un cmp din nregistrarea Or obinut la ieirea cererii (partea de selecie), declarat n rndul Field i un cmp din tabela destinaie, declarat n rndul Append To. Deci structura nregistrrilor care se adaug tabelei destinaie este format din toate cmpurile la care s-a completat rndul Append To n formularul de proiectare QBE.

Utilizarea n proiectarea cererii Append a rndurilor Sort i / sau Total, fac posibil introducerea n tabela destinaie de: nregistrri sortate i / sau nregistrri ce provin din execuia unor funcii agregate definite pe grupe de nregistrri. Adugarea de nregistrri noi n tabela destinaie, se va face numai dac acestea respect toate condiiile de integritate ale tabelei destinaie i a cmpurilor sau relaiilor acesteia. n cazul n care n cererea Append, sunt cmpuri care nu fac parte din nregistrrile adugate la tabela destinaie, nu se va completa celula corespondent din rndul Append To(de exemplu pentru cmpurile folosite numai pentru introducerea unor criterii de selecie). Proiectarea unei asemenea cereri necesit precizarea tabelei destinaie i a locului unde se gsete. Acest lucru se realizeaz printr-un dialog iniiat de sistem la nceputul crerii unei noi cereri Append. n felul acesta va fi posibil ca n rndul Append
V-139

To s fie ataate la lista ascuns a acestuia, numele cmpurilor din tabela destinaie. Numele i locul tabelei destinaie, se gsesc n pagina de proprieti a cererii, i anume n: Destination Table - numele tabelei destinaie; Destination DB - numele complet (cale, nume i extensie) al fiierului care conine tabela destinaie. Completarea acestei proprieti se face numai n cazul n care tabela destinaie se gsete ntr-o baz de date extern. Prin modificarea acestor proprieti se poate schimba tabela sau baza de date creia i aparine.

Exemplu: Cererea Append cu clauza Totals, va crea din nregistrrile selectate (5) din tabela cMiscare (vezi figura alturat n care sunt marcate acestea) nregistrri care se vor aduga la tabela destinaie cStoc. Criteriul de selecie folosit: cmpul data s conin o valoare inclus n lunile 03-04/1999. Macheta de proiectare a cererii este prezentat mai jos:
Field Table Total Sort Append To Criteria
CodProd Input Output Stoc:. Stoc1:..
cMiscare cMiscare cMiscare

Data

Data

cMiscare cMiscare

Group By
Ascending

Sum

Sum Expr. Expr.

Max

Where

CodProd Input Output Stoc Stoc1 Data


Between #1/3/99# And #30/4/99#

Cererea grupeaz nregistrrile selectate din tabela cMiscare, dup cmpul CodProdus. Vor rezulta astfel 3 grupe, i anume pentru: CodProdus=1, 2 i 4.
V-140

Cererea are dou cmpuri calculate (opiunea Expression n rndul Total), i anume: Stoc: Sum([Input]) - Sum([Output]) Stoc1: Sum([Input] - [Output]) Dei la prima vedere cele dou expresii par echivalente, totui datorit existenei valorii Null la nregistrarea de pe poziia a 3-a, rezultatele vor fi diferite pentru grupa respectiv (cu CodProdus=1) Aceast diferen provine din comportamentul special pe care l are valoarea Null n funciile agregate. Astfel: Valoarea Null se ignor n funciile agregate - n acest caz (pentru grupa CodProdus=1): Stoc= (4+Null+5) - (2+3+0) = 9-5 = 4 Valoarea Null se propag n celelalte funcii sau operaii din expresii, ceea ce face ca o expresie n care cel puin un termen este Null, s aib rezultatul tot Null - n acest caz (pentru aceiai grupa): Stoc1 = Sum((4-2);(Null-3);(5-0)) = Sum(2;Null;5) = 7 n tabela cStoc, vor fi adugate trei nregistrri, aa cum se poate vedea din vizualizarea acestei tabelei dup execuia cererii. V.4.5.4 Make-Table Query Cererile Make-Table provoac dou aciuni, i anume: crearea unei tabele noi; introducerea n aceasta a nregistrrilor virtuale ce rezult din execuia unei cereri obinuite de selecie; 59 Structura tabelei (inclusiv numele i tipul de date al cmpurilor) va fi creat automat de sistem funcie de cmpurile care

59

Cererea Make-Table, n comparaie cu celelalte trei tipuri de cereri aciune prin care numai se actualizeaz datele unor tabele, pe lng acest rol, modific i schema (structura) bazei de date, prin crearea unei tabele noi.
V-141

sunt definite ca ieiri ale cererii de selecie (adic cele care sunt bifate n rndul Show). Macheta de proiectare Make-Table, nu conine nici o diferen fa de aceea a unei cereri de selecie obinuite. Proiectarea unei asemenea cereri necesit ns, ca i la cererea Append, precizarea tabelei destinaie i a locului unde se gsete aceasta. Tehnologia prin care se realizeaz acest lucru este aceiai. Astfel: La nceputul crerii unei noi cereri Make-Table sistemul iniiaz un dialog prin care se solicit numele i locul tabelei destinaie. Numele i locul tabelei destinaie, se gsesc n pagina de proprieti a cererii, i anume n: Destination Table - numele tabelei destinaie; Destination DB - numele complet (cale, nume i extensie) al fiierului care conine tabela destinaie. Completarea acestei proprieti se face numai n cazul n care tabela destinaie se gsete ntr-o baz de date extern.

Prin modificarea acestor proprieti se poate schimba tabela destinaie sau baza de date creia i aparine. La execuia unei cereri Make-Table, dac mai exist o tabel cu acelai nume cu al tabelei destinaie, atunci dup un mesaj de avertizare aceasta va fi tears automat, nainte de executarea cererii respective.
Tabelelor create cu cereri de tip Make-Table, nu li se pot seta nici un fel de atribute specifice (de exemplu nu vor avea cheie primar sau cmpuri indexate). Din aceast cauz dac se dorete crearea unei tabele cu anumite caracteristici, se procedeaz n felul urmtor: Se proiecteaz tabela conform dorinei utilizatorului; I se terg toate nregistrrile cu o cerere Delete; nregistrrile se introduc cu o cerere Append.

V-142

Exemplu: Cererea Make-Table din figura alturat este definit tot pe tabela cMiscare, fiind realizat printr-o cerere de selecie cu clauza Totals, n urma creia se vor crea la ieire nregistrri virtuale constituite din trei cmpuri. Deoarece n proprietatea Destination Table, este introdus cuvntul cMake, execuia cererii va crea tabela cu acest nume i va introduce n ea nregistrrile virtuale specificate, ca n figur. V.5 Limbajul de programare Access SQL 60 Limbajul de programare Access SQL sau mai precis Microsoft Jet SQL (prescurtat SQL) este limbajul folosit n aplicaiile Access pentru descrierea cererilor. El este derivat din standardul ANSI SQL-1989 (nivelul 1). SQL este un limbaj de programare formal, neprocedural. n acesta o aciune (program) nu este exprimat procedural printr-un algoritm ci printr-o descriere a acesteia (prin fraze). SQL este de asemenea un limbaj de programare relaional. n SQL aciunile sunt descrise prin intermediul unor operaii de algebr relaional efectuate pe mulimi, reprezentate de tabele. n felul acesta, n SQL, accesarea i prelucrarea tabelelor se face la nivel global i nu prin intermediul parcurgerii pas cu pas a nregistrrilor acestora (acest lucru se poate ns face prin intermediul coleciei de obiecte Recordsets din modelul DAO).
60

De obicei, realizarea aplicaiilor Access nu necesit cunoaterea limbajului de programare SQL. n acest capitol sunt prezentate cteva dintre elementele de baz ale limbajului SQL.
V-143

V.5.1 Instruc iuni (fraze) SQL 61 O cerere este descris printr-un program SQL. Acesta este format din una sau mai multe instruciuni (fraze) SQL (de obicei numai din una). Din punctul de vedere al sintaxei o instruciune SQL este format din cuvinte cheie (ca separator se folosete caracterul spaiu) i liste (n care separatorul este caracterul virgul). Caracterul care se pune la sfritul unei instruciuni SQL este punct i virgul (;). O instruciune SQL este format din una sau mai multe comenzi SQL. O comand descrie o aciune efectuat printr-o cerere. Comenzilor SQL le sunt ataate clauze, prin care se definesc anumite condiii specifice de execuie a acestora. Att comenzile ct i clauzele sunt configurate prin definirea unor parametri. Acetia pot fi: liste de obiecte Access (de exemplu: cmpuri sau tabele); expresii Access; opiuni de execuie (predicate); operatori SQL ntre termenii listelor (sau chiar ntre comenzi sau clauze); V.5.2 Descrierea prin instruc iuni SQL a cererilor 62 V.5.2.1 Cererea Select O cerere Select este definit printr-o instruciune care conine comanda SELECT. Forma acestei instruciuni este:
61 62

Expresiile SQL respect regulile prezentate n Cap. II-6. Convenii de scriere utilizate: parantezele drepte: specific opional; acoladele: specific alegerea unei opiuni din mai multe; caracterul | - se folosete pentru a separa opiunile; sublinierea - se folosete pentru a specifica: implicit;
V-144

SELECT [{ALL | TOP nr. [PERCENT]}] [{ DISTINCT | DISTINCTROW}] list_cmpuri FROM list_tabele [WHERE condiie] [GROUP BY list_cmpuri] [HAVING condiie] [ORDER BY list_ cmpuri]; Comanda SELECT - definete o cerere de selecie. Argumentul acesteia este stabilit de o list de cmpuri i dou predicate. Lista de cmpuri - reprezint practic cmpurile din rndul Field, din formularul de proiectare QBE care au bifat opiunea Show (proiecia subschemei unei cereri, adic cmpurile selecionate pentru ieirea cererii). n aceasta se poate: folosi clauza AS, pentru a specifica numele unui cmp; introduce printr-o expresie cmpuri calculate; Exemplu: SELECT Input AS Inp, Pret, [Input]*[Pret] AS Val Opiunea: {ALL | TOP nr. [PERCENT]} Reprezint proprietatea Top Value a cererii. Opiunea: {DISTINCT | DISTINCTROW} Reprezint setarea uneia dintre cele dou proprieti ale cererii: Unique Value sau Unique Records. n comanda SELECT se pot utiliza urmtoarele clauze: Clauza FROM - utilizat obligatoriu, specific subschema cererii, adic tabele (cereri) i relaiile cu tipul legturii lor. Lista de tabele - reprezint practic rndul Table, din formularul de proiectare QBE. ntre dou tabelele din list se poate introduce operaia {Inner Join | Left Outer Join | Right Outer Join} - prin care se specific tipul de legtur a relaiei dintre cmpurile (clauza ON) acestora.
V-145

Exemplu: FROM tab1 INNER JOIN tab2 ON tab1.cmp operator_relaional tab2.cmp Clauza: IN 'nume_complet_fiier'[tip_baz_date;] Ataat unei tabele reprezint proprietile cererii: Source Database i Source Connect Str (utilizat numai pentru alte baze de date dect Access) prin care se pot utiliza tabele aparinnd unor baze de date externe. Exemplu: FROM tab IN 'C:\Folder1\Aplicatie.mdb' Clauza WHERE condiie - specific criteriul de selecie al cererii, adic rndurile Criteria i Or, din formularul de proiectare QBE. Clauza GROUP BY list_cmpuri - specific pentru o cerere cu rnd de Total, cmpurile de grupare. Clauza HAVING condiie - specific criteriile de selecie ale cmpurilor de ieire ale unei cereri cu rnd de Total. Este similar cu clauza Where. Clauza ORDER BY list_cmpuri - specific cmpurile dup care se face sortarea (rndul Sort din formularul de proiectare). Opiunea: [ASC | DESC] - utilizat dup un cmp specific ordinea de sortare pentru acesta. V.5.2.2 Cererea Crosstab Cererea Crosstab este definit prin o instruciune care conine comenzile specifice: TRANSFORM i PIVOT. Forma ei este: TRANSFORM funcie agregat SQL SELECT list_cmpuri_grupe FROM list_tabele [WHERE condiie] GROUP BY list_cmpuri_grupe [ORDER BY list_cmpuri_grupe]; PIVOT nume_cmp_subgrup [IN (list_valori)] ; Comanda TRANSFORM - definete funcia agregat utilizat de cererea Crosstab (introduce informaiile din cmpul care are n rndul Crosstab din formularul de proiectare QBE, opiunea Value).
V-146

Comanda PIVOT - stabilete numele cmpului care va fi subgrupa cererii Crosstab. Acesta este cmpul care are n rndul Crosstab din formularul de proiectare QBE, opiunea Column Heading). Clauza IN (list_valori) a comenzii Pivot - reprezint proprietatea Column Headings a cererii. Prin datele din argumentul acestei clauzei (lista de valori) se definesc implicit att numrul ct i denumirea coloanelor cererii (valorile comune pe care le ia cmpul pentru subgrup), indiferent de valorile comune ale subgrupei care rezult din execuiile cererii Crosstab. n SELECT i GROUP BY se introduc cmpurile (maxim 3) care vor forma grupele cererii Crosstab (rndurile Row Headings din formularul de proiectare QBE a cererii Crosstab).

V.5.2.3 Cererea Union Cererea Union este definit printr-o instruciune care conine operatorul specific UNION. Forma acestei instruciuni este: Instruciunea SQL Select, nr. 1 UNION [ALL] Instruciunea SQL Select, nr. 2 UNION [ALL] Instruciunea SQL Select, nr. 3; Operatorul UNION - se introduce ntre dou instruciuni SELECT, care au definite aceleai cmpuri la ieire. El realizeaz aa cum s-a mai artat, reuniunea ieirii acestor cereri de selecie. Opiunea ALL - este utilizat cu scopul de a se pstra toate nregistrrile la ieirea cererii, chiar dac ele sunt duplicate. V.5.2.4 Cererea Update Cererea Update este definit printr-o instruciune care conine comanda specific UPDATE. Forma acestei instruciuni este: UPDATE tabel SET lista_noilor_valori [WHERE condiie];
V-147

Comanda UPDATE - stabilete prin argumentul ei numele tabelei n care se vor modifica valorile unor cmpuri (rndul Table din formularul de proiectare QBE a cererii Update). Clauza SET - prin argumentul acestei comenzi, lista_noilor_valori, se precizeaz pentru fiecare cmp care este noua valoarea pe care o va avea (rndurile Field i Update To din formularul de proiectare QBE a cererii Update) n toate nregistrrile selectate (prin clauza Where). Un element din aceast list are forma: nume_cmp = valoare_ nou V.5.2.5 Cererea Delete Cererea Delete este definit printr-o instruciune care conine comanda specific DELETE. Forma acestei instruciuni este: DELETE [tabel.*] FROM list_tabele [WHERE condiie]; Comanda DELETE - stabilete prin argumentul ei (opional n cazul existenei unei singure tabele n subschema cererii) numele tabelei din care se vor terge nregistrrile selecionate prin clauza Where (cmpul din rndul Table corespunztor opiunii From din rndul Delete, din formularul de proiectare QBE a cererii Delete). V.5.2.6 Cererea Append Cererea Append este definit printr-o instruciune care conine comanda INSERT INTO. Forma instruciunii este: INSERT INTO tabel_destinaie [IN baza_date_extern] (list_cmpuri) SELECT list_cmpuri_surs FROM list_tabele_surs [WHERE condiie] [GROUP BY list_cmpuri] [HAVING condiie] [ORDER BY list_ cmpuri];
V-148

Comanda INSERT INTO - stabilete prin argumentele ei: tabel_destinaie - numele tabelei n care se vor introduce nregistrrile selecionate prin comanda SELECT. Reprezint proprietatea Destination Table a cererii Append. Clauza IN - o baz de date extern (numele complet al fiierului) n care eventual se gsete tabela destinaie. Reprezint proprietatea Destination DB a cererii Append. list_cmpuri - lista cmpurilor din nregistrrile tabelei destinaie care vor fi completate cu datele din cmpurile specificate n argumentul lista_cmpurilor_surs a comenzii SELECT. Este evident c aceste dou liste trebuie s corespund att ca numr de cmpuri ct i ca tip de date. Ele reprezint rndurile Append To respectiv Field din formularul de proiectare QBE a cererii Append. V.5.2.7 Cererea Make-Table Cererea Make-Table este definit printr-o instruciune care conine clauza specific, INTO. Forma instruciunii este: SELECT list_cmpuri INTO tabel_destinaie [IN baza date extern] FROM list_tabele_surs [WHERE condiie] [GROUP BY list_cmpuri] [HAVING condiie] [ORDER BY list_ cmpuri]; Clauza INTO - argumentul tabel_destinaie este numele tabelei n care se vor introduce nregistrrile selecionate prin comanda SELECT. Reprezint proprietatea Destination Table a cererii Make-Table. Clauza IN - o baz de date extern (numele complet al fiierului) n care eventual se gsete tabela destinaie. Reprezint proprietatea Destination DB a cererii Make-Table.
V-149

V.5.2.8 Cererea Date-Definition Prin aceste cereri se pot crea, modifica sau terge tabele i indeci. Comanda CREATE TABLE - prin care sunt definite elementele necesare crerii unei tabele. Forma ei este: CREATE TABLE nume_tabel (list_cmpuri); Un element din list_cmpuri are urmtoarea form: Nume_cmp Tip_dat63 [(Size)] [NOT NULL] Opiunea Size se folosete la tipul de date Text. Opiunea NOT NULL - reprezint proprietatea Required a unui cmp. Comanda CREATE INDEX - prin care sunt definite elementele pentru crearea unui index unui cmp64 al tabelei. Forma ei este: CREATE [UNIQUE] INDEX nume_index ON nume_tabel (list_cmpuri) [WITH {PRIMARY| DISALLOW NULL | IGNORE NULL}]; Opiunea UNIQUE specific ca s nu fie acceptate n cmpul indexat date duplicate. Clauza WITH permite definirea pentru cmpul indexat a uneia din urmtoarele trei posibiliti: PRIMARY - cmpul indexat va fi cheie primar pentru tabel (Opiunea UNIQUE devine implicit); DISALLOW NULL - nu sunt acceptate n cmpul respectiv valori NULL; IGNORE NULL - sunt acceptate n cmpul respectiv valori NULL;
63

64

Numele tipurilor de date utilizate n SQL sunt puin diferite de cele utilizate n Access. Folosii tabela de coresponden ntre cele dou tipuri de date pentru a completa cmpul Tip_dat. Un index se poate crea i pe mai multe cmpuri ale tabelei.
V-150

Comenzile DROP TABLE i DROP INDEX - permit tergerea unei tabele sau a unui index al unei tabele. Forma lor este: DROP TABLE nume_tabel; DROP INDEX nume_index ON nume_tabel; Corespondena ntre tipurile de date din Access i SQL Access Byte Integer Long Integer Auto Number Single Double Long Counter Single Double SQL Byte Short Access Currency Date/Time Yes/No Text Memo OLE Object SQL Currency DateTime Boolean Text LongText LongBinary V.6 Structura colec iei de obiecte QueryDefs Structura fiecrei cereri' salvate ntr-o baz de date, se gsete ntr-un obiect numit QueryDef. Colecia tuturor cererilor se numete QueryDefs, se gsete n DAO, are pe Database ca obiect superior i este constituit din obiecte de tip QueryDef (cte unul pentru fiecare cerere). Ea formeaz urmtoarea arhitectur ierarhic:
cValoare QueryDefs cExMake Fields Parameters DenProdus Data

etc
pTVA

etc Legend = colecie de obiecte = obiect

V-151

Cap.VI Obiecte Access. Macro-comanda


O macro-comand (prescurtat macro) reprezint o secven de aciuni care se pot efectua la execuia acesteia. Aciunile care se pot introduce ntr-o macro-comand sunt selectate dintr-o list, care cuprinde practic orice comand aflat n meniurile Access. De asemenea n macro-comenzi, execuia unei anumite aciuni se poate condiiona printr-o expresie logic. Deci macro-comenzile permit execuia unor aciuni (similare instruciunilor unui program) care pot fi introduse n structuri de control secveniale sau alternative65. Totui macro-comenzi nu permit revenirea la o aciune deja efectuat. Din aceast cauz n macro-comenzi nu pot fi implementate structuri de control repetitive. n acest fel, echivalnd aciunile unor macro-instruciuni, putem considera o macro-comand ca pe o modalitate deosebit de simpl de realizarea a unui pseudo-program. VI.1 Crearea macro-comenzilor Pentru crearea sau modificarea unei macro-comenzi se folosete o machet de proiectare (lansat din fereastra Database, pagina Macros, prin acionarea butoanelor New respectiv Design), care datorit facilitilor oferite, permite i unor nespecialiti n informatic realizarea unor asemenea obiecte (pseudo-programe). Aa cum se observ i din figura de mai jos, macheta macro, este mprit n patru zone de lucru.
65

Un limbaj de programare procedural trebuie s asigure execuia unor instruciuni n trei structuri de control, i anume: secvenial - una dup alta n ordinea n care sunt introduse; alternativ - execuia unui grup de instruciuni este dependent de evaluarea unei condiii; repetitiv - un grup de instruciuni se pot executa de mai multe ori n funcie de evaluarea unei condiii
VI-152

1) Zona de introducere a macro-instruciunilor (stnga sus) este format din mai multe rnduri n care acestea se pot selecta dintr-o list derulant. 2) Zona de comentarii a macro-instruciunilor (dreapta sus) are numai un rol de documentare.

3) Zona de configurare a unei macro-instruciuni (stnga jos) se utilizeaz pentru introducerea argumentelor macro-instruciunii care este selectat n zona 1. Majoritatea acestor argumente au ataate liste derulante sau wizard-uri. 4) Zona de help (dreapta jos) ofer informaii despre activitatea desfurat (determinat de locul unde se afl focusul).

Salvarea i stabilirea numelui unei macro-comenzi se face la fel ca i la celelalte obiecte de rang superior din fereastra Database.

VI.1.1 Macro-instruc iuni Sunt prezentate n continuare principalele macro-instruciuni: OpenForm, OpenReport, OpenQuery, OpenTable, OpenModule permit deschiderea obiectului Access specificat. Close nchid un obiect Access precizat n argument (Form, Report, Query, Table, Module).
VI-153

DeleteObject terge un obiect Access, precizat n argument (Form, Report, Query, Table, Module). TransferDatabase, TransferSpreadsheet, TransferText export/import obiecte ntre MS Access i MS Access, MS Excel sau MS-DOS text. Maximize mrete la maxim fereastra activ. Minimize micoreaz i plaseaz pe bar fereastra activ. GoToRecord permite ca ntr-o tabel, formular sau cerere, s se mute cursorul nregistrrii curente pe o anumit nregistrare. GoToControl permite ca ntr-o tabel, formular sau cerere, s se mute focusul pe un anumit control (cmp) din cadrul nregistrrii curente. FindRecord permite poziionarea pe prima nregistrare care respect un criteriu de selecie. FindNext permite poziionarea pe urmtoarea nregistrare care respect un criteriu de selecie. RunCommand permite execuia unei comenzi Access care se gsete pe bara de meniuri, pe toolbar sau n meniul contextual. RunMacro, RunSQL permite execuia unui Macro sau a unei cereri aciune. Hourglass transform cursorul ntr-o clepsidr. SetWarnings anuleaz mesajele care apar la execuia unei aciuni. SelectObject permite setarea focusului pe un obiect Access care l poate primi, fcndu-l eventual i vizibil. CopyObject permite copierea unui obiect de date n aceeai (cu alt nume) sau alt aplicaie Access. Save permite salvarea unui obiect Access n diferite formate (vezi comanda Save As din meniul File) SendObject permite ataarea unor date Access (datasheet, form, report, module) la un e-mail.
VI-154

OutputTo permite trimiterea unor date Access (datasheet, form, report, module) n fiiere de tip Excel(*.xls), text(*.txt), rich-text(*.rtf), HTML, MS ActiveX Server (*.asp) etc. Restore permite restaurarea la dimensiunea anterioar a unei ferestre maximizate sau minimizate. Dac o fereastr este minimizat, nainte de aplicarea metodei Restore, trebuie selectat cu SelectObject. Quit provoac ieirea din MS Access, cu eventuala salvare a obiectelor modificate. Requery efectueaz metoda requery pentru un control specificat n argumente. Rename redenumete un obiect de date. ApplyFilter permite aplicarea unei selecii asupra unor nregistrri, printr-un filtru, cerere sau clauza SQL Where. ShowAllRecords elimin selecia produs prin ApplyFilter. Beep emite un semnal sonor. Echo permite sau nu afiarea mesajelor sistem (Echo) pe bara de stare. Dac Echo este off, atunci se poate plasa un text propriu pe bara de stare. CancelEvent permite anularea evenimentului care a produs execuia acestei aciuni. ShowToolbar face On/ Off un anumit toolbar. MsgBox - afieaz o caset cu un mesaj. VI.1.2 Condi ionarea execut rii macro-instruc iunilor Din macheta de proiectare a unei macrocomenzi se poate activa afiarea n Zona 1 a coloanei Conditions, prin meniul View. n coloana Conditions, dac se introduce o condiie, atunci executarea macro-instruciunii corespunztoare se efectueaz numai dac evaluarea condiiei respective este TRUE. Introducerea a trei puncte n coloana Conditions este echivalent cu repetarea condiiei din rndul superior.

VI-155

Exemplu: Macro-comanda din figura alturat va executa prima respectiv a doua macro-instruciune MsgBox n funcie de valoarea ntoars de funcia Stare (True sau False). VI.2 Macro-grupuri Un macro-grup este format dintrun grup de macro-instruciuni. Acordarea unui nume macro-grupului se face astfel: Activarea din macheta de proiectare, a coloanei Macro Name (n zona 1) prin meniul View. Introducerea n aceast coloan, corespunztor primei macro-instruciuni din grup a numelui macro-grupului. Execuia unui macro-grup se face prin numele acestuia calificat (semnul .) cu numele macro-comenzii n care este definit. Dac se lanseaz o macrocomand (n exemplu mesaj), care conine mai multe macro-grupuri, atunci se va executa numai primul dintre acestea (n exemplu - prima).

Exemplu: n figura alturat sunt create trei macro-grupuri n macrocomanda mesaj. Pentru a se executa macro-grupul trei (salveaz obiectele deschise i nchide aplicaia) se va activa din meniul: Tools | Macro | Run Macro - mesaj.trei VI.2.1 Macro-comanda AutoKeys Dac se creeaz o macro-comand, creia i se d numele AutoKeys, format din mai multe macro-grupuri, al cror nume este o expresie care reprezint o combinaie de taste (vezi tabelul),
VI-156

atunci, indiferent de locul n care este focusul, tastarea combinaiei respective va determina execuia macro-grupului respectiv. Expresiile utilizate n Access pentru combinaiile de taste Expresie Combinaie de taste
CTRL + orice liter sau cifr {F1} orice tast Fn ^{F1} CTRL + tast Fn +{F1} SHIFT + tast Fn {INSERT} INS ^A or ^4

Expresie
^{INSERT} +{INSERT} {DEL} ^{DEL} +{DEL}

Combinaie de taste
CTRL + INS SHIFT + INS DEL CTRL + DEL SHIFT + DEL

Combinaiile de taste introduse prin AutoKeys, vor nlocui cnd aplicaia este lansat, pe acelea setate n Access sau Windows. (de exemplu dac se introduce n AutoKeys, un macro-grup cu numele CTRL C, atunci prin aceast combinaie de taste nu se va mai efectua comanda de copiere n clipboard a obiectului selectat).

Exemplu: Datorit macrocomenzii AutoKeys din figura alturat, dac se va tasta combinaia: CTRL Q: se execut cererea cValoare (prin macro-instruciunea OpenQuery); SHIFT F7: se deschide n Datasheet tabelul cProduse (prin macro-instruciunea OpenTable); F7: se execut cererea cExTotal (prin macro-instruciunea OpenQuery); Dac exist o macro-comand cu numele AutoExec, atunci aceasta va fi executat automat la fiecare lansare a aplicaiei.

VI-157

Cap.VII Obiecte Access - Formularul


Formularul i raportul sunt obiectele de rang superior specializate n prezentarea datelor, pe monitor respectiv imprimant, ntr-o aplicaie Access. Din punct de vedere structural i funcional cele dou obiecte sunt foarte asemntoare. Diferenia esenial dintre aceste obiecte, determinat de natura perifericului utilizat, este aceea c formularul, fa de raport care nu permite dect prezentarea datelor, ofer i posibilitatea de actualizare a datelor prezentate, ceea ce de altfel reprezint funcia sa principal. Deci din punctul de vedere a interfeei aplicaiei cu utilizatorul: Formularul este un obiect de intrare - ieire; Raportul este numai un obiect de ieire; VII.1 Prezentarea general a unui formular VII.1.1 Rolul formularului Rolul unui formular depinde de relaia existent ntre acesta i tabelele bazei de date. Din acest punct de vedere sunt: Formulare legate de tabelele bazei de date Acestea permit vizualizarea i actualizarea datelor din una sau mai multe tabele, direct sau prin intermediul unei cereri de selecie. De asemenea formularele conin elemente performante de asistare (ndrumare) a utilizatorului n funcie de contextul de lucru. Termenul folosit pentru a defini un obiect care este configurat n funcie de un anumit context este personalizare. Formularele reprezint obiecte care permit un grad ridicat de personalizare. Se poate considera un formular legat, ca pe un obiect care faciliteaz operaiile de actualizare a datelor din tabelele unei baze de date, permind n primul rnd accesarea prin intermediul unor obiecte - numite controale - a cmpurilor tabelelor respective.
VII-158

Deoarece un formular se poate lega prin intermediul unei cereri de selecie de mai multe tabele, ar trebui folosit termenul de subschema formularului. Totui, pentru simplificare se va folosi n continuare noiunea de formular legat de o tabel. Deci, putem considera: Formularul ca pe obiectul care permite legarea de o tabel; Controlul ca pe obiectul care permite legarea de cmpurile tabelei respective.

Formulare nelegate Acestea sunt folosite n special n gestionarea asistat a modulelor aplicaiei, permind utilizatorului lansarea n execuie a unor formulare, rapoarte, cereri aciune, macro-comenzi, secvene de cod de program, etc. Un asemenea formular reprezint practic un obiect cu ajutorul cruia se pot activa dintr-o aplicaie Access, n general prin intermediul unor controale specializate numite butoane de comand (evident nelegate), a unor obiecte din respectiva aplicaie sau din afara ei (de pe platforma Windows). Acelai lucru se poate face i prin crearea unui meniu personalizat al aplicaiei.

VII.1.2 St rile unui formular Aa cum se observ din figura alturat, un formular se poate afla n trei stri. De obicei se folosesc urmtoarele dou forme: Design View - n proiectare; Form View n execuie; Trecerea de la o stare la alta se poate face prin meniul contextual sau prin pictograma specific de pe ToolsBar. VII.1.3 Sec iunile unui formular De obicei un formular are 3 seciuni (sau pri), opionale:
VII-159

Form Header Reprezint partea de nceput a unui formular. Apare o singur dat i va fi prezent tot timpul n partea superioar a ferestrei formularului. Se folosete de obicei numai la formularele continue(*5), pentru a afia capul de tabel al formularului. Form Footer - Reprezint partea de sfrit a unui formular. Apare o singur dat i va fi prezent tot timpul n partea inferioar a ferestrei formularului. Se folosete de obicei, pentru a introduce n formulare: controale buton de comand pentru lansare unor comenzi, sau controale de afiare a unor informaii de sintez. Detail Este cea mai important seciune a unui formular. Ea se repet, n execuia formularului, pentru fiecare nregistrare a tabelei legate la formular. Deci la execuia unui formular vor exista un numr de seciuni detail egal cu numrul de nregistrri ale tabelei ataate formularului. n aceast seciune se vor introduce controale pentru date (n exemplul afiat, TextBox -DenProdus- sau ComboBox -UM-), care vor fi legate la cmpurile tabelei formularului, n triplu scop i anume: Vizualizarea datelor din cmpurile nregistrrilor tabelei legate la formular; Modificarea acestor date; Adugarea de noi nregistrri n tabela legat la formular, prin completarea pentru o nregistrare nou (marcat cu semnul *) a datelor din cmpuri; inndu-se seama i de posibilitatea tergerii de nregistrri care se efectueaz prin selectarea nregistrrilor (obiectul Record
VII-160

Selectors din faa fiecrei nregistrri) urmat de tergerea acestora (prin tasta DEL sau pictograma specific)- se observ c printr-un formular se poate vizualiza sau actualiza tabela legat de acesta. Seciunea de detail activ este aceea care are la un moment dat focusul ntr-un formular n execuie (n aceasta se pot accesa cmpurile unei nregistrri).

VII.1.4 Tipuri de formulare n funcie de numrul de zone de detail deci de nregistrri ale tabelei legate la formular - care se pot vizualiza n acelai timp n fereastra formularului, acestea pot fi: Continous Forms(*5) sau Tabular Form, care prezint toate nregistrrile n mod continuu, n scroll, n aa fel nct ntr-o fereastr vor apare mai multe seciuni detail - i anume attea cte ncap. Este cel mai indicat tip de formular, pentru introducerea de date, cu condiia ca numrul de cmpuri s nu fie prea mare sau de mari dimensiuni (practic este bine ca toate cmpurile s ncap pe o linie a formularului). Single Form sau Columnar Form se caracterizeaz prin aceea c n fereastra formularului nu se va afia dect o nregistrare (o singur seciune de detail se poate vedea la un moment dat). Este folosit n general pentru introducerea de date n tabele cu un numr mare de cmpuri (sau cmpuri de dimensiuni mari) care nu ncap pe o linie a formularului. Stabilirea tipului formularului se face prin proprietatea, Default View. Aceasta este practic prima proprietate care se configureaz la proiectarea unui formular nou. VII.1.5 Structura unui formular 66 Aa cum s-a artat ntr-un formular se gsesc seciuni, iar n acestea sunt controale (legate de cmpuri sau nelegate).
66

n foarte marea msur, ceea ce se prezint n acest capitol, este valabil i pentru obiectul de rang superior raport.
VII-161

Att formularul (form), ct i seciunile i controalele sunt obiecte. Ele provin din clase de obiecte, avnd definite proprieti, metode i evenimente. Configurarea acestor caracteristici, determin obinerea unor obiecte cu un grad ridicat de personalizare. VII.1.5.1 Personalizarea obiectelor utilizate n formular prin propriet i metode i evenimente Personalizarea reprezint posibilitatea de adaptare a caracteristicilor unui obiect funcie de contextul n care este folosit. Gradul de personalizare al obiectelor este determinat n special de dou aspecte: Complexitatea setului de proprieti pe care l are respectiva clas de obiecte, ceea ce permite ca prin atribuirea de valori acestora, s se obin obiecte adaptabile la o multitudine de contexte n care pot fi folosite. Definirea pentru obiectul respectiv a unui set numeros de evenimente, care permit declanarea la producerea lor a unor aciuni (metode), care sunt stabilite la proiectarea formularului. Explicaie: Un eveniment al unui obiect reprezint o aciune extern (din afara sistemului) sau intern (determinat de execuia unei metode) produs asupra acelui obiect, pe care acesta o sesizeaz i la care poate reaciona numai n cazul n care n prealabil s-a creat o metod specific evenimentului, prin execuia acesteia (se efectueaz o aciune). Exemplu: Un eveniment extern este micarea mouseului, clic sau dublu clic cu mouseul sau apsarea pe o tast cnd focusul se afl pe un obiect (un formular, o caset de text, un buton de comand etc.) iar un eveniment intern este apariia unei erori n execuia unei metode sau scurgerea unui anumit interval de timp.

VII-162

Adaptabilitatea la contextul de folosire al obiectului respectiv se datoreaz i faptului c aciunile (metodele) respective, prin felul n care pot fi create, ofer practic orice fel de posibilitate de prelucrare. Astfel, metodele ataate evenimentelor pot fi create n trei feluri, funcie de complexitatea lor: 1) Prin introducerea unei expresii67. n acest caz la producerea evenimentului respectiv se evalueaz (execut, calculeaz) expresia. 2) Prin folosirea oricrei macro-comenzi (sau macro-grup) din fereastra Database. n acest caz la producerea evenimentului respectiv se va executa automat aceast macro-comanda. Exemplu: n formularul prezentat anterior, exist un control, buton de comand, n care, n faza de proiectare, la evenimentul clic s-a ataat macro-grupul mesaj.trei (prezentat ntr-un exemplu de la cap. VI i care nchide aplicaia Access). Astfel, dac atunci cnd formularul este n execuie, se va face clic cu mouseul pe butonul de comand, atunci aplicaia se va termina. 3) Prin folosirea unei proceduri eveniment scris n limbajul VBA. n acest caz la producerea evenimentului respectiv se va executa automat secvena de cod a acestei procedurii eveniment. Explicaie: n VBA, codul de program, indiferent de locul unde se gsete, nu este ca n programarea clasic o secven de instruciuni care au un nceput i un sfrit i care reprezint aciunile pe care le va efectua sistemul de calcul ntr-o ordine precis, stabilit (programare continu), ci este format din module (rutine) care se execut numai la producerea asupra obiectelor aplicaiei Access a
67

Reamintim c la scrierea expresiilor se pot folosi ca termeni printre altele i datele din obiecte (de exemplu controalele legate) sau funciile utilizator i standard. Pentru utilizarea acestora de un real ajutor este constructorul de expresii.
VII-163

unor evenimente (programare discontinu). Din aceast cauz aceste rutine se numesc proceduri eveniment. VII.1.5.2 Polimorfismul obiectelor utilizate n formular S-a artat pn acum c obiectele utilizate n formulare, adic controalele, seciunile i chiar formularul, dispun de o mare varietate de posibiliti de configurare. Aceast constatare ar putea conduce la concluzia c activitatea de configurare a acestor obiecte ar fi foarte specializat, cu particulariti unice pentru fiecare tip de obiect, ceea ce nu este totui adevrat datorit unei caracteristici a acestor obiecte, i anume polimorfismul. Polimorfismul este caracteristica unui grup de obiecte, de a prezenta utilizatorului o interfa foarte asemntoare pentru configurarea acestora. Acest lucru se realizeaz n principal prin intermediul unui control de tip tab ce se utilizeaz n faza construirii obiectului. Acest control va apare la solicitarea proprietilor obiectului, din meniul contextual sau prin pictograma specific proprietilor (vezi figura) de pe ToolsBar. Aa cum se vede i din figura controlului tab, acesta este format dintr-o caset cu 4 pagini, utilizat pentru configurarea obiectului respectiv (nu s-a evideniat a cincia pagin All - deoarece ea reprezint numai o regrupare a celorlalte 4 pagini) care au urmtorul rol: Proprietile obiectului se gsesc grupate dup rolul lor n trei pagini, i anume: Pagina Format cuprinde proprietile referitoare la modul de prezentare a obiectului, ca de exemplu dimensiunile acestuia sau dac este sau nu vizualizat.
VII-164

Pagina Data cuprinde proprietile referitoare la datele cu care lucreaz obiectul. Astfel pentru obiectul formular, exist Record Source, adic proprietatea prin care se indic tabela de care se leag formularul, iar pentru un control tip Text Box, proprietatea Control Source care desemneaz cmpul (din tabela legat la formular) de care se leag respectivul control. Pagina Other - conine restul proprietilor obiectului, cea mai important fiind Name, care reprezint numele acestuia, necesar atunci cnd este referit (n VBA, n macro-comenzi sau n expresii (de exemplu se poate referiri un control din formular ntr-o expresie aflat ntr-o cerere). Exist o excepie, i anume la obiectul formular (form) numele acestuia nu se gsete n pagina Other. Stabilirea numelui formularului se face dup crearea unui formular nou iar modificarea acestuia, n fereastra Database la fel ca i la tabele, cereri sau macro-comenzi. Acesta este foarte important deoarece se va folosi pentru a se face referire la acest obiect de oriunde, dar evident calificat dac este necesar. Pagina Event grupeaz toate evenimentele definite pentru obiectul respectiv. Ea este folosit pentru ataarea la un eveniment a unei metode, realizat dintr-o procedur eveniment (scris n VBA Visual Basic for Application), sau dintr-o macro-comand sau dintr-o expresie. Construirea acestei metode, care se va declana la producerea evenimentului respectiv, poate fi asistat de un Wizard.

VII.1.5.3 Natura obiectelor utilizate n formular n Access, obiectele utilizate n formulare - controale, seciuni sau obiectul form - pot fi proprii sau transferate prin diferite tehnologii de la alte aplicaii numite aplicaii server. n continuare se prezint succint, din punct de vedere al principiilor, aceste tehnologii.

VII-165

ActiveX Un ActiveX este un obiect independent care poate fi folosit i personalizat ntr-o aplicaie (client), fr ns a mai fi necesar prezena aplicaiei (server) care l-a creat. n Windows, exist anumite sisteme de programare de exemplu Visual Basic, Visual C sau Delphi - care permit crearea acestor obiecte, numite aplicaii server. Alte aplicaii pot numai folosi un obiect de tip ActiveX (ca de exemplu Access). Acestea se numesc aplicaii client. Unele dintre obiectele ActiveX, cum este un control de exemplu, chiar dac sunt utilizate de o aplicaie, poate avea o existen de sine stttoare, executndu-se n general n propriul lor fir de execuie, pe cnd alte obiecte de acest tip, constituite sub forma unor biblioteci, nu pot exista dect n aplicaia care le folosete. Obiectele din care sunt create formularele sunt obiecte ActiveX. Explicaie: Fir de execuie Orice sistem de calcul are n componen un procesor prin care sunt executate instruciunile unei aplicaii. Dac sistemul este multitask procesorul trebuie s execute simultan instruciuni din mai multe aplicaii. Pentru a face acest lucru se folosete de obicei procedeul time-sharing. Prin acesta se mparte timpul procesorului n cuante de timp i se repartizeaz acestea - funcie de o anumit politic de prioriti - fiecrei aplicaii. De exemplu dac sunt 3 aplicaii n execuie, atunci n cuanta 1 de timp se va executa aplicaia 1, n cuanta 2 aplicaia 2, n cuanta 3 aplicaia 3, dup care n cuanta 4 se va relua execuia aplicaiei 1 .a.m.d. Viteza procesorului fiind mult mai mare dect a celorlalte componente ale sistemului de calcul, practic un numr rezonabil de aplicaii pot fi executate simultan fr a se micora simitor viteza de execuie a acestora. n acest caz spunem c fiecare aplicaie are propriul ei fir de execuie. Acesta n afara timpului de
VII-166

calcul, va conine i alte resurse ale sistemului de calcul care se vor partaja ntre aplicaii (de exemplu memoria de lucru). Transferul de obiecte n Windows. Practic, se poate considera un ActiveX ca pe un obiect care se transfer dintr-o aplicaie server la o aplicaie client, printr-o anumit tehnologie, numit Automation care reprezint un standard. Acest procedeu este cel mai nalt nivel de transmitere a informaiilor ntre aplicaiile care funcioneaz pe o platforma Windows. Pe platforma Windows mai exist dou nivele de transmitere a obiectelor (utilizate i n aplicaiile Access), i anume: Transferul simplu care se poate efectua prin dou metode, i anume: prin Cut sau Copy68 la surs, urmat de Paste la destinaie, care se realizeaz prin intermediul memoriei clipboard; direct prin tragerea obiectului cu mouseul de la surs la destinaie (procedeul Drag and Drop); Transferul OLE, realizat prin Cut sau Copy la surs i Paste Special la destinaie, care permite odat cu transferul obiectului ntre aplicaii i posibilitatea de a activa respectivul obiect, la noua destinaie, prin lansarea n execuie a aplicaiei care l-a creat. n funcie de felul n care se face transferul sunt: Transfer ncapsulat (embedded), care copiaz efectiv obiectul la noua destinaie. Transfer prin legtur (linked), care nu transfer obiectul ci numai adresa acestuia, permind accesul la obiectul original prin aceasta. Exemplu: Dac ntr-o tabel, ntr-un cmp exist un obiect OLE multimedia (de exemplu de tip AVI) i dac se face dublu clic pe el,
68

Copy, se utilizeaz la copierea obiectului (dup operaie obiectul rmne i la surs) - iar Cut, la mutarea obiectului (obiectul este ters de la surs).
VII-167

atunci se lanseaz n interiorul aplicaiei Access, aplicaia multimedia desemnat n sistemul de operare s gestioneze obiecte de tip AVI (de exemplu aplicaia Media Player) VII.1.6 Utilizarea controalelor n formulare Scopul crerii formularelor este n general acela de a oferi utilizatorului, o modalitate asistat de ntreinere a datelor din baza de date. Pentru aceasta se au n vedere urmtoarele aspecte: informarea utilizatorului asupra aciunilor pe care le are de efectuat; limitarea la maximum a posibilitilor utilizatorului de a strica ceva; folosirea unor obiecte semi-standardizate, ceea ce ofer utilizatorilor care lucreaz pe platforma Windows a unor comenzi i aplicaii cu interfee utilizator asemntoare, permindu-se astfel o implementare rapid i comod a aplicaiilor noi. Realizarea acestui lucru este determinat n mare parte prin folosirea de ctre diferite aplicaii, indiferent de limbajul n care sunt create, a acelorai controale (de exemplu controlul Common Dialog prin intermediul cruia se realizeaz comenzi de genul Open, Save sau Save As). n Access plasarea controalelor n formular, se realizeaz prin intermediul unei bare, numit caseta de instrumente ToolsBox (vezi pictograma acesteia). Vizualizarea ToolsBox, se poate face atunci cnd formularul este n Design, prin folosirea pictogramei specifice de pe bara cu pictograme (ToolsBar) sau direct din meniul View | ToolsBox. Dei implicit ToolsBox conine cele mai utilizate controale necesare n proiectare, exist posibilitatea reconfigurrii acesteia. Din punctul de vedere al modalitii de utilizare, controalele se pot mpri n patru grupe, i anume: Controale legate la cmpurile tabelelor sau cererilor ataate formularelor de exemplu Text Box sau listele derulante Combo Box sau List Box.
VII-168

Controale de prezentare a unor informaii text, grafice, desene (poze) etc. de exemplu Label, "Line", Image. Controale de lansare a unor comenzi de exemplu Command Button. Evident un asemenea control se va utiliza n formulare dar nu i n rapoarte. Controale invizibile de exemplu Common Dialog, controale multimedia (pentru sunete sau imagini filmate) - care permit prin activarea lor anumite aciuni specifice. Access folosete n proiectare i n execuie, meniuri i bare cu pictograme. Implicit, acestea sunt configurate variabil, funcie de locul n care sunt folosite. De asemenea utilizatorul poate s le modifice sau s creeze altele noi, folosind comanda Customize, care se gsete n View | ToolBars. Access folosete urmtoarele bare pentru lansarea comenzilor: Menu Bar meniurile folosite de aplicaie. ToolsBars Bare de pictograme cu cele mai importante comenzi, grupate pe categorii de exemplu ToolBox, Formatting, Database etc. Shortcut Menu Bar meniul contextual al obiectelor, care se lanseaz prin efectuarea unui clic dreapta pe obiectul respectiv. Plasarea controalelor pe formular, asistat de un wizard, se face prin selecia din ToolsBox, prin clic, a pictogramei care reprezint controlul respectiv, urmat imediat de eliberarea butonului mouseului (deci NU ca la "Drag and Drop"), ceea ce va duce la ataarea de cursorul mouseului a unei pictograme, care reprezint controlul respectiv. n continuare se aduce cursorul pe formular n poziia dorit i se plaseaz controlul printr-un nou clic. Controalele sunt configurate implicit cu anumite proprieti. Acestea se gsesc n obiectul Default Control al controlului respectiv i se pot vizualiza i eventual reconfigura. Activarea obiectului Default Control se face n felul urmtor selectarea controlului respectiv pe ToolsBox; acionarea pictogramei de proprieti;
VII-169

n figura de mai jos este prezentat caseta cu instrumente: Controalele de pe ToolsBox


Selectorul de controale de pe ToolsBox / tot timpul este apsat. Wizard pentru asistarea configurrii anumitor controale / se ine apsat. Text Box (caseta de text) - pentru vizualizare sau introducere de text / se poate lega de orice tip de cmp. Label (eticheta) - numai pentru afiare de informaii / nu se poate lega. Option Group (grup de opiuni) - conine mai multe controale booleene, din care numai unul se selecteaz / se poate lega de cmpuri numerice ntregi (*6) Toggle button - buton boolean cu 2 stri : apsat / neapsat - se leag de cmpuri booleene sau numerice ntregi, pozitive i negative (deci nu byte) Option button buton radio boolean / se folosete la fel ca Toggle button Check Box (caset de validare) - tip boolean / la fel ca Toggle button Combo Box (list ascuns) - datele se pot introduce i prin preluarea dintro list ascuns / se poate lega de orice cmp. List Box (list derulant). - datele se pot introduce i prin preluarea dintr-o list desfurat / se poate lega de orice cmp. Command Button (buton de comand) - folosit pentru lansarea unor aciuni / nu se leag de cmpuri. Image Button pentru afiarea de imagini de diferite tipuri din fiiere / sunt aduse prin metoda OLE, ncapsulate sau legate. Unbound Object Frame pentru obiecte nelegate. Bound Object Frame pentru obiecte legate de cmpuri Page Break - control invizibil / salt la pagin nou / nu se leag de cmpuri. Tab Control are mai multe pagini pe care se pot plasa controale / nu se leag de cmpuri Control pentru subformulare. Line Control - control grafic, nelegat. Rectangle Control - control grafic, nelegat. de pe platforma Windows, dup care Afieaz toate controale ActiveX se poate selecta i plasa n formular sau pe aceast bar (pentru utilizare). ActiveX - Calendar Control. ActiveX - Spin Button. ActiveX - Common Dialog. ActiveX - Progress Bar. ActiveX - Microsoft Data and Time Control.
(*6)

Butoanele booleene pot fi setate i cu trei stri: False, True i Null, prin proprietatea Triple State din pagina Data, caz n care n ele nu mai pot fi utilizate dect date de tip numeric ntreg pozitive i negative (integer sau longinteger).

(*6)

VII-170

Controalele ActiveX (se gsesc n fiiere cu extensia OCX) trebuiesc nregistrate. Acest lucru se face prin comanda Tools|ActiveX i se datoreaz faptului c un ActiveX reprezint de fapt - aa cum am mai artat - o aplicaie independent. Access are n componen un wizard pentru realizarea automat a formularelor, care va solicita informaii referitoare la: tabela sau cererea legat de formular; cmpurile care se vor introduce n formular; tipul formularului: columnar sau tabular; stilul de prezentare; Folosirea acestui wizard va duce la preluarea de ctre controalele legate a proprietilor cmpurilor respective setate la crearea tabelelor, precum i stabilirea ntr-un mod unitar a proprietilor implicite ale controalelor, funcie de stilul folosit. Dup aceast activitate, care dureaz cteva minute, se poate interveni direct pentru a reconfigura, acolo unde este cazul, proprietile formularului i a obiectelor pe care le conine. Aceast metod de proiectarea a unui formular nou (prin wizard i retuare este recomandat fiind foarte eficient. VII.1.7 Utilizarea propriet ilor, metodelor i evenimentelor obiectelor din formulare Aa cum s-a artat, prin meniul contextual sau prin acionarea pictogramei de proprieti a obiectului selectat formular, seciune sau control se lanseaz caseta tab cu proprietile i evenimentele obiectului respectiv. Cteva dintre caracteristicile acestora sunt prezentate n continuare: 1) Proprietile pot fi modificate n dou moduri: Static - n faza de proiectare, Design View; Dinamic - n timpul execuiei formularului, Form View, prin secvene de cod VBA.
VII-171

(*7)

2) Exist i anumite proprieti ale obiectelor, numite dinamice, care nu pot fi setate dect atunci cnd formularul este n execuie i care nu sunt incluse n caseta tab cu caracteristici. Acestea, ca i metodele obiectelor se gestioneaz prin cod VBA sau prin macro-comenzi. 3) Exist un mare numr de proprieti, metode i evenimente (85%) comune mai multor obiecte. Ele vor avea acelai nume. 4) Numele proprietilor care conin spaii, cnd se folosesc n codul VBA, se scriu fr acestea. 5) Aproape toate proprietile au liste ascunse sau wizard-uri (existena acestora este semnalizat cu trei puncte) care nlesnesc configurarea lor. VII.2 Obiectul FORM VII.2.1 Structura colec iei de obiecte Forms Un obiect Form reprezint un formular deschis. El face parte din colecia Forms, care se gsete n Application-Access. El are proprieti, metode i evenimente (la care se pot ataa metode). Un obiect Form conine o colecie de controale numit Controls, format din obiecte Control. Forms colecia formularelor deschise Produse Legend
Obiecte Colecii
Controls

CodProdus UM Pret

VII-172

VII.2.2 Propriet ile formularului Majoritatea proprietilor formularului se pot accesa att static (prin cele 3 pagini ale controlului tab al formularului) ct i dinamic, prin cod VBA. VII.2.2.1 Numele formularului Stabilirea numelui formularului se face dup crearea unui formular nou iar modificarea acestuia, n fereastra Database la fel ca i la tabele, cereri sau macro-comenzi. VII.2.2.2 Pagina FORMAT Cele mai utilizate proprieti din aceast pagin, referitoare la forma de prezentare a formularului, sunt: Caption Titlul formularului. Apare n bara de titlu a acestuia. Nu trebuie confundat cu numele formularului. Implicit, dac proprietatea nu este completat, numele formularului se va folosi i ca titlu. Default View Tipul formularului, care poate fi Continous (mai multe nregistrri pe pagin) sau Single (o nregistrare pe pagin). Scroll Bars Specific dac exist sau nu bare de derulare, orizontale i/sau verticale. Record Selectors Specific dac exist sau nu n stnga nregistrrii, buton de selecie a acesteia.
VII-173

Navigation Buttons Specific dac exist sau nu n partea de jos a formularului butoane pentru accesarea anumitor nregistrri. Prin acesta se poate ajunge la: prima sau la ultima nregistrare a formularului (se consider ordinea de afiare i nu aceea a plasrii fizice a nregistrrilor n tabelele legate); nregistrarea precedent sau urmtoare; o nou nregistrare n vederea adugrii; De asemenea se afieaz numrul curent al nregistrrii, cte nregistrri sunt n formular i dac formularului i se aplic un filtru de selecie. Dividing Lines Specific dac exist sau nu linii de separare a nregistrrilor. Auto Resize Specific dac formularul i modific forma, prin tragere, dac se recalculeaz sau nu dimensiunile obiectelor care sunt cuprinse n acesta. Auto Center Specific dac se poziioneaz sau nu formularul la mijlocul ecranului. Border Style exist urmtoarele posibiliti: Sizable Formularul poate fi maximizat, minimizat sau i se poate schimba forma prin tragere de margini; None Nici una din facilitile de mai sus nu este valabil, i de asemenea nu are nici buton X de nchidere; Thin E ca Sizable, dar nu are margini de tragere; Dialog E ca None, dar are buton X de nchidere; Control Box Specific dac exist sau nu caseta de butoane din stnga barei de titlu. Min Max Button - Specific dac exist sau nu butoanele de maximizare / minimizare n Control Box. Close Button Specific dac exist sau nu buton X de nchidere.
VII-174

Width Limea efectiv a formularului (nu a ferestrei de vizualizare a acestuia), n unitatea de msur stabilit n Windows | Control Panel | Regional Settings. Whats This Button Se poate seta pe Yes numai dac Min Max Button este No, i duce la introducerea n Control Box a butonului specific de Help Assistant din MS Office. Picture Formularele pot avea eventual, o imagine de fundal, Background. Adresa fiierului care conine imaginea (sunt acceptate mai multe tipuri: bmp, ico, wmf, emf, dib) se introduce n aceast proprietate. Picture Type Se stabilete dac fiierul respectiv este ncapsulat (embedded) sau legat (linked). ncapsularea n mai multe formulare a aceluiai fiier grafic duce la ocuparea spaiului pentru fiecare fiier n parte. Picture Size Mode exist urmtoarele posibiliti: Clip imaginea este preluat la dimensiunile ei reale; Zoom imaginea va fi mrit pn la dimensiunea ferestrei formularului dar i pstreaz proporiile; Stretch imaginea va fi mrit pentru a ocupa ntreaga fereastr dar nu i pstreaz proporiile; Picture Alignement Se stabilete unde se plaseaz n fereastra formularului imaginea grafic. Picture Tiling Setat pe Yes, duce la repetarea imaginii grafice pentru a ocupa ntreaga fereastr a formularului. Grid X, Grid Y Distana dintre liniile grilei de proiectare, n pixeli. Afiarea grilei de proiectare se face din View | Grid. Alinierea controalelor la aceast gril se face din Format | Snap To Grid. VII.2.2.3 Pagina DATA Aceast pagin conine proprietile referitoare la datele formularului.

VII-175

Record Source Tabela sau cererea, de care este legat formularul. Se poate introduce i direct o instruciune SQL Select. Filter Se poate introduce o expresie care are rolul de a face o selecie a nregistrrilor din surs. Dac se creeaz un filtru prin meniul Records cnd formularul este n execuie, atunci va fi introdus automat n aceast proprietate filtrul respectiv. Order By Se introduc cmpurile dup care se sorteaz nregistrrile din formular (aranjarea tuturor nregistrrilor din formular dup ordinea ascendent sau descendent a unuia sau mai multor cmpuri). Dac se dorete sortare descendent se introduce dup numele cmpului respectiv un spaiu i DESC. Implicit se consider sortarea ascendent. Dac sunt mai multe cmpuri de sortare, acestea se separ prin virgul. Ca i la filtre, dac se stabilete un cmp de sortare prin meniul Records cnd formularul este n execuie, atunci va fi introdus automat n aceast proprietate cmpul respectiv. Crearea unui filtru sau al unui criteriu de sortare nu implic i activarea automat a acestuia. Activarea sau dezactivarea lor se poate face n timpul execuiei formularului n dou moduri: Fie din meniul de comenzi prin: Records | Apply Filter, Sort sau Records | Remove Filter, Sort Fie din cod VBA, prin setarea la True sau False, a proprietilor dinamice ale formularului: FilterOn OrderByOn Allow Filters, Allow Edits, Allow Deletions, Allow Additions Setate pe No, blocheaz comanda respectiv. Record Locks Se ntlnete i la cereri. Are rolul de a stabili ce nregistrri se blocheaz, atunci cnd se lucreaz n reea i mai muli utilizatori acceseaz aceeai tabel sau cerere ncercnd s scrie n ea. Blocarea se refer la faptul c numai primul utilizator

VII-176

care modific zona respectiv este acceptat, ceilali urmnd a fi Read Only. Posibilitile de blocare oferite de sistem sunt: No Loks nregistrrile nu sunt blocate, toi utilizatorii putnd scrie n acelai timp n aceeai nregistrare, ceea ce face ca sistemul s cear ce modificare rmne valabil, printr-un mesaj specific. Se folosete cnd aplicaia nu este folosit n reea; All Records ntreaga tabel este blocat, numai un singur utilizator avnd dreptul s efectueze modificri, ceilali putnd numai s citeasc din tabela respectiv; Edited Record Numai nregistrarea curent este blocat. Practic se blocheaz o zon de 2KB, ceea ce poate duce ns i la blocarea altor nregistrri; VII.2.2.4 Pagina OTHER Pop Up Specific dac fereastra formularului va fi sau nu deasupra celorlalte ferestre. Modal Un formular modal se caracterizeaz prin aceea c, o dat preluat controlul, nu l mai cedeaz dect la nchiderea lui. Acest lucru poate fi valabil pentru aplicaia Access sau pentru toate aplicaiile aflate n execuie n momentul respectiv. Cycle Stabilete care este ordinea de accesare a nregistrrilor cnd se trece cu <Enter> sau <Tab> de la un control la altul i se ajunge la ultimul control din seciunea de detail, stabilit conform ordinii tab (care se lanseaz din meniul contextual al formularului i prin care se fixeaz care este ordinea de parcurgere a controalelor dintr-o seciune atunci cnd se trece de la un control la altul prin tastatur cu <Enter> sau <Tab>). Dac proprietatea este setat pe: All Records - se va continua cu nregistrarea urmtoare; Current Record - se va reveni la primul control din aceeai nregistrare. Menu Bar Numele unei alte bare de meniu creat de proiectant, care s nlocuiasc meniul standard din Access.
VII-177

Toolbar Numele unei alte bare de pictograme creat de proiectant, care s nlocuiasc bara de pictograme standard din Access, care apare la execuia unui formular, i anume Form View. Shortcut Menu Specific dac se va permite sau nu apariia meniului contextual al formularului. Shortcut Menu Bar Numele unui meniu contextual creat de proiectant, care s nlocuiasc pe cel standard care apare la execuia unui formular. VII.2.3 Evenimentele formularului. Evenimentele sunt localizate n pagina Event. Cele mai importante sunt: On Open i On Close Se produc la deschiderea, respectiv nchiderea formularului. Aceste evenimente pot fi anulate. Aceasta va duce la anularea aciunii de deschidere / nchidere a formularului. n general se folosesc pentru ca utilizatorul s confirme aceste aciuni. Explicaie: Anularea unui eveniment se face printr-o comand specific (Cancel=True n codul VBA sau macro-instruciunea CancelEvent) introdus n metoda ataat evenimentului. Deci executarea acestei comenzi ntr-o metod va anula evenimentul care a lansat metoda respectiv. Exemplu: Fie macro-comanda CanceForm din figur. n pagina Event a formularului Miscare, n dreptul evenimentului OnOpen se va introduce numele macrocomenzii: CancelForm. Efectul va consta n aceea c dac se ncearc execuia formularului, se va afia mesajul din macro-instruciunea MsgBox, dup care formularul nu se va mai deschide. Aciunile efectuate de sistem, pas cu pas au fost: S-a efectuat comanda de execuie a formularului;
VII-178

Se produce evenimentul OnOpen. Acest eveniment are o metod ataat, i anume macrocomanda CancelForm. Se execut macro-instruciunile din aceasta, i anume: MsgBox - afieaz mesajul; CancelEvent - anuleaz deschiderea formularului. On Load i On Unload Se produc la ncrcarea n memorie a formularului, respectiv eliberarea spaiului ocupat de el. Se produc dup, respectiv nainte de On Open / On Close. Nu pot fi anulate. Before Update Se produce dup modificarea nregistrrii, atunci cnd se iese din aceasta. Poate fi anulat. Se folosete n general pentru a verifica anumite corelaii ntre cmpurile unei nregistrri i a nu permite utilizatorului trecerea la o alt nregistrare (deci modificrile efectuate) dac acestea nu sunt corespunztoare. After Update Se produce dup modificarea unei nregistrri, atunci cnd se iese din nregistrarea respectiv. Acest eveniment nu se poate anula, modificarea devenind definitiv. Se folosete n general pentru a calcula anumite valori i a le introduce n controale, la terminarea modificrilor dintr-o nregistrare. Before Insert i After Insert Este la fel ca cele dinainte dar se produc numai cnd se introduc nregistrri noi.

VII-179

On Current Se produce cnd se trece pe o alt nregistrare. Se folosete n general, pentru a efectua calcule, la ntrarea ntr-o nregistrare, cu datele din aceasta. On Timer Se produce dac proprietatea Timer Interval este diferit de zero. Dac n Timer Interval este o valoare numeric, atunci acesta va specifica, n milisecunde, intervalele de timp la care se lanseaz metoda introdus la On Timer. Exemplu: Fie macro-comanda UnMin din figur, care afieaz un mesaj. n pagina Event a formularului Miscare, n dreptul evenimentului OnTimer se introduce numele macro-comenzii: UnMin, iar proprietatea Timer Interval se face 60000. Aceasta va avea urmtorul efect: la fiecare 60 sec, se va produce evenimentul On Timer, care va lansa macro-comanda UnMin, ceea ce va duce la afiarea mesajului: "A trecut un minut". On Click, On Dbl Click, On Mouse Down, On Mouse Up, On Mouse Move Se produc la aciunea respectiv a mouseului pe formular. On Key Down, On Key Up, On Key Press Se produc la aciunea respectiv a tastaturii. On Error Se produce la o eroare datorat datelor. On Got Focus, On Lost Focus Se produc la primirea, respectiv pierderea focusului de ctre formular. VII.2.4 Metodele formularului Activarea acestor metode se face de obicei din modulul de cod VBA ataat formularului. n continuare prezentm cele mai utilizate metode ale formularelor. Metoda Refresh Metoda Refresh va determina pentru un formular o remprosptare cu datele tabelei ataate. Acest lucru este necesar
VII-180

numai n cazul actualizrii tabelei printr-un proces din afara formularului (deoarece actualizarea direct a tabelei prin formular va fi imediat sesizat). Un astfel de proces se poate efectua dac: printr-o cerere aciune, se modific tabela ataat formularului; aplicaia ruleaz ntr-un mediu multiutilizator (ntr-o reea de calculatoare) i un alt utilizator modific aceast tabel. Metoda Refresh se poate face i manual, cnd formularul este n execuie prin acionarea comenzii Records | Refresh. Aceast metod sistemul o face automat la un interval de timp care se stabilete pentru toate formularele deschise, prin completarea proprietii bazei de date Refresh Interval (n sec) din meniul Tools | Advanced. Metoda Refresh acioneaz numai asupra setului de nregistrri care exista la lansarea formularului, ea neavnd efect asupra: nregistrrilor noi introduse sau terse; tabelelor folosite n diferite controale (de exemplu ntr-un control Combo Box care afieaz date dintr-o tabel care se modific dup lansarea formularului, metoda Refresh nu va avea efect). Metoda Requery Metoda Requery acioneaz ca i metoda Refresh dar este mult mai puternic deoarece ea reia execuia tuturor cererilor aferente formularului. Aceast metod este destul de lent, deoarece ea se comport ca i cum s-ar lansa din nou formularul (inclusiv poziionarea focusului pe prima nregistrare). Metoda Recalc Aa cum am mai artat, ntr-un formular pot exista controale calculate, care vor afia expresii n care pot interveni date din alte controale legate la cmpurile tabelei ataate formularului. n momentul n care se modific definitiv (se iese din control sau se
VII-181

trece la alt nregistrare) datele dintr-un control, se vor reface i calculele controalelor calculate n care acesta intervine. Sunt ns cazuri n care este necesar refacerea imediat a calculelor controalelor calculate, fr a modifica poziia cursorului dintr-un control. Metoda Recalc face aceast aciune. Deci ea se comport ca i cum s-ar da o comand de trecere pe un alt control i o alt nregistrare, cu meninerea ns a cursorului pe poziia sa. Metoda Set Focus Cu aceast metod se poate muta focusul ntr-un alt formular care este n execuie. VII.3 Obiectele Detail, Form Header, Form Footer Toate aceste seciuni au aceleai proprieti i evenimente. Pagina de Date nu are proprieti. Sunt puin folosite n practica proiectrii formularelor, configurarea acestor obiecte. Singura proprietate mai folosit este: Back Color - prin care se stabilete culoarea de fundal. VII.4 Controalele folosite n formulare VII.4.1 Text_Box - caseta de text Cele mai utilizate tipuri de controale, folosite n proiectarea formularelor (ca i a rapoartelor) sunt prezentate n continuare prin prisma proprietilor, metodelor i evenimentelor lor. Text Box este cel mai utilizat control folosit att n formulare ct i n rapoarte. Este un control care se poate lega la un cmp al unui tabel. Reprezint practic o caset n care se vor vizualiza datele din cmpul de care este legat, permind actualizarea acestora. De obicei este nsoit de un control Label, n care se va specifica ce reprezint datele din Text Box. VII.4.1.1 Propriet ile controlului Text Box Prezentm n continuare proprietile cele mai utilizate ale acestui control, cu observaia c exist o serie de proprieti care au mai fost explicate anterior (la obiectul Form).
VII-182

VII.4.1.1.a) Text Box - pagina FORMAT Pagina Format conine proprietile prin care se configureaz formatul i stilul textului din caset. Font Name Felul fontei, adic tipul de liter folosit. Fontele care accept diacriticele romneti sunt cele cu terminaia 'CE'. Pentru a se putea lucra cu diacritice romneti, tastatura trebuie setat corespunztor n Windows pentru a doua limb, n Control_Panel | Keyboard. Fore Color Culoarea fontei. Font Size Mrimea n pixeli a fontei. Font Weight Grosimea fontei. Font Italic Litera aplecat. Font Underline Subliniere. Text Align Alinierea textului n csu. Border Style, Border Color, Border Width Se folosesc pentru configurarea marginii controlului. Special Effect - Stabilete un tip standardizat de margine pentru control. Uneori setarea acestei proprieti are efect i asupra celor trei proprieti de mai sus. Exist 6 tipuri: Flat plat; Raised n relief; Sunken ngropat; Etched poansonat, zgriat; Shadowed cu umbr; Chiseled subliniat.

VII-183

Back Color Culoarea fundalului. Back Style Dac fundalul este sau nu transparent. n cazul transparenei se va vedea obiectul de sub control, de obicei culoarea seciunii n care se gsete acesta. n bara de meniu, n Format, exist dou proprieti, care atunci cnd sunt activate vor seta toate obiectele selectate n momentul respectiv, n felul urmtor: Bring to Front aduce obiectele la suprafa; Send to Back duce obiectele n spate; Prin aceste proprieti se poate stabili cum "se vd" obiectele suprapuse. Aceast proprietate poate fi folosit pentru a se marca explicit care este controlul n care se gsete cursorul (controlul activ), prin folosirea unei culori unice pentru controlul activ. Pentru aceasta se procedeaz astfel: Se face controlul cu Back Color culoarea controlului activ (de exemplu verde) i Back Style transparent. Se creeaz un control grafic, de tip Rectangle, "umplut" cu culoarea pe care o va avea controlul (de exemplu galben) i de dimensiunile acestuia, care se aeaz dedesubt. n felul acesta controlul fiind transparent, va avea culoarea dreptunghiului de dedesubt (galben), iar cnd va primi focusul, culoarea setat pentru el (verde).

Toate proprietile prezentate mai sus se pot configura i direct de pe bara cu pictograme "Formatting". Format n csua de text se gsete o dat de tipul cmpului de care controlul este eventual legat. Exist posibilitatea s se aleag ntre mai multe tipuri de afiare specifice tipului respectiv de dat. De asemenea tipul de afiare se poate defini i cu caracterele specifice de construire a formatelor.
VII-184

Decimal Places Numrul de zecimale al datelor de tip numeric. Visible Permite ca un control construit s poat fi fcut vizibil sau nu, n funcie de un anumit context. Scroll Bars Exist posibilitatea ca acest control s poat conine mai multe linii de date. n acest caz este indicat s i se ataeze bara derulant vertical. Can Grow, Can Shrink Permite ajustarea controlului pe vertical, n cazul n care n control sunt un numr variabil de linii.

Aceste proprieti sunt valabile numai la tiprire nu i la afiarea pe ecran. Deci ele sunt folosite n special la rapoarte. Left, Top, Width, Height Poziia (relativ la seciunea unde se gsete) i mrimea controlului pe ecran, dat n cm sau inches, n funcie de cum e setat unitatea de msur69 n Windows. Ele se vor completa automat n momentul n care se va "aeza" pe ecran controlul. Access folosete i celelalte setri din Widows | Control Panel | Regional Settings ca punctul zecimal, formatul pentru or i dat, perioada anului din 2 cifre etc.

VII.4.1.1.b) Text Box - pagina DATA Control Source Numele cmpului (din tabela sau cererea ataat la formular sau raport) de care se leag controlul. Este cea mai important proprietate a controlului. Unitile de msur utilizate n aplicaiile informatice sunt: Pixel unitate dependent de rezoluia ecranului. Inches sau Cm n funcie de setarea din Windows. Se folosete de obicei n paginile de proprieti 1 Inch=2,54 cm. Punct 72/inch Twips 1440/inch, 567/cm, 20/punct. Se folosesc cnd se introduc prin cod VBA dimensiuni pentru controale.
VII-185
69

Este posibil i legarea controlului de o expresie (control calculat). Pentru aceasta se va pune =expresie la Control Source. O expresie ntr-un formular va avea pe lng toate facilitile acceptate n Access o nou posibilitate, i anume aceea de a folosi ca termeni nume de controale din formular (inclui ntre paranteze drepte ca i cmpurile).

Exemplu: n formularul Produse n zona: Form Footer, se introduce un control de tip Text Box, pTVA, care la Control Source are: < =19 > Detail pe lng controlul legat, Pret, se introduce un control de tip Text Box, TVA, care la Control Source are introdus urmtoarea expresie: < =[Pret]*[pTVA]/100 > n acest fel: n controlul pTVA va fi mereu afiat 19; n controlul TVA se va afia tot timpul evaluarea expresiei introduse n proprietatea Control Source, n care aa cum se observ se folosesc datele dintr-un control legat la un cmp, Pret (cu valorile respective din nregistrrile tabelei ataate) i datele dintr-un control calculat, pTVA. De asemenea se pot folosi i controale nelegate (unbound). n acest caz de obicei se introduc date n control prin codul VBA, prin proprietatea dinamic implicit Value (nu se poate utiliza dect cnd formularul este n execuie). Aceast proprietate este Input / Output. n faza de proiectare, n interiorul controlului este afiat valoarea proprietii Control Source. Input Mask, Default Value, Validation Rule, Validation Text Funcioneaz la fel ca la proprietilor tabelelor. Dac nu se completeaz se preiau setrile fcute cmpului respectiv la crearea

VII-186

tabelei. Setarea n formular a acestor proprieti este valabil numai n acest obiect, proprietile tabelei rmnnd neschimbate.

n Default Value, Validation Rule, Validation Text se pot face referiri i la alte nume de obiecte accesibile, spre deosebire de tabele n care nu se pot referi alte cmpuri. Enabled, Locked: Permisiunea de intrare n control, respectiv de modificare a datelor din el. Deci exist posibilitatea s se creeze controale Read Only (numai citete). Sunt mai multe posibiliti: Dac Enabled = Yes i Locked = No se poate intra n control (se plaseaz cursorul n control) i modifica datele din el; Dac Enabled =No nu se poate plasa cursorul n control (evident nici modifica datele); Dac Enabled = Yes i Locked = Yes se poate poziiona cursorul n control dar nu se pot modifica datele din el; Dac Enabled = No i Locked = No (nu are sens) controlul apare ters; VII.4.1.1.c) Text Box - pagina OTHER Name Nume control. Acesta este numele care se folosete cnd se fac referiri la acest control. Dei nu este obligatoriu este indicat ca n cazul controlului legat, numele lui i al cmpului s fie acelai. Status Bar Text Cnd focusul ajunge n control, pe bara de stare (care se gsete n partea de jos a ecranului) va apare textul introdus aici. Tab Stop n momentul n care se termin introducerea datelor ntr-un control, focusul se va poziiona pe urmtorul control din seciune care are setat aceast proprietate cu Yes.
VII-187

Ordinea de parcurgere a controalelor se stabilete prin comanda Tab Order. Aceasta se gsete n meniul contextual sau n View i permite aezarea controalelor din seciuni n ordinea dorit prin "tragere". Auto Tab Trecerea de la un control la altul se face cnd: se apas pe tasta <ENTER> sau <TAB>. sau dac Auto Tab = Yes atunci trecerea la urmtorul control se va face i automat n momentul n care s-au completat toate datele din control conform formatului specificat. Astfel dac un control este legat la un cmp de tip text cu lungimea de 3 caractere, dup introducerea celui de-al treilea caracter, fr s se apese pe <ENTER> sau <TAB> se va trece automat la urmtorul control stabilit prin ordinea tab. Enter Key Behavior Dac aceast proprietate este = New Line in Field, atunci la apsarea lui <ENTER> cursorul se va poziiona pe urmtoarea linie din control, iar trecerea la urmtorul control se va face numai prin apsarea tastei <TAB>. Evident, proprietatea are sens dac controlul are mai multe rnduri. Shortcut Menu Bar Se poate crea un meniu contextual specific pentru control. Acesta se face prin comanda Customize. Control Tip Text Va apare textul introdus n aceast proprietate cnd se poziioneaz mouseul deasupra controlului. Allow Auto Correct Setat pe Yes, va determina efectuarea automat a coreciilor textului introdus, conform specificaiilor stabilite prin meniul Tools | AutoCorrect.

VII.4.1.1.d) Text Box - proprietile implicite Generarea obiectelor dintr-o clas de obiecte se face prin setarea corespunztoare a proprietilor obiectului i prin ataarea de metode evenimentelor. n momentul n care se creeaz o clas de obiecte se stabilesc practic care sunt proprietile, metodele i evenimentele obiectelor care sunt create din aceasta. Obiectele provenite dintr-o clas vor avea evident aceleai metode,
VII-188

evenimente i tipuri de proprieti. Ele vor forma o colecie de obiecte, care este privit ca un tablou cu o dimensiune (vector), n care elementele sunt indexate (de la 0). Crearea controlului Text Box se face prin generarea acestuia din clasa de obiecte cu acelai nume, prin luarea i plasarea controlului din ToolsBox. n momentul crerii acestui obiect, proprietile lui trebuiesc setate la anumite valori implicite (default), urmnd ca proiectantul s le personalizeze ulterior n funcie de contextul n care va fi folosit. Aceste proprieti implicite se pot modifica prin acionarea n caseta tab: Default Text Box, care se poate afia prin selecia de pe ToolsBox a controlului i acionarea pictogramei de proprieti. Evident, la generare, controlul trebuie s primeasc un nume unic, care va fi constituit din numele controlului plus un numr de ordine n cadrul formularului sau raportului unde este plasat. Dintre proprietile implicite mai utilizate sunt: Auto Label yes, ataeaz o etichet controlului; Add Colon yes, eticheta se va termina cu dou puncte; Label X, Label Y poziia etichetei fa de control; VII.4.1.1.e) Text Box - proprietile dinamice Proprietile unui obiect pot fi statice i / sau dinamice. Proprietatea static este proprietatea care se poate modifica cnd formularul este n proiectare, prin caseta tab. Proprietatea dinamic este proprietatea care poate fi modificat n momentul cnd obiectul este n execuie, n general prin codul VBA. Majoritatea proprietilor sunt att statice ct i dinamice. Anumite proprieti sunt numai dinamice, ele neregsindu-se n caseta tab a controlului. Dintre proprietile dinamice, cea mai important este VALUE. Aceast proprietate este implicit, numele ei putnd fi omis. Ea este Input / Output (poate fi i citit i scris) i reprezint valoarea care se gsete n control. Dac acesta este legat, aceast valoare se va gsi i n cmpul ataat.
VII-189

citit. SelLength, SelStart, SelText Se folosesc pentru a manevra cursorul i valoarea din interiorul unui control Text Box. Sunt proprieti Input/ Output. SelStart reprezint poziia de start a cursorului n control; SelLength reprezint lungimea textului selectat din control; SelText reprezint valoarea textului selectat. VII.4.1.2 Evenimentele controlului Text Box Before Update Acest eveniment se produce dup ce a avut loc o modificare a datelor n control, dar care nu este definitiv, putnd fi anulat. n acest caz, focusul va rmne n control pn cnd utilizatorul introduce o alt valoare care nu va mai produce anularea acestui eveniment. Acest eveniment se folosete de obicei pentru a executa o metod mai complex de verificare a datelor introduse n control, care depete posibilitile oferite de proprietatea Validation Rule. After Update Se produce imediat dup evenimentul Before Update, modificrile fiind acum ns definitive, nemaiputnd fi anulate. Se folosete cnd valoarea introdus aici va furniza datele necesare calculelor din alte controale. On Change Se produce dup fiecare tastare n interiorul controlului. On Enter i On Exit Se produc la intrarea i la ieirea din control.
VII-190

Dac controlul este calculat, atunci Value nu poate fi dect

Got Focus i Lost Focus Se produc la primirea / pierderea cursorului n / din control. On Click, On Dbl Click, On Mouse Down, On Mouse Up, On Mouse Move Se produc la aciunea respectiv a mouseului pe control. On Key Down, On Key Up, On Key Press Se produc la aciunea respectiv a tastaturii cnd focusul se gsete n control. VII.4.1.3 Metodele controlului Text Box Metodele cele mai folosite sunt: Set Focus plaseaz focusul n controlul text. Requery, Recalc acelai efect ca i la metodele similare de la formulare, dar referitoare numai la controlul asupra cruia se aplic metoda. VII.4.2 Combo Box - list ascuns Acest control este asemntor cu Text Box, dar are posibilitatea derulrii unei liste din care se pot prelua datele care se introduc. n momentul cnd ntr-o tabel un cmp a fost creat cu proprietatea Look Up, iar acel cmp e legat ntr-un formular de un control Combo Box, proprietile definite n tabel nu trec automat i n formular. Acest lucru se face ns automat dac formularul este creat cu wizard-ul de formulare. Controlul Combo Box are aceleai proprieti i evenimente ca ale lui Text Box. n plus mai sunt proprieti i evenimente, care se refer la lista ascuns.

VII.4.2.1 Combo Box - propriet i specifice n pagina DATA sunt: Row Source Type Tipul sursei de date care va fi afiat n lista derulant.
VII-191

Aici se folosete: Table/ Query cmpuri din alt tabel; Value List list de valori (ca n exemplu); Field List denumiri de cmpuri din alt tabel; Row Source n cazul n care Row Source Type = ? Table/ Query sau Field List este numele unei tabele, cereri sau direct o instruciune SQL Select (ca la legarea formularului la o tabel); Value List este o list de valori, separate prin <;> Bound Column Numrul coloanei de legtur (datele din aceast coloan vor fi preluate ca valoare pentru control); Limit To List Dac proprietatea este Yes nu se vor putea introduce n control dect datele care se gsesc n lista derulant iar dac este No, atunci se pot introduce i alte date dect cele din list; Auto Expand Dac proprietate este Yes, atunci se caut i se afieaz cea mai apropiat denumire din list care s aib n partea de nceput caracterele introduse n control pn n acel moment de la tastatur; n pagina FORMAT sunt: Column Count Numrul de coloane care apar la desfacerea listei; Column Head Dac se afieaz sau nu denumirea coloanelor; Column Widths Limea coloanelor. Se separ cu <;> List Rows Numrul de rnduri care se afieaz cnd se desface lista. Dac lista are mai multe rnduri dect sunt setate a se afia, vor apare barele de derulare verticale; List Width Limea listei derulante. Dac aceasta este mai mic dect suma tuturor coloanelor afiate, vor apare barele de derulare verticale. Setat pe Auto, limea listei va fi la fel ca limea controlului Combo Box;
VII-192

Toate dimensiunile se dau n unitatea de msur setat n Windows. Aceast caracteristic este general n tot mediul Access. Reamintim c n VBA, dimensiunile sunt cerute n Twips.

VII.4.2.2 Combo Box - evenimentul specific Not In List Evenimentul se produce atunci cnd Limit To List=Yes, i se introduce o valoare din afara listei. Metoda ataat evenimentului (scris n VBA) de obicei va completa, dup o confirmare, lista derulant cu aceast valoare. n continuare, aceast valoare, fiind n list, va putea fi folosit. VII.4.3 List Box - list desf urat List Box este asemntoare cu combo box, dar lista nu este ascuns, ci este afiat tot timpul. VII.4.4 Option Button, Check Box, Toggle Button Sunt controale booleene. n Access valoarea boolean poate lua ca de obicei 2 valori i anume: True (adevrat); False (fals); Exist ns posibilitatea ca o valoare boolean s mai aib o valoare, i anume: - NULL (nedeterminat, nu se tie). Pentru setarea numrului de stri al valorilor booleene, aceste butoane au o proprietate: Triple State. Dac Triple State este: No, butonul are 2 stri: True i False; Yes, butonul va avea toate cele trei stri: True, False i Null. n acest din urm caz controlul trebuie legat numai de un cmp integer sau long. Valoarea NULL se va reprezenta printr-o imagine tears a controlului.

VII-193

VII.4.5 Option Group - grup de op iuni Option Group este un control n care se pot introduce dou sau mai multe dintre controale booleene prezentate mai sus (toate vor fi de acelai fel). Specific acestui grup este c numai unul dintre controalele din interiorul lui se poate poziiona pe True, celelalte devenind automat False. Un control individual boolean se leag aa cum am vzut la cmpuri de tip boolean sau integer, putnd lua dou sau trei valori booleene. Cmpul de care se leag Option Group este o dat de tip integer. Valoarea introdus va fi n general numrul de ordine n grup al controlului boolean care este pe True. Pe Tools Box se afl un buton pentru activarea unui Wizard. Dac este apsat atunci cnd se face controlul grup de opiuni, sistemul va ndruma configurarea lui, punnd ntrebri referitoare la numele controlului Option Group, la ce fel i cte controale booleene s conin, la ordinea i valoarea butoanelor n grup, la cmpul de legtur i care dintre butoane va fi implicit pe True. VII.4.6 Label - etichet Este cel mai utilizat control nelegat de un cmp. Proprietatea cea mai important a controlului este Caption, care va conine textul afiat de control. Forma controlului se configureaz la fel ca la Text Box. VII.4.7 Line, Rectangle, Picture - controale grafice Aceste controale sunt nelegate de cmpuri. Ele vor crea figura specificat n titlu. Controlul Rectangle, poate fi i umplut n interior. VII.4.8 Command Button - buton de comand n general se ataeaz evenimentului Click o metod care s efectueze o comand specific.
VII-194

Cap.VIII Obiecte Access - Raportul


VIII.1 Prezentarea general a unui raport VIII.1.1 Rolul rapoartelor Raportul este ca i formularul un obiect de rang superior. El permite afiarea pe ecran sau tiprirea pe hrtie a unor informaii extrase din baza de date. Ca i formularul se poate lega la o tabel sau cerere. n comparaie cu formularul care este dinamic (dup afiare, pe ecran, se pot modifica datele din acesta) raportul este static (dup tiprirea lui nu va mai suporta modificri). n general, proiectarea rapoartelor este foarte asemntoare cu aceea a formularelor. Din aceast cauz n cele ce urmeaz se vor prezenta n special problemele specifice ale proiectrii rapoartelor. VIII.1.2 St rile unui raport Un raport poate fi n una din urmtoarele 3 stri: Design View - Proiectarea raportului; Print Preview - Afiarea pe monitor a raportului cu toate datele; Layout Preview - Afiarea pe monitor a raportului cu un set redus de date;

n modul Preview, exist o bar de pictograme, care, n scopul punerii la punct a unor detalii, permite anumite comenzi ca: zoom, afiarea concomitent a mai multor pagini etc.

Pentru ca s se permit proiectarea rapoartelor, este necesar ca n Windows s fie instalat cel puin o imprimant. Primul lucru cu care ncepe proiectarea unui raport nou este setarea formatului paginii de imprimare. Acest lucru se

VIII-195

face prin comanda File | Page Setup.. Imprimarea raportului se face cu comanda File | Print, sau prin pictograma specific. VIII.1.3 Sec iunile unui raport Obiectul raport are obiecte seciuni, care la rndul lor vor conine controale legate sau nelegate. n afara seciunilor prezentate la formularele, n rapoarte se folosesc i seciunile: pagin (care se pot utiliza i n formulare) i grupare. VIII.1.3.1 Sec iunile Report Header, Report Footer Report Header Reprezint partea de nceput a unui raport. Apare o singur dat la nceputul acestuia. Se folosete de obicei pentru a pune titlul raportului i antetul instituiei care l editeaz. Report Footer - Reprezint partea de sfrit a unui raport. Apare o singur dat la sfritul acestuia. Este folosit de obicei pentru introducerea unor controale calculate cu date totalizatoare referitoare la ntregul raport. De asemenea se mai folosete pentru introducerea unui modul 'de semnturi'. VIII.1.3.2 Sec iunile Page Header, Page Footer Page Header Apare la fiecare nceput de pagin. Este folosit de obicei pentru afiarea 'capului de tabel' al raportului, creat cu controale Label. Page Footer Apare la fiecare sfrit de pagin. Este folosit de obicei n felul urmtor: La stnga se pune: ora i data execuiei raportului, cu comande Insert | Date and Time; La mijloc se pune titlul raportului; La dreapta se pune numrul paginii curente / numrul total de pagini al raportului (ex.3/10), cu comande Insert | Page Numbers;

VIII-196

VIII.1.3.3 Sec iunea Detail Detail Ca i la formulare, aceast seciune se repet pentru fiecare nregistrare a tabelei (cererii) legate la raport. Deci seciunea detail, se va repeta de attea ori cte nregistrri are tabela sau cererea ataat. n aceast seciune se introduc de obicei: controale legate la cmpurile tabelei ataate raportului, n scopul vizualizrii nregistrrilor acesteia; controale calculate, prin care se introduc expresii; acestea au ca domeniu pentru date, cmpurile nregistrrii; VIII.1.3.4 Sec iunile Group Header, Group Footer VIII.1.3.4.a) Sortarea i gruparea Sortarea (Order) reprezint aranjarea ntr-o ordine cresctoare sau descresctoare a nregistrrilor unei tabele sau cereri dup una sau mai multe chei (o cheie fiind un cmp). Sortarea se poate realiza n Access n 2 moduri: Un prim mod de realizare a sortrii l reprezint rearanjarea fizic a tuturor nregistrrilor conform cheilor de sortare. Aceast prelucrare cere mult timp de execuie i foarte mult memorie de lucru. Un al doilea mod de realizare a sortrii folosete indexarea, mai precis tabelele de indeci care se pot ataa cmpurilor unei tabele. n acest caz avantajul const n faptul c nu se schimb fizic ordinea nregistrrilor n tabela. Sortarea se va face practic prin sortarea fizic numai a tabelei de index asociate cheii (cmpului) de sortare, nregistrrile tabelei putnd fi accesate sortat prin folosirea adreselor nregistrrilor care se gsesc n tabela de indeci. Calculatorul va efectua sortarea n funcie de cum a fost creat tabela, i anume: dac s-a indexat sau nu cmpul care este cheie de sortare. Astfel dac acesta este indexat, sortarea tabelei se va realiza prin sortarea tabelei de indeci asociat cmpului, iar dac nu,
VIII-197

sortarea tabelei se realizeaz prin aranjarea fizic a tuturor nregistrrilor din tabel. Gruparea Toate nregistrrile unei tabele care pentru un anumit cmp, numit cheie de grupare, au aceiai valoare, reprezint o grup de nregistrri. Fiecrei grupe de nregistrri, i se pot ataa, la nceput i la sfrit, cte o seciune, i anume: Group Header / Group Footer. Group Header - Apare la nceputul unei grupe. Se folosete de obicei pentru a afia valoarea cmpului care este cheie de grupare. Group Footer - apare la sfritul unei grupe. Este folosit de obicei pentru introducerea unor controale calculate cu date totalizatoare referitoare la ntreaga grup. n aceste seciuni, dac se folosete o funcie agregat SQL definit pe un cmp, atunci, aceast funcie va avea domeniul datelor de intrare format din toate valorile pe care le ia acest cmp n nregistrrile grupei respective.

Exemplu: - n partea dreapt se afl sortat i grupat tabela (din stnga) dup cmpul: ANUL DE STUDIU.
VRSTA NUME 20 20 19 20 19 A B A D C ANUL DE STUDIU 2 3 2 1 1 VRSTA 20 19 20 19 20 NUME D C A A B ANUL DE STUDIU 1 1 2 2 3

Dac se dorete afiarea numrului de studeni din fiecare an se creeaz o seciune Group Footer, n care se introduce un control calculat Text Box, care la Control Source va avea: =Count(*)

O grupare nseamn implicit i sortarea nregistrrilor dup cheia de grupare.


VIII-198

VIII.1.3.4.b) Comanda Sorting and Grouping Comanda se activeaz din meniul View. Se poate lansa i din meniul contextual sau direct de pe ToolsBar (vezi pictograma afiat n stnga). Aa cum se observ din caseta din figur, la nceput se completeaz n partea de sus, n ordine, care sunt cheile de sortare i felul acestora (Ascending sau Descending). Dup aceea dac se dorete ca un cmp dup care se face sortarea, s fie i cheie de grupare, se selecioneaz cmpul respectiv dup care se completeaz n partea de jos caracteristicile grupei, astfel: Group Heder, Group Footer - se precizeaz ce seciuni de grupare vor apare n raport. Group On - se stabilete cum se fac grupele i anume: Each Value: fiecare valoare a cmpului creeaz o grup, sau Interval: grupa se creeaz pentru fiecare valoare a unui anumit numr de caractere din cmp care se precizeaz n proprietatea Group Interval. Keep Together - se poate impune fiecrui grup s fie inclus ntr-o singur pagin. VIII.1.4 Utilizarea func iilor agregate SQL O funcie agregat, este specific prin faptul c datele ei de intrare sunt constituite din valorile pe care le ia un cmp n toate nregistrrile (sau numai o parte din acestea) unei tabele. n rapoarte se folosesc frecvent controale calculate care conin funcii agregate SQL70. Ele calculeaz expresii al cror domeniu de intrare este format din valorile unui cmp din nregistrrile unei tabele care se utilizeaz n obiectul unde sunt
70

Funciile agregate au fost prezentate n Cap.V-2.7


VIII-199

folosite. n cazul raportului, funciile agregate SQL, se calculeaz pentru cmpurile din tabela legat la acesta (nu se pot defini funcii agregate SQL pe controale calculate!) Funciile agregate SQL sunt: SUM: calculeaz suma valorilor dintr-un cmp; MAX, MIN: ntoarce valoarea maxim / minim a datelor ce se gsesc ntr-un cmp; AVG: calculeaz media aritmetic a valorilor dintr-un cmp; COUNT: calculeaz numrul de nregistrri ale cmpului (diferite de Null71). Dac se dorete ca s se ia n calcul i cmpurile cu valoarea Null, atunci se va folosi expresia COUNT(*); VAR, VARP, STDEV, STDEVP: calcule statistice; n rapoarte, domeniul pentru datele de intrare al funciilor agregate SQL depinde de seciunea unde este plasat controlul calculat care conine expresia respectiv. Astfel dac: controlul calculat este n seciunile: Report Header, Report Footer sau Detail, domeniul va conine toate nregistrrile raportului; controlul calculat este n seciunile Group Header sau Group Footer, domeniul va conine toate nregistrrile care aparin grupei respective; controlul calculat este n seciunile de pagin nu se pot introduce controale calculate care s conin funcii agregate SQL, deoarece nu sunt ataate nregistrri la aceste seciuni; VIII.1.5 Utilizarea func iilor agregate de domeniu De multe ori sunt necesare afiarea unor expresii care s conin funcii agregate, dar nu din tabela sau cererea legat de
71

Valoarea Null, n funciile agregate (SQL sau de domeniu) nu se ia n considerare. n celelalte funcii sau operaii, valoarea Null a unui termen duce, la rezultatul Null al expresiei, indiferent de felul n care e constituit aceasta.
VIII-200

raport, ci din alte tabele sau cereri din baza de date local. n acest scop se folosesc controale calculate n a cror expresii se folosesc funciile agregate de domeniu. Reamintim c numele funciilor agregate de domeniu este acelai cu a funciilor agregate SQL, la care se adaug n fa litera D. VIII.2 Proiectarea rapoartelor Aa cum am mai artat, proiectarea rapoartelor nu difer mult de proiectarea formularelor. n exemplul prezentat, se vor evidenia cteva dintre elementele specifice ale proiectrii rapoartelor.
Report Header Group Header Detail Group Footer Group Header Detail Group Footer Group Header Detail Group Footer Report Footer Page Footer

Execuia raportului i tabelele utilizate de acesta


VIII-201

Obiectele care se configureaz vor fi, ca i la formulare, obiectul report, obiectele seciunilor i controalele care vor fi plasate n raport. VIII.2.1 Obiectul REPORT VIII.2.1.1 Propriet ile obiectului REPORT VIII.2.1.1.a) Numele raportului Stabilirea numelui raportului se face dup crearea unui formular nou iar modificarea acestuia, n fereastra Database la fel ca i la tabele, cereri, macro-comenzi sau formulare. VIII.2.1.1.b) Pagina FORMAT Proprietile din aceast pagin sunt mai puin folosite. Caption Titlul raportului. Apare n bara de titlu a acestuia. Nu trebuie confundat cu numele raportului. Implicit, dac proprietatea nu este completat, numele formularului se va folosi i ca titlu. De asemenea nu trebuie confundat cu adevratul titlu care se afieaz pe raport n seciunea Header Report. Page Header, Page Footer Se specific dac se dorete ca aceste seciuni s apar sau nu alturi de Report Header, Report Footer. Rapoartele pot avea un fundal care se configureaz prin cele 6 proprieti Picture. Picture - Adresa fiierului cu imaginea ce se dorete ca fundal a raportului.
VIII-202

Picture Type - Specific dac fiierul cu imaginea v-a fi copiat efectiv n baza de date local - Embedded, sau se v-a folosi numai adresa fiierului original - Linked. Picture Size Mode - Poate fi: Clip - Se folosete imaginea fr factor de multiplicare, eventual trunchiat. Stretch - Se folosete imaginea cu factor de multiplicare diferit pe X i Y, n aa fel nct s cuprind tot spaiul rezervat. Imaginea va arta n general deformat. Zoom - Se folosete imaginea cu acelai factor de multiplicare pe X i Y, n aa fel nct s cuprind tot spaiul rezervat. Picture Alignment Locul de plasare al imaginii. Picture Tiling Dac imaginea este mai mic dect pagina, posibilitatea de a se folosi de mai multe ori, n aa fel nct s umple tot spaiul rezervat. Picture Pages Dac imaginea este inclus numai pe prima pagin sau pe toate paginile. VIII.2.1.1.c) Pagina DATA Are aceleai proprieti ca pagina respectiv de la formulare. Proprietatea cea mai important a raportului, Record Source, stabilete obiectul (tabel, cerere, instruciune SQL Select) de care e legat raportul. Dac nu se completeaz, atunci raportul este nelegat. Acest tip de rapoarte se proiecteaz foarte rar; n ele de obicei sunt utilizate funcii agregate de domeniu. Printre primele activiti care se fac la proiectarea unui raport este completarea acestei proprieti. Proprietile Order, n general nu se folosite, sortarea activndu-se prin comanda prezentat anterior, Sorting and Grouping.
VIII-203

VIII.2.1.1.d) Pagina OTHER Conine proprieti mai puin folosite, prezentate i la formulare. VIII.2.1.2 Evenimentele obiectului REPORT n cea mai mare parte obiectul report are aceleai evenimente cu cele de la formulare. Specific este evenimentul: On No Data - evenimentul se produce atunci cnd tabela legat la raport nu are date. n acest caz este indicat s se anuleze execuia raportului, i s se afieaz un mesaj de avertizare, ca n exemplul de mai jos (procedur eveniment n cod VBA): Private Sub Report_NoData(Cancel As Integer) MsgBox "Lips date - raportul nu se va executa!" Cancel = True ' se anuleaz execuia raportului. End Sub VIII.2.2 Obiectele ce co in sec iunile raportului n general toate seciunile raportului au aceleai proprieti i evenimente. Cele mai importante sunt cele care se refer la controlul paginaiei. Prezentm n continuare cteva din cele mai folosite. Force New Page - prin aceast proprietatea se poate face un salt la pagin nou la nceputul, sau/i la sfritul seciunii respective. Keep Together - permite ca toat seciunea s fie pe o singur pagin. Can Grow, Can Shrink - permit mrirea pe vertical a dimensiunilor obiectului respectiv, funcie de datele cu care lucreaz. On Format - eveniment care se produce la intrarea n seciune. VIII.2.3 Controalele folosite n rapoarte Specific acestor controale, este faptul c nu au evenimente.
VIII-204

n figura urmtoare se observ cteva din modalitile de folosire a controalelor necesare raportului prezentat anterior. Page Header, fiind fr dimensiune n formularul de proiectare, nu va fi afiat. Controalele Label, folosite pentru capul de tabel sunt plasate n seciunea Group Header.

Cu controale Line, seciunile sunt delimitate prin linii. n Group Header, CodProdus, va fi codul pentru ntrega grup. n Group Header, sunt dou controale calculate, care prin funcia agregat de domeniu DLookUp, afieaz date din alt tabel dect cea legat la raport. Ele au n Control Source: =DLookUp("DenProdus";"ProduseC";"CodProdus=" & [CodProdus]) =DLookUp("UM";"ProduseC";"CodProdus=" & [CodProdus])
VIII-205

n secia Detail, este un control calculat pentru Valoare, care va folosi datele din nregistrarea respectiv. El va avea n Control Source: =[Pret]*[Cantitate] n Group Footer, sunt dou controale calculate, care prin funcia agregat SQL SUM, vor folosi datele numai din nregistrrile grupei respective. Ele au n Control Source: =Sum([Cantitate]) =Sum([Pret]*[Cantitate]) n Report Footer, sunt aceleai dou controale calculate, cu aceleai proprieti la Control Source, dar care, datorit locului unde sunt plasate, vor efectua calculele cu datele din toate nregistrrile tabelei legate. n Page Footer, sunt controale calculate care folosesc funcia: Now - ntoarce data i ora curent. i obiectele: Page - conine pagina curent Pages - conine numrul de pagini ale raportului. VIII.3 Controlul Subraport / Subformular Acest control se gsete pe ToolsBox i reprezint un obiect care se introduce n raport / formular. Se folosete mai des n formulare. Exemplu: Formularul FACULTATI este legat de o tabel n care fiecare nregistrare se refer la o anumit facultate: ASE. Facultatea de tiine.. Facultatea de inginerie.. Etc. De asemenea mai exist un formular, SPECIALIZARI, legat la o alt tabel, n care corespunztor fiecrei faculti vor fi mai multe nregistrri n care fiecare din acestea descrie o specializare.
VIII-206

Astfel corespunztor nregistrrii ASE din formularul Facultati, vor exista n formularul Specializari, mai multe nregistrri referitoare la specializrile acesteia ca: Management, Contabilitate i informatic de gestiune, Finane-Bnci, Turism, etc. Subformularul reprezint formularul Specializari introdus n formularul Facultati. n acest fel vor fi afiate pentru fiecare nregistrare din formularul Facultati, n subformular, numai datele referitoare la specializrile aferente acesteia. Pentru realizarea acestui lucru, cele dou obiecte, formularul i subformularul, trebuie s aib cel puin un cmp comun (n exemplul de mai sus, facultatea), denumit Link Fields. n pagina DATA, a formularului, sunt dou proprieti care vor conine cmpurile de legtur: Link Master Fields - numele cmpurilor de legtur din formular. Link Child Fields - numele cmpurilor de legtur din subformular. Observaie-1 n cazul existenei mai multor cmpuri de legtur, acestea se separ prin < ; > Observaie-2 Numrul de cmpuri din cele dou proprieti trebuie s fie egal. Observaie-3 Cmpurile de legtur corespondente din cele dou proprieti, trebuie s fie de acelai tip i s reprezinte aceleai date. Observaie-4 Access accept i subformulare incluse dar numai pentru 3 nivele.

VIII-207

BIBLIOGRAFIE Building Applications with MS Access 97, MS Corporation 1996 Allen Browne, Alison Balter, Bazele ACCESS 95, Editura TEORA, 1997 Roger Jennings, Utilizare ACCESS 95, Editura TEORA, 1997 Microsoft Office 97 - Object Model Guide, MS Corporation 1996 Microsoft Office 97 - Integrarea programelor, Editura TEORA, 1997 Ilie Popa, Baze de date - Elemente de teorie, proiectare i aplicaii n Access, Editura Universitii Piteti, 2001 Microsoft Office 97 - Visual Basic, Programmer's Guide, MS Corporation 96 Rick Winter, Patty Winter, Utilizare Microsoft Office, Editura TEORA, 1997 Russell Borland, Introducere n MS Windows 98, Editura TEORA, 1999 Microsoft - SQL Server, MS Corporation 1995 Michael Antonovich, Utilizare Visual FoxPro 3, Editura TEORA, 1997 Jeb Long, FoxPro 2.6 - Ghidul Programatorului, Editura TEORA, 1996 erban Cricot, Programarea n Visual Basic for Application, Editura Carminis, 2003

VIII-208

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