Ioan Doroș

Baze de date

Editura Cibernetica MC București 2010

Descrierea CIP a Bibliotecii Naţionale a României DOROS, IOAN Baze de date / Ioan Doros. - Bucureşti : Cibernetica, 2010 ISBN 978-973-88451-6-9 004

Editură acreditată CNCSIS cu codul 73

Tehnoredactare și corectură: Arabela Andor Coperta: Adelina Muntean

2

CAPITOLUL I. DELIMITĂRI CONCEPTUALE ALE BAZELOR DE DATE .................... 6 1.1. Termeni specifici în lucrul cu bazele de date ........................................................... 6 1.2. Sisteme de gestiune a bazelor de date ...................................................................... 9 1.2.1. Noţiuni generale privind sistemele de gestiune a bazelor de date ....................... 9 1.2.2. Funcţiuni ale sistemelor de gestiune a bazelor de date ...................................... 10 1.2.3. Caracteristicile sistemelor de gestiune a bazelor de date pentru o bază de date relaţională ................................................................................................................ 11 1.2.4. Sistemul de gestiune a bazelor de date ACCESS .............................................. 13 1.3. Scopul unei baze de date ........................................................................................ 14 1.4. Componentele aplicaţiei ACCESS .......................................................................... 15 1.5. Proiectarea bazelor de date..................................................................................... 16 1.5.1. Principii ale proiectării bazelor de date ............................................................ 16 1.5.2. Normalizarea unei baze de date relaţionale ...................................................... 18 1.5.3. Integritatea bazelor de date .............................................................................. 22 1.6. Operarea în mediul ACCESS .................................................................................. 24 1.6.1. Deschiderea aplicaţiei. Crearea unei noi baze de date ....................................... 24 1.6.2. Moduri de vizualizare ..................................................................................... 26 1.6.3. Deschiderea, modificarea, salvarea şi închiderea unei baze de date existente ... 27 1.6.4. Folosirea funcţiei ajutor .................................................................................. 29 1.6.5. Închiderea aplicaţiei ........................................................................................ 31 CAPITOLUL II. CREAREA ȘI UTILIZAREA TABELELOR ............................................ 32 2.1. Crearea unei tabele ................................................................................................ 32 2.1.1. Proprietăţile câmpurilor................................................................................... 33 2.1.2. Definirea unei chei primare ............................................................................. 37 2.1.3. Stabilirea unui index ....................................................................................... 37 2.1.4. Modificarea proprietăţilor unui câmp ............................................................... 38 2.2. Editarea datelor într-o tabelă .................................................................................. 39 2.2.1. Introducerea de date în tabelă .......................................................................... 39 2.2.2. Vizualizarea informaţiilor dintr-o tabelă .......................................................... 40 2.2.3. Modificarea datelor într-o tabelă ..................................................................... 40 2.2.4. Adăugarea de înregistrări într-o tabelă ............................................................. 41 2.2.5. Ştergerea de date într-o tabelă ......................................................................... 41 2.3. Crearea relaţiilor între tabele ................................................................................. 43 CAPITOLUL III. UTILIZAREA INFORMAŢIILOR DINTR-O BAZĂ DE DATE .............. 45 3.1. Conectarea la o bază de date existentă .................................................................... 45 3.2. Căutarea datelor cu ajutorul instrumentelor mediului Access .................................. 45 3.3. Crearea unei interogări simple ............................................................................... 46 3.4. Crearea interogărilor peste mai multe tabele ........................................................... 51 3.5. Selecţia şi sortarea datelor ..................................................................................... 56 3.6. Salvarea unei interogări ......................................................................................... 57 3.7. Adăugarea şi eliminarea filtrelor ............................................................................ 57

3

.......................................................................................................................................................................................................... 144 4 .......................2..........................................12 Accesul cu programele la obiectele bazei de date .....................10 Obiecte ACCESS 2000 ..................3............ 128 6...........8.............................................11 Programarea dirijată de evenimente în ACCESS 2000 .... 62 3... 86 4................................................................................. Structura repetitivă cu numărător ............. Gruparea datelor într-un raport.......................................................................... Culorile obiectelor ...................... 120 6..... Documentaţia ........................................................8.................. 103 6.............. 84 4............................................................. Comenzi destinate tabelelor ....... 113 6............. Tipurile variabilelor în VBA .......................1.................. 140 7....1 Editarea modulelor Visual Basic for Application ..................................... 91 5..... 103 6....... 59 3................................ Proprietăţile esenţiale ......2 Elemente de sintaxă . Crearea unui raport .......................... 111 6.............................................................................3................... ÎNDRUMAR PENTRU REALIZAREA PROIECT ULUI LA DISCIPLINA „BAZE DE DATE‖ ........................................ 113 6.................. 124 6..... 105 6..................................... 106 6..................................1.................1................... 97 CAPITOLUL VI............................3......3............2................8....................................................................8............ Proiectarea unui formular legat de o sursă de înregistrări ........3...................2................................3.................. 114 6. 120 6.................. Baza de date ..... Obiectele simple ...................4.8.................................. 91 5......2........9 Programarea recursivă ....................................... 77 4........................1.......... Instrucţiunile pentru manipularea datelor ........................... 59 3....... CREAREA ŞI UTILIZAREA RAPOARTELOR ........3. Limbajul SQL ............... 109 6..............4... Aranjarea obiectelor ......................1........3................................... Structura repetitivă „pentru fiecare‖ ................................................................ Realizarea de totaluri şi subtotaluri ...................4................... Controale .............3............1...3 Casete de dialog predefinite .3...............................2....... CREAREA ŞI UTILIZAREA FORMULARELOR ........................................3........2................. 74 CAPITOLUL IV............................................ 140 7................6 Funcţii şi proceduri definite de utilizator ................. 82 4........ 131 CAPITOLUL VII............ Instrucţiunile de selecţie a datelor .......4 Variabilele în VBA ....................... Cerinţe minimale ...................................................................3................................. 141 7......................................................................... 82 4.............................................. Structurile repetitive de tip Do … Loop . Iniţializarea variabilelor ...4... Particularizarea antetului şi subsolului ......................................................5.......1.............................................................................................................................................8........................................ 85 4..................... 125 6....... 94 5.........................................................4........................................ 126 6.................................... 63 3...... 109 6..............8.... 77 4................................ LIMBAJUL VISUAL BASIC ............................... 122 6...........2........ Declararea variabilelor .................................................................................5................................................................................................... Tablouri ... Noţiuni generale ............... 80 4......................... Alte facilităţi ..........................................3.................8.... Limbaj Structurat de Interogare SQL (Structured Query Language) ............................................ 119 6............8 Structura repetitivă ....................................... 87 CAPITOLUL V.....................................7 Structura alternativă ......

.................BIBLIOGRAFIE . 149 5 ...........................................................................................

Termeni specifici în lucrul cu bazele de date Gestiunea colecţii1or de date este una din cele mai importante probleme care se rezolvă astăzi cu ajutorul calculatoarelor existente. DELIMITĂRI BAZELOR DE DATE CONCEPTUALE ALE 1. sau în baze de date.1. Elementele generice ale unei baze de date sunt: ► Coloanele. care se numesc câmpuri (în engleză FIELDS). O bază de date poate fi definită ca fiind o colecţie de tabele în care sunt stocate clase de entităţi diferite. care sunt gestionate de Sistemele de Gestiune a Bazelor de date (SGBD). tabelă articole sau tupluri (în engleză Înregistări Câmpuri RECORDS). 6 . Lucrul cu voume tot mai mari de date i-a făcut pe oameni să sporească din ce în ce mai mult numărul calculatoarelor şi să le îmbunătăţească caracteristicile p e zi ce trece. până la calculatoarele foarte puternice. pentru a-şi uşura astfel munca. de la cele mai simple PC-uri (Personal Computers).CAPITOLUL I. care se numite înregistrări. Nume ► Rândurile. care sunt apoi gestionate cu ajutorul limbajelor de programare. Aceste colecţii de date pot fi memorate în diferite fişiere.

împreună cu aplicaţiile care le exploatează (utilizează). Atributul este o proprietate importantă a unui obiect din lumea reală. organizate pentru a fi prelucrate de programe informatice. Astfel. Memo. Bazele de date sunt fişiere stocate pe suporturi magnetice. N. Numeric. 3. 7 . o entitate poate fi definită ca o reprezentarea unică a unui obiect real. 4. T. Aceasta corespunde unei înregistrări şi este reprezentată prin luarea de valori pentru diferite atribute ale sale. aceştia fiind folosiţi pentru crearea indexului principal al entităţii. atributele pot fi de tip logic. Pentru identificarea univocă a unei entităţi este necesară crearea unui atribut sau a unei combinaţii de atribute care poartă denumirea de identificator sau cheie. În ACCESS identificatorii sunt câmpuri cheie principale. Pentru a diferenţia două entităţi este necesar ca măcar un atribut să aibă valori diferite. 5. în vreme ce câmpurile definesc structura tabelului. Atributul mai poate fi definit ca fiind o celulă sau o căsuţă dintr-un tabel. câmpurile putând conţine articole de lungimi variabile. Cele mai multe baze de date sunt relaţionale (în proporţie de 80%-90%). asociaţiile dintre mai multe entităţi. când se vor specifica şi intervalele de valori pentru fiecare câmp. O bază de date este un ansamblu structurat de date evolutive. F. Domeniul de valori al atributului poate fi precizat la creearea bazei de date. Logic.Un tabel este de fapt o colecţie a tuturor entităţilor de date dintr -un singur tip de date (tip de entităţi sau clasă de date). putând să suporte valorile Y. tipul lor şi dimensiunea lor. şir de caractere sau memo. Aceste relaţii logice reprezintă de fapt. câmpurile putând fi definite cu ajutorul unei date valabile. numărul de câmpuri. fiind necesar pentru a distinge entităţile între ele. O bază de date are o structură care poate fi reprezentată sub forma unei colecţii de descrieri statice ale diferitelor tipurilor de entităţi. dată calendaristică. numeric. Şir de caractere. dar si a relaţiilor logice dintre acestea. Înregistrările dintr-un tabel formează cardinalul. Câmpurile unui tabel pot fi de tipul: 1. La fel ca şi câmpurile. Dată calendaristică. putând fi de diferite lungimi. putând fi definite cu ajutorul numerelor întregi sau cu ajutorul zecimalelor. 2.

Un exemplu de bază de date relaţională ar putea fi prezentat cu ajutorul celor două tabele.Bazele de date relaţionale sunt de fapt nişte tabele cu relaţii între ele. nume şi salar nominal . Florida. Exemplificăm. În Access se utilizează relaţiile de unu-la-mai-mulţi. ► Relaţii de unu-la-mai mulţi. Codd 1. model care constituie baza teoretică a bazelor de date relaţionale. în anul 1970. a inventat modelul relaţional pentru gestiunea bazelor de date. Două tabele aflate în relaţie de unu-la-unu. sunt interclasabile şi pot fi privite ca unul singur.com) 8 . Nu este nevoie să fie denumit identic în ambele tabele. înseamnă că aceste coloane sunt redundante. Relaţiile între tabele pot fi stabilite şi pe combinaţii de câmpuri (unele SGBD-uri permiţând şi descrierea de astfel de combinaţii prin expresii aritmetice). Insula Portland.mai mulţi (scris 1-∞). se pot stabili mai multe tipuri de relaţii între tabele. a căror structură este redată mai jos: Marcă Nume Adresă Salar nominal Marcă Nume Funcţii Salar nominal Deduceri Impozit Faptul că următoarele coloane: marcă. Relaţiile de tipul mulţila-mulţi. nu pot fi incluse în bazele de date relaţionale. Primul care a introdus noţiunea de bază de date relaţională a fost E. dar privit din părţi diferite. în figura de mai jos. după cum urmează: ► Relaţii de unu-la-unu. SUA) a fost un informatician american de origine engleză care. Astfel. câmpul care conţine marca trebuie să fie inclus în ambele tabele. lucrând pentru IBM. se referă la acelaşi lucru. Williams Island. ► Relaţii de mulţi-la-mulţi. Pentru a putea stabili relaţii între tabele. definite în ACCESS: 1 Edgar Frank Codd (23 august 1923. 4 tabele cu relaţii de unu-la. Anglia – 18 aprilie 2003. (conform wikipedia. în schimb trebuie să aibă acelaşi conţinut. ► Relaţii de mulţi-la-unu. apar de două ori. Relaţiile de unu-la-mulţi şi mulţi-la-unu. F. articolele rezultate cuprind reuniunea câmpurilor celor două tabele. Aceste baze de date relaţionale au redundanţă minimă şi controlată.

Acest program este foarte popular în ţara noastră. Noţiuni generale privind sistemele de gestiune a bazelor de date Aplicaţiile care exploatează aceste date sunt cunoscute sub denumirea de sisteme de gestiune a bazelor de date sau S. Cu acest nume. prin care firmele şi-au dezvoltat proiecte proprii de informatizare.D. Câteva astfel de sisteme de gestiune a bazelor de date ar fi: ► ORACLE. de tip client-server. încă de la începutul anilor ’80. Compania americană cu acest nume. ► SQL Server.1. de tip client-server.B. mini. Cu această denumire Compania Microsoft a promovat un model de organizare a datelor. a oferit. fac ca în ţara noastră. recurgerea la soluţiile Oracle să se facă doar pentru proiectele de sisteme informatice mari. micro). 9 . ► FoxPro. Preţul ridicat. datorat standardelor de calitate ale produselor şi serviciilor. existent din anul 1990. numit dBASE.2. pentru calculato are de toate tipurile (mari. rapide şi eficiente variante de sisteme de gestiune a bazelor de date. deoarece crearea şi evoluţia lui este sincronă fenomenului exploziv din anii 1990. Sisteme de gestiune a bazelor de date 1.1.. compania Microsoft promovează sistemele de gestiunea a bazelor de date. cele mai robuste. pentru problemele care depăşesc capacităţile ACCESS sau FoxPro. pentru reţelele locale sau pe Internet.G.2.

Toate fişierele sunt în ultimă instanţă un lung şir de biţi.2. ceea ce face până la urmă diferenţa între ele. dar şi pentru crearea unor programe care să folosească aceste date. care să poată efectua cele patru operaţii (adăugare. Astfel. redarea sunetelor din fişierele tip . ► Aplicaţia Microsoft ACCESS. Partea din limbaj specializată pentru aceste sarcini se constituie într-un Limbaj de Definire a Datelor (abreviat în mod uzual: LDD). şi un sistem de gestiune a bazelor de date are menirea de a conferi unor fişiere forma de tabele pentru ca informaţiile conţinute să fie accesibile utilizatori lor. regăsire. Principalul scop al unui sistem de gestiune a bazelor de dat e este acela de a pune la dispoziţia utilizatorilor mijloacele necesare pentru crearea bazelor de date. datele trebuie construite astfel încât să poată fi accesibile mai multor programe. Este recomandabil ca în aplicaţii. În plus.jpg. Funcţiuni ale sistemelor de gestiune a bazelor de date Un sistem de gestiune a bazelor de date are următoarele funcţiuni: 1. Este un sistem de gestiune a bazelor de date foarte răspândit datorită faptului că este gratuit (de tip Open Source). un Limbaj de Manipulare a Datelor (abreviat în mod uzual: LMD). date prin aplicaţiile lor. pentru a realiza acest lucru. este principalul scop al unui SGBD perceput de utilizatorii obişnuiţi. folosesc structurile de 10 . Definirea bazei de date. modificare). scrise cu ajutorul LMD-ului. în principal a structurii tabelelor. regăsi şi actualiza (modifica sau şterge). Aceştia îşi doresc să poată introduce. aceasă aplicaţie făcând parte din suita de programe de birou Microsoft Office. Datele trebuie să aibă o stabilitate mai mare decât programele. Aceste programe.wav sau a imaginilor din fişierele .► MySQL. sunt programele dedicate acestor meniri. Prin similitudine se poate spune că rolul unui sistem de gestiune a bazelor de date pentru o bază de date este asemănător rolului unui Sistem de Operare pentru un calculator.bmp sau . 1. iar modificările aduse uneia să nu afecteze bunul mers al celeilalte. a relaţiilor sau a altor obiecte specifice SGBD-urilor. Programatorii au la dispoziţie. Manipularea informaţiilor din baza de date. şi/sau autorul unor comenzi (dacă nu există un astfel de limbaj). care este un sistem de gestiune a bazelor de date relativ nou.2. 2. alcătuit din diferite comenzi (dacă un astfel de limbaj nu există). părţile care implementează aceste prime două funcţiuni să fie pe cât posibil distinct conturate. vederilor. care sunt scrise în limbaje diferite şi care rulează pe mai multe calculatoare. şt ergere. interogărilor. şi/sau dintr-o interfaţă cu utilizatorul (variantă mult utilizată).

mai nou. ► Urmărirea performanţelor bazei de date.3. precum şi structura logică la care va avea acces. Urmărirea funcţionării bazei de date prin: ► Păstrarea în baza de date a datelor corecte şi la zi. datorită unor erori de programare. ► Integrităţii. În momentul de faţă sunt folosite tot mai des sistemele de gestiune a bazelor de date relaţionale şi. defecte de echipament. 3. 1. 4.date luate din tabelele (dicţionarele). Codd a detaliat. caracteristicile care trebuie să fie îndeplinite de un sistem de gestiune a bazelor de 11 . ► Informarea continuă cu privire la observaţiile utilizatorilor bazei de date. Caracteristicile sistemelor de gestiune a bazelor de date pentru o bază de date relaţională De-a lungul timpului au fost concepute mai multe tipuri de sisteme de gestiune a bazelor de date care s-au pretat diferitelor momente de evoluţie fizică a tehnicii de calcul. Reorganizarea bazei de date prin actualizări ale structurilor sau ale programelor de acces. Administrarea bazei de date. realizând protecţia împotriva accesului neautorizat la date. Acelaşi E. iar atribuţiile îndeplinite se constituie în funcţia de administrare a bazei de date. ► Punerea la dispoziţia utilizatorilor a unor programe sau proceduri. Un SGBD trebuie să includă mijloace le prin care un administrator de baze de date să îşi poată îndeplini sarcinile (funcţiile) de bază. încearcă să se impună pe piaţă şi sistemele de gestiune a bazelor de date distribuite. Un SGBD asigură protecţia datelor prin asigurarea: ► Confidenţia1ităţii.2. cum ar fi: a). Organizarea bazei de date prin stabilirea structurii şi încărcarea ei cu date iniţiale. este numită administratorul bazei de date. în anul 1985. ► Asigurarea integrităţii şi confidenţialităţii datelor. Persoana (sau grupul de persoane) care are aceste sarcini. distrugeri rău intenţionate. etc. cu ajutorul unor programe utilitare. b). O sarcină importantă a gestiunii bazei de date se referă la supravegherea datelor din baza de date şi supervizarea programelor de acces la aceste date. F. c). unde se află descrise structurile virtuale ale bazei de date. realizând protecţia împotriva alterării conţinutului bazei de date. Protecţia informaţiilor din baza de date este o problemă la ordinea zilei datorită generalizării bazelor de date cu acces partajat al mai multor utilizatori.

Garantarea accesului la date. descrierea tabelelor. ACCESS-ul de exemplu. Regula 2. 12 . Regula 5. şi deci datele trebuie să fie memorate şi prelucrate în acelaşi mod. astfel de valori trebuie să specifice faptul că într-o celulă o valoare nu a fost completată şi acest lucru nu trebuie să fie confundat cu valori 0 pentru tipul numeric sau spaţiu pentru tipul text. Regula 7. În ACCESS spre exemplu. Regula 6. Catalogul de sistem. Regula 1. Principiul de bază. În aplicaţia ACCESS există astfel de valori care poartă denumirea de Null. nume tabel şi nume câmp. printr-o combinaţie de genul: cheie primară. În ACCESS acest lucru se realizează cu ajutorul aplicaţiei Microsoft Jet. suportă limbajul SQL. În acest sens ACCESS-ul a fost primul sistem de gestiune a bazelor de date pentru PC-uri. Actualizarea vederilor. Limbajul cuprinzător. Independenţa logică a datelor. Regula 8. Independenţa fizică a datelor. Aceste reguli pot fi sintetizate astfel: Regula 0. O aplicaţie nu trebuie să se modifice dacă . Regula 9. care a permis realizarea interogărilor pentru actualizare. Regula 4. se pot defini chei primare. adică în tabele trebuie să poată exista valori nule (vide).date pentru ca acesta să fie considerat relaţional. actualizări sau ştergeri de câmpuri. Actualizări la nivel de mulţime. În cadrul aplicaţiei ACCESS acest lucru este posibil. acest lucru este posibil cu ajutorul aplicaţiei Microsoft Jet. potrivit căreia toate datele trebuie să fie cuprinse în tabele de date. sub forma a 13 reguli. se adaugă sau se şterge un index. schimbările efectuate asupra relaţiilor dintr-o bază de date nu trebuie să afecteze programul de aplicaţie. În tabele este necesar ca modificările şi actualizările să se facă la nivel de mulţime de articole. Conform acestei reguli. un sistem de gestiune a bazelor de date trebuie să conţină un limbaj cuprinzător pentru definirea datelor. Stocarea informaţiei. conform căruia orice sistem de gestiune a bazelor de date relaţional trebuie să gestioneze toată baza de date numai prin posibilităţile modelului relaţional. realizarea unor adăugări. altfel spus datele trebuie să fie fizic independente faţă de programul aplicaţiei. Regula 3. În ACCESS de exemplu. acest lucru însemnând că descrierea bazei de date trebuie să se facă tot în tabele. care are motor logic de stocare. spre exemplu. potrivit căreia fiecare element de dată trebuie să fie accesibil logic. Lipsa informaţiei. În ACCESS acest lucru e posibil cu ajutorul motorului Microsoft Jet. însemnând că toate vederile trebuie să fie actualizate de sisteme.

Microsoft Excel sau Microsoft PowerPoint. Paradox sau SQL Server (şi MSDE). Folosindu-se de lucrările lui E.2. prima variantă a acestei aplicaţii fiind lansată pe piaţă de compania Microsoft în anul 1992. un alt SGDBR creat de Microsoft. S-a ajuns astfel la dezvoltarea şi perfecţionarea unor limbaje relaţionale precum SQL (Structured Query Language).Regula 10. din ce în ce mai mulţi oameni de ştiinţă au încercat să redefininească şi să îmbunătăţească aceste concepte. 13 . Sistemul de gestiune a bazelor de date ACCESS Unul dintre cele mai actuale sisteme de gestiune a bazelor de date este aplicaţia Microsoft ACCESS. ► Este deschis comunicării cu alte sisteme de gestiune a bazelor de date cum ar fi FoxPro. Pentru a ajuta la extinderea acestui limbaj în întreaga comunitate a producătorilor de baze de date. având în vedere utilizarea de variabile constituite din tupluri. QBE (Query-By-Example) sau QUEL(Query Language). Limbajul SQL se bazează pe calculul relaţional. F. Regula 12. obiectele ACCESS putând fi folosite în aceste SGBD-uri dar şi în alte aplicaţii windows. Din cadrul programelor Microsoft Office mai fac parte şi aplicaţiile : Microsoft Word. Inexistenţa subminărilor. indiferent de varianta de limbaj folosită. sau invers. Institutul Naţional American pentru Standarde (ANSI) a elaborat şi lansat standardele SQL. Regula 11. însemnând că dacă un sistem de gestiune a bazelor de date relaţional are un limbaj de manipulare al unei singure înregist rări. În ACCESS acest lucru înseamnă că nu se pot încălca regulile de integritate. Potrivit acestei reguli. capacităţile sistemelor de gestiune a bazelor de date nu au voie să fie limitate datorită distribuţiei unor componente ale acestora în baze de date separate. În ACCESS se pot crea reguli de integritate cu ajutorul limbajului SQL. Independenţa distribuţiei. în cadrul suitei de programe de birou Microsof Office. acest limbaj nu va putea fi folosit la ocolirea regulilor de integritate sau a constrângerilor modelului relaţional.4. Codd referitoare la modelul relaţional şi la limbajele bazate pe algebra relaţională sau calculul relaţional. obiecte din aceste SGBD -uri pot fi folosite în ACCESS. potrivit cărora acest limbaj foloseşte acelaşi set de comenzi şi structuri de bază standa rdizate. în 1986. sau altfel spus restricţiile de integritate trebuie să poată fi definite într-un limbaj şi să poată fi stocate într-un catalog. Independenţa integrităţii datelor. 1. Principalele caracteristici ale sistemului de gestiune a bazelor de date ACCESS sunt: ► Este componenta dedicată bazelor de date relaţionale din Microsoft Office.

precum şi stocarea şi căutarea uşoară a acestora. Microsoft SQL Server ca viteză sau concurenţă partajată de lucru. în capitolele următoare.3. proiectarea. dar pentru proiectele mai mici avantajele de mai sus constituie argumente serioase pentru alegerea aplicaţiei ACCESS. 14 . scris în HTML compilat. Informix. Aceste aplicaţii trebuie să gestioneze bazele de date într -un mod mai eficient decât în cazul în care am gestiona aceste date manual.  Permite accesul la baze de date din reţeaua Internet. Aceste tehnologii sunt:  Tehnologia ActiveX. utilizarea lui este intuitivă şi este relativ uşor de învăţat . ajutorul fiind apelabil contextual sau la cerere. ► Permite crearea de grupuri de obiecte definite de utilizator în cadrul bazei de date. testarea şi administrare obiectelor bazelor de date proprii. Printre cele mai importante avantaje în lucrul cu o bază de date electronică se numără: ► Viteza mărită şi posibilitatea de a stoca un volum mare de date. Aceste caracteristici. fiind un instrument util pentru publicarea informaţiilor în paginile Web. Atunci când aceste colecţii sunt prea mari pentru a le gestiona manual avem nevoie de calculator. ► Limbajul propriu al SGBD-ului relaţional ACCESS este Visual Basic. cu ajutorul căruia să construim aplicaţii care să gestioneze aceste baze de date.  Este autodocumentat prin ajutor (help). atunci când avem de lucru cu colecţii mari de date avem tendinţa de a realiza tabele care să ne ajute să gestionăm aceste date. care permite realizarea aplicaţiilor client/server. Pe de altă parte este adevărat că SGBD Access nu poate concura cu Oracle. ► Introducerea şi editarea comodă a datelor.  Bazele de date pot fi personalizate. deoarece este creat de firma Microsoft. ► Permite protecţia accesului la obiecte prin administrarea de drepturi de acces pentru utilizatorii ordonaţi în grupuri. Din acest motiv pentru proiectele mari trebuiesc alese aceste sisteme de gestiune a bazelor de date. 1. ne-au determinat să alegem pentru exemplificarea noţiunilor despre baze de date aplicaţiile realizate cu ajutorul mediului ACCESS.► Beneficiază de tehnologii avansate. ► E foarte răspândit.  Permite crearea foarte simplă a obiectelor bazei de date cu instrumentele expert (wizard). Scopul unei baze de date În mod intuitiv. Pune la dispoziţia utilizatorilor un mediu prietenos pentru crearea.

cereri de interogare (queries).► Posibilitatea de pregătire a unor rapoarte precise. Formularele sunt obiecte care permit introducerea datelor. Astfel. 1. Componentele aplicaţiei ACCESS Aplicaţiile în ACCESS se constituie în jurul unei baze de date dată. ► Asigurarea partajării datelor cu ajutorul altor aplicaţii sau a altor calculatoare. o bază de date ACCESS poate fi definită ca fiind o colecţie de obiecte: tabele (tables). principalele avantaje ar fi: ► Asigurarea unor posibilităţi avansate de manipulare. Acestea îşi stochează toate elementele de care are nevoie în containerul bazei de date. Un formular poate conţine: 15 . rapoarte (reports). ► Stabilitatea aplicaţiei în contextul sistemului de operare. ► Aplicaţia este foarte răspândită în întreaga lume. editarea sau afişarea acestora. comenzi macro (macros) şi module (modules). sau controlul întregii aplicaţii. ► Aplicaţia este uşor de învăţat. În cazul utilizării aplicaţiei ACCESS. pagini Web (pages). ► Asigurarea securităţii datelor împotriva accidentelor. ► Aplicaţia este foarte directă în ceea ce priveşte posibilităţile de modificare a câmpurilor şi a tabelelor. în forma dorită şi utilizând datele de la un moment dat. în care sunt stocate datele primare. stocare şi selecţie a datelor. Tabelele sunt obiecte definite de utilizator. formulare (forms).4.

formulare. în vederea furnizării accesului la date prin intermediul browser-elor de Internet. Aceste obiecte pot fi însă create şi de către utilizator. Proiectarea unei baze de date presupune răspunderea la o serie de întrebări. Proiectarea bazelor de date 1. macro -uri etc).A. 1.5. cum ar fi: 16 . Paginile Web de accesare a datelor reprezintă obiecte care includ fişiere HTML şi alte fişiere suport. Interogările sunt obiecte care permit vizualizarea informaţiilor obţinute p rin prelucrarea datelor din una sau mai multe tabele. Comenzile Macro reprezintă obiecte care conţin o definiţie structurată a uneia sau mai multor acţiuni pe care ACCESS-ul le realizează ca răspuns la un anumit eveniment. Principii ale proiectării bazelor de date Metoda clasică. şi de altfel singura metodă de proiectare pentru persoanele care nu au experienţă în ceea ce priveşte utilizarea programelor informatice.1.5. şi/sau a altor cereri de interogare. În cadrul aplicaţiei ACCESS utilizatorul poate apela la Vrăjitori (Wizards) pentru a creea orice obiect (tabele. Modulele reprezintă obiecte care conţin proceduri definite de utilizator şi sunt scrise în limbajul de programare Visual Basic for Applications (V.Rapoartele sunt obiecte ale bazelor de date prin care sunt vizualizate sau tipărite informaţii cu conţinut şi structură accesibilă şi conforme cerinţelor utilizatorilor.). este recurgerea la hârtie şi creion.B.

discipline. Datele vor fi memorate în tabele şi fiecare tabel va conţine date doar despre un singur subiect (ex: elevi. a macrocomenzilor şi a modulelor . este nivelul aferent administratorului bazei de date. de obicei. şi abia apoi se va trece la încercarea de închegare a tabelelor. ► nivelul intern. dar şi determinarea relaţiilor dintre acestea. în viziunea căruia baza de date este o abstractizare a unei p ărţi din lumea reală. Pot exista o mulţime de sub-scheme. indecşii. atributele şi relaţiile. a rapoartelor. ► nivelul conceptual. definind mai întâi schema conceptuală şi deduc ând ulterior schemele externe posibil de obţinut. aceste forme de reprezentare externă a datelor se bazează pe interogări. informaţiile etc). diferite tipuri de interogări care prezintă informaţiile necesare.► De ce se doreşte realizarea bazei de date? (pentru a putea răspunde la această întrebare se va porni mereu de la rapoartele care ar trebui listate). Această viziune se concretizează într-o schemă conceptuală. realizându-se descrierea schemelor externe. a conţinutului lor şi a dimensiunilor acestora. ► Ce resurse avem la dispoziţie? (cele mai importante resurse fiind în acest caz calculatoarele. Redundanţa. trebuie să fie minimă şi controlată. de cele mai multe ori. etc). oamenii. corespunzător programatorului. precum şi schemele logice sau interogările. O bază de date bine proiectată conţine. Însă trebuie să se ţină cont de faptul că. Ei îşi exprimă cerinţele informaţionale prin aşa -numitele scheme externe. machetele de introducere sau d e ieşire. procedurile de calcul. ceea ce presupune def inirea câmpurilor. adică apariţia unei informaţii de două ori în baza de date. Determinarea structurii unei baze de date se poate aborda ascendent. urmată de elaborarea schemei conceptuale. nu direct pe tabele. În acest scop îşi vor da concursul un grup mai larg de persoane a căror activitate va fi influenţată de modificarea acestei zone a sistemului informatic al instituţiei. În momentul proiectării unei baze de date se vor urmării în primul rând entităţile. sau descendent. este influenţată în primul rând de calitatea structurii datelor. este nivelul în care sunt percepute bazele de date de utilizatori. Proiectarea formularelor. există trei niveluri de percepţie a acesteia: ► nivelul extern. la normalizarea lor şi stabilirea relaţiilor dintre ele. În demersul realizării unei baze de date. 17 . fiecare sub-schemă corespunzând viziunilor unui utilizator al bazei de date. care realizează modul de reprezentare a datelor pe suportul fizic. ► Ce anume va fi de făcut? Abia apoi se va trece la proiectarea tabelelor.

1. Fiecare câmp este un fapt despre un anumit subiect. cu relaţie între ele. astfel încât să conserve informaţiile şi dependenţele funcţionale din relaţia iniţială (descompunerea fără pierderi).2. iar redundanţa lor este minimă şi controlată. bloc. care poate analiza forma unui tabel la un moment dat şi. poate propune noi structuri de tabel şi relaţii. care poate analiza întreaga bază de date şi poate efectua recomandări şi sugestii pentru îmbunătăţirea acesteia. Pornind de la listele necesare (rapoarte). a cerinţelor lor .În ajutorul aplicaţiei Microsoft Access (Help) sunt prezentaţi paşii care trebuie parcurşi pentru proiectarea unei baze de date. număr. ► Stabilirea câmpurilor necesare în baza de date. Nu trebuie să rămână vreun fapt fără un câmp corespondent. Aceştia sunt: ► Stabilirea scopului bazei de date. Fiecare tabel trebuie să conţină informaţii despre un subiect. Aceste fapte corespund câmpurilor (coloanelor) din baza de date. Prin normalizare datele sunt cuprinse în mai multe tabele. Expertul poate implementa de asemenea aceste recomandări şi sugestii. ► Introducerea datelor şi crearea altor obiecte ale bazei de date . etaj. În aplicare a acestei tehnici se ţine cont de dependenţela funcţională dintre câmpuri. ► Stabilirea relaţiilor dintre tabele.5. iar câmpurile trebuie să fie detaliate în cele mai mici părţi logice. ► Stabilirea tabelelor necesare în baza de date. iar subiectele cărora le aparţin corespund tabelelor. şi poate scinda un tabel în noi tabele corelate. scară. o adresă trebuie să fie descompusă în stradă. ► Identificare câmpurilor cu valori unice în fiecare înregistrare . dacă este corespunzător. Microsoft ACCESS conţine două instrumente cu care se poate îmbunătăţiţi forma unei baze de date: 1. 18 . Analizatorul de Tabel. Se deduc apoi faptele ce trebuie memorate în baza de date şi cărui subiect îi va aparţine fiecare. 2. De exemplu. De asemenea în câmpuri nu se înscriu liste sau valori calculate. ► Stabilirea apartenenţei fiecărui câmp la tabelul corespunzător. Normalizarea unei baze de date relaţionale Normalizarea unei baze de date este o tehnică de transformare a a unei baze de date folosită pentru a elimina anomaliile de actualizare. ► Utilizarea instrumentelor de analiză ale Microsoft ACCESS. Analizatorul de Performanţă. ► Îmbunătăţirea proiectului. dacă o astfel de corelaţie are sens. apartament. a utilizatorilor. se schiţează formulare le de introducere a datelor.

27 l 15 2.10.2009 Anton Lapte UM Cant Pret Discount kg 15 3. într-o colecţie de relaţii care să conserve informaţiile şi dependenţele funcţionale din relaţia iniţială (descompunerea fără pierderi).E.10.2009 Popescu Lapte 0261111111 3 22. Procesul de normalizare a relaţiilor se realizează în mai mulţi paşi.Toamnei nr 3 Str. începând cu forma normală unu (1NF) şi ajungând (după ultimele cercet ări) la forma normală cinci (5NF).2009 Anton Lapte 0261111111 4 23. ori ştergerea făcându-se la nivelul tuplului.2009 Trandafir Ulei 0261333333 5 24.1 Fl 11 3.9 5 l 18 2. pe care le-a numit anomalii de actualizare.2009 Popescu Zahar 0261222222 1 21.2009 Trandafir Lapte 0261222222 6 25.2009 Anton Ulei 0261111111 4 23. F.9 19 . O bază de date este în forma normală 1 dacă şi numai dacă toate câmpurile din tabelele ei nu sunt repetate şi conţin numai valori atomice. ► Anomalia de modificare. care constă în faptul că anumite date care urmează să fie şterse fac parte din tupluri în care se găsesc şi alte date care sunt necesare şi în continuare. care rezultă din faptul că este dificil de modificat o valoare a unui atribut atunci când ea apare în mai multe tupluri ale relaţiei. O bază de date este în forma normală 2 dacă şi numai dacă a trecut de forma normală 1 şi în tabelele ei orice câmp non-cheie este complet dependent funcţional de cheia primară.Verii nr 2 Str Primaverii nr 1 Str Primaverii nr 1 Str Primaverii nr 1 Telcli Nrfact Datafact Delegat DenProd 0261222222 1 21.27 l 30 2.Toamnei nr 3 Str.Verii nr 2 Str. Codd a demonstrat că într-o anumită formă relaţiile posedă proprietăţi nedorite.Toamnei nr 3 Str.10.2009 Popescu Ulei 0261222222 2 22.10.27 l 20 2. acestea se pierd. ► Anomalia de adăugare. Fie următorul set de date.Verii nr 2 Str. referitoare la vânzări: Dencli SC Secundul SRL SC Secundul SRL SC Secundul SRL SC Terţa Parte SRL SC Terţa Parte SRL SC Terţa Parte SRL SC Secundul SRL SC First SRL SC First SRL SC First SRL Adrcli Str. Aceste anomalii sunt: ► Anomalia de ştergere.9 5 l 15 2. Aceasta constă în descompunerea unei relaţii în conformitate cu mulţimea dependenţelor funcţionale F. F. constă în faptul că anumite date care urmează să fie adăugate fac parte din tupluri incomplete (pentru care nu se cunosc toate datele).10.2009 Dragoș Lapte 0261333333 5 24.Verii nr 2 Str.1 Fl 20 3.10. Pentru a înlătura aceste anomalii. ceea ce face ca acestea să nu poată fi adăugate. Codd a stabilit trei forme normale pentru relaţii şi a introdus procesul de normalizare care se bazează pe noţiunea de dependenţă funcţională (FD) ca relaţie între atributele unei entităţi cu caracter invariant.10. E.10.10.9 Fl 12 3.2009 Trandafir Zahar 0261333333 5 24. O bază de date este în forma normală 3 dacă şi numai dacă a trecut de forma normală 2 şi în tabelele ei fiecare câmp non-cheie este dependent numai de cheia primară.10.9 5 kg 25 3.

2009 Trandafir 1009 5 24.2009 Dragoș 24. conform căreia un tabel este în această formă dacă a trecut de prima formă normală şi dacă toate câmpurile care nu sunt chei sunt dependente de cheia primară. Datafact şi Codprod. A doua formă normală.10.27 2. dar deoarece valorile incluse sunt manipulate. S-a găsit Dencli de care sunt dependente câmpurile Adrcli.9 6 25.1 3.2009 Anton 7023 1009 7023 1075 Zahar 7023 Lapte La rândul lui. Pret. Restul câmpurilor. nu trebuie să existe câmpuri ce conţin liste de valori sau grupuri de date. în mod agregat.2009 Popescu 1075 1 21. Câmpul Adrcli ar putea fi considerat un câmp complex şi divizat în stradă şi număr.2009 Dragos 7023 5 24. Telcli.2009 Anton 23.10. în care cheia o constituie combinaţia de câmpuri: Nrfact. tabelul facturi se descompune în două tabele:  în primul pot fi trecute informaţiile generale despre facturi cu cheia compusă din: Nrfact# 1 2 5 6 3 4 Datafact# Delegat 21.2009 Trandafir 25. În mod similar se procedează şi cu grupul de câmpuri DenProd.2009 Anton 4 23. la care adăugăm şi cele două coduri pentru relaţii.10.2009 Popescu 22.Toamnei nr 3 Codprod # 1009 Ulei DenProd Kg Fl L UM Pret 3. pentru care s-a introdus Codprod şi le vom grupa în tabelul Produse.2009 Anton 4 23.10. constituie împreună un tabel pe care îl putem numi Facturi.Verii nr 2 Telcli 0261222222 0261333333 Nrfact Datafact Delegat CodProd CodCli 222222 222222 222222 333333 333333 333333 222222 111111 111111 111111 Cant Discount 15 20 30 25 11 20 15 18 12 15 5 5 5 111111 SC First SRL 222222 SC Secundul SRL Str Primaverii nr 1 0261111111 1 21. Pentru legătură introducem câmpul Cocli.10.10.10.10. spune că toate coloanele unui tabel trebuie să conţină valori atomice (indivizibile).2009 Popescu 1009 2 22. 2.10. de obicei.10.10.10.10.10.2009 Trandafir 1075 5 24.2009 Trandafir 7023 333333 SC Terţa Parte SRL Str. Tabelul respectă condiţiile cerute pentru această formă. Pentru transformarea în 1NF a tabelelor se încearcă găsirea unui identificator (cheie primară) şi câmpurile care sunt dependente de identificator. Acestea alcătuiesc un tabel pe care îl putem numi Clienţi. Codcli # Dencli Adrcli Str. UM. datorită nedependenţei câmpurilor Delegat şi CodCli de cheia compusă. foarte mul ţi practicieni stochează în acest mod informaţiile despre adrese.10. Aşadar.1.2009 Anton CodCli 222222 222222 333333 222222 111111 111111  în al doilea pot fi trecute informaţiile cu rândurile din facturi cu informaţii despre produsele vândute: 20 . Prima formă normală.2009 Popescu 22.10.2009 Popescu 7023 3 22.

10.27 2.10. care este dependent în mod tranzitiv de cheia primară.10.2009 7023 22.2009 1075 15 21.10. vor fi create două tabele care vor fi în 3NF.10.10. În bazele de date nu se pun câmpuri calculate.10.2009 Popescu 24.2009 1075 25 24.2009 1009 11 24.2009 7023 18 23.2009 1009 20 22.9 1075 Zahar 1009 Ulei 7023 Lapte FactGen Telcli 0261111111 0261222222 0261333333 111111 SC First SRL 222222 SC Secundul SRL 333333 SC Terţa Parte SRL Nrfact# 1 2 5 Datafact# Delegat 21.2009 1009 23. presupune ca tabelele să treacă de a doua formă şi câmpurile ne-cheie să fie mutual independente pentru ca acestea să fie în această formă normală.2009 Trandafir CodCli 222222 222222 333333 În cel de-al patrulea tabel.2009 7023 23.2009 7023 20 25.10. Drept urmare.10.2009 1009 22.10.2009 1009 24.10.2009 7023 CodCli Cant Discount 222222 15 222222 20 222222 30 5 333333 25 333333 11 333333 20 5 222222 15 5 111111 18 111111 12 111111 15 3.10. din acest tabel.2009 7023 30 24.10.10.10.Toamnei nr 3 Produse Codprod # DenProd Fl L UM Kg Pret 3.Verii nr 2 Str.10. observăm că există câmpul Discount.2009 7023 15 22. FactProd Nrfact# 1 1 2 5 5 5 6 3 4 4 Datafact# CodProd# Cant 21.Nrfact# 1 1 2 5 5 5 6 3 4 4 Datafact# CodProd# 21.2009 7023 25.10.1 3.10.2009 1075 21. A treia formă normală.10.10. Primele trei tabele respectă criteriile pentru 3NF: Clineti Codcli # Dencli Adrcli Str Primaverii nr 1 Str.10.10.2009 1075 24.2009 Popescu 22.2009 7023 24.2009 1009 12 23.2009 7023 15 21 .10.

5. care presupune că orice componentă a cheii primare trebuie să ia o valoare unică . Acest aspect se referă la impunerea unor restricţii de validare a datelor. De exemplu: se va urmări ca datele calendaristice să fie stocate în câmpuri corespunzătoare. la proiectarea bazelor de date se pot impune anumite restricţii pentru a se realiza şi conserva integritatea bazelor de date. trebuie să existe o valoare corespunzătoare din acelaşi domeniu de valori şi de acelaşi tip. domeniul de valori să fie respectat. specifice domeniului aplicaţiei.3. aceasta fiind cheia primară. pentru fiecare înregistrare introdusă în tabel. 2. Conform integrităţii referenţiale. pentru fiecare valoare a cheii externe din baza de date relaţională. Integritatea în interiorul fiecărui tabel. Astfel. diferită de valoarea NULL. diferită de valoarea NULL. 22 . Pe de altă parte. se urmăreşte şi asigurarea integrităţii entităţii. Integritatea bazelor de date Integritatea bazelor de date se referă la anumite restricţii care asigură corectitudinea datelor stocate. Integritatea referenţială. care are două aspecte: 1.Discount Codprod # CodCli# 7023 333333 7023 222222 Discount 5 5 1.

articolul care are valoarea pentru Codcli egală cu 222222. în datele pe care le utilizăm.Relaţiile dintre tabele se realizează prin referinţe 2. adică nu sunt posibile actualizări care modifică ţinta unei referinţe şi nici ştergeri care elimină ţinta unei referinţe. pentru care cheia străină are valoarea pe care o are cheia primară a articolului şters. integritatea referenţială poate fi impusă atunci când se definesc relaţiile dintre tabele. pentru articolele corelate din tabelul Factgen (3 articole care au valoarea Codcli=222222). astfel încât să nu apară înregistrări care se referă la alte înregistrări care nu mai există. cu valoarea 999999. orice modificare a cheii primare se va propaga. în cascadă. stabilite între înregistrările tabelelor şi cheile tabelelor. ACCESS permite chiar şi afişarea în cascadă a relaţiilor dintre tabele. a codului client (Codcli) pentru „SC Secundul SRL‖ la valoarea 999999. va provoca ştergerea tuturor articolelor din tabelul ţintă al referinţei. a cărei scop este de a împiedica apariţia înregist rărilor solitare şi de a păstra sincronizate referinţele. precum în figura de mai jos: De exemplu. ACCESS nu va mai permite niciunei aplicaţii care utilizează baza de date încălcarea integrităţii referenţiale pentru acea relaţie. se va 2 de la verbul a referi 23 . sau ştergerea unui articol dintr-un tabelul de iniţiere a referinţei. Mai mult chiar. modificarea în tabelul Clienti. În ACCESS. Dacă se şterge din tabelul Clienţi. După activarea acestei impuneri pentru o relaţie dintre două tabele. şi în cheile străine. pr in precizarea actualizărilor şi ştergerilor în cascadă a câmpurilor corelate. va determina modificarea valorii câmpului Codcli. precum este redat în figura anterioară. Viabilitatea acestor referinţe poate fi înfăptuită prin integritatea referenţială.

1.produce (bineînţeles după o atenţionare şi acceptul utilizatorului) ştergerea în cascadă a celor 3 articole corelate din Factgen. sunt corelate. în structura de cascadă di n figură. SGBD-ul ACCESS afişează fesreastra din figură (numită sugestiv Pagina Introducere în Microsoft Office Access). la rândul lor. ştergerea unui articol din tabelul Clienţi provoacă ştergerea a trei articole în tabelul Factgen.6. Rezumând. La pornire. cu articole din tabelul Factprod. Operarea în mediul ACCESS 1. deoarece cele 3 articole din tabelul Factgen.1. după cheia compusă din câmpurile Nrfact şi Datafact (4 articole: două corespunzătoare facturii 1. Deschiderea aplicaţiei. Desigur că într-un sistem friendly user. şi utilizatorului îi sunt oferite mai multe posibilităţi. pachet care este proiectat să ruleze sub diverse versiuni ale sistemului de operare Windows. pentru ca utilizatorul să poată folosi metoda care i se pare cea mai naturală. orice se poate face în câteva moduri. Crearea unei noi baze de date SGBD ACCESS face parte din pachetul de programe Microsoft Office. provocând mai departe ştergerea a 4 articole în tabelul Factprod. Folosirea sintagmei în cascadă este îndreptăţită în acest caz. Pentru crearea unei noi baze de date trebuie aleasă opţiunea: Bază de date necompletată (Blank Access database) din partea a doua a panoului 24 .6. O posibilitate de a lansa SGBD-ul ACCESS este cea de la butonul Start pe calea programelor instalate: Start>All programs> Microsoft Office > Microsoft Access. unul corespunzător facturii 2 şi unul corespunzător facturii 6).

ut ilizatorul se foloseşte de lista ascunsă. ► Pentru a ajunge la directorul unde fişierul va fi stocat. Aceste operaţii se repetă până când se ajunge la locaţia dorită. unde alege unitatea de stocare şi apoi alege directorul sau fişierul dorit din lista cu directoare şi fişiere. 25 . din primul rând al fesrestrei. ► numele fişierului în care va fi stocată baza de date.După aceasta este afişată o fereastră cu titlul Fişier nou bază de date în care utilizatorul are de stabilit: ► directorul în care va fi salvat fişierul. Creare director nou Listă cu foldere şi Instrumente pentru fisiere fişiere Scrierea numelui fişierului Tipul fișierului Alegerea locului de stocare În fereastra Fişier nou bază de date se procedează în felul următor: ► În caseta pentru alegerea tipului fişierului se specifică extensia fişierului sau se alege un tip din lista ataşată.

se poate crea un director nou sau se poate apela la instrumentele pentru fişiere pentru căutare a. pentru a putea fi modificate. Dacă se doreşte. se poate face un clic pe fişierul dorit şi numele lui va fi trecut automat în caseta de scriere a numelui fişierului (Atenţie. datele legate de obiectul curent (tabele sau integogări). 1. acesta se alege din partea dreaptă a ferestrei Bază de date. În modul Foaie de date (Data view) sunt afişate. Obiectele sunt afişate în diferite moduri de vizualizare prezentate în figur a de mai jos. Se observă că multe moduri sunt comune pentru majoritatea obiectelor. Modurile de vizualizare se selectează apăsând butonul Vizualizare din panglică. adăugarea în lista de preferinţe sau afişarea proprietăţilor. În acest mod se configurează conţinutul şi forma obiectelor. în acest caz se va suprascrie fişierul ales). Moduri de vizualizare Pentru a se lucra cu un obiect. modul de afişare. ordonarea. Dacă numele fişierului dorit apare în listă. Operaţia se termină când se apasă butonul OK.► În caseta Nume fişier se va trece numele fişierului. prin intermediul 26 . Vizualizarea în modul proiectare (Design view) este posibilă pentru toate obiectele. sau se realizează în succesiunea operaţiilor pe care le execută aplicaţia. În modul Vizualizare raport (Report view) sunt afişate.2. Intrarea în noua bază de date se face atunci când este afişată fereastra bază de date.6.

6. pentru a putea fi modificate. Examinarea înaintea imprimării este o redare pe ecran a modului cum va fi tipărit documentul (raport) pe hârtia de imprimantă. în fereastra principală se acţionează în partea dreaptă. prin intermediul formatărilor prevăzute într-un formular. conţin datele rezultate în urma execuţiei comenzilor SQL. O interogare. mai este cunoscută şi sub numele de grilă QBE (acronim de la sintagma din engleză Query by Example) şi vizualizează grafic comanda SQL. la un moment dat. prin intermediul formatărilor prevăzute într-un formular sau raport şi se pot face unele modificări intuitive aspra machetei obiectului prin care se expun datele. În modul Vizualizare formular (Form view) sunt afişate. în care se selectează baza de date care se doreşte să fie modificată. Deschiderea. salvarea şi închiderea unei baze de date existente Pentru deschiderea unei baze de date existente se poate proceda în mai multe moduri. Sunt vizibile diferite niveluri de detaliere sau se indică aspectul prin glisarea de câmpuri şi elemente sau prin expunerea şi ascunderea de elemente în listele verticale pentru câmpuri. prin afişarea sau ascunderea elementelor din listele verticale pentru câm puri. în ACCESS se poate lucra.formatărilor prevăzute într-un raport.3. în caseta Deschidere bază de date recentă a ferestrei de start a aplicaţiei. doar cu o singură bază de date. Spre deosebire de alte aplicaţii din Office. Vizualizare PivotChart: este un mod de vizualizare care arată o analiză vizuală a datelor dintr-o foaie de date sau dintr-un formular. Dacă se doreşte modificarea sau consultarea unei baze de date creată anterior. 1. vizualizată în modul proiectare. datele legate de raportul curent. În modul Vizualizare aspect sunt afişate datele. datele legate de formularul curent. 27 . Vizualizare SQL este un mod specific interogărilor. asemănătoare cu fereastra de dialog Fişier nou bază de date. atunci când se lansează rularea aplicaţiei ACCESS. Se utilizează diferite niveluri de detaliere sau se organizează datele prin glisarea de câmpuri şi elemente. Utilizatorii bazelor de date trebuie să înţeleagă că o interogare este în primul rând o comandă SQL (Structured Query Language). modificarea. de obicei pe opţiunea  Mai multe … şi se va deschide o fereastră de dialog. Tabelele văzute în modul Foaie de date a interogărilor. cu titlul Deschidere. Vizualizare PivotTable: e un mod de vizualizare care sintetizează şi analizează datele dintr-o foaie de date sau dintr-un formular.

Dacă se apelează comanda >Salvare ca… mai este afişată şi o casetă de editare text combinată cu o listă ascunsă din care se poate alege tipul obiectului. utilizatorul nu mai este atenţionat să facă salvare. se poate salva noua versiune. printr-un dublu clic pe orice document de tip bază de date ACCESS cu extensia . se foloseşte una dintre comenzile: >Salvare ca… sau > Salvare. salvată în baza de date. versiunea veche se suprascrie. dacă se apelează la coma nda > Salvare. pot fi deschise dintr-un File Manager. pdf.mdb (versiuni anterioare anului 2007) sau . conţinut în partea dreaptă a meniului ascuns legat de Butonul Office . Pentru obiectele curente. dacă aplicaţia ACCESS este instalată pe calculator. este posibil ca documentul care se doreşte a fi deschis să fi fost editat recent şi să apară într-un istoric. dacă nu s-au făcut modificări în modul proiectare. concomitent cu aplicaţia Microsoft ACCESS. se pot face salvări sub alt format: html. Dacă utilizatorul a efectuat modificări asupra unu i 28 . sau se pot face modificări asupra celor existente. pe când. În fine. dacă are sens. Pentru prima salvare a unor obiecte nou create. În modurile de vizualizare interactive. rapoarte. sau în prima parte a panoului de activitate Fişier nou.Dacă aplicaţia ACCESS este deja deschisă. Se ajunge la o fereastră de salvare unde se precizează numele sub care va fi salvat obiectul. pentru toate obiectele. xml. formulare. cu a cărei elemente componente utilizatorul îşi alege fişierul cu care doreşte să lucreze. se referă la datele pentru care obiectul este interfaţă. xls.accdb (versiuni ulterioare anului 2007). se pot crea noi interogări. ACCESS are opţiuni de salvare a principalelor tipuri de obiecte compuse care apar în fereastra Bază de date. atunci când el este vizualizat în modul proiectare (pentru interogări şi când sunt vizualizate în modul SQL). Şi în aceste trei ultime cazuri. Această salvare se poate face şi cu combinaţia de taste Ctrl + S sau apăsând butonul al treilea din bara de instrumente Standard cu pictograma:. pagini Web. de aceea când iese dintr-un obiect. Salvarea se referă la obiectul curent. Dacă există deja o versiune a obiectului. Dar o bază de date ACCESS. această casetă combinată nu mai apare. salvarea. valorile stabilite pentru controalele diferitelor obiecte se salvează automat după părăsirea controalelor. se deschide automat fereastra cu titlu Deschidere. cu un nou nume sau ca alt tip de obiect bazat pe obiectul iniţial prin comanda > Salvare ca…. se poate acţiona pe pictograma  din meniul ascuns legat de Butonul Office sau se alege opţiunea > Deschidere. În restul modurilor de vizualizare. cu comanda Salvare. Asupra unei baze de date deschise se pot face modificări ale obiectelor încapsulate: se pot crea noi tabele. Dar. doc etc. de unde poate fi deschis. se pot modifica structurile sau conţinutul datelor. sau se apasă concomitent Ctrl + O.

altele decât limbile de circulaţie internaţională. utilizatorul este atenţionat când părăseşte obiectul să-şi salveze modificările efectuate în modul proiectare. chiar dacă trece într-un mod interactiv.6. până la sistemul de ajutor (help) în amănun. Ajutorul este sub formă de documente hypertext. Probabil cel mai bun ajutor pentru utilizatori este realizarea interfeţei în diverse limbi.obiect în modul proiectare. Pentru închiderea unei baze de date se alege opţiunea >Închidere. Opţiunile componentei de Ajutor a aplicaţiei ACCESS sunt următoarele: Răsfoire Ajutor Access Activarea Access Noutăţi Accesibilitate Pagini de date Macrocomenzi şi programabilitate Access Developer Extensions Particularizare Expresii Filtrarea şi sortarea Interogări Securitate şi confidenţialitate Lucrul cu site-uri SharePoint Gestionarea fişierelor şi datelor Colectarea datelor Pornirea Obţinerea Ajutorului Ataşări Implementarea aplicaţiei Conversie Proiectarea bazelor de date Date externe Formulare şi rapoarte Salvare şi imprimare Tabele Adăugarea de diagrame.4. Aşa este de exemplu şi versiunea în româneşte a Microsoft Office. cu toate că încă se utilizează foarte multe neologisme forţate. nomograme sau tabele Lucrul în altă limbă 29 . mesajele din diferite ferestre sau casete. sau chiar mesajele care apar atunci când poziţionăm cursorul mouse-ului pe unul din butoanele barelor de instrumente (text info control sau pe engleză: „Tool Tip‖). Folosirea funcţiei ajutor Utilizatorii aplicaţiilor Microsoft sunt obişnuiţi să beneficieze de un sistem complex de ajutor în lucru. sunt traduse chiar şi explicaţiile pentru partea de programare in limbajele VBA sau SQL. În Ajutorul din ACCESS. De aceste facilităţi beneficiază şi utilizatorii ACCESS. Aplicaţiile Office au toate elementele traduse: de la opţiunile de meniu. Totuşi cea mai mare parte a funcţiunilor de ajutor pentru utilizatori este concentrată în meniul „Ajutor‖. 1.

Temele explicate pot fi simple sau compuse. 30 . În partea de sus sunt câteva butoane folosite pentru răsfoirea convenabilă a acestor pagini de ajutor. şi.Get help? este o facilitate a Microsoft Office de a explica elementele de interfaţă din aplicaţiile sale. şi conţine lista de teme a documentaţie i numită Ajutor Microsoft Access şi este structurată arborescent. Ajutor pentru Microsoft ACCESS este funcţiunea care poate fi lansată şi apăsând tasta F1 sau cu clic pe butonul . se deschide o fereastră cu explicaţii dependente de context. Alegând butonul care e plasat în colţul din dreapta sus. În partea de jos sunt două cadrane de pagini. O temă simplă are la începutul rândului o pictogramă cu semnul atunci când este selectată. Prima are ca titlu Contents (contents înseamnă cuprins). Se afişează o fereastră de ajutor asemănătoare celei de mai jos cu posibilitatea de a vedea o listă complexă a termenilor de ajutor. se afişează explicaţia ei în partea dreaptă.

5. închidere fără salvare sau revocarea închiderii aplicaţiei să se facă de utilizator. Închiderea aplicaţiei Încheierea lucrului cu aplicaţia ACCESS este similară cu închiderea oricărei aplicaţii Microsoft Office: din meniu se alege opţiunea > Închidere bază de date. pentru fiecare temă complexă. are la începutul rândului semnul . Ieşirea din aplicaţie provoacă închiderea tuturor obiectelor deschise în acel moment. Aceste teme incluse. Dacă au semnul . deci şi a aplicaţiei Microsoft ACCESS. având o fereastră a sistemului şi ACCESS-ul poate fi închis cu un clic pe butonul cu semnul X din colţul din dreapta sus.6. Deasupra cadranului din stânga are ca titlu Căutare (în limba engleză Search) un instruent folosit pentru căutarea unor termeni în manualul aplicaţiei. pentru fiecare obiect în parte. pot avea la începutul rândului unul dintre semnele sau .Temele care sunt compuse din alte subteme. Când tema apare într-o listă. expandată cu subtemele incluse. 1. Sistemul. După căutare. sunt afişate subiectele unde apar termenii căutaţi. este Alt + F4. înainte de închiderea fiecărui obiect. Totodată. iar efectuarea unui clic pe un subiect are ca rezultat afişarea acestuia în partea dreaptă a ferestrei de ajutor. Combinaţia de taste pentru închiderea aplicaţiilor Windows. pot fi afişate printr-un clic pe semnul de la începutul rândului. atunci înseamnă că apar în lista din stânga fără detalierea subtemelor incluse. 31 . testează dacă s -a făcut salvarea ultimelor modificări în modul proiectare. iar dacă nu sa realizat acest lucru se afişează mesajul de atenţionare. urmând ca alegerea opţiunilor de salvare fişier.

CAPITOLUL II. CREAREA ȘI UTILIZAREA TABELELOR 2.1. Crearea unei tabele
Începând cu versiunile ulterioare anului 2007 ale programelor Microsoft Office, meniurile şi grupurile de instrumente care erau plasate sub meniu în fereastra aplicaţiilor, au fost înlocuite de aşanumita panglică. Această noutate a ferestrei aplicaţiei este proiectată cu scopul de a ajuta utilizatorii în a găsi rapid comenzile de care au nevoie pentru a realiza o activitate. Comenzile sunt organizate în grupuri logice care sunt grupate în file. Fiecare filă are legătură cu un anumit tip de activitate, cum ar fi scrierea sau asamblarea unei pagini. Pentru a reduce aglomerarea de pe ecran, unele file sunt dependente de context, fiind afişate doar când sunt necesare. Este cazul, de obicei a ultimei file, care conţine comenzi pentru obiectul curent în lucru, accesat sau selectat. Crearea unui tabel presupune crearea structurii sale. Acest lucru se poate realiza în fila Creare, în grupul de instrumente pentru tabele, recomandabil prin instrumentul Proiectare tabel:

Se mai poate apela la instrumentul Şabloane tabel. În ultimul timp se obişnuieşte ca să se promoveze nişte structuri predefinite pentru a crea tabele sau chiar baze de date, pentru diferite probleme. Neajunsul constă în faptul că structurile predefinite sunt greu pliabile pe o problemă reală. Probabil lipsesc câmpuri, sau sunt de tip necorespunzător şi nu în ultimul rând au denumiri greu de accep tat. Crearea tabelelor se poate face şi cu instrumentul Tabel, prin introducerea de date. Într-un format asemănător cu Excel se pot introduce date şi apoi în modul proiectare (în limba engleză: Design) se pot reboteza şi restructura câmpurile. Structuri de tabele pot fi realizate şi prin subprograme VBA, create de utilizatori.

32

Modul cel mai elegant, cel mai utilizat şi convenabil de creare şi apoi de modificare a structurilor tabelelor rămâne utilizarea ferestrei de proiectare, precum în figura de mai jos, în care este vizibilă automat ultima filă cu instrumente de prelucrare a tabelelor, fila Proiectare.

2.1.1. Proprietăţile câmpurilor
În cadrul acestei ferestre se definesc numele câmpului (Field Name), tipul de date (Data Type) şi, opţional, o descriere a câmpului respectiv (Description). În panoul de jos al acestei ferestre se introduc celelalte proprietăţ i ale câmpului: ► Numele câmpului, poate fi format, precum orice nume de obiecte ale unei baze de date ACCESS 3, din maximum 64 de caractere (chiar şi diacritice!), poate să conţină spaţiu, dar nu poate să conţină unele caractere, printre care: „ [‖, „]‖,„.‖, „!‖. Atunci când în Microsoft ACCESS un nume de câmp este format din mai multe cuvinte, trebuie folosite parantezele drepte, de exemplu: [Cod numeric personal]. În majoritatea limbajelor de programare sau a SGBD-urilor, pentru a forma nume de câmpuri complexe, în sintaxă se recurge la utilizarea caracterului „_‖ (denumit în engleză: underscore), scriindu-se Cod_numeric_personal.

3

vezi Specificaţii pentru baze de date, http://office.microsoft.com/ro -

ro/access/HA100307391048.aspx?pid=CH100621861048

33

Microsoft ACCESS identifică un câmp prin numele său de câmp. După specificarea numelui de câmp, în Vizualizare proiect pentru tabel, numele poate fi utilizat în expresii, proceduri Visual Basic şi instrucţiuni SQL. Setarea acestei proprietăţi se efectuează în partea de sus a ferestrei deschise prin apelarea instrumentului Proiectare tabel din fila Creare, sau prin redenumirea unei coloane în fereastra deschisă prin apelarea instrumentului Tabel din fila Creare, sau utilizând un limbaj de programare (de obicei limbajul Visual Basic). ► Ca tipuri sau subtipuri de date se pot folosi: text, memo, număr, dată/oră, monedă, autonumerotare, da/nu, obiect OLE, etc. Proprietatea Tip de date se utilizează pentru a preciza tipul de date stocat în câmpul unui tabel. Fiecare câmp stochează date constând dintr-un singur tip de date. Proprietatea Tip de date utilizează următoarele setări: Setare Tip de date Dimensiune (Implicit) Text sau combinaţie de text şi Până la 255 de caractere sau o lungime Text numere, precum şi numere care nu mai mică setată prin proprietatea necesită calcule, cum ar fi numerele de Dimensiune câmp. Microsoft ACCESS telefon. nu rezervă spaţiu pentru porţiuni neutilizate din câmpul text. Text lung sau combinaţii de text şi Până la 65.535 de caractere. Memo numere. Noile versiuni ale ACCESS-ului înregistrează istoricul revizuirilor. Date numerice utilizate în calcule 1, 2, 4 sau 8 octeţi (16 octeţi dacă Număr matematice. proprietatea Dimensiune câmp este setată la ID reproducere). Valori de date calendaristice şi ore pentru 8 octeţi. Dată/Oră anii cuprinşi între 100 şi 9999. Noile versiuni ale ACCESS-ului oferă asistenţă pentru alegerea datei într-un calendar interactiv încorporat. Monedă Valori monetare şi date numerice 8 octeţi. utilizate în calcule matematice care implică date având între unul şi patru poziţii zecimale. Cu precizie de 15 cifre în stânga separatorului zecimal şi de 4 cifre în dreapta lui. AutoNu- Un număr secvenţial unic (incrementat 4 octeţi (16 octeţi dacă proprietatea Dimensiune câmp este setată la ID merotare cu 1). reproducere). Valori şi câmpuri Da şi Nu care conţin 1 bit. Da/Nu numai una din cele două valori (Da/Nu, Adevărat/Fals sau Activat/Dezactivat). Un obiect (cum ar fi o foaie de date Până la 1 gigaoctet (limitat la spaţiul-disc Obiect Microsoft Excel, un document Microsoft disponibil). OLE Word, grafică, sunete sau alte date binare) legate sau încorporate într-un tabel Microsoft ACCESS. 34

401298E–45 la 3. Limitat la spaţiul de disc disponibil.483. Câmpurile Memo.402823E38 la –1.147.94065645841247E–324 pentru valori negative şi de la 4. 7 4 octeţi Simplă precizie Numere de la –3. Fiecare din aceste trei părţi ale tipului de date Hyperlink conţine până la 2048 de caractere. Tipul de date Monedă utilizează un calcul în virgulă fixă. Pentru AutoNumerotare. 35 . 28 12octeţi Zecimal Numere între -32.402823E38 pentru valori pozitive.79769313486231E308 pentru valori pozitive.Hyperlink Text sau combinaţie de text şi numere stocate ca text şi utilizate ca adresă hyperlink. Câmpurile cu tipul de date Simplă precizie şi Dublă precizie necesită calcule în virgulă mobilă.79769313486231E308 la –4. Pentru proprietatea Tip date setată la Text. ► Proprietatea Dimensiune câmp se utilizează pentru a seta dimensiunea maximă pentru datele stocate într-un câmp având tipul de date Text. Fără 1 octet Octet 38 38 Numere între -10 –1 şi 10 –1. Pentru proprietatea Tip date setată la Număr.648 la 2. când este posibil. Identificator unic global (GUID). Hyperlink şi Obiect OLE nu se indexează.647 Fără 4 octeţi Întreg lung (fără fracţiuni). proprietatea Dimensiune câmp se setează la Întreg lung sau ID reproducere.768 şi 32.767 (fără fracţiuni). pentru a minimiza utilizarea spaţiului.147. Număr sau AutoNumerotare. Setarea implicită este 50. dimensiunea poate fi un număr de la 0 la 255.94065645841247E–324 la 1. Este bine să se utilizeze tipul de date Monedă pentru un câmp care necesită multe calcule implicând date cu una până la patru zecimale.401298E-45 pentru valori negative şi de la 1. 15 8 octeţi Dublă precizie Stochează numere de la –1. N/A 16 octeţi ID reproducere Setarea acestei proprietăţi se efectuează numai din foaia de proprietăţi a tabelului. mai rapid. setările proprietăţii Dimensiune câmp şi valorile lor sunt corelate ca în tabelul de mai jos: Setare Descriere Precizie Dimensiune zecimală de stocare Numere de la 0 la 255 (fără fracţiuni). Permite stocarea de diferite tipuri de Atach documente şi fişierele binare în baza de date fără a creşte inutil dimensiunea bazei de date. Fără 2 octeţi Întreg Numere de la –2.483. Microsoft Access 2007 comprimă automat ataşările. Setarea acestei proprietăţi se face în strânsă legătură cu setarea proprietăţii tip de dată a câmpului (data type).

a formularelor şi a rapoartelor. ► Formatul de introducere. pentru valorile câmpului. date calendaristice. ► Format: formatul în care sunt afişate informaţiile. ► Obligatoriu (în limba engleză: Required): obligă sau nu completarea respectivului câmp în fiecare înregistrare. ► Regulă de validare (în limba engleză: Validation Rule): este o restricţie de introducere a datelor care obligă datele să respecte expresia introdusă la această proprietate. Această setare are sens doar la tipurile de date Număr şi Monedă şi poate stabili între 0 şi 15 cifre s au Auto pentru determinarea automată a numărului de cifre pentru partea fracţionară. în momentul introducerii datelor. Neînţelegerea conţinutului informaţiei datorită unui format ambiguu poate duce la deteriorarea unor date. ► Valoarea implicită (în limba engleză: Default Value): este o valoare care este atribuită automat de sistem. cu sensul pe care îl are în general în programarea orientată pe obiecte. ► Numărul de zecimale (în limba engleză: Decimal places): În cadrul acestei proprietăţi se stabileşte numărul cifrelor afişate la dreapta separatorului zecimal. ► Textul de validare (în limba engleză: Validation Text ): reprezintă textul care va apărea pe bara de mesaje în cazul în care valoarea introdusă nu respectă criteriul impus de regulă de validare. după ce se face clic pe Butonul Microsoft Office . ► Indexat (în limba engleză: Indexed): poate suporta trei posibilităţi: a) Nu.Valorile implicite ale dimensiunilor de câmp pentru câmpurile Text şi Număr se pot seta prin modificarea valorilor de la opţiunea Designeri de obiecte. Important este de reţinut că proprietatea Format se utilizează pentru stabilirea modului în care numere. aceasta permite specificarea unui al doilea nume în situaţiile în care primul nu este destul de semnificativ. În expresie practic se folosesc regulile de sintaxă specifice A CCESSului. Este bine să se utilizeze cea mai mică posibil setare pentru proprietatea Dimensiune câmp deoarece dimensiunile mai mici de date sunt prelucrate mai rapid şi solicită mai puţină memorie. dacă utilizatorul nu completează acel câmp. El apare în antetul cererilor d e interogare. masca de intrare (în limba engleză: Input Mask) este şablonul de introducere a datelor Setarea formatului de afişare şi al celui de intrare poate fi o operaţie complexă şi anevoioasă. timp şi text vor fi afişate şi tipărite şi nu afectează introducerea datelor. din fereastra afişată la selecţia Opţiuni Access. Este recomandabil ca de ea să facă uz programatorii experimentaţi. 36 . ► Legenda (în limba engleză: Caption). Această sarcină revine proprietăţii Input mask.

O cheie primară poate fi formată din unul sau mai multe câmpuri. [Adresa] ordonat ascendent şi [Telcli] 37 . Este recomandabil să se facă indecşi pe câmpurile după care se sortează rapoarte. Un index este o structură în funcţie de a cărei valori sunt ordonate înregistrările unui tabel. interogări sau foi de date sau pe câmpurile care apar în expresii pentru realizarea relaţiilor dintre tabele. Dacă mai există şi alte câmpuri.1. Într-un tabel poate exista o singură cheie primară. c) Da (Fără dubluri). De exemplu: indexul DenAdrTel este format din concatenarea câmpurilor [Dencli] ordonat ascendent. În Microsoft ACCESS cheia primară a unei tabelei trebuie să fie indexată şi fără dubluri. fila Instrumente tabel/ Proiectare. Stabilirea unui index Indecşii sunt utilizaţi pentru a mări viteza de găsire a informaţiilor. de multe ori fără ca acest lucru să îi fie evident utilizatorului. ACCESS avertizează utilizatorul de acest lucru şi automat creează un nou câmp şi-l propune ca şi cheie primară. Pentru crearea unui index bazat pe mai multe câmpuri se foloseşte instrumentul Indexuri. Dacă se uită. iar celelalte se selectează în combinaţie cu apăsarea tastei CTRL. Un index pentru un singur câmp se poate face prin stabilirea proprietăţii indexat la Da (Cu dubluri) sau Da (Fără dubluri). indexate. acestea sunt numite chei candidate. 2. 2. Această filă este accesibilă.1. formulare. Un tabel care nu are cheie primară nu poate stabili relaţii de tipul unu la mai mulţi cu alte tabele.2. se selectează acesta. Dacă cheia primară este formată dintr-un singur câmp. Expresia de sortare este formată prin concatenarea câmpurilor în ordinea în care apar în fereastră. Dacă cheia primară este formată din mai multe câmpuri (cheie compusă)se selectează primul.b) Da (Cu dubluri). Definirea unei chei primare După descrierea câmpurilor componente ale unei tabele este timpul să se stabilească cheia primară a acesteia. atunci când un tabel este accesat pentru prelucrare. fără dubluri. Un sistem de gestiune de baze de date se foloseşte de indecşii existenţi în diverse operaţii. Fiecare index are un nume şi poate utiliza până la 10 câmpuri. în modul vizulaizare proiect.3. În fereastra cu titlul Indexuri sunt cuprinşi toţi indecşii tabelului curent. după care se face clic dreapta pe unul dintre ele şi apoi se activează butonul cheie primară. se face clic dreapta şi apoi se activează butonul cheie primară.

partea de date care depăşeşte noua setare de 50 caractere se pierde. Odată cu afişarea unei casete de atenţionare. Dacă într-un câmp de tip Număr. vor prelua datele din câmpul cu noul nume. asemănătoare celei de mai jos.768 vor deveni valori nule. astfel încât. Trebuie avut în vedere dacă sunt posibile conversiile datelor din vechiul tip în noul tip. rapoartele sau interogările care folosesc date din acest câmp sunt în mod automat modificate. Conversia din tipul număr în tipul monedă. atunci formularele. Aceste modificări de date sunt ireversibile. este posibilă pierderea unor date. dacă se modifică setarea Dimensiune câmp a unui câmp de tip Text de la 100 la 50.4. utilizatorul poate să -şi revoce acţiunea. dacă în tabelul „Clienţi‖. Însă. dacă utilizatorul selectează butonul Da în fereastra de mai jos. se face fără 38 . Modificarea proprietăţilor unui câmp Proprietăţile unui câmp se pot modifica uşor în modul proiectare. numele câmpului Adresa se modifică în Adrcli. iar indexul PrimaryKey este format doar din câmpul [Codcli] în ordine ascendentă. Problema se complică atunci când se doreşte schimbarea tipului unui câmp.ordonat descendent. De exemplu. Mărirea dimensiunii unui câmp nu duce neapărat la mărirea dimensiunii bazei de date.1. dacă se modifică o dimensiune de câmp de la Simplă precizie la Întreg. se micşorează dimensiunea unui câmp. datele nu încap în dimensiunea câmpului. Modificarea proprietăţilor unui câmp nu afectează buna funcţionare a obiectelor în care apar date din câmpul modificat. dar prelucrarea devine mai greoaie. Dacă la un tabel. iar valorile mai mari decât 32. indexul Codcli este format din câmpul [Codcli] ordonat ascendent. De exemplu.767 sau mai mici decât -32. sau invers. care deja conţine date. 2. pierderea de informaţii devine ireversibilă. numerele de după virgulă sunt rotunjite sau primesc valoarea Null. valorile fracţionare vor fi rotunjite la cel mai apropiat număr întreg. De exemplu.

Trecerea la câmpul anterior se face cu ajutorul combinaţiei de taste Shift + TAB. trecerea la câmpul următor se face cu tasta TAB sau apăsând ENTER după ce sau introdus date în celulă. Insert. marcatorul zecimal şi semnele „+‖ şi „-‖. un număr de zile egal cu valoarea numărului. Pentru ore se face fracţionară . În plus. ora 14h45’ devine 0. etc. asigurate de însăşi SGBD. De exemplu: ora 12 se transformă în corespondenţa 0. Partea întreagă a numerelor se transformă în dată iar p artea fracţionară se transformă în oră.5=12/24. Dacă se doreşte transformarea din text în numere cu format obişnuit. Pentru numerele negative. user-friendly. Poziţionarea în cadrul tabelului se poate face cu mouse -ul sau cu tastele pentru deplasare în cadrul foii (Tastele cu săgeţi.614583333=14 ¾ : 24. ora  partea 24 2.04167=1/24. Numărul 0 se transformă în #1. 39 . Editarea datelor într-o tabelă 2. Şi conversiile din numere în date/oră şi invers se fac fără probleme. se scade din 1 ianuarie 1900. este necesar ca în toate celulele să existe doar caracterele necesare pentru a scrie numere: cifre. PageUp.1.probleme. PageDown).2. şi/sau modifica datele deja introduse sau se pot introduce date noi. Home. Stilul de editare urmează de obicei convenţiile din aplicaţiile pachetului Office.1. Un exemplu de introducere de date în modul foaie de date este redat în exemplul figură. În cadrul acestei ferestre se pot vizualiza. Introducerea de date în tabelă În cadrul aplicaţiilor ACCESS datele pot fi introduse în tabele printr -o multitudine de metode. ora 1 se transformă în 0.1900#.2. Cea mai directă este printr-o fereastră Foaie de date (în limba engleză: Datasheet).

Excel) prin intermediul ferestrei Clipboard.2.3. Dar. Nu este posibilă editarea câmpurilor de grup şi a câmpurilor calculate. în mod frecvent. pentru tabele mici. din alte tabele sau chiar alte aplicaţii (Word.2. la celula vecină din dreapta sau la prima din rândul imedia t următor se face cu tasta TAB. Deplasarea în cadrul celulelor tabelului se face cu tastele săgeţi. Deplasarea în sens invers se face apăsând concomitent Shift + TAB. 40 . prin operaţiile Decupare sau Copiere. 2. În tabelă se pot introduce date din alte zone ale tabel ului. întâi trebuie să se ajungă la celula în cauză. existenţa unui astfel de cursor semnifică acceptarea editării în coloana respectivă. Trecerea de la o celulă. De obicei programatorii proiectează formulare. se pot vizualiza informaţiile din tabele cu ajutorul unor formulare sau interogări create pe baza tabelului. Datele pot fi modificate numai în câmpurile unde există posibilitatea să se insereze un cursor de introducere de la tastatură.2. La editare se ţine cont de proprietăţile câmpurilor stabilite în modul proiectare. Pentru introducere/editare de informaţii totuşi nu se obişnuieşte utilizarea ferestrei Datasheet. Pentru a modifica date. pentru introducerea de date în tabele. ACCESS desenează automat un tabel şi îl vizualizează în pagini. nu se justifică efortul pentru a se crea formulare. în A CCESS este aproape omniprezent grupul de butoane de navigare cu semnificaţie similară butoanelor de pe aparatele audio sau video. Modificarea datelor într-o tabelă Datele în tabele se modifică la în modul Foaie de date la nivel de celule. cu po sibilităţile oferite de SGBD. Ca o particularitate generată de lucrul cu înregistrările. În acest mod vizualizarea este însoţită de posibilitatea de modificare a informaţiilor. Tot cu actualizare. 2. vizualizarea informaţiilor dintr -o tabelă se face prin modul Foaie de date. Vizualizarea informaţiilor dintr-o tabelă Vizualizarea informaţiilor dintr-o tabelă se face selectând din meniul generat prin acţiunea asupra butonului Office . cuplate cu operaţia Lipire. Totuşi. opţiunea Imprimare > Examinare înaintea imprimării. nepermiţându-se violarea regulilor de integritate.Articolul pe care este poziţionat cursorul este evidenţiat prin accent de culoare. în funcţie de setările imprimantei.

prin operaţiile Decupare sau Copiere. Excel). Ştergerea înregistrării curente dintr-o tabelă se poate face şi alegând din meniul generat de sistem. cuplate cu operaţia Lipire. din alte tabele sau chiar alte aplicaţii (Word. semnul * dispare până când se începe editarea în articolul respectiv. De asemenea.2. Combinaţia de taste pentru realizarea acestei operaţii este Ctrl + +. Din panglica ferestrei ACCESS. Odată selectate articolele dorite de a fi adăugate. fila Pornire. Ştergerea de date într-o tabelă Pentru a şetrge înregistrări într-o bază de date. Pentru a revoca modificările din întreaga înregistrare. 2. de obicei.Datele modificate dintr-o celulă sunt salvate imediat după părăsirea ei. este afişat în plus un articol gol evidenţiat cu semnul „*‖. Acest articol nu este socotit în totalul articolelor. un articol se adaugă imediat în plus în tabelă. 41 . Într-o tabelă se pot adăuga mai multe articole din alte zone ale tabelului. din grupul Înregistrări. când cursorul se găseşte pe ultima celulă din ultimul rând şi se apasă tasta TAB sau Săgeată Dreapta. opţiunea Decupare sau Copiere.5. se poate utiliza instrumentul Nou. se selectează fila Pornire a panglicii ACCESS. mediul de dezvoltare ACCESS are prevăzute instrumentul Ştergere în fila Pornire din Panglica Office a aplicaţiei ACCESS. Revocarea modificărilor făcute în celula curentă se face apăsând ESC. putând fi folosit atât pentru şte rgerea conţinutului celulei curente. În acel moment se adaugă imediat un nou articol gol marcat cu „*‖. a înregistrării curente sau a câmpului curent.4. Adăugarea de înregistrări într-o tabelă În modul Foaie de date. 2. pentru a se adăuga unui tabel o înregistrare nouă. se face clic pe Anulare din bara de instrumente de navigare în înregistrări sau opţiunea cu acelaşi nume din meniul Editare. se selectează rândul din tabel marcat cu „*‖ şi apoi cu opţiunea Lipire (din acelaşi grup de instrumente) se adaugă articolele. Selectarea mai multor înregistrări dintr-un tabel se face glisând cu mouse-ul pe zona de selecţie situată la începutul rândurilor. Dacă se poziţionează cursorul pe acest articol. nu înainte de a se cere confirmarea de la utilizator pentru a se realiza adăugarea acestor articole.2. Instrumentul are trei funcţiuni. Această anulare nu mai este posibilă dacă se mai fac alte modificări într-o altă înregistrare. prin intermediul ferestrei Clipboard. după ce s-a acţionat printr-un clic dreapta pe una sau mai multe înregistrări selectate opţiunea Ştergere înregistrare.

10. 42 .1999 3000 2553 11.10. operaţia de ştergere se revocă.09.2000 3000 500 2084 13. după ce sunt selectate mai multe înregistrări.1999 2450  Concepeţi structuri pentru tabelele din figura de ilustrare a relaţiilor de la 1.1999 1250 VANZATOR 2956 23. dacă se selectează una sau mai multe coloane.01.01. Pentru protecţia datelor împotriva ştergerilor accidentale.2000 1250 1400 2731 MARCU ANALIST VANZATOR 2956 26. NrAng NumeA 2000 CHIVU 2049 DOROS 2956 NEGRU 2084 OSAN 2789 POPA 2396 POPAN 2553 RUSU 2024 TULIAN 2987 VUSCA 2643 ZIMAN Fnc SOFER INGINER INGINER ANALIST SOFER DIRECTOR ANG Csf DataAnga Sal Rate NrDept 2956 23.12.2.02. a cărui denumire va fi ANG şi în care se adaugă.01.03.1999 1600 INGINER 2553 14. atunci aceste înregistrări vor fi şterse. dacă sunt definite relații între tabele în bazele de adte. dacă operatorul nu confirmă ştergerea.2000 2975 2049 19.12. împreună cu înregistrările în cascadă. şi se face clic drepata pe selecţie.1999 1500 VANZATOR 2956 15.Dacă se selectează această opţiune din meniu. datele. şi această ştergere necesită confirmarea operatorului. Exerciţii:  Concepeţi o structură pentru următorul set de date şi realizaţi un tabel pe baza acesteia.02. În mod similar. ca înregistrări. se pot şterge câmpuri din tabelă. fila Instrumente tabel/Foaie de date.1999 950 2553 31.1999 800 19.1999 5000 300 30 30 20 20 30 20 30 20 10 30 30 10 2555 CONTRA VANZATOR 2956 19. în mediul Access.1999 2850 2049 19.03. într -o casetă de forma celei de mai jos. Câmpurile pot fi şterse şi cu instrumentul Ştergere din grupul Câmpuri şi coloane.

Atunci când se acţionează asupra instrumentului se deschide o fereastră de alegere a tabelelor între care se stabilesc relaţiile.3. relaţia este stabilită şi afişată. Se aleg tabelele de lucru cu dublu clic al mouse-ului iar apoi se închide fereastra acţionându-se asupra butonului Închidere. După apăsarea butonului Creare. Exemplificăm acest lucru cu două tabele Prod şi FactProd. se realizează cu instrumentul din fila Instrumente bază de date din panglica Access. 43 . Specificarea unei relaţii dintre tabele în baza de date. Crearea relaţiilor între tabele Relaţiile dintre tabele pot fi percepute logic în cadrul schemei conceptuale 4 sau pot fi specificate şi salvate în baza de date. ► tabelul destinaţie trebuie să aibă un câmp cheie străină.2. 4 Schema conceptuală reprezintă descrierea fenomenelor din realitatea înconjurătoare cu ajutorul entităţilor şi atributelor şi a legăt urilor dintre acestea. Stabilirea relaţiei se poate face glisând. în fereastra relaţii. Automat este afişată fesreastra Editare relaţii. câmpul cheie primară peste câmpul cheie străină. Pentru a putea stabili o relaţie între două tabele sunt necesare două condiţii: ► tabelul sursă a relaţiei să aibă o cheie primară (un câmp de identificare cu valori unice şi diferite de Null). în care se precizează câmpurile prin care se realizează relaţia şi tipul de integritate referenţială impusă. de acelaşi tip de dată şi dimensiune cu cheia primară.

Exerciţiu: Creaţi relaţiile între tabelele create în ultimul exerciţiu al subcapitolului precedent. făcând clic pe linia sa. linia este afişată îngroşat.O relaţie între tabele este reprezentată printr-o linie de relaţie trasată între tabelele din fereastra Relaţii. O relaţie care nu are impusă integritatea referenţială apare ca o linie subţire între câmpurile comune care acceptă relaţia. Când relaţia este selectată. Cu dublu clic se pot reedita condiţiile ei. linia apare îngroşată la fiecare capăt. 44 . iar simbolul infinit (∞) apare deasupra liniei în cealaltă parte. Dacă este impusă integritatea referenţială pentru o relaţie. numărul 1 apare deasupra porţiunii îngroşate a liniei în partea unu a relaţiei. În plus.

păstrând particularitatea SGBD-ului în care a fost definită şi creată colecţia de date. fie că se lucrează într-un tabel. într-un formular sau interogare. iar conectarea la acestea este automată. Preluarea informaţiilor din tabele acestor baze de date presupune conectarea aplicaţiei realizată de utilizator la aceste baze de date existente. 45 .CAPITOLUL III. Prin intermediul interogărilor. este o operaţie dificilă şi se poate realiza cu ajutorul obiectelor de tip module Visual Basic for Application. Conectarea la o bază de date existentă Structurarea informaţiilor în tabelele bazelor de date şi modalitatea managementului acestora e diferită în funcţie de tipul bazelor de date. sau Salt la . se alege din meniu opţiunea din fila Pornire a Panglicii Microsoft Office. 3. interogările asigură conectarea la informaţiile din tabelele bazelor de date. Găsire şi/sau Înlocuire. Căutarea datelor cu ajutorul instrumentelor mediului Access Căutarea informaţiilor în bazele de date presupune localizarea câmpurilor şi înregistrărilor în care sunt stocate. unul dintre instrumentele de Căutare. MSDE. O aplicaţie Access poate include tabele proprii. Pentru căutarea sau modifcarea unei înregistrări.1. Obiectele din ACCESS pot prelua informaţii din baze de date de tip Access. eficiente şi securizate a datelor. neincluse în aplicaţia curentă. chiar de tipul Access. la interogări. În scopul utilizării selective. Conectarea la tabele din alte baze de date. sau chiar MySQL şi FoxPro. raţionale. dar şi de tip SQL-Server. care recurg. UTILIZAREA INFORMAŢIILOR DINTR-O BAZĂ DE DATE 3. la rândul lor.2. informaţiile din tabelele bazelor de date pot fi utilizate ca sursă de înregistrări pentru formulare şi rapoarte. distribuite.

În bazele de date relaţionale acest termen are un sens mai larg. este uşurinţa de a crea interogări. Ultimele şiruri căutate. În fine. care sunt grupate în funcţie de anumite criterii sau sunt ordonate crescător sau descrescător. os. în funcţie de opţiunea aleasă din lista Privire în:. extragerea şi afişarea unor informaţii din înregistrările din una sau mai multe tabele. etc). cum sunt şi bazele de date Access. comenzi ale unui limbaj simplu.3. structurat de manevrare a informaţiilor din tabelele unei baze de date relaţionale. se scrie textul care trebuie căutat. dacă se caută textul os într-un catalog de produse. Termenul "interogare" este sensul principal al cuvântului englezesc "Query". Interogarea bazei de date permite. În caseta de text De căutat.Se afişează fereastra cu titlul Căutare şi înlocuire. se pot găsi articole în care există câmpuri care încep cu textul os (osânză. Şirul căutat trebuie să se potrivească cu începutul câmpului. ospen. costiţe. ospen. dacă se alege a treia opţiune. 3. înregistrări care verifică anumite condiţii. se pot găsi articole în care există câmpuri care conţin textul os (osânză. se pot găsi doar acele articole în care există câmpuri care conţin cuvântul os şi nimic altceva. cu întreg câmpul sau cu o parte oarecare din câmp. bazele de date pot constitui obiectul aplicaţiilor scrise în oricare limbaj de programare modern. Crearea unei interogări simple Specifică bazelor de date relaţionale. existentă în toate aplicaţiile pachetului Microsoft Office. după cum se alege din lista Potrivire:. Articolele în care se caută pot fi: de la articolul curent în sus. dacă se alege prima opţiune. în jos sau printre toate articolele din tabel. dacă se alege a doua opţiune. os. Prin deschiderea pe care o au pentru a răspunde acestor interogări. Lucrul cu interogările este posibil prin implementarea limbajului SQL într-un SGBD. rămân în istoricul din lista ascunsă ataşată casetei. De exemplu. Acest limbaj 46 . Interogările sunt în ultimă instanţă. pe lângă interogările de extragere (selecţie) şi la aşa -zisele interogări de acţiune (de creare. de ştergere sau actualizare) pentru tabele le şi elementele lor constitutive. în principal. costume. etc). Acest termen se referă. şi la nevoie pot fi readuse. se poate bifa caseta de selecţie Potrivire litere mari şi mici dacă se doreşte să se facă căutări insensibile la litere mari sau mici sau se poate bifa caseta de selecţie Căutare în câmpuri după format pentru a se ţine cont de formatul de afişare a datelor din câmpuri. Cătarea se face doar în câmpul curent sau în întreg tabelul. cu câteva particularităţi specifice pentru lucrul cu bazele de date.

se numeşte SQL (abreviere pentru sintagma din limba engleză: structured query language, care se traduce în limba română: limbaj structurat de interogare). Rezultatul execuţiei unei cereri, în majoritatea limbajelor, se numeşte vedere, deoarece este un cadru în care sunt accesibile o anumită parte a informaţiilor din baza de date. Cele mai importante moduri de vizualizare a interogărilor sunt: mo dul proiectare, foaie de date şi vizualizare SQL. Important de reţinut este faptul că e vorba despre acelaşi conţinut, etalat în trei moduri diferite de vizualizare. Dintre aceste posibilităţi, modul proiectare este cel mai recomandat pentru a crea interogări în mod eficient (interogări simple). Pentru a crea o cerere de interogare în modul proiectare se parcurg paşii:  Din fila Creare, din ultimul grup de instrumente se face clic pe butonul Proiectare interogare.

 Sistemul deschide automat fereastra de creare asistată a interogărilor.  Se afişează o casetă de dialog cu titlul Afişare tabel care conţine cadrele de pagini Tabele, Interogări şi Ambele. În aceste cadre de pagină sunt afişate toate tabelele şi interogările din baza de date curentă. Interogarea care va fi creată va conţine rânduri şi coloane derivate din tabelele sau interogările pe care utilizatorul le va extrage din caseta Afişare tabel. Pentru a extrage obiecte, se face dublu clic pe numele fiecărui obiect care se doreşte a fi folosit. Ace astă casetă de afişare a tabelelor se ascunde printr-un clic pe butonul Închidere.

47

 Automat apare vizibililă ultima filă cu instrumente de lucru pentru interogări, şi anume fila Instrumente interogări/Proiectare. Fereastra de lucru are două părţi:  În partea de sus sunt afişate casetele cu structuri de înregistrări ale tabelelor sau interogărilor selectate din caseta afişare tabel. Dacă nu e vizibilă caseta Afişare tabel, acest lucru se poate face selectând din panglică instrumentul Afişare tabel sau făcând clic dreapta şi apoi selectare Afişare tabel.  Partea de jos a ferestrei se numeşte grilă de proiectare ( design grid), şi conţine elemente cu ajutorul cărora se pot construi interogări . Aceasta mai este cunoscută şi sub numele de grilă QBE (Prescurtare de la sintagma din limba engleză: Query By Exemples care poate fi tradusă în româneşte Interogare prin exemple). Câmpurile se pot prelua din structurile sursă prin glisarea lor din casetele de structuri în primul rând al grilei QBE (rândul Câmp), unde se înscriu câmpurile interogării rezultate. Câmpurile pot fi înscrise şi efectiv în această linie sau alese din lista ascunsă ataşată liniei câmp din grilă. Dacă se doreşte aducerea tuturor câmpurilor dintr-o tabelă, se scrie semnul „*‖ în rândul câmpurilor, iar în rândul tabel se înscrie tabelul în cauză. Pe lângă câmpurile preluate din tabelele sau interogările disponibile, interogările pot conţine şi câmpuri calculate. Calculele se pot face linie cu linie sau pe grupuri de înregistrări. Pentru a se obţine o coloană în primul caz, se înscrie în linia Câmp formula de calcul care are forma generală: Nume-rezultat: expresie_aritmetică_sau_logică De exemplu: Valoarea: cantitate*[Pret unitar] vârsta: (Date() - [data naşterii])/365 NB: Expresia Date() se referă reprezintă o funcţie care returnează data sistemului.

Exerciţii:
1. Să se extragă din tabelul PROD numele, unitatea de măsură şi pretul cu TVA. 2. În modul Vizualizare SQL observaţi comanda SQL construită.

48

Rezolvare: 1. În fila Creare a panglicii, se alege penultima opţiune Proiectare interogare. În caseta Afişare tabel se selectează „Prod‖, se apasă Adăugare şi apoi Închidere. Se glisează apoi câmpurile DenProd şi UM din caseta cu structura tabelului „Clienti‖ în rândul Câmp din grila QBE, iar pentru al treilea câmp se scrie expresia "pret cu TVA": [pret]*1,19. Lansarea în execuţie a interogării se face apăsând butonul cu semnul „!‖ din fila specială de instrumente de proiectare interogări din panglică. Pentru eventualele modificări se alege din nou modul proiectare din meniul primei op ţiuni, Vizualizare, din fila mai sus amintită. 2. Se alege din meniul Vizualizare din panglică, opţiunea Vizualizare SQL şi se obţine comanda: SELECT CLIENTI.Dencli, CLIENTI.Adresa, CLIENTI.Telcli FROM CLIENTI; Plasăm în figură interogarea în modurile foaie de date şi SQL. Pentru a face calcule pe grupuri de înregistrări, trebuie adăugată o linie, cu numele Total, în grila QBE, acţionând în panglică asupra butonului Σ Totaluri. Celulele din această linie trebuie neapărat să conţină ceva dacă este bifată caseta din rândul afişare a coloanei la care se referă. În acest caz, pe rândul total trebuie să existe, fie expresia Grupare după, fie o funcţie de grup (sumă, medie, contor, min, max, etc). 49

Exerciţiu: 1. suma salariului angajaţilor pe departamente. Să se extragă din tabela „ANG”. 2. În grila QBE. media vechimii tuturor angajaţilor. funcţia Medie. la coloana vechimea se alege din lista ataşată. Rezolvare: 1. prima coloană. Comanda SQL corespunzătoare este afișată în medalion în figură. Se lansează în execuţie interogarea. În modul Vizualizare SQL observaţi comanda SQL construită la punctul 2. Și rezultatul execuției interogării este suprapus într -un medalion peste figură. Se creează o nouă interogare. 50 . în modul proiect alegându-se ca sursă tabelul „ANG‖. 3. este accesibilă modificarea proprietăților. În acest rând. Să se extragă din tabela „ANG”. în Foaia de proprietăți. Dacă se dorește ca să se partcilularizeze rezultatul.DataAnga)/365 În panglică se acţionează asupra butonului Σ Totaluri pentru a se adăuga rândul Total la grilă. în prima celulă se face clic şi apoi se înscrie: vechimea:(Date() .

alegându-se ca sursă tabelul „ANG‖. NrDept 10 20 30 Suma salariu pe departamente 7450 9775 9400 3. 51 . În grila QBE.NrDept. Atunci când se încearcă o interogare din mai multe tabele şi/sau cereri de interogare. Dacă relaţiile au fost create prin funcţiunea Relaţii din fila Instrumente bază de date. în care se înscrie pentru prima coloană Grupare după iar la a doua coloană se alege funcţia Sum. Primul tip de relaţii este vizibil. şi în partea de sus a ferestrei pentru realizarea înregistrărilor. şi nu se stabileşte nici o relaţie între tabelele sursă. O relaţie care nu a fost definită corect duce la rezultate inexplicabile. precum s-a explicat în capitolul anteriror. este necesar ca între acestea să existe legături. prima coloană se alege câmpul „NrDept‖. Se lansează în execuţie interogarea.NrDept. Sum(ANG. În afara acestora. Se adaugă linia de total. iar rezultatul şi comanda SQL corespunzătoare sunt: SELECT ANG.Sal) AS [Suma salariu pe departamente] FROM ANG GROUP BY ANG. relaţiile pot fi considerate permanente. atunci rezultatul va conţine m x n înregistrări. în mod automat. în modul proiect.4. iar în a doua se alege câmpul „Sal‖. Dacă se face o cerere de interogare din două tabele cu un număr de n şi respectiv m înregistrări. există unele relaţii stabilite în timpul executării interogărilor. Crearea interogărilor peste mai multe tabele Pentru formularea unor cereri de interogare bazate pe mai multe tabele sau interogări. Se creează o nouă interogare.2. trebuie verificată natura reală a relaţiilor dintre acestea pentru ca datele din noua interogare să fie corespunzătoare cerinţelor problemei.

o vom exemplifica cu ajutorul a două tabele: „Prod” şi „FactProd”. prin glisarea mouse-ului de pe câmpul de legătură din tabela principală spre câmpul de legătură din tabela secundară. acestea se pot stabili doar pentru interegarea curentă. printr-o procedură similară stabilirii relaţiilor între tabelele bazelor de date. Dacă nu există legăturile necesare între tabele. Dacă deja există o legătură.Explicarea stabilirii relaţiilor în interogări. Acest lucru trebuie înţeles prin faptul că fiecare produs poate fi conţinut în mai multe facturi. de la „Prod” spre „FactProd‖. există trei posibilităţi (vez i figura cu proprietăţi de asociere): 52 . care au structurile ce pot fi deduse din conţinutul prezentat în figură: Între aceste două tabele există o relaţie de 1 la n prin câmpul cod. Cele două câmpuri trebuie să fie de acelaşi tip şi dimensiune şi pot fi chei primare sau externe. permanentă sau propusă de sistem. caracteristicile acesteia pot fi modificate sau pur şi simplu legătura poate fi ştearsă. În stabilirea relaţiilor în interogări.

Pentru prima posibilitate, relaţia este definită astfel încât, în asocierea celor două tabele se iau înregistrările pentru care câmpurile de relaţie au valori egale. Este cel mai întâlnit tip de relaţie, se numeşte echicompunere şi, în exemplul nostru, se descrie în comanda SQL, astfel: FROM [Prod] INNER JOIN FactProd ON Prod.Codpro = FactProd.Codprod Pentru cea de a doua posibilitate, relaţia este definită astfel încât, în asocierea celor două tabele se iau toate înregistrările din catalog, şi înregistrările din rulaj pentru care câmpurile de relaţie au valori egale. Relaţia se numeşte compunere externă stânga. În exemplul nostru, în comanda SQL, relaţia este descrisă astfel: FROM [Prod] LEFT JOIN FactProd ON Prod.Codpro = FactProd.Codprod În cea de a treia posibilitate, relaţia este definită astfel încât, în asocierea celor două tabele, se iau toate înregistrările din rulaj, şi înregistrările din catalog pentru care câmpurile de relaţie au valori egale. Pentru exemplul nostru, în comanda SQL, relaţia este descrisă astfel: FROM [Prod] RIGHT JOIN FactProd ON Prod.Codpro = FactProd.Codprod

Exerciţiu:
Să se extragă din tabelele „Prod” şi „FactProd‖ valoarea produselor pe facturi. Să se verifice rezultatul obţinut prin cele 4 posibilităţi din punct de vedere al asocierii: cele 3 din figura de mai sus şi ruperea legăturii.

53

Rezolvare: Se creează o nouă interogare, în modul proiect alegându-se ca sursă tabelele „Prod” şi „FactProd‖. Se glisează apoi câmpurile NrFact, DataFact, DenProd casetele cu structurile tabelelor în rândul Câmp din grila QBE, iar pentru al patrulea câmp se scrie expresia Pret*Cant. În primul caz vom verifica rezultatul dacă nu există nici o legătură între tabele, apoi se verifică rezultatul în celelalte 3 posibilităţi de asociere. Rezultatele obţinute sunt prezentate în tabelul următor:
DenProd DenProd DenProd DenProd Datafact Datafact Datafact Datafact Nrfact Nrfact Nrfact Nrfact

Val

Val

Val

1 1 1 1 1 1 1 1 2 2 2 2 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6

21.10.2009 Ulei

49,05

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei 21.10.2009 Zahar 24.10.2009 Zahar 22.10.2009 Lapte 24.10.2009 Lapte 25.10.2009 Lapte 22.10.2009 Lapte 23.10.2009 Lapte

65,40 35,97 39,24 46,50 77,50 87,00 58,00 43,50 52,20 43,50

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei

65,40 35,97 39,24

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei

65,40 35,97 39,24

21.10.2009 Zahar 46,50 21.10.2009 Lapte 43,50 21.10.2009 Malai 33,75 21.10.2009 Ulei 65,40

21.10.2009 Zahar 46,50 24.10.2009 Zahar 77,50 22.10.2009 Lapte 24.10.2009 Lapte 25.10.2009 Lapte 22.10.2009 Lapte 23.10.2009 Lapte Malai 87,00 58,00 43,50 52,20 43,50

21.10.2009 Zahar 46,50 24.10.2009 Zahar 77,50 22.10.2009 Lapte 87,00 24.10.2009 Lapte 58,00 25.10.2009 Lapte 43,50 22.10.2009 Lapte 52,20 23.10.2009 Lapte 43,50

21.10.2009 Zahar 62,00 21.10.2009 Lapte 58,00 21.10.2009 Malai 45,00 22.10.2009 Ulei 98,10

22.10.2009 Zahar 93,00 22.10.2009 Lapte 87,00 22.10.2009 Malai 67,50 24.10.2009 Ulei 81,75

24.10.2009 Zahar 77,50 24.10.2009 Lapte 72,50 24.10.2009 Malai 56,25 24.10.2009 Ulei 35,97

24.10.2009 Zahar 34,10 24.10.2009 Lapte 31,90 24.10.2009 Malai 24,75 24.10.2009 Ulei 65,40

24.10.2009 Zahar 62,00 24.10.2009 Lapte 58,00 24.10.2009 Malai 45,00 25.10.2009 Ulei 49,05

25.10.2009 Zahar 46,50 25.10.2009 Lapte 43,50 25.10.2009 Malai 33,75

54

Val

DenProd

DenProd

DenProd

DenProd

Datafact

Datafact

Datafact

Datafact

Nrfact

Nrfact

Nrfact

Nrfact

Val

Val

Val

3 3 3 3 4 4 4 4 4 4 4 4

22.10.2009 Ulei

58,86

22.10.2009 Zahar 55,80 22.10.2009 Lapte 52,20 22.10.2009 Malai 40,50 23.10.2009 Ulei 39,24

23.10.2009 Zahar 37,20 23.10.2009 Lapte 34,80 23.10.2009 Malai 27,00 23.10.2009 Ulei 49,05

23.10.2009 Zahar 46,50 23.10.2009 Lapte 43,50 23.10.2009 Malai 33,75

În primul caz, atunci când nu au fost definite legături între tabele, s -au făcut asocieri pentru fiecare dintre cele 4 tupluri din primul tabel (cu structura DenProd – câmp individual şi Pret – ca parte componentă pentru Val) cu fiecare dintre cele 10 tupluri din al doilea tabel (cu structura NrFact şi DataFact – câmpuri individuale şi Cant – ca parte componentă pentru Val). Au rezultat 40 de articole. În cel de-al doilea caz s-au făcut asocieri doar petru tuplurile care provin din articole în care Prod.Codpro = FactProd.Codprod, rezultând 10 articole. Pentru cel de-al treilea caz s-a făcut adăugare la rezultatul cazului doi, tuplurile din tabelul Prod care nu au corespondent în tabelul FactProd (e vorba de produsul Malai). În cel de-al patrulea caz, s-ar fi făcut adăugiri la rezultatul cazului al doilea, tupluri din tabelul FactProd care nu au corespondent în tabelul Prod, dar nu au fost găsite.

Exerciţiu:
Să se extragă din tabelele „Clienti”, „FactGen”, „Prod” şi „FactProd‖ valorile din toate câmpurile şi din toate înregistrările, respectând relaţiile dintre tabele. Rezolvare: Se creează o nouă interogare, în modul proiect alegându-se ca sursă tabelele „Clienti”, „FactGen”, „Prod” şi „FactProd‖. Se glisează apoi câmpurile celor patru tabele, avându-se grijă ca dintre câmpurile de relaţie să fie incluse doar o parte, 55

Val

<=.9 3.2009 22.2009 24. operaţia se execută începând cu primul câmp din stânga introdus în expresia de sortare şi continuând cu celelalte. between.27 2. trebuie introduse câmpuri care nu se afişează dar sunt intercalate în succesiunea de ordonare dorită. după unul sau mai multe câmpuri.10. Dacă succesiunea câmpurilor de sortare este alta decât la afişare. >=.2009 25. din tabelul „ANG”. Operaţia de selecţie se referă atât la selecţia informaţiilor din coloane. totul si toate Codcli 222222 222222 222222 Dencli SC Secundul SRL SC Secundul SRL SC Secundul SRL Adresa Str.10.1 3. Succesiunea câmpurilor de sortare influenţează rezultatul operaţiei de sortare a articolelor.10.Verii nr 2 Str.9 2. unde se introduc criteriile de selecţie.Toamnei nr 3 0261333333 Str. ordonaţi descrescător după vechime.10.salvăm interogarea cu numele totul si toate.2009 21. Pentru aceasta se realizează clic în celula de la intersecţia coloanei câmpului cu caseta Sortare şi apoi se alege între Ascendentă sau Descendentă. dar şi la selecţia informaţiilor din rânduri.2009 22.2009 24.27 2.9 3. În cazul în care se specifică mai multe câmpuri de ordonare (chei de sortare).2009 Delegat Popescu Popescu Popescu Trandafir Trandafir Trandafir Popescu Anton Anton Anton Codprod DenProd UM Cant 1075 1009 7023 1075 1009 7023 7023 7023 1009 7023 Zahar Ulei Lapte Zahar Ulei Lapte Lapte Lapte Ulei Lapte kg Fl l kg Fl l l l Fl l 15 20 30 25 11 20 15 18 12 15 Pret 3.Toamnei nr 3 0261333333 Str.1 3. !=.9 333333 SC Terţa Parte SRL 333333 SC Terţa Parte SRL 333333 SC Terţa Parte SRL 222222 111111 111111 111111 SC Secundul SRL SC First SRL SC First SRL SC First SRL Str.10.10.Verii nr 2 Str. numele şi funcţia angajaţilor care au salariu între 1500 şi 3000.5. Selecţia şi sortarea datelor Datele rezultate pot fi ordonate crescător sau descrescător.Toamnei nr 3 0261333333 Str. 56 .2009 23.9 2.27 2. spre dreapta. Criteriile se înscriu în formatul: Operator_relaţional expresie Operator_relaţional poate fi =. Criteriile se pot compune cu ajutorul operatorilor logici AND/OR şi o serie de cuvinte rezervate şi expresii definite de utilizatori.Verii nr 2 0261222222 Str Primaverii nr 1 0261111111 Str Primaverii nr 1 0261111111 Str Primaverii nr 1 0261111111 3. Dacă nu se specifică niciun operator se consideră a fi semnul „=‖.2009 24.10. Pentru realizarea acestui aspect există linia Criterii. >.10.10.2009 23. Exerciţiu: Să se extragă.10. <. in etc.Verii nr 2 Telcli 0261222222 0261222222 0261222222 Nrfact 1 1 2 5 5 5 6 3 4 4 Datafact 21.

O interogare salvată poate fi folosită în obiecte ca şi cum ar fi un tabel. [Fnc]. Grila QBE este redată în figura de mai jos: 3. [DataAnga] şi [Sal]. interesant es te faptul că o interogare poate fi salvată sub formă de raport sau interogare.7. Câmpul DataAnga şi Sal nu trebuie bifate la rândul Afişare şi la Criterii trebuie înscris >10. din meniul Butonului Office . 57 . De asemenea. pot ordona aceste date . Chiar şi formatul ecranului pentru construcţie asistată a filtrului sau înregistrărilor sunt foarte asemănătoare. 3. permit modificarea informaţiilor din cadrul rezultat. pot furniza surse de date pentru formulare sau rapoarte.Rezolvare: Se creează o nouă interogare bazată pe tabelul „ANG”. sau prin alegerea opţiunii de meniu Salvare sau Salvare ca…. Adăugarea şi eliminarea filtrelor Filtrele au o menire asemănătoare interogărilor de selecţie deoarece ambele selectează o anumită parte din date. în special ca sursă de înregistrări pentru formulare sau rapoarte. Se stabilesc ca şi câmpuri ale interogării: [NumeA].6. Salvarea unei interogări Salvarea unei interogări se face la părăsirea ei. iar în rândul Sortare pentru [DataAnga] se selectează Ascendentă.

stabilit prin acţionarea instrumentului cu acelaşii nume. din fila Pornire a panglicii Accesss. într -un tabel se deschide un meniu care are ca prime opţiuni operaţii de filtrare:  Filtrare prin selecţie. cel mai simplu este filtrul de selecţie. Dacă un tabel sau o interogare este vizualizată în modul Foaie date. Dacă extragerea de informaţii este mai laborioasă. mai mare. Probabil. mai mică. Există mai multe categorii de filtre. atunci este de preferat să se aleagă interogările.  Eliminare Filtrare/sortare. Filtrarea prin selecţie e descrisă în alineatul precedent şi redată în figura următoare. Filtrarea se mai poate efectua cu un clic dreapta aplicat unui câmp.  Filtrare pentru…. diferită. 58 . atunci când cursorul este într-o anumită celulă şi se face clic pe butonul Selecţie din grupu Sortare şi selecţie. se selectează din foaia de date toate înregistrările care au în câmpul curent o valoare care faţă de valoarea aleasă poate fi: aceeaşi. sau într-un interval.  Filtrare cu excluderea selecţiei.Alegerea filtrului în locul înregistrărilor este motivată atunci când operaţia de extragere de informaţii este mai simplă.

8. Limbaj Structurat de Interogare SQL (Structured Query Language) 3. toate limbajele de programare care vor să asigure utilizatorilor posibilităţi de comunicare complexă şi rapidă cu bazele de date . La Filtrare pentru se poate da un criteriu de căutare în câmpul curent. Mai mult. au încorporată o 59 . Limbajul SQL Probabil că limbajul SQL este astăzi cel mai utilizat dintre limbajele structurate pentru interogarea bazelor de date relaţi onale.1. Filtrele mai complexe se pot executa cu opţiunea Filtrare complexă. Dar acest filtru este mai complex deoarece în caseta pentru se pot introduce expresii. Revenirea la situaţia iniţială se face selectând din meniu opţiunea Comutare filtrare. „începe cu textul‖. mereu reducându-se numărul înregistrărilor. prin care utilizatorul este ajutat să efectueze filtrări ale datelor cu ajutorul unei grile asemănătoare grilei QBE (Vezi figura): 3. Dacă pentru criteriu de selecţie se dă un text simplu. Filtrele se pot aplica prin suprapunere. sau negarea acestor expresii etc.Filtrarea cu excluderea selecţiei extrage articolele care nu apar în cazul anterior. practic funcţionarea este identică cu Filtrarea prin selecţie.  caracterul joker „*‖ pentru realizarea de expresii de forma „contine text‖. ca de exemplu:  Mai mic „<‖ sau mai mare „<‖ decât anumite valori numerice sau literare. SQL a devenit chiar un standard pentru o gamă din ce în ce mai largă de sisteme de gestiune a bazelor de date.8. „se termină cu textul‖.

Pe plan mondial. simple şi clare. acolo unde se introduce numele unui tabel. Pe lângă manipularea şi regăsirea datelor. la mijlocul anilor 1970.  inserarea. extragerea şi ştergerea rândurilor intr-un tabel. SQL are în vedere atât aspectele de definire. asigurându-şi astfel exclusivitatea. fiecare SGBD având un motor care are printre func ţiuni sarcina optimizării cererilor. procesare a tranzacţiilor.  garantarea consistentei bazei de date. instrucţiunile SQL reprezentând unul dintre modurile de vizualizare al diferitelor colecţii şi structuri de date.  crearea. prin prisma instrucţiunilor SQL.). interogare. Limbajul SQL a fost dezvoltat într-un prototip de sistem de management a bazelor de date relaţionale. se efectuează şi operaţii complexe privind actualizarea şi administrarea bazei de date.  controlul accesului la baza de date şi la obiectele de tip baza de date. de către compania IBM. SQL pune la dispoziţia programatorilor comenzi pentru rezolvarea unor probleme ca:  date interogate. ACCESS utilizează versiuni standardizate ale SQL. modificarea şi ştergerea obiectelor de tip baza de date. Nu este un limbaj procedural. Corporaţia Oracle introduce prima implementare a SQL în varianta comercială. cât şi caracteristicile complexe privind integritatea informaţiilor. Astfel comenzile SQL pot fi plasate în multe locuri din ACCESS. al unei interogări sau al unui câmp. care poate fi utilizat atât de specialişti cât şi de nespecialişti. cursoarele derulante sau joncţiunile externe. insert. SGBD-urile manipulează. Limbajul SQL foloseşte cuvintele select. În 1979. structuri de date. prin setarea mediului la SQL ANSI-89 sau SQL ANSI-92. Mediul ACCESS încurajează utilizarea limbajului SQL în scopul optimizării şi eficientizării lucrului cu bazele de date. manipulare a dat elor. Access. System R. SQL eare un set de comenzi în limba engleză. 60 .formă mai mult sau mai puţin dezvoltată de SQL. Există un anumit grad de standardizare a limbajului SQL. standardul în domeniu este considerat ANSI (American National Standards Institute). delete ca părţi ale setului de comenzi. Mulţi producători de sisteme de gestiune a bazelor de date furnizează propriile extensii ale limbajului SQL. nu are proceduri de control. Sysbase etc. mai multe sisteme de gestiune a bazelor de date recunoscând principalele instrucţiuni ale acestuia (de exemplu: Oracle.

administrare şi utilizare a bazelor de date. ACCESS creează automat o instrucţiune SQL pe care o utilizează ca setare pentru proprietatea Sursă înregistrări a formularului sau raportului. aceste nume trebuie să fie încadrate între paranteze drepte. ► în expresiile din cadrul clauzelor se folosesc operatorii aritmetici. De asemenea. atunci când se utilizează un expert pentru a crea un formular sau raport care preia date din mai multe tabele. ca şir de caractere literale sau ca instrucţiune SQL care conţine variabile şi controale. ► elementele din listele diferitelor clauze sunt separate prin virgulă. 61 . pentru a separa numele tabelului de numele câmpului. A CCESS creează o instrucţiune SQL şi o utilizează ca setare pentru proprietatea Sursă înregistrări a casetei listă sau a casetei combo. fiecare prin sintaxă. ► într-o interogare unde se folosesc câmpuri din mai multe tabele. ► comenzile SQL pot fi pe una sau mai multe linii. ACCESS completează automat instrucţiunea SQL. ► comenzile SQL nu sunt 'case sensitive'." . Implementările în diferite limbaje SQL diferă câte puţin. ► valorile de tip şir de caractere sunt încadrate între apostrof sau ghilimele. motiv pentru care însuşirea temeinică a clauzelor comenzilor limbajului SQL este indispensabilă în realizarea unei activităţi de proiectare. prin care informaţia definită şi apoi modificată pe grila QBE este automat transformată într-o instrucţiune SQL care este posibil de vizualizat sau actualizat în modul Vizualizare SQL.câmp. De exemplu. Grila QBE are limite în realizarea de interogări complexe. În paragrafele anterioare ale acestui capitol au fost prezentate modalită ţi de concepere automată a interogărilor folosind tehnica grafică a grilei QBE. ► Proprietatea SQL a unui obiect QueryDef pentru a modifica instrucţiunea SQL subordonată unei interogări. relaţionali şi logici obişnuiţi din informatică. SQL poate fi utilizat în: ► Argumentul Instrucţiune SQL al acţiunii de macrocomandă ExecuţieSQL. Atunci când trebuie creată o casetă listă sau combo cu un expert. se va utiliza modelul: tabel. ► dacă se folosesc spaţii sau diacritice în numele câmpurilor sau tabelelor. ► În cod.În unele cazuri. Această facilitate este uzitată şi de limbajele clasice de programare pentru acces la bazele de date. În ACCESS principalele reguli sunt redate mai jos: ► o comandă se încheie cu ". ► clauzele sunt uzual plasate pe linii separate.

]] [. NumeA text(10 ). 5 6 Caractere jocker A nu se confunda cu utilizarea acestor paranteze în metalimbaj cu utilizarea lor în VBA pentru delimitarea numelor de identificatori compuse din mai multe cuvinte 62 . Când în descrierea unei instrucţiuni anumite părţi constitutive por să lipsească. Aceleaşi cerinţe apar şi pentru numele câmpurilor. dar se păstrează unicitatea în tabelă. Memo. Printre cele mai importante tipuri de date folosite amintim: Character.► simbolurile „?‖ şi „*‖ sunt folosite pentru a desemna unul sau mai multe caractere de înlocuire 5.. NrDept integer NOT NULL). Dacă un anumit tip de componentă se poate repeta. Date. Dacă dintre câteva elemente este necesară optarea penntru unul dintre ele. Rate currency. Sal currency. ALTER TABLE. field2 type [(size)] [NOT NULL] [index2] [. . acest fapt se notează cu trei puncte „…‖. CONSTRAINT multifieldindex [.2. Pentru explicarea entităţilor şi structurii unui limbaj de programare se utilizează metalimbajul. ► valorile de tip dată/timp sunt încadrate cu caracterul „#‖. Un alt exemplu pentru crearea unei tabele ANG pe care o vom folosi în capitolele următoare. . Integer. CSf integer. în plus există posibilitatea duplicării lor în cadrul bazei de date.. Pentru crearea unei tabele se utilizează comanda: CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [. Clauza NOT NULL arată că în câmpul respectiv nu se pot stoca valori de tip NULL. separate de caracterul pipeline |. elementele sunt intercalate între acolade { }. CREATE INDEX.8.. Numele tabelei trebuie să fie unic în cadrul bazei de date şi să respecte cerinţele identificatorilor. acestea sunt intercalate între paranteze 6 drepte [ ].. 3. DROP TABLE. Number. Decimal. DataAnga DATE.]]) . Fnc text(10). este comanda: CREATE TABLE ANG (NrAng integer NOT NULL. Logical. OLE Object etc. Comenzi destinate tabelelor Principalele comenzi SQL pentru definirea datelor sunt următoarele: CREATE TABLE.

Pentru modificarea structurii unui tabel se utilizează comanda ALTER TABLE cu următoarea sintaxă (simplificată): ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] | ALTER COLUMN tip de câmp[(dimensiune)] | CONSTRAINT multifieldindex} | DROP {COLUMN field I CONSTRAINT indexname} } Exemplu: Se modifică în tabela ANG pentru ultimul câmp.8. Comanda DROP TABLE nume_tabelă este folosită pentru a şterge complet o tabelă dintr-o bază de date (structura şi valorile asociate)... Instrucţiunile de selecţie a datelor Pentru selecţia datelor SQL are prevăzută instrucţiunea SELECT. Pentru definirea interogărilor de selecţie simple se utilizează următoarea sintaxă 7: SELECT [predicat] { * | tabel.3... Cum frazele SELECT tabelă şi SELECT ALL tabelă au practic acelaşi rezultat.. tipul în Byte: ALTER TABLE ANG ADD ALTER COLUMN NrDept Byte. ..]câmp1 [AS alias1] [.* | [tabel. ] [HAVING. [tabel.]câmp2 [AS alias2] [. 7 Conform ajutorului Access 63 .  DISTINCT: are ca efect eliminarea înregistrărilor care conţin duplicate în câmpurile selectate. ] [WITH OWNERACCESS OPTION] Predicat permite stabilirea modalităţii de manipulare a înregistrărilor din baza de date asupra căreia se efectuează selecţia şi poate fi:  ALL: permite includerea tuturor înregistrărilor ce îndeplinesc condiţiile impuse.. 3. ] [GROUP BY. Această instrucţiune conţine mai multe clauze. ] [ORDER BY. dintre care doar primele două sunt obligatorii. calificativul ALL este destul de rar utilizat.]]} FROM expresie pentru tabele [IN bază de date externă] [WHERE.... astfel se va afişa doar o apariţie a datei multiple.

 SUM: redă suma tuturor valorilor dintr-un câmp. Dacă în lista_selecţie se includ câmpuri din mai multe tabele. De fapt în această listă pot fi incluse şi expresii care pot sau nu să fie sensibile la articolele din tabelele sursă. Ceea ce urmează după predicat în prima clauză formează o listă de selec ţie în care sunt cuprinse toate câmpurile care vor apărea în tabelă cu rezultatele interogării. Clauza FROM specifică numele tabelei sau tabelelor care vor forma suportul interogării. În cadrul listei de selecţie se pot defini şi alias-uri. Câmpurile adăugate în rândul Field din grila Query a machetei grafice QBE. în faţa numelui acestora trebuie precizată tabela din care fac parte. DISTINCTROW: are în vedere înregistrările duplicate în ansamblul lor. ca procent din total sau în număr absolut. Aşa cum arătam la regulile de sintaxă. sunt aceleaşi cu cele menţionate în lista de selecţie. De asemenea. care au marcată caseta de validare Show. pentru separarea numelor de tabele se utilizează semnul „. 64 .  MAX: permite determinarea celei mai mari valori dintr-un câmp.  TOP: are ca efect prezentarea primelor articole rezultate. iar mulţimea şi valorile rezultatelor obţinute sunt direct condiţionate de clauza GROUP BY. Acestea reprezintă un pseudonim (nume) asociat unui câmp astfel: câmp AS alias al funcţiei agregat.  MIN: duce la obţinerea celei mai mici valori a unui câmp rămâne valabilă şi aici restricţia privind clauza WHERE. Trebuie să precizăm faptul că în cadrul acestei clauze se pot menţiona pe lângă tabele. în scrierea interogărilor de selecţie simple SQL ACCESS este posibilă şi folosirea funcţiilor totalizatoare. nu numai pe cele care au câmpuri duplicate. În continuare redăm câteva exemplificări ale acestor precizări: Pentru a selecta toate coloanele dintr-o tabelă se utilizează caracterul asterix ('*') după cuvântul SELECT.‖ (virgulă). Aceste funcţii se mai numesc şi funcţii de grupare. Simbolul „*‖ are rol de caracter jocker. şi interogări care au fost deja create. Cele mai importante funcţii din această categorie sunt:  COUNT: returnează numărul de înregistrări care respectă condiţii le stabilite prin clauza WHERE. operează numai cu valori numerice.  AVG: calculează valoarea medie a unui câmp numeric. ca surse de informaţii pentru interogările SQL.

1999 5000 TULIAN VANZATOR 2956 23.09. NrAng NumeA Fnc Csf DataAnga Sal Rate NrDept 2000 CHIVU SOFER 2956 23.1999 3000 2553 11.12.10.1999 2450 Pentru a lista salariile angajaţilor este necesară comanda: SELECT NUMEA.1999 1600 300 ZIMAN INGINER 2553 14.03.1999 1250 500 SOFER DIRECTOR 2084 13. 65 .02.12.SELECT * FROM ANG.02.2000 1250 400 2049 2731 2956 2084 2789 2396 2553 2024 2987 2643 DOROS MARCU NEGRU OSAN POPA POPAN RUSU INGINER ANALIST INGINER ANALIST 2553 31.03.01.1999 2850 2049 19.1999 950 30 30 20 20 30 20 30 20 10 30 30 10 2555 CONTRA VANZATOR 2956 19. NUMEA CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA POPAN RUSU TULIAN VUSCA ZIMAN SAL 950 1250 2975 3000 2850 3000 1250 800 5000 1500 1600 2450 Uneori dorim să creăm noi coloane prin expresii.10. În următorul exemplu se evaluează prima dată înmulţirile (Sal * 12 şi Comp * 12).01.2000 2975 2049 19.01.2000 3000 VANZATOR 2956 26.1999 800 19. Regulile de sintaxă şi de precedenţă sunt cele obişnuite. funcţie de tipurile de date ale operanzilor sau câmpurilor ce concură la realizarea expresiilor.1999 1500 VUSCA VANZATOR 2956 15. apoi cele două valori produs sunt adunate. SAL FROM ANG.

valorile nule provoacă rezultatul Null. Pentru ca sistemul să nu îi atribuie o denumire implicită trebuie să se specifice un alias asemeni celui din exemplul de mai jos: SELECT NumeA. acest lucru se poate perpetua în obiectele în care aceste interogări vor fi folosite mai departe. Dacă apar în expresii.I VenitAnual 11400 10200 35700 36000 34200 36000 9000 66 . SQL tratează corect valorile nule. Pentru aceasta există funcţia Nz.SELECT NumeA. Deci. de obicei 0 pentru expresii care în mod firesc ar trebui să fie numerice. Din păcate. care înlocuieşte expresiile Null cu o anumită valoare.Rate * 12 FROM ANG. Sal *12 . etc. Sal*12-Rate*12 as VenitAnual FROM ANG.0)*12 as VenitAnual FROM NumeA CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA ANG. NumeA CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA POPAN RUSU TULIAN VUSCA ZIMAN 15600 9000 10200 Expr1001 Câmpul se va numi Expr1001. "" pentru string. indiferent de tipul celorlaţi operatori implicaţi. pentru a face ca interogarea să funcţioneze corect ea trebuie transformată sub următoarea formă: SELECT NumeA. Sal*12 -Nz(Rate.

09. şi anume acele a care îndeplinesc criteriul descris. se dă comanda: SELECT ANG.NumeA.01.1999 14. OR.1999 19. NumeA POPAN VUSCA POPA NEGRU ZIMAN MARCU RUSU TULIAN CHIVU DataAnga 13.0)*12 as VenitAnual FROM NumeA POPAN RUSU TULIAN VUSCA ZIMAN ANG.1999 23.1999 Dacă se doreşte să se extragă angajaţii ai căror salariu este între 1500 şi 3000: 67 .10. <=.DataAnga FROM ANG WHERE [DATAANGA]<=#1/1/2000#. În expresia clauzei WHERE obligatoriu trebuie să apară cel puţin un câmp. În cadrul condiţiei din clauza WHERE pot fi utilizaţi operatorii relaţionali: (>.SELECT NumeA. Sal*12 -Nz(Rate. =.1999 23.03.1999 19. Redăm în continuare câteva exemple de utilizare a acestei clauze: Pentru a afişa angajaţii anterior datei 01.01.02. >=.2000.01. Apelând la aceştia.1999 26. <. ANG. Parametrul criteriul ui de selecţie este o expresie care are rezultatul obligatoriu logic.1999 15. Clauza WHERE este opţională şi nu operează cu funcţii totalizatoare. logici: (AND. este posibilă construirea unor condiţii mai complexe. IS NULL).03. BETWEEN.I VenitAnual 9600 60000 18000 15600 29400 Prin clauza WHERE se pot selecta numai anumite articole.02. LIKE.01. NOT) şi SQL: (IN.1999 11. !=).

Sal)>1500 And (ANG. ANG.NrDept FROM AND OR NrAng 2987 2789 2049 2555 2956 2643 2024 ANG Fnc = 'INGINER' Fnc = 'VANZATOR'.Sal.SELECT ANG. Fnc VANZATOR VANZATOR INGINER VANZATOR INGINER INGINER VANZATOR WHERE Sal > 1500 NumeA VUSCA POPA DOROS CONTRA NEGRU ZIMAN TULIAN Sal 1600 1250 2975 1250 2850 2450 1500 NrDept 30 30 20 30 30 10 30 Dacă se doreşte selectarea tuturor INGINERilor şi a vânzătorilor cu salarii peste 1500 se introduce: 68 .DataAnga. 2956. 2049. CSf FROM ANG Sal 2975 2850 5000 3000 2049 NrAng IN (2553.Fnc FROM ANG WHERE (((ANG.Sal)<3000)) ORDER BY ANG. au unul din numerele de marcă aparţinând (CSf): SELECT WHERE NrAng 2049 2956 2553 2084 NrAng. NumeA DOROS NEGRU RUSU OSAN CSf 2553 2553 Pentru a selecta toţi INGINERii cu salarii peste 1500 şi toţi vânzătorii se foloseşte: SELECT NrAng. NumeA. Sal. NumeA NEGRU VUSCA ZIMAN DOROS Fnc INGINER VANZATOR INGINER INGINER Presupunem că dorim să găsim angajaţii care sunt şefi. 2084).Fnc.NumeA.NumeA.

SELECT FROM WHERE AND OR NrAng 2987 2049 2956 2643 NrAng. regulile de precedenţă sunt redate în ceea ce urmează:  Toţi operatorii sunt aranjaţi într-o ierarhie.  Într-o expresie operaţiile sunt executate în ordinea precedenţei lor de la mare la mică.Fnc. 1.. Sumar.LIKE. Fnc VANZATOR INGINER INGINER INGINER NumeA VUSCA DOROS NEGRU ZIMAN Sal 1600 2975 2850 2450 NrDept 30 20 30 10 Parantezele specifică ordinea în care operatorii vor fi evaluaţi. OR.AND. AND 4.IN.. În al doilea exemplu operatorul OR este evaluat înaintea operatorului AND. NOT(pentru a inversa rezultatul unei expresii logice. De fiecare dată când există dubiu despre care dintre două operaţii vor fi executate mai întâi când o expresie este evaluată. De ex: WHERE not(sal=2000)) 3. Exemplificare a folosirii acestei clauze este comanda prin care se extrag în ordinea crescătoare a vechimii (inversă a valorilor coloanei DataAnga) date din tabelul ANG: 69 .NumeA.<=.>=.. pentru că altfel rezultatul poate fi imprevizibil. ceea ce le determină precedenţa. se recomandă utilizarea parantezelor pentru clarificarea semnificaţiei dorite şi obţinerii rezultatului scontat. Sortarea este opţională şi se poate realiza în mod crescător (ASC) sau descrescător (DESC). În astfel de operaţii complexe trebuie avută mare atenţie la precedenţa operatorilor de toate tipurile.  Când operatorii au precedenţa egală atunci ei se evaluează de la stânga l a dreapta. 2.BETWEEN. Toţi operatorii de comparaţie şi SQL au precedenţa egală: =. Clauza ORDER BY se utilizează atunci când se doreşte ca rezultatele interogării să fie ordonate după unul sau mai multe câmpuri_criteriu (definite drept chei de sortare).Sal.!=.NrDept ANG Sal 1500 (Fnc = 'INGINER' Fnc = 'VANZATOR'). separat pentru fiecare câmp din listă.IS NULL.

00 2758.00 3000.33 1310. ANG. se pot executa funcţiile agregate descrise în lista de selecţie pentru fiecare dintre grupări (constituite pe baza câmpurilor de grupare). se utilizează comanda: SELECT Sum(ANG.CSF.12.03.2000 14.1999 23.1999 11.02.10.00 800.2000 31.1999 19. În acelaşi timp. Avg(ANG.DataAnga ANG Fnc DataAnga 19.12.1999 23.01.1999 26.01. prin intermediul acestei clauze.1999 15.02. NRDEPT FROM ANG GROUP BY NRDEPT. TOTAL DEPARTAMENT NRDEPT 7450 9775 9400 10 20 30 Pentru a calcula suma salariulu și salariul mediu distribuite de către persoanele cu funcții de conducere.1999 13. ANALIST VANZATOR INGINER INGINER VANZATOR VANZATOR ANALIST SOFER DIRECTOR VANZATOR SOFER INGINER Clauza GROUP BY precizează câmpul sau câmpurile pe baza cărora se va efectua gruparea înregistrărilor. Sumă Medie Responsabil 5000 6000 800 8275 6550 5000.CSF AS Responsabil FROM ANG GROUP BY ANG.1999 ORDER BY DataAnga DESC.Fnc.SELECT FROM NumeA OSAN CONTRA DOROS ZIMAN VUSCA POPA MARCU CHIVU RUSU TULIAN POPAN NEGRU NumeA.1999 19.09. Pentru a calcula totalul salariilor pe departamente.SAL) AS Medie.SAL) AS Sumă.2000 19.00 2049 2084 2553 2956 70 . Echivalentul acestei clauze în macheta grafică QBE de construcţie a interogării îl reprezintă rândul Total.01.10. se utilizează comanda: SELECT SUM(SAL) AS [TOTAL DEPARTAMENT].03.

Pentru HAVING criteriul va fi aplicat câmpului definit ca argument al funcţiei agregat. Noile înregistrări care rezultă în urma joncţiunii vor deveni disponibile pentru selecţiile ulterioare. HAVING va opera după definirea acesteia. Fnc salariu minim VANZATOR INGINER ANALIST DIRECTOR 1500 2450 3000 5000 De remarcat faptul că se admite utilizarea unei funcţii agregat care nu apare în lista de selecţie. Operaţiile de asociere induse de clauza JOIN au ca rezultat producerea tuturor combinaţiilor posibile.La prima vedere s-ar părea că clauza HAVING ar fi redundantă. se va utiliza clauza HAVING. Principala modalitate de realizare a joncţiunii este sintetizată de următoarea sintaxă. precum şi apelarea la mai multe criterii de grupare. Interpretarea unei astfel de înregistrări ar fi: extragerea pe funcții a salariului minim. Spre deosebire de WHERE. La o asociere pot participa mai mult de două tabele. a celei de-a doua clauze a comenzii SELECT: FROM nume_tabela1 {INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela2 ON criteriul_de_asociere 71 . MIN(Sal) as [salariu minim] FROM ANG where Sal >= 1500 GROUP BY Fnc ORDER BY MIN(Sal). Fnc salariu minim INGINER ANALIST DIRECTOR 2450 3000 5000 Rezultatul este diferit de cel care de obține prin mutarea condiției la la clauza WHERE. Altfel spus. pentru conţinutul informaţional al fiecărei tabele. Puterea limbajului SQL este pusă în evidenţă atunci când se lucrează cu mai multe tabele. pentru toți angajații cu salarii mai mari sau egale decât 1500: SELECT Fnc. Un exemplu edificator ar fi extragerea funcţiilor pentru care toţi angajaţii au salariu mai mare decât 1500: SELECT Fnc. ea este foarte necesară. Din contră. când se foloseşte clauza GROUP BY şi este necesară şi o condiţie. MIN(Sal) as [salariu minim] FROM ANG GROUP BY Fnc HAVING MIN(Sal) >= 1500 ORDER BY MIN(Sal). care acţionează înainte de a se efectua gruparea înregistrărilor. când se exploatează relaţiile sau chiar asocierea dintre ele.

iar cel ălalt există într-o altă tabelă din lista cu numele tabelelor. din caseta Join Properties.Telcli..Dencli.>=) şi va returna valorile logice TRUE sau FALSE.4). Prod. CLIENTI.DenProd. FactGen. Echivalentul QBE al acestor categorii de joncţiuni este alegerea opţiunilor 1.Nrfact. RIGHT OUTER se referă la tipurile de joncţiuni (INNER JOIN. De observat că este este recomandabilă scrierea completă din punct de vedere sintactic a numelui câmpurilor. externă de stânga. Semnificaţia elementelor de sintaxă descrise mai sus este următoarea: INNER..>. precum în comanda de mai jos: 72 .Delegat.Adresa.Cant. LEFT OUTER JOIN.Datafact=FactProd. CLIENTI. Unul se află în tabela asociată..Pret FROM Prod INNER JOIN ((CLIENTI INNER JOIN FactGen ON CLIENTI.Codcli.[{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela3 ON criteriul_de_asociere]. LEFT OUTER. dacă o denumire de câmpuri apare de cel puțin două ori.Nrfact=FactProd.Nrfact) AND (FactGen. JOIN specifică tabela care va fi asociată (nume_tabela2. ci specificare condițiilor de legătură în clauza WHERE. în multimea câmpurilor tabelelor la care se face referire în clauza FROM. Expresia criteriul_de_asociere conţine un operator de comparaţie (=.. ON este criteriul de asociere şi arată relaţia dintre câmpurile pe care se bazează joncţiunea.Codprod.Codcli) INNER JOIN FactProd ON (FactGen. CLIENTI. fie următoarea interogare totul si toate: SELECT CLIENTI. Joncţiunile tip INNER JOIN determină o asociere a înregistrărilor din tabele. RIGHT OUTER JOIN. Același rezultat poate fi obținut fără a se recurgere la opțiunile JOIN în clauza FROM. internă de tip echivalent.<.‖ e obligatorie.) tabelei precizată în clauza FROM.<=. Joncţiunile externe (OUTER) sunt de două tipuri: de stânga (LEFT OUTER JOIN) şi de dreapta (RIGHT OUTER JOIN). 2 sau 3.UM. Precedarea sintactică a numelui câmpurilor de numele tabelului și semnul ‖. De remarcat faptul că SQL ACCESS acceptă scrierea interogărilor externe fără specificarea explicită a lui OUTER. Ca exemplu. Prod.Codpro=FactProd. FactGen.<>..Codcli=FactGen. FactProd. care au fost explicate într-un capitol precedent (3. nume_tabela3. externă de dreapta). FactProd. FactGen. astfel încât să rezulte doar informaţii din înregistrările din fiecare tabelă care respectă criteriul de asociere.Datafact)) ON Prod.Codprod. Prod.Datafact. fiind destul de puţin utilizate.

Prod. FactProd WHERE (CLIENTI. Fie. Sum([Cant]*[PRET]) AS SumăValoare FROM Prod LEFT JOIN FactProd ON Prod.Cant.Cant) AS SumăalCant. specificarea relațiilor s-a făcut prin clauza WHERE. Prod.Pret. Prod.UM. Prin parametrii RIGHT sau LEFT opțiunea JOIN a adus și o simplificare a unor comenzi. FactProd WHERE Prod.Datafact. FactGen.UM.DenProd.UM. CLIENTI.25 3. Sum(FactProd.Pret FROM Prod.Cant) AS SumăalCant.SELECT CLIENTI. CLIENTI. Sum(FactProd. Prod.Telcli. Clienti. Prod.DenProd.Adresa. Sum([Cant]*[PRET]) AS SumăValoare FROM Prod.20 140.DenProd. FactProd WHERE Prod.00 Fără opțiunea JOIN.DenProd.00 AS SumăalCant. trebuie să se recurgă pentru relații la clauza WHERE și.UM.DenProd. FactGen.UM.Codpro = FactProd. Prod. până atunci.00 2. 0.9 2. de exemplu.00 40. FactGen. pentru adăgarea produselor pentru care nu s-a facturat nimic.Pret. TOTAL VALOARE SI CANT DenProd UM SumăalCant Pret SumăValoare Lapte Malai Ulei Zahar l kg Kg kg 98. FactProd.Nrfact) AND (FactGen. Prod. interogarea de extragere a totalului valorii și cantității pe produse: SELECT Prod.61 124. Prod.DenProd.Codpro=FactProd.Codprod) . FactGen.Pret. CLIENTI.27 3. Prod. Prod. Prod. Prod.Nrfact=FactProd.Nrfact.Datafact=FactProd.Pret.Pret.Codprod.Codcli.00 AS SumăValoare FROM Prod.1 284. Prod.Delegat.DenProd. 0. Prod.Codcli=FactGen.Dencli. la opțiunea UNION: SELECT Prod. Opțiunea JOIN a fost introdusă în standardul SQL din 1992.UM.Codprod GROUP BY Prod.Codcli) AND (FactGen.Datafact)AND (Prod.Codpro NOT IN (SELECT DISTINCT CodProd FROM FactProd) GROUP BY Prod.Codprod GROUP BY Prod. FactProd.Pret.Codpro=FactProd.UM.00 43. 73 . UNION SELECT Prod. Prod.

Instrucţiunile pentru manipularea datelor Cele mai importante instrucţiuni sunt:  INSER. Pot fi construite şi prin varianta de lucru a machetei grafice QBE ACCESS. Cea mai simplă subinterogare are sintaxa următoare: SELECT * FROM Tabela1 WHERE Tabela1. Tabela1 şi Tabela2 vor avea un câmp comun (nume_câmp) care va reprezenta de fapt câmpul de legătură ce stă la baza construirii subinterogării. date fixe sau parametri. cu rol de căutare în structura tabelelor.4.AND.valoare2. LIKE. IN. pe baza unor câmpuri unice. Sintaxa comenzii este următoarea:  pentru un articol: INSERT INTO nume_tabelă [(câmp1[.. Ca exemplu redăm următoarea comandă: SELECT DenProd FROM Prod WHERE Pret= (SELECT MAX(Pret) from Prod).. 3.nume_ câmp operator (SELECT nume_câmp FROM Tabela2 WHERE criteriul_de_selecţie).Scrierea unei interogări în cadrul alteia duce la apariţia unei subinterogări. Ca sursă a datelor pot fi o alte tabele. IS NULL. setul de rezultate obţinut de la o interogare va constitui argument pentru o alta. cu performan ţe mult îmbunătăţite.)  pentru mai multe articole:  74 . Clauza SELECT din subinterogare va avea acelaşi număr de câmpuri şi de natură similară cu cele din clauza WHERE a interogării externe.8. Subinterog ările înlocuiesc interogările imbricate din versiunile precedente. Utilizatorul poate astfel să creeze legături între mai multe interogări SQL ACCESS.. Operatorul poate fi unul relaţional sau unul dintre BETWEEN. câmp2[.  UPDATE.  DELETE.]])] VALUES (valoare1... . Comanda INSERT se foloseşte pentru adăugarea de înregistrări la o tabelă..

). În acelaşi timp se va şterge doar conţinutul tabelei nu şi aceas ta (pentru eliminarea tabelei se va apela la instrucţiunea DROP TABLE).a. ► nu va fi obligatorie specificarea denumirii câmpurilor.10) Comanda DELETE are următoarea sintaxă: DELETE FROM nume_tabelă [WHERE criteriul_de_ştergere] se materializează în interogarea acţiune de ştergere parţială sau totală a înregistrărilor din tabele. #3/3/2009#...]])] SELECT [sursă. menţionându-se câmpurile şi valorile asociate acestora. ► dacă un câmp are definiţia NOT NULL.]câmp1[. în al doilea câmp s.m.. .INSERT INTO nume_tabelă [IN baza_de_date_externă] [(câmp1[.2000. Exemplu: DELETE FROM ANG WHERE NrAng = 8888 Comanda UPDATE are următoarea sintaxă: UPDATE nume_tabelă SET nume_câmp1 = valoare1 [. În cadrul acestui tip de inserare a datelor trebuie să se respecte următoarele reguli: ► valorile menţionate în clauza VALUES vor avea aceeaşi natură cu câmpurile specificate în clauza INTO. [WHERE criteriul_de_actualizare] 75 . ► mărimea valorii corespunzătoare fiecărui câmp va fi mai mică decât dimensiunea câmpului. "VALCU" .. Exemplu: Să se adauge un articol pentru un nou angajat. deoarece SQL ACCESS va asocia listei de valori câmpurile în ordinea din structura înregistrării (prima valoare se va introduce în primul câmp.. câmp2[. câmp2[.nume_câmp2 = valoare2]. .. Paznic: INSERT INTO Ang values (8888. "PAZNIC".null .d. 2553.] FROM listătabele În acest caz se adaugă înregistrări într-o tabelă. va fi obligatorie introducerea unei valori pentru acesta. a doua valoa re. După lansarea în execuţie a interogării apare un mesaj de avertizare privind adăugarea de noi înregistrări în baza de date şi caracterul ireversibil al acestei operaţii.

76 .15 where Fnc=”VANZATOR”.Această comandă are rolul şi de a modifica valorile câmpurilor din înregistrările existente. Atunci când se doreşte actualizarea datelor din mai multe câmpuri se foloseşte virgula ca separator între câmpuri şi valorile acestora. Exemplu: Să se mărească salariile VANZATORilor cu 15%: UPDATE Ang SET Sal= Sal * 1. Se pot utiliza mai multe condiţii. Ca şi în cazul instrucţiunii INSERT. se va urmări dacă în câmpul cu valori de actualizat sunt permise numai valori unice. WHERE apelând la operatorul logic AND pentru a limita actualizarea la înregistrări mai bine specificate.

Noţiuni generale CREAREA ŞI UTILIZAREA Pentru introducerea în siguranţă a informaţiilor în tabelele bazelor de da te se recurge la utilizarea formularelor (în limba engleză: forms). 77 . cum sunt liniile şi dreptunghiurile. Majoritatea formularelor sunt legate de unul sau mai multe tabele şi interogări dintr-o bază de date. Elementele grafice. Crearea formularelor necesită activităţi complexe de analiză. introducerea eficientă de date. cum ar fi: titlu. posibilitatea de regăsire a articolelor.CAPITOLUL IV. în scopul modificării. Un formular nu e obligatoriu să conţină toate câmpurile din fiecare tabel sau interogare pe care se bazează. Un formular legat de date memorează sau regăseşte informaţii din sursa de înregistrări de bază. sunt memorate în forma formularului. la proiectarea formularelor trebuie să se găsească soluţii pentru întreţinerea datelor în siguranţă. vizualizarea rapidă a valorilor introduse şi apoi tipărirea lor.1. Pe lângă acestea formularele mai pot conţine şi alte informaţii. Deoarece bazele de date trebuie să poată gestiona un număr de articole de ordinul miilor sau chiar milioanelor. proiectare şi programare a sistemelor. data şi numărul paginii (vezi figura). FORMULARELOR 4. verificarea şi partajarea accesului utilizatorilor la bazele de date. care consumă cea mai mare parte din bugetul de timp alocat creării şi implementării aplicaţiei de gestionare a bazei de date. asigurarea concordanţei datelor introduse cu datele existente. Datele cu care lucrează formularul sau raportul sunt constituite în sursa de înregistrări a formularului în câmpurile din tabelele şi interogările pe care acesta se bazează.

grupate într-o zonă cu acelaşi nume. Un formular cu elemente multiple într-o versiune iniţială poate fi confundat cu un tabel în modul Foaie de date. indicat prin evidenţiere grafică. Aceste elemente se numesc controale. în fila Creare a panglicii Access. aspect numit focalizare. Un calcul provine dintr-o expresie. iar în partea de jos. Obiectul care a primit focalizarea este. denumit şi formular continuu. fereastra să trebuiască închisă neapărat înainte de a fi posibilă mutarea focalizării la alt obiect. putând fi legat de efectuarea unor acţiuni declanşate de evenimente intervenite în rularea aplicaţiei sau pur şi simplu sunt create pentru mai buna lizibilitate sau pentru scop estetic. Aici programatorii 78 . Focalizarea poate fi setată de utilizator sau de aplicaţie cu ajutorul metodei SetFocus.Datele provin din câmpurile provenite din sursa de înregistrări de bază. În versiunea 2007 a Microsoft ACCESS au fost introduse instrumentele de creare formulare. poate fi particularizat. în partea de sus. Crearea formularelor se poate face:  prin salvarea unui tabel sau interogări ca formular. Acţiunea se poate face la un moment dat doar asupra unui singur obiect. creindu-se un formular care afişează toate câmpurile şi înregistrările din sursa de date. Formularele astfel create pot fi particularizate în modul dorit. Un control este un o biect grafic care poate fi poziţionat pe un formular sau raport. Textul descriptiv este şi el memorat în forma formularului. putând afişa date. care este memorată în forma formularului. caz în care utilizatorii sunt asistaţi de un expert care pune întrebări şi creează un formular bazat pe răspunsurile primite. în mod normal. Elemente multiple sau Dialog Modal. toate câmpurile unui tabel. Un formular este de tip modal dacă are setată proprietatea modal. dar fiind formular.  prin apelarea la unul dintre noile instrumente introduse în mediul de proiectare şi întreţinere: Scindare formulare. Mediile de proiectare a bazelor de date pun la dispoziţia utilizatorilor diverse instrumente pentru crearea de formulare. Asupra controalelor acţionează utilizatorii cu mouse-ul sau tastatura. permite afişarea simultană a informaţiilor mai multor înregistrări. în modul Vizualizare proiect. înregistrările în modul de vizualizare Foaie de date. În ACCESS 2007 a fost introdus un instrument nou în fila creare în acest scop. Această proprietate face ca atunci când e terminată o sesiune de editare într-un astfel de formular. Un Formular cu elemente multiple. În Formularul scindat sunt generate automat.  utilizând expertul. prezentate în figura alăturată.

se pot seta proprietăţile secţiunii pentru a controla aspectul şi imprimarea unui raport. De asemenea se poate adăuga Ajutor particularizat unui formular pentru a asista utilizatorii la folosirea formularului. redimensiona sau seta proprietăţile fonturilor unui control. Ca şi în cazul tabelelor. munca în modul Vizualizare proiect va fi preponderentă în crearea sau particularizarea formularelor. Se pot muta. 79 . Spre exemplu formularul Produse este prezentat mai jos. se pot adăuga controale pentru a afişa valori calculate. De asemenea. într-un formular. în modul Proiectare (în limba engleză: Design View). se pot particulariza următoarele elemente:  Pentru controlul şi asistarea utilizatorului se pot seta proprietăţile formularului pentru a permite sau preveni utilizatorii de la adăugarea. elimina. ascunde sau redimensiona antetul.  În secţiuni se poate adăuga.beneficiază de tehnologii bazate pe obiecte şi . odată cu creşterea experienţei proiectanţilor.  Controale. De asemenea. ştergerea sau editarea înregistrărilor afişate într-un formular.pentru sarcinile mai dificile .  În fereastra Formular se pot adăuga sau elimina butoanele Maximizare şi Minimizare.de ajutorul limbajului Visual Basic. Panglica Access Instrumente pentru crearea controalelor formularelor Casetă text Panou de navigare Casetă combinată Fereastra pentru proiectarea formularelor Etichetă Subformular Foaia de proprietăți Dreptunghi Buton Linia de stare În modul Vizualizare proiect. butoanele de navigare. subsolul şi secţiunea detalii ale unui formular. meniuri rapide şi alte elemente ale ferestrei Formular.

 când mouse-ul este lăsat. data şi ora curentă şi alte informaţii folositoare într -un formular. grupate într-o zonă a Controalelor. din panglica Access.totaluri. Se pot crea proceduri particularizate de tratare a evenimentelor ocazionate de lucrul cu controalele. în fila Instrumente proiectare formular.  configurarea parametrilor controlelor prin atribuirea de valori Inserare sfârşit pagină Inserare pagină Buton opţiune Control filă Subformular/ subraport corespunzătoare în rubricile din Fila proprietăţilor 80 Culoare linie Selectare totală Stabilire proprietăţi implicite control Cadru obiect legat Imagine Caseta de selectare Inserare hyperlink Ataşament Casetă listă Instrument selecţie Buton de comutare Inserare diagramă Grup de opţiuni Cadru independent Tip linie Efect special Casetă combo Dreptunghi Linie Grosime linie . Pentru a putea fi incluse în formulare. controlul este ataşat. există instrumente de creare a acestora. Controale Sistemul de gestiune a bazelor de date ACCESS oferă utilizatorilor un mediu de proiectare orientat pe obiecte. legătura cu datele sau modul de reacţie la evenimente.  se selectează o zonă pe formular unde acest control va fi amplasat. Obiectele au diverse proprietăţi prin care se formatează caracteristicile de stare. Procedura de amplasare a acestora în formulare este următoarea:  se face clic pe tipul de control dorit. 4.2. dezvoltat în special pentru realizarea elementelor de interfaţă.

Ca exemplu putem prezenta o relaţie 1 – n. Instrumentele din fila Instrumente proiectare formular. dreptunghiurile sau unele imagini. Un subformular este un formular inclus într-un alt formular. Prin urmare. Cele mai multe dintre ele. iar în subformular cele din partea mai mulţi. şi constituie activitatea preponderentă a proiectanţilor de aplicaţii de baze de date. legătura dintre un formular şi un subformular reflectă legătura dintre tabelele pe care se bazează. Astfel. cânt sunt create în modul design. Fereastra de proprietăţi este disponibilă prin aplicarea unui clic pe instrumentul Foaie de Proprietăţi din panglica Access sau făcând clic dreapta pe un obiect şi alegând ultima opţiune (Proprietăţi) din meniul contextual. munca programatorilor de interfeţe de lucru cu informaţiile din baza de date. apelează automat la un expert (wizard). Dar există controale cu mult mai complexe decât cele de mai sus. care nu au proprietatea Control source. Dintre acestea amintim: etichetele. Un regim oarecum diferit de cel al controalelor îl au subformularele. pentru a permite afişarea datelor din mai multe tabele sau cereri de interogare. Aşa sunt. Casetă cu listă sau Control de pagini. Într-un formular care conţine un subformular se pot specifica criterii de filtrare numai asupra câmpurilor din formularul principal. aflate în general în relaţii de tip unu la unu sau unu la mai mulţi. În mod implicit. le am prezentat în figura anterioară: Proprietăţile unui obiect sunt disponibile pentru modificare dacă numele acelui obiect se găseşte în titlul ferestrei de proprietăţi. cu asimilarea accepţiunii proprietăţilor şi reacţiei controalelor la evenimente. în formularul principal vor fi afişate datele din partea unu a relaţiei. dintre un catalog de materiale şi documente de mişcare a acestor materiale astfel: 81 . dar clic-ul dreapta trebuie făcut în afara zonei unde se aşează obiectele. Poate pentru începători găsirea proprietăţilor formularului este mai dificilă. Există controale simple. din panglica Access destinate proiectării controalelor pentru formulare. liniile. Buton de comandă. care nu sunt prezentate împreună cu numele lor. de exemplu controalele tip: Casetă combinată. chiar mai complexe decât casetele de text. la un moment dat în formular va fi afişată o înregistrare aflată de partea unu a relaţiei iar în subformular înregistrările corespondente din tabela aflată de partea mai mulţi a acesteia. Măiestria utilizării controalelor se deprinde odată cu experienţa.Toate aceste operaţii se fac în modul vizualizare proiectare (DesignView). nelegate de date.

cele mai importante proprietăţi ale obiectelor sunt cele legate de date. Pentru introducerea datelor de la tastatură se folosesc de obicei casete de editare text. Atunci când se include un subformular într-un formular principal trebuie realizate următoarele operaţii:  se creează formularul principal. Proprietăţile esenţiale Un formular este o fereastră de tip Windows. 4.3. se poate verifica rezultatul operaţiunii în modul Vizualizare machetă. În aceste casete se folosesc foarte multe dintre regulile de scriere de text din editoarele Microsoft referitoare la deplasare. cea mai importantă menire a formularelor este de introducere de date într-un formular.Un subformular poate fi înglobat într-un formular în două moduri: foaie de date (în limba engleză: Datasheet view) sau formular (în limba engleză: Form view). corectare. Pentru formular această proprietate este Sursa înregistrări (în limba engleză: Record Source) şi reprezintă tabelul sau interogarea de unde formularul îşi extrage datele. Odată înglobat un subformular într-un formular. căutare. Deoarece.  se creează subformularul. etc. Proiectarea unui formular legat de o sursă de înregistrări 4. Eventualele retuşuri se pot face în modul Proiectare.1. selectare. Dacă tabelele pe baza cărora sunt create formularele sunt într-o anumită relaţie. 82 .  se adaugă obiectul subformular din ToolBox într-o manieră similară cu adăugarea oricărui control. ACCESS-ul propune stabilirea acestei relaţii şi între cele două formulare. Acesta are obiecte întâlnite în ferestrele aplicaţiilor Windows.3.

în modul Design view. Recomandăm utilizarea instrumentului . măcar structura lui. ca de altfel pentru majoritatea controalelor. prin instrumentul comutator . şi este util să fie activată Foaie de proprietăţi. Se deschide apoi o fereastră goală pentru crearea formularului. Sunt disponibile pentru modificare proprietăţile unui obiect dacă numele acelui obiect se găseşte în titlul ferestrei de proprietăţi. legătura cu datele este realizată de proprietatea Sursă Control (în limba engleză: Control Source) şi reprezintă de obicei câmpurile tabelului sau interogării de unde sunt luate valorile pentru o înregistrare. Fie. tabelul CLIENTI. pe locul Foii de proprietăţi. 83 . Pentru formular "Record Source" se poate stabili proprietatea mai târziu. care are următoarea structură: Cum se construieşte un formular pentru introducerea acestor date? Tabelul trebuie să existe în baza de date. Penultimul buton din aceeaşi filă este instrumentul comutator care face activă/inactivă Lista de câmpuri a bazei de date curente.Pentru casete de text. plasat ultimul în fila Instrumente proiectare formular a panglicii. de exemplu.

dacă este plasat peste fereastra de creare a formularului. Adresa. Se face clic în aria formularului. va avea forma unui semn + şi ab|. pentru casete text. O posibilitate este de a trage din fereastra cu lista de câmpuri (pe rând).3. Când butonul mouse-ului este eliberat. caseta este amplasată şi este însoţită de o etichetă. Text4. Se modifică textul etichetelor ataşate (în cazul nostru Text0. prin acest procedeu se recomandă să fie particularizate toate proprietăţile (caracteristicile) obiectelor plasate în formulare (inclusiv a formularului însuşi): 84 . din Foaia de proprietăţi. Această modificare se poate realiza după două clicuri pe etichetă. Text2. prin modificarea proprietăţii Legendă a filei Format. Cursorul mouse-ului.2. Obiectele simple În continuare. butonul ab|. în cazul de faţă). sau după selecţia controlului (a etichetei. atunci când cursorul mouse-ului devine |. De altfel. Telefonul). trebuie ataşate controalele. Casetele de text pot fi ataşate prin mai multe posibilităţi. în locul unde se doreşte să fie amplasat cursorul şi se trage cursorul mouse-ului peste zona care va fi acoperită de caseta text. câmpurile în locul unde se doreşte a fi ataşate. O altă posibilitate este de a selecta din bara de instrumente.4. Denumirea. În caseta text apare scris Nelegat(Unbound). Text6) cu mesajele logice (în cazul de faţă Codul.

Dacă tot nu se găseşte nuanţa dorită. Dacă se cunoaşte codul culorii acesta se poate completa. Culoarea alb se obţine prin amestecul celor 3 culori RGB în cantitate saturată. Pentru a facilita intuiţia codului. Dacă există dificultăţi în selectarea nuanţei. 4. scris #FFFFFF în sistemul hexazecimal (se obţine valoarea codului 2563-1=16777216-1).3. dimensiune. scris #FFFF00 în sistemul hexazecimal (se obţine valoarea codului 256*256-1=65536-1). şi se alege o culoare dintr-o paletă. Galbenul este amestec saturat de roşu şi verde. Green. nume etc. se formează o mască în care tripleta RGB se pune invers. de la sfârşitul liniei proprietăţii culorii. precedate de semnul # (diez). Pentru roşu se scrie #FF0000 în sistemul hexazecimal (codul este 255). Acest cod se obţine prin însumarea codificărilor cantităţilor pentru cele trei culori (valori 0255) corectate prin coeficienţi. Pentru culoarea negru. sau se scoate roşu şi verde din alb: 16711680=16777215-65280-255). fiind în dreapta i se aplică coeficientul 20=1. plasament.culoare. font (tip. atunci se apasă pe „…‖. sistemul de redare a lui poate fi înscris printr -o tripletă de perechi de cifre hexazecimale. Practic se pot obţine 2563=16777216 nuanţe. Realizarea unei nuanţe de culoare pentru aceste propeietăţi se poate obţine prin amestecul. Pentru a se obţine albastru se scrie #00FF00 în sistemul hexazecimal (codul este este obţinut înmulţind 255*65536. Blue). verde şi albastru. Cu ajutorul instrumentelor din fila Aranjare pot fi aranjate obiectele. stil. în funcţie de locul lor în mască: cantităţii de roşu. care este amestecul celor 3 culori RGB în cantitatea 0. în ponderi diferite. Culorile obiectelor Majoritatea obiectelor au prevăzută proprietatea prin care se poate stabili o nuanţă pentru fundal. sau proprietatea pentru fonturi numită Culoare prim plan sau proprietatea pentru contur numită Culoare chenar. În funcţie de amestecul realizat se obţine un cod pentru nuanţă. efecte speciale. culoare). legendă. se apasă pe butonul Definire culori particularizate şi se pot amesteca culori pe sistemul RGB (Red. 85 . care este Culoare fundal. scris #000000 în sistemul hexazecimal (se obţine valoarea codului 0). dimensiune. Verde se scrie #00FF00 în sistemul hexazecimal (codul este este obţinut înmulţind 255*256 sau scoţând roşul din galben: galben –rosu =65535-255=65280). cantităţii de verde i se aplică coeficientul 28=256 iar cantităţii de albastru i se aplică coeficientul 216=65536. a celor trei culori fundamentale: roşu. Pentru codificarea în sistem intern. 256 -1.3.

4. După efectuarea acestor operaţii.3. prin glisare cu mouse-ul. Aranjarea obiectelor Aspectul formularului depinde în mare măsură de aranjarea obiectelor în formulare. Apoi. de ordinea de parcurgere a lor (momentul când primesc focusul). După ce este selectat formularul (clic în zona din exteriorul grilei din fereastra formularului) se stabileşte valoare Clienti prin modificarea proprietăţii Sursă înregistrări (sau se alege din lista ascunsă) a filei Date din Foaia de proprietăţi. Atunci când sunt suprapuse obiecte. A mai rămas de legat formularul şi controalele de date. În fine. de poziţia pe care o au unele faţă de altele. se alege câmpul corespunzător din lista ascunsă a proprietăţii Sursă control a filei Date din Foaia de proprietăţi. În mod similar. existentă la un moment dat. se poate uzita de opţiunile: Aducere în prim plan sau Trimitere în ultimul plan pentru a stratifica corect obiectele. pe rând. pentru fiecare casetă de text în parte.4. după ce se selectează. în fereastra Ordine de tabulare se poate modifica. unul sau mai multe obiecte selectate se pot redimensiona cu ajutorul tastelor cu săgeţi apăsate concomitent cu tasta Shift sau prin tragere cu mouse-ul de unul dintre cele opt puncte negre din colţuri sau mijloace de laturi. trebuie să se selecteze obiectele apăsând Shift + clic pe fiecare dintre ele sau trecând cursorul mouse-ului peste ele şi apoi se aplică modificarea modului de aranjare a obiectelor în formular. de proporţiile pe care le au. precum este redat în modul 86 . formularul este funcţional. ordinea de parcurgere. ordinea de parcurgere a controalelor se poate stabili cu opţiunea Ordine de tabulare unde. Operaţiile care pot fi efectuate sunt legate de instrumetele grupate în fila Instrumente proi ectare formular/Aranjare din panglică: Unul sau mai multe obiecte selectate se pot muta cu ajutorul tastelor cu săgeţi sau prin tragere cu mouse-ul atunci când cursorul este sub forma unei cruci de săgeţi. atunci când cursorul este sub forma unei săgeţi cu vârfuri l a ambele capete. Atunci când se doreşte ca unui grup de obiecte să i se aplice în mod unitar anumite proprietăţi.

3. Alte facilităţi Într-un formular se pot plasa câmpuri calculate pe baza unor expresii. Dacă se utilizează scrierea unei expresii în modul neasistat. în figura alăturată: 4. Utilizarea în expresii a controalelor din acelaşi formular se realizează prin referirea numelui controalelor implicate în expresie. Astfel. câmpuri din tabela sau interogarea stabilită. se consideră implicit referirea proprietăţii Value a controlului respectiv.Vizualizare formular. Scrierea unei expresii se poate face cu asistenţa generatorului de expresii (Expression Builder) sau prin scriere directă.5. 87 . Plasarea expresiilor în controalele aflate pe un formular sau subformular se realizează prin scrierea acestora în proprietatea Control Source a unui control. Expresiile pot conţine orice funcţie Access sau funcţii definite de utilizator. aceasta trebuie precedată de semnul egal (=expresie). etc. referiri către controale aflate pe alte formulare (deschise). a proprietăţii Record Source a formularului.

prin casetele combo valorile introduse pot fi preluate fie din lista controlului. Există controale mai complexe pentru plasarea cărora în formulare mediul Access are prevăzute instrumente expert şi indică posibilităţile lor cele mai frecvente de utilizare. 88 . se stabileşte acţiunea Salt la înregistrarea anterioară din categoria Navigare înregistrări. Sintagma Casetă combo defineşte combinarea a două tipuri de controale: Caseta text şi Caseta listă. Controalele de tip Casetă combo sau Casetă listă oferă utilizatorilor posibilitatea de a selecta dintr-o listă valori care pot fi introduse într-o bază de date. redate în figură: De exemplu.value' ca referire completă a proprietăţii sau 'pret' ca referire a câmpului 'pret' dintr-o tabelă 'produs' care este stabilită la proprietatea 'Record Source' a formularului. va avea la proprietatea Control Source formula =[prettt]*[1. componentă a controlului. fie prin tastarea lor într-o casetă text. instrumentele mediului Access propunând utilizarea acestora pentru acţiuni pe categorii. care va afişa valoarea. Butoanele de comandă . În loc de 'prettt' se putea scrie 'prettt.19] unde 'prettt' este numele unui control. pentru a se crea un buton care face salt la înregistrarea anterioară celei curente a formularului. sunt frecvent utilizate în formulare. Diferenţa dintre cele două tipuri de controale este dată de faptul că.În exemplul de mai jos caseta Text25.

De exemplu. Alegerea interogării sau a tabelului care furnizează informaţiile. preluate dintr-o listă. Valorire acestei liste pot fi preluate din interogarea pe care o putem salva cu denumirea UM.Valorile din liste pot fi preluate din câmpuri de tabele s au interogări şi pot fi utilizate mai departe pentru a fi stocate sau pentru a căuta valori în tabele. precum se vede în figura de mai jos. a lăţimii de afişare. pentru unitatea de măsură se pot introduce valori care pot fi. la rândul lor. pot fi precizate în ferestre ale expertului Access. precum se vede în figura de mai jos: 89 . a modului de sortare. prin care utilizatorul e ghidat pentru a personaliza controalele de listă. Opţiunile alese de utilizator sunt înregistrate ca parametrii pentru proprietăţile casetei listă. bazată pe comanda SQL:  Select distict UM from Produs order by UM . alegerea câmpurilor. într-un formular al produselor. a modului de stocare şi utilizare a valorii selectate şi Proprietatea Legendă a etichetei cuplate de listă.

prin folosirea unor proceduri de tratare a evenimentelor.Form![Nume control]. dacă se consideră că ar fi mai portrivită pentru acest control o listă de valori predefinită. trebuie ca acele formulare de pe care sunt referite controale să fie deschise în acel moment. nu o interogare. se poate modifica proprietatea Tip sursă rânduri la valoarea Listă valori şi se poate completa proprietatea Sursă rânduri cu expresia ‖Fl‖. de pe un formular. Utilizarea într-o expresie. altele decât cele precizate la proprietatea Sursă înregistrări a formularului. sau interog ări. ‖Kg‖. Într-un formular pot fi folosite date şi din diverse tabele. se realizează prin: [Nume subformular]. Utilizarea în controale a expresiilor din alte formulare se face prin sintaxa:  Forms![Nume formular]![Nume control]. De exemplu. ‖L‖ . 90 .Aceşti parametrii pot fi modificaţi de utilizatori. a unor controale din subformular. Pentru a putea fi evaluate astfel de expresii.

ca şi pentru celelalte tipuri de obiecte Access. de exemplu . În versiunea 2007 a Microsoft ACCESS. care constituie finalitatea aplicaţiei. 91 . pe locul Foii de proprietăţi. Crearea unui raport Atunci când se proiectează o aplicaţie de baze de date. Rapoartele sau situaţiile finale reprezintă forme mai accesibile de prezentare a informaţiilor din bazele de date. prezentate în figura alăturată.RTF. e recomandabilă a doua. Crearea rapoartelor este foarte asemănătoare cu crearea formularelor. listat la imprimantă sau creat un fişier raport. conţinutul lor putând fi vizualizat pe ecran. Mediile de proiectare a bazelor de date pun la dispoziţia utilizatorilor diverse instrumente pentru crearea rapoartelor. în fila Creare a panglicii Access.CAPITOLUL V. CREAREA ŞI UTILIZAREA RAPOARTELOR 5. prin instrumentul comutator . Şi în cazul rapoartelor. şi este util să fie activată Foaie de proprietăţi. fiind chiar puţin mai simplă deoarece nu se folosesc controale prin care se introduc date. Utilizând instrumentul . toţi parametrii acesteia. plasat ultimul în fila Instrumente proiectare formular a panglicii. se deschide o fereastră goală pentru crearea raportului. toate tabele şi obiectele componente. au fost introduse instrumentele de creare rapoarte. Penultimul buton din aceiaşi filă este instrumentul comutator care face activă/inactivă Lista de câmpuri a bazei de date curente. grupate într-o zonă cu acelaşi nume. ce poate fi prelucrat în continuare în Word. sunt funcţie de listele finale necesare.1. dintre posibilitatea de a le crea cu ajutorul expertului sau cea în modul proiectare .

stabilirea câmpului de unde provin valorile afişate în controale. în mod repetat. se deschide o fereastră goală pentru crearea 92 . Controalele inserate în această secţiune vor fi afişate în raport. şi la rapoarte. Stabilirea tabelului sau cererii de interogare de unde raportul îşi va extrage informaţiile se face prin proprietatea sursă de înregistrări (în limba engleză: Record Source). Exerciţiu: Pe baza informaţiilor din interogarea totul şi toate creaţi un raport cu produsele vândute clienţilor. cele mai importante proprietăţi ale unui raport sunt proprietăţile referitoare la date. Procedura de ataşare a controalelor este similară cu procedura plasare a acestora lor în formulare.În continuare. pentru fiecare articol al sursei de înregistrări. se face cu ajutorul proprietăţii sursă control (în engleză: Control source). Precum la formulare. antet şi subsol de pagină. În rapoarte mai pot fi create anteturi şi subsoluri pe diferite niveluri: antet şi subsol de raport. Deoarece menirea lor de bază este de prezentare a informaţiilor di n bazele de date. Raportele constituie unul din tipurile de obiecte fundamentale ale ACCESS ului. trebuie ataşate controalele. antet şi subsol de grup. Rezolvare Utilizând instrumentul . Informaţiile provenite din celulele tabelelor vor fi afişate în secţiunea de detaliu.

se plasează câte o casetă text. în mod special. Pentru fiecare casetă text în parte. După ce s-au stabilit sursele de date pentru întreg raportul. trebuie stabilite controalele care vor fi conţinute în raport. Raportul în modul Vizualizare raport este redat în figura de mai jos. se stabileşte valoarea totul şi toate prin modificarea proprietăţii Sursă înregistrări (sau se alege din lista ascunsă) a filei Date din Foaia de proprietăţi. pe rând. pentru fiecare valoare de expus în rândurile raportului. Apoi. După efectuarea acestor operaţii. trebuie elimitată eticheta care e agăţată de mediul Access. automat de casetă (se face clic pe etichetă şi se apasă tasta Delete).raportului. Vom începe prin a lega raportul şi controalele de date. precum este redat în modul Vizualizare proiect în figura de mai jos. proprietăţile lor şi. Legarea casetelor de date se face după ce se selectează prin alegerea câmpului corespunzător din lista ascunsă a proprietăţii Sursă control a filei Date din Foaia de proprietăţi. raportul este funcţional. pentru 93 . După ce este selectat raportul (clic în zona din exteriorul grilei din fereastra raportului) .

data şi ora curente şi alte informaţii utile într -un raport.fiecare control în parte.2.  Controale. Particularizarea antetului şi subsolului La fel ca şi în cazul formularelor şi rapoartele conţin antet. De asemenea. redimensiona sau seta proprietăţile fonturilor unui control.  Sortarea şi gruparea datelor. suplimentar faţă de formulare. elimina. 94 . Şi. ascunde sau redimensiona secţiunile antet. Antetul şi subsolul unui raport apar la începutul şi sfârşitul unui raport imprimat. De asemenea. semnături. pentru casetele care includ valori numerice. detaliu şi subsol. Se pot adăuga sau elimina butoanele Maximizare şi Minimizare. se pot seta proprietăţile secţiunilor pentru a controla aspectul şi imprimarea unui raport. Se pot sorta date în ordine ascendentă sau descendentă. rapoartele pot conţine această împărţire şi la nivel de pagină. Se pot adăuga. sursa datelor. 5. De asemenea. data sau o prefaţa) la începutul unui raport. Se pot muta.  Secţiuni. Antetul raportului este secţiunea dintr-un raport utilizată pentru plasarea de informaţii (cum ar fi titlul. Subsolul de raport este acea secţiune dintr-un raport care este utilizată pentru a plasa informaţii ce în mod normal apar în partea finală a unui raport. Această activitate constituie particularizarea unui raport. Într-un raport se pot particulariza următoarele elemente:  Sursa de înregistrări. se pot adăuga controale pentru a afişa valori calculate. data creării şi sumele de raport. De exemplu. se pot grupa înregistrări în unul sau mai multe câmpuri şi afişa subtotaluri şi totaluri generale într -un raport. Se modifică tabelele şi interogările pe care se bazează un raport. modifica textul din bara de titlu şi alte elemente ale ferestrei Raport. Dar. Gruparea induce existenţa până la nivel de grup a secţiunilor: antet. detaliu şi subsol. se poate seta pentru proprietatea "Executare sumă " (în engleză Running Sum) valoarea "Over All". subsol şi detaliu ale unui raport. rapoartele sunt făcute să treacă peste mai multe înregistrări pentru a afişa rezultate. totaluri.  Fereastra Raport. mai mult decât atât. cum ar fi numărul total de pagini. Valorile afişate pot reda situaţia dintr-o înregistrare sau din grupuri de înregistrări.

Exerciţiu Adăugaţi antet şi subsol raportului de la exerciţiul precedent. titluri de coloane. Subsolul de pagină este utilizat pentru a afişa rezumate de pagină. 95 . cum ar fi numele de grup sau totalul de grup.  se urmăreşte să existe setat Antet/subsol raport. la sfârşitul unui grup de înregistrări. Antetul şi subsolul de grup apar în partea superioară şi cea inferioară a grupărilor articolelor. Ele pot fi disponibile doar împreună. În antetul raportului să se înscrie un antet de firmă. date calendaristice sau numere de pagină în partea de sus a fiecărei pagini a unui formular sau raport. Eliminarea anteturilor şi subsolurilor atrage după sine si ştergerea tuturor controalelor plasate pe suprafaţa lor. iar la subsol să se scrie data listării şi semnătura persoanei care a făcut listarea. Subsol grup se utilizează pentru a plasa informaţii. cum ar fi numele de grup sau totalul de grup. Adăugarea sau eliminarea acestor elemente se face cu ajutorul instrumentelor din grupul Afişare/Ascundere din fila Instrumente proiectare rapoarte/Aranjare a panglicii.Antetul de pagină este utilizat pentru a afişa titlul. celelalte niveluri de anteturi şi subsoluri sunt perechi. şi numele de coloane.  se comută în Vizualizare în mod proiectare. Antet de grup este utilizat pentru a plasa informaţii. date calendaristice sau numere de pagină în partea de jos a fiecărei pagini dintr -un formular sau raport Antetul şi subsolul de pagină apar în partea superioară şi cea inferioară a fiecărei pagini. la începutul unui grup de înregistrări. Dacă este necesară doar o componentă. Antet/Subsol raport Antet/Subsol pagina Cu excepţia antetului şi subsolului de grup.  se alege din panoul de navigare raportul Raport TEST. pentru cealaltă se setează înălţimea la dimensiunea 0. Rezolvare:  se deschide baza de date Facturi.

şi pentru ca să nu acopere etichetele se setează proprietatea Stil fundal cu culoarea Roşu şi se plasează în spatele etichetelor realizate cu instrumentul Trimitere în ultim plan din fila Aranjare.  se trasează o linie în partea de subsol. iar eticheta cu ora se poate şterge. care să înconjoare etichetele. etichet a pentru a se scrie firma.  se acţioneză pe instrumentul Data şi ora din panglică. din bara de instrumente. În modul Vizualizare raport rezultatul este următorul: 96 .  se măreşte înălţimea antetului şi se adaugă în antet etichete pentru antetul coloanelor. lângă Listat în data. care se aliniază în linie cu cea mai de sus. Titlul se poate face cu un font mai mare şi aldin. în partea stângă sus şi ca titlu: Lista produselor vândute pe clienţi.  se trasează un dreptunghi. se glisează în antetul raportului. pentru a delimita elementele acestuia de articolele listate.  la subsolul raportului se adaugă etichetă cu conţinutul (legenda) Listat în data şi o etichetă Întocmit / Semnătura. şi pentru că se adaugă etichete cu data şi ora sistemului în partea stângă a antetului. data trebuie glisată în zona de subsol.

dacă se afişează sau ascunde secţiunea de antet sau subsol la nivel de grup. În subsolul ferestrei mediului ACCESS apare caseta de dialog Grupare.5. se procedează în felul următor: 1. Gruparea datelor într-un raport. pe anumite grade de centralizare. Să se adauge o grupare după denumirea produselor în raportul construit 97 . fiecare grup putând să aibă antet şi subsol (partea de detaliu este una singură pentru întreg raportul). 3. Este de preferat ca această casetă să fie o copie a unei casete pe care o totalizează (cu operaţiile obişnuite de copiere şi lipire). pentru a adăuga sau elimina aceste elemente de grup într-un raport se foloseşte instrumentul Sortare şi Grupare (simbolul ) din fila Instrumente proiectare rapoarte din panglică. Pentru adăugarea de controale care vor reda totalul tuturor valorilor unui câmp. sortare si totaluri. La proprietatea Execuţie sumă se setează valoarea Nu. Exerciţii 1. Problema se pune în mod similar şi pentru totalurile pe pagini. la nivel de raport. Realizarea de totaluri şi subtotaluri Atunci când informaţiile prezentate în rapoarte trebuie structurate grupat. 2. Totalizarea unor valori pe grupuri (subtotaluri de raport) se face în mod similar cu totalurile generale pe raport cu diferenţa că ele se plasează în subsolurile de grup. Grupările se înscriu în această casetă în ordinea ariei lor de cuprindere. dacă exită totaluri sau titluri.3. Pentru particularizare se aleag parametrii doriţi: modul de sortare. Se adaugă o casetă text în zona de subsol a raportului. La proprietatea Sursă control se setează: =Sum([expresie]) unde expresie poate lua valorile variabile. funcţie de înregistrări. care vor fi totalizate. şi se face clic pe butonul Adăgare grup şi automat este afişat un rând în casetă pentru a ajuta la precizarea Grupării după selectare Câmp sau Expresie.

valoarea va fi precedată doar de o etichetă „Total general‖. 4. şi se face clic pe butonul Adăgare grup şi automat este afişat un rând în casetă. Um şi Pret. configurările făcute. se stabileşte să fie vizibile secţiunea antet şi secţiunea subsol. totalurile produselor sunt precedate de o etichetă „Total pe produsul:‖ şi de o casetă text ce va reda codul şi numele produslui.pe întreg raportul . La proprietatea Sursă control se scrie: =Cant * Pret. iar la Zecimale se precizează 2. 2. Pentru raport. o casetă pentru valoarea fiecărei livrări şi să se rectifice antetul coloanelor. iar cele de antet/suport . La proprietatea Format se alege Fix. Să se totalizeze valorile facturilor pe produse şi pe întreg raportul. Pentru adăugarea grupării după câmpul furnizori se face clic Sortare şi Grupare (simbolul panglică. în modul Vizualizare aspect.într-un dreptunghi roşu. Redăm mai jos. Denprod. 3. Acţionând pe butonul Mai multe . Să se realizeze în zona de detaliu. Se face o copie a casetei text corespunzătoare câmpului Cant. Rezolvare: 1.în exerciţiu precedent. Se glisează din zona detaliu casetele text corespunzătoare câmpurilor: Codprod. pentru a se specifica faptul că e vorba de produsul a două valori (Semnul „=‖ este indispensabil). Acest control se mută în partea dreaptă a benzii Detaliu. cu o listă din care se alege câmpul DenProd. sortare şi totaluri. informaţiile generale despre produse. 98 . 3. În subsolul ferestrei mediului ACCESS apare caseta de dialog Grupare. ) din fila Instrumente proiectare rapoarte din 2. Pentru lizibiliate. (Prin intermediul memoriei clipboard cu operaţiile Copy (Ctrl + C) şi Paste (Ctrl + V). Să se gliseze în antetul grupării produsului. Totalul pe produse şi informaţiile din antetul acestei grupări să fie incadrate într-un dreptunghi cu fond galben. din zona de detaliu.

în ultimul plan cu ajutorul butonului . cu Ctrl + C şi se lipeşte cu Ctrl + V.  Execuţie sumă : Nu. se colorează cu galben prin intermediul listei ascunse de culori. În mod similar se trasează dreptunghi în subsolul raportului şi antetul grupului. pentru a nu acoperi obiectele. caseta de text corespunzătoare expresiei valoare. Se trasează un dreptunghi cu ajutorul instrumentului din fila Instrumente raport/ Proiectare din panglică. se copiază în clipboard. se selectează. Pentru cele două casete copiate se setează următoarele proprietăţi de dată:  Sursă control : =Sumă (Cant * Pret). În modul Vizualizare proiect. cu un clic. în secţiunea Subsol DenProd. Se face o nouă lipire şi se glisează caseta în secţiunea Subsol raport. Se reajustează înălţimea secţiunii de detaliu.4. 99 . legată de instrumentu din panglică şi se trimite. din fila Instrumente raport/ Aranjare. Cu mouse-ul se glisează caseta copiată.

în figură: Rezultatul este prezentat în modul Examinare înaintea imprimării. în figură: Exerciţii 1. 100 . Să se gliseze în antetul grupării Clienţilor.Rezultatul este prezentat în modul Vizualizare proiectare. din zona de detaliu. 2. Să se adauge o grupare după denumirea clienţilor în raportul construit în exerciţiu precedent.

şi de o casetă text ce va reda codul şi numele clientului.. 3. totalurile produselor sunt precedate de o etichetă „Facturat clientului:‖ . Rezultatul este prezentat în modul Vizualizare proiectare. Idem. cu fond alb. 5. Rezolvare: 1. Să se totalizeze valorile facturilor pe Clienţi.  pentru proprietate Execuţie sumă se setează Peste tot.  pentru proprietatea Sursă control se setează: =1. 4. Să se elimine fondul controalelor din detaliu. în figură: 101 .  se şterge eticheta lipită de caseta de text. Totalul pe client şi informaţiile din antetul acestei grupări să fie încadrate într-un chenar albastru deschis. Pentru lizibiliate. Idem. Operaţiile sunt evidente. 4.informaţiile generale referitoare la Clienţi şi să se rectifice antetul coloanelor. Să se salveze raportul într-un document Word. 3. şi se rezolvă în mod similar exerciţiului anterior. O casetă cu număr curent al articolelor se realizează prin următorii paşi:  din caseta cu instrumente se selectează caseta text şi se glisează în partea stângă a zonei de detaliu. 2. Să se pună o casetă care să redea numărul curent al ieşirilor pe clienţi.

2009 Antonescu 111111SC First SRL 15 18 43.00 130.20 95.40 Str Primaverii nr 1 26111111 4 23.50 77.10.10.97 140.00 58.10.10.50 52.70 Denumire Produs Client Adresa Telefon Nr.Toamnei nr 3 26133333 5 24.81 Str.10.40 65.27/Kg Str.2009 Popescu 22.Toamnei nr 3 26133333 5 24.10.00 548.10.2009 Antonescu 22.2009 Trandafir 333333SC Terța Parte SRL 1009Ulei 11 35.5.50 46.Verii nr 2 26122222 1 21.2009 Trandafir 333333SC Terța Parte SRL 1075Zahar 25 77. Rezultatul este redat mai jos: SC DEPOZITUL SRL LISTA PRODUSELOR VANDUTE PE CLIENTI Cod Produs 7023 Lapte 111111 SC First SRL 1 2 Facturat clientului: 222222 SC Secundul SRL 1 2 Facturat clientului: 333333 SC Terţa Parte SRL 1 Facturat clientului: Total pe produs: 1009 Ulei 111111 SC First SRL 1 Facturat clientului: 222222 SC Secundul SRL 1 Facturat clientului: 333333 SC Terța Parte SRL 1 Facturat clientului: Total pe produs: 1075 Zahar 222222 SC Secundul SRL 1 Facturat clientului: 333333 SC Terţa Parte SRL 1 Facturat clientului: Total pe produs: Total pe produsul: Listat în data: 8 mai 2010 17:56:03 Întocmit Semnătura Str.Toamnei nr 3 26133333 5 24.Verii nr 2 26122222 6 2 25.50 Str Primaverii nr 1 26111111 4 3 23. în prealabil.2009 Popescu 222222SC Secundul SRL 15 30 43.2009 Trandafir 333333SC Terța Parte SRL 7023Lapte 20 58.24 39. Pentru a salva lista rezultată într-un document Word. Nu sunt importate elementele grafice.20 3.50 87.10.97 35.2009 Popescu 222222SC Secundul SRL 15 46.Verii nr 2 26122222 1 21.2009 Popescu 222222SC Secundul SRL 20 65. documentul trebuie vizualizat în modul Examinare aspect şi din linia cu instrumente proprie acestui mod de vizualizare se alege pictograma aplicaţiei Microsoft Word şi se produce deschiderea raportului cu procesorul de texte.10.00 284.24 Str.10.61 3. factură Data factură Delegat Preţ/UM UM Cantitate Val 2.9 /l 102 .50 Str.2009 Antonescu 111111SC First SRL 12 39.1 /kg Str.50 124.

funcţii 9) pentru accesa şi face particularizări în mod intim tabelele.1 Editarea modulelor Visual Basic for Application Visual Basic for Application (abreviat VBA) este limbajul de programare intern al pachetului software pentru birouri Microsoft Office. Cu ajutorul VBA pot fi create modulele Access. parte din sintaxa limbajelor evoluate. rapoartele şi interogările din baza de date şi funcţionarea conjugată a acestora. registre de tip Excel. 2000 9 ib idem 103 . LIMBAJUL VISUAL BASIC 6. prezentări de tip Power Point şi baze de date Access). Aceste proceduri constituie o perfecţionare a unui limbaj de macrocomenzi a 8 metodă de rezolvare a unei probleme.CAPITOLUL VI. func ţie executată de un subprogram. proceduri 8. În VBA nu pot fi create programe de sine stătătoare ci proceduri a căror execuţie poate fi iscată de interacţiunea utilizatorului cu obiectele incluse în fişierele Office (documente de tip Word. Editura Saeculum. Florin Marcu.dexonline. obiecte ale baze de date care Exploratorul proiectelor Instrumente Instrumente pentru depanare Ferestra de editare cod Ferestra proprietăţilor obiectelor Ferestra afișare Ferestra urmărire variabile permit scrierea de rutine (subprograme. defalcată în etape succesive. formularele. conform www. VBA este un dialect al limbajului Visual Basic.ro preluat din Marele dicţionar de neologisme.

 proceduri Sub : Procedură care îndeplineşte o operaţiune.pachetului Office. Cea mai puternică facilitate a editorului 104 . Funcţia se declară cu instrucţiunea Function şi se sfârşeşte cu instrucţiunea End Function. comentariilor etc. crează în unele situa ţii. a căror prezenţă şi rulare pot fi sesizate sau nu de utilizatori. Editorul mediului are facilităţi de colorare a cuvintelor cheie. care este aşezat în capătul din stânga al filei Instrumente baza de date a panglicii. permiţându-se crearea de proceduri şi module. frazelor eronate. eventual precedate de specificatorul de domeniu Public sau Private. Produsele pachetului Office. depanarea şi/sau rularea procedurilor utilizator. a procedurilor în module. declaraţiilor utilizator. în cazul VBA. ele însele. sau activat de sistem prin adăugarea de cod la un eveniment dintr-un formular sau raport. care se iniţiază prin butonul . Pe acelaşi prim rând se scrie efectiv un nume de procedură (funcţie sau subrutină) imediat urmat de toate argumentele între paranteze iar la funcţie şi de comutator funcţiei. Spre deosebire de o procedură Function. o procedură. testarea. Procedurile sunt amplasate în module. o procedură Sub nu returnează valori. Pentru crearea. Există mai multe tipuri de proceduri:  proceduri eveniment: O procedură executată automat ca răspuns la un eveniment iniţiat de utilizator sau de codul program. cătarea şi actualizarea sau stergerea lor. Unitatea elemetară prin care programatorii scriu un algorit m într-un limbaj de programare este instrucţiunea. se recurge la instrumentele speciale asigurate de mediul Visual Basic. în editor există pentru programatori fereastre de afişare a proprietăţilor şi de exploarare a proiectelor. De exemplu. următoarea declaraţie pentru funcţia Încărcat specifică şirNumeForm ca argument: Function Încărcat (sirNumeForm As String) As Boolean Sau. Pentru a facilita gestionarea obiectelor. Un grup de instrucţiuni realizează o unitate de program. module scrise în VBA. Procedurile sunt definite prin tastarea instrucţiunii Function sau Sub. O procedură Sub se declară cu instrucţiunea Sub şi se încheie cu o instrucţiune End Sub.  proceduri Function : Procedură care returnează o valoare şi care poate fi utilizată într-o expresie. următoarea declaraţie pentru procedura Sub: AfişEveniment indică NumeEveniment ca argument: Sub AfişEveniment (NumeEveniment as String) Corpul definirii procedurilor conţine liniile de cod în limbaj Microsoft Visual Basic care vor efectua operaţiunile sau calculele necesare pentru realizarea algoritmilor şi se termină cu linia de final End Sub sau End Function scrisă automat de editor când s-a declarat procedura.

VBA este posibilitatea afişării contextuale în momentul scrierii instruc ţiunilor în limbajul VBA. argumentele funcţiilor sunt delimitate de parantezele rotunde. obiect. Acesta regulă nescrisă se numeşte scrierea ungară după un angajat ungur al Microsof t care a promovat-o. Specific VBA este faptul că numele şi conţinutul acestor identificatori pot fi alcătuite atât din prima parte a codului ASCII (primele 128 caractere) cât şi din codul ASCII extins (caractere speciale. după rânduri se tastează returul de car (enter). etc. metodă. Un identificator este numele unui element dintr-un program. 6. Comentariile sunt şiruri de caractere care au în faţă caracterul (') şi au rolul de a face textul programului mai lizibil. formă modul sau chiar proiectul însuşi. etc. precum Dim. dbPersonal pentru o bază de date personal. este depanatorul. Else. etc. Pentru a face codul cât mai lizibil mulţi programatori folosesc prefixe în definirea identificatorilor care indică tipul de date referit şi scopul lor. numele variabilelor trebuie să înceapă cu o literă. şirurile de caractere care se manipulează intacte sunt delimitate de ghilimele. 105 . Public. Private. with. dar nu mai puţin important. While. tip definit de utilizator. astrLuni pentru un masiv de şiruri de caracter cu lunile anului. End. În afacra acestora se utilizează identificatorii. Next. Nu e permis să existe doi identificatori identici cu acelaşi scop şi există o serie de identificatori standard. Exemplu: iCod pentru un cod de tip integer. Nu este permis să fie numiţi identificatorii prin cuvintele cheie ale limbajului. Then. definiţi de Visual Basic. elementele de acelaşi tip sunt despărţite de virgulă. fie el variabilă. În plus mai există câteva reguli specifice. For. enumerare. procedură. nelipsit din mediile de programare deja de aproape 20 de ani. Caracterele interzise în denumiri sunt %!$&#@. În secţiunile următoare ale acestui capitol vom prezenta elemente de limbaj VBA în scopul evidenţierii unor metode de access la obiectele bazei de date. de exemplu diacritice). proprietate. If. nefiind compilate sau interpretate. control. care în funcţie de modul de redare pot căpăta diferite forme. constantă.2 Elemente de sintaxă Modulele VBA se bazează pe un set de instrucţiuni care conţin cuvinte preluate din limba engleză. a elementelor care caracterizează un anumit context: În fine. Array. funcţie. Sintaxa a împrumutat multe reguli care constituie esenţialul regulilor limbajului natural: între cuvinte se intercalează spaţiu.

pentru continuare se foloseşte caracterul continuator de linie ( _)(un spaţiu urmat de o linie jos). sau pentru afişarea de mesaje către utilizatorul bazei de date.sau sub formă grafică. aceasta sunt separate prin caracterul (:) . Şi mai mult chiar nici posibilitatea Debug. dacă o declaraţie este prea mare se poate scrie pe mai multe linii.care este un limbaj mai puţin riguros decât un limbaj de programare. există în VBA instrucţiuni pentru introducerea unor date izolate şi afi şarea de mesaje. În afară de acestea.Print nu este de înlăturată în această fază. Schemele logice pot să fie sub forma unui pseudocod . Algoritmii care sunt transformaţi în programe pot fi concepuţi iniţial prin scheme logice. Funcţia InputBox afişează o casetă de dialog modală care cere utilizatorului să introducă date. formularele şi rapoartele reprezintă o formă elegantă de introducere şi respectiv afişare a datelor care se bazează în principal pe structura bazei de date. posibil şi cu termeni din limba română . Cele mai utilizate dintre aceste simboluri sunt:  start şi final de algorim  blocuri secvenţiale  operaţii de intrare-ieşire  bloc de decizie  apel de subprograme  conectori 6. Această necesitate se simte mai ales în faza de test a unei proceduri sau funcţii.În general în Visual Basic dacă se doreşte să se scrie mai multe instruc ţiuni pe o linie.3 Casete de dialog predefinite În aproape toate limbajele care au formă Visual se pot folosi două funcţii pentru a se putea realiza casete de dialog predefinite. Pentru aceasta Visual Basic pune la dispoziţia programatorilor două funcţii: InputBox care afişează o casetă de dialog ce permite preluarea datelor de la utilizator şi MsgBox ce permite afişarea diferitelor informaţii. Ev ident. Funcţia returnează o valoare de tip String formată din caracterele introduse de utilizator în caseta cu text din fereastra de dialog dacă utilizatorul apasă 106 . Invers.

Funcţia returnează un Integer specificând ce buton a fost apăsat.un şir de caractere afişat ca mesaj în caseta de dialog.butonul OK. context]) Dacă nu se pun parantezele rotunde InputBox se transformă în procedură. este un şir de caractere ce specifică fişierul Help ce va fi folosit pentru a oferi asistenţă în lucrul cu caseta de dialog.  buttons – o expresie numerică ce reprezintă suma valorilor care specifică numărul şi tipul butoanelor afişate sau pictograma. ypos. Pentru setarea butoanelor există predefinite următoarele constante specifice VisualBasic: 107 . title] [.  title. 1000 Funcţia MsgBox se utilizează pentru a obţine răspunsuri de tip Da / Nu de la utilizatori sau pentru a afişa diferite mesaje de avertizare.  helpfile . erori.un şir de caractere ce specifică fişierul Help ce va fi folosit pentru a oferi asistenţă în lucrul cu caseta de dialog. Sintaxa este: MsgBox(prompt[.  default. După citirea mesajului utilizatorul va apăsa un buton pentru a închide fereastra. 1000.helpfile. Exemplu: InputBox "Introduceţi forma de învăţământ:". buttons] [. context]) Unde:  prompt . "Zi". Sintaxa este: InputBox(prompt[.ypos] [.xpos] [. reprezintă un şir de caractere ce va fi afişat în caseta cu text şi care va fi returnat de funcţie în caz că utilizatorul nu introduce alte date. Elementele din sintaxă reprezintă:  prompt reprezintă un şir de caractere afişat ca mesaj în caseta de dialog. _ "Formă de dialog predefinită".title] [.  xpos. helpfile. sunt expresii numerice care specifică coordonatele colţului stânga sus al casetei de dialog faţă de colţul stânga sus al ecranului.  helpfile. Numărul maxim de caractere este de 1024.  title – un şir de caractere ce va fi afişat drept titlu în bara de titlu a casetei de dialog. este un şir de caractere ce va fi afişat drept titlu în bara de titlu a casetei de dialog. atenţionări. dacă se apasă butonul Cancel şirul returnat este şirul vid "". Numărul maxim de caractere este de 1024.default] [.

64) descrie stilul pictogramelor. Aplicaţia aşteaptă şi utilizatorul trebuie să răspundă la caseta de dialog Modul de sistem. grupul următor (16. dar se adună exclusiv o singură valoare dintr-un grup. 256. 4096) dă tipul modulului. 32. 768) determină care buton este implicit. Prin adunarea numerelor se obţin efecte compuse. 512. Retry şi Ignore Butoanele Yes. 48.Constante vbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal VbSystemModal Valoare 0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 4096 Descriere afişare Numai buton OK Butoanele OK şi Cancel Butoanele Abort. apoi grupul următor (0. No şi Cancel Butoanele Yes şi No Butoanele Retry şi Cancel Pictograma Critical Message Pictograma Warning Query Pictograma Warning Message Pictograma Information Message Primul buton este implicit Al doilea buton este implicit Al treilea buton este implicit Al patrulea buton este implicit Modul de aplicaţie. Valorile returnate de funcţia MsgBox sunt: Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valoare 1 2 3 4 5 6 7 Descriere OK Cancel Abort Retry Ignore Yes No 108 . Toate aplicaţiile sunt suspendate până la răspunsul la caseta de dialog Primele constante cu valori (0–5) numărul şi tipul de butoane afişate. în fine ultimul grup (0.

Exemplu: MsgBox "Mesaj de atenţionare !".1.  TipVariabilă este numele unui tip de date din cele pe care le acceptă Visual Basic. care este un identificator cu ajutorul căruia putem să referim variabila pe parcursul programului şi tipul variabilei. chiar declarările devin desuete în limbajele de programare moderne.4.4 Variabilele în VBA 6. VBA permite utilizarea declarării implicite a variabilelor la prima utilizare şi utilizarea tipului implicit Variant. "Sistemul stă!" 6. Declararea unei variabile se face astfel: {Public| Private| Dim} NumeVariabilă [as TipVaribilă] Unde:  NumeVaribilă este identificatorul variabilei. Declararea variabilelor O variabilă se caracterizează prin două elemente: numele variabilei. Ieftinirea memoriilor face ca rigoarea gestionării tipurilor de variabile să nu mai fie de actualitate. În funcţie de tipul variabilei compilatorul alocă o zonă mai mică sau mai mare de memorie pentru variabila respectivă. prin care este posibil ca o variabilă să stocheze valori diferite în momente diferite. În schimb capătă importanţă crescută locul unde se declară şi spaţiul unde este recunoscută o variabilă şi durata de existenţă. care determină ce tip de dată poate stoca variabila. Exemple: Dim iCant as Integer Dim dtZiSal as Date ´defineşte variabila iCant de tip Integer ´defineşte variabila dtZiSal de tip date 109 . vbExclamation _ + vbOKCancel + vbDefaultButton1+vbsystemmodal. Dacă acesta lipseşte se consideră că variabila este de tipul Variant.

Ele există atâta timp cât se execută procedura în care au fost declarate. Chiar dacă sunt definite la nivelul procedurilor. adică o variabilă este considerată declarată la prima ei folosire. au un domeniu de valabilitate global şi există atâta timp cât se execută programul. variabilele Static îşi păstrează valoarea şi după ce procedurile gazdă îşi termină execuţia. Au un domeniu de valabilitate doar la nivelul proceduri şi au o durată de viaţă temporară. dar o durată de existenţă permanentă. Un alt tip de variabile sunt cele cu domeniu de vizibilitate la nivelul unui modul. Astfel există variabile locale la nivelul unei proceduri. Private. lucru ce se întâmplă cu variabilele care nu sunt statice. Public. În unele versiuni de Visual Basic se permite declararea variabilelor şi implicit. ele pot fi utilizate numai în cadrul acelei proceduri neavând nici o semnificaţie în altă parte a programului. Un al treilea tip de variabile sunt cele globale la nivelul întregului program.Private sNume as String Public lstListaPret as ListBox ´defineşte variabila sNume de tip String ´defineşte variabila lstListaPret ce va conţine o referinţă către un obiect de tip ListBox O caracteristică deosebit de importantă a variabilelor este do meniul de valabilitate şi durata de existenţă. Acestea pot avea un domeniu de valabilitate locală sau la nivelul unei proceduri. Este recomandabil ca declararea lor să se facă cu ajutorul cuvântului cheie Private în loc de Dim. În mod implicit Visual Basic le consideră de tip Variant pe toate. Dacă procedura va fi din nou apelată variabila statică nu va fi iniţializată automat de Visual Basic. Un alt tip de variabile sunt cele statice. Declararea se face cu ajutorul cuvântului cheie Static. ci va avea valoare pe care a avut-o la ultima ei folosire. Una dintre cele mai periculoase erori întâlnite la declararea unei variabile este următoarea: 110 . Variabilele locale la nivelul unui modul sau publice se declară în secţiunea de declaraţii a modulului (Declarations). Este recomandat să se folosea scă Dim doar pentru declararea acestui tip de variabile chiar dacă Visual Basic permite folosirea lui şi în alte contexte. De asemenea. Aceste variabile se declară în interiorul procedurii cu ajutorul cuvântului cheie Dim. Nu este necesară o declarare prealabilă cu ajutorul cuvintelor cheie Dim. Aceste variabile pot fi folosite oriunde în interiorul modulului în care au fost declarate şi există atâta timp cât este folosit modulul respectiv. Declararea acestor variabile se face folosind cuvântul cheie Public. În VBA acest lucru nu este permis. Acestea sunt pot fi folosite oriunde în program.

477.9999 Referinţe către 4 bytes N/A obiecte Oricare din 16 bytes N/A 111 Double Currency String Byte Boolean Date Object Variant .5807 şi 4 zecimale Şir de caractere 1 byte / Până la 65000 de caractere pentru şirurile cu caracter lungime fixă şi până la 2 miliarde de caractere pentru şirurile dinamice Numere întregi 1 byte 0 la 255 Valori logice 2 bytes True sau False Dată şi timp 8 bytes 01.Dim a.401298E-45 la 3.b.337. VBA acceptă două categorii de tipuri de date:  standard (predefinite). b as Integer. Corect este Dim a as Integer.1E9 la 2.01.5808 la la 15 cifre întregi 922.94065645841247E-324 la 1. Important în alegerea tipului de dată este natura d atelor şi intervalul în care poate lua valori variabila.203.100 la 31.94065645841247E-324 pentru valori negative şi 4. c as Integer 6.685.402823E38 la –1.477.79769313486232E308 la – (dublă precizie) 4.203. Tipurile de date standard sunt: Tipul de Tipul informaţiei dată Integer Numere întregi Long Numere întregi Single Numere reale Memoria Intervalul de valori necesară 2 bytes -32.1E9 4 bytes -3. celelalte fiind în mod implicit de tip Variant.401298E-45 pentru valori negative şi1.c de tip Integer dar de fapt numai c este de tip Integer.  utilizator.402823E38 pentru valori pozitive Numere reale 8 bytes -1.79769313486232E308 pentru valori pozitive Numere cu până 8 bytes -922.767 4 bytes Aproximativ – 2. Tipurile variabilelor în VBA În paragrafele precedente ne-am folosit de câteva tipuri de date folosite în Basic.2. b.337. c as Integer.685.768 la 32. care la prima impresie pare că sunt definite trei variabile a.4.12.

Ast fel:  operaţiile care se pot face cu valorile unui tip întreg sunt: adunarea (+).1981# Const NUME_DE_COD = "Şacalul" 112 .Rezultatul unor astfel de operaţii este de tip boolean.tipurile precedente + 1 byte per caracter Cu fiecare tip de dată sunt permise o serie de operaţii. Un tip particular de date sunt constantele.=.14159265358979 Const NR_CARACTERE = 256 Const ZI_DE_NASTERE = #02.  simbolice sau definite de utilizator. sau logic (Or). egal (=). scăderea(-). ridicarea la putere (^). constantele au regim obişnuit ca al oricăror alţi operanzi.  operaţiile care se pot face cu valorile unui tip real sunt: adunarea (+). scăderea(-). împărţirea(/). Puteţi defini propriile dumneavoastră constante cu ajutorul cuvântului cheie Const astfel: [Public|Private] Const NumeConstanta[As type] = expresie Exemple: Const PI = 3.>).04. împărţirea reală(/). sau exclusiv logic (Xor). Visual Basic pune la dispoziţie o serie întreagă de constante pentru culori.>=. În expresii. împărţirea întreagă (\) a \ b returnează câtul împărţirii lui a cu b. Cu ajutorul acestei operaţii se verifică dacă două variabile de tip obiect referă acelaşi obiect sau nu. În Visual Basic există două tipuri de constante:  intrinseci sau definite de sistem. booleene (True şi False) suportă următoarele operaţii logice: negarea logică (Not).  tipurile de dată de tip obiect suportă o singură operaţie – cea de comparaţie (Is). mai mare sau egal (>=). echivalenţa logică (Eqv). restul împărţirii întregi (mod). sunt permise operaţiile relaţionale prezentate la tipurile întregi. Cu ajutorul operaţiilor de comparaţie se stabileşte poziţia alfabetică a şirurilor de caractere. figuri etc. şi logic (And). O definiţie de constantă introduce un identificator ca sinonim al unei valori constante. având valorile True sau False. Prin concatenare două sau mai multe şiruri de caractere pot fi lipite formând un singur şir de caractere. înmulţirea(*). implicaţia logică (Imp).  valorile logice.  şirurile de caractere suportă operaţia de concatenarea (& sau uneori +) şi operaţiile de comparaţie (<.<=. mai mare(>). taste. mai mic (<). ridicarea la putere (^) de asemenea sunt permise operaţiile relaţionale: mai mic sau egal (<=). înmulţirea(*).

Un tablou este o structură de date percepute ca fiind adiacente.06. care nu sesizează că e vorba de operatorul de atribuire nu de comparare. va fi suprascris conţinutul anterior incrementat cu 1 Unei variabile de tip obiect (tipul generic Object sau de tipul celorl alte obiecte Access 2000) nu i se poate atribui un obiect în varianta clasică: variabila=expresie sau variabila1=variabila2.06. tablourile pot fi uni-. Iniţializarea variabilelor Variabilele declarate sunt iniţializate automat de compilator: cele numerice cu 0. – variabila va stoca şirul de caractere "Popescu Ioan" – variabila va stoca data 13. Distincţia între elemente se face cu ajutorul 113 . în locaţia de memorie s. Ca şi şirurile.2000# s=s+1 – variabila a va stoca valoarea 170. care poartă un singur nume şi au acelaşi tip.3. 6. care poate să păstreze mai multe valori de acelaşi tip.2000 – reprezintă primul şoc întâlnit de novicii în informatică. etc. Tablouri În limbajele de programare se încearcă crearea de structuri de date complexe.5. Modificarea informaţiilor stocate în variabile se face cu ajutorul instrucţiuni de atribuire.6. ci utilizându-se instrucţiunea Set: Set variabila_obiect = expresie_obiect.4. bi-. în cazul de faţă. Tabloul poate fi asimilat unui şir finit din matematică. text cu "".sau multi-dimensionale. În urma apelului acestei instrucţiuni. În aproape toate există posibilitatea de lucru cu tablouri sau masive. variabila_obiect va referi obiectul returnat de expresia expresie_obiect. tri. Sintaxa: variabilă = expresie sau Set variabilă = expresie Exemple: iOreLunar = 170 sNume ="Popescu"&" Ioan" dtDataAng=#13. Şi numele de proceduri pot fi considerate un caz particular de variabile.

_ [[NrPrimElement to] NrUltimElement]. dacă tabloul este de tip Variant atunci elementele acestuia pot să conţină diferite tipuri de date (numerice. Declararea unui tablou cu dimensiune fixă se poate face astfel: Dim|Public|Private _ NumeTablou([[NrPrimElement to] NrUltimElement].. elementele tabloului pot fi folosite în expresii sau în orice loc unde poate fi utilizată o variabilă obişnuită. omogene şi repetivive. De obicei un tablou unidimensional este numit vector iar unul bidimensional matrice. Dacă se specifică NrUltimElement pentru toate dimensiunile.. În plus programarea pe obiecte se poate realiza doar făcându -se ca fiecărei posibilităţi de 114 . În felul acesta se reduce considerabil efortul de programare. care are aceiaşi sintaxă ca instrucţiunea Redim. obiecte). Tablourile sunt intuitiv create în programare implicaţie a scopului declarat al calculatoarelor programabile. Deci: zi(0)=”Luni” ‟ încarcă primul element al vectorului zi ‟ cu şirul”Luni” 6. tabloul este considerat a fi dinamic şi în interiorul procedurilor aceasta poate fi precizată cu instrucţiunea Redim.10) As Byte ’ matrice cu 121 elemente Private PuncteÎnSpaţiu( 1 To 30. Ca de exemplu prin următoarea instrucţiune se declară un vector cu 7 elemente: Dim zi(6) As string Alte exemple ar fi: Dim PuncteÎnPlan(10.) [As TipDată] Dacă nu se specifică NrPrimElement to se consideră a fi 0.1 To 30. Bineînţeles. Pentru gestionarea cât mai eficientă a elementelor tablourilor sunt de mare folos structurile repetitive.6 Funcţii şi proceduri definite de utilizator O funcţie/procedură reprezintă un bloc de instrucţiuni care realizează o prelucrare. date calendaristice. şiruri de caractere. fără a mai fi necesară rescrierea lor.indecşilor care redau un număr de ordine al elementelor pe fiecare dimensiune. tabloul este considerat a fi de dimensiuni fixă. . Funcţiile şi procedurile se aseamănă întrucâtva şi de aceia au o denumire comună: subprograme. Acestea pot fi apelate ori de câte ori este nevoie. Dacă nu se specifică NrUltimElement pentru o dimensiune. acela de a efectua cu viteză operaţii de rutină. 1 To 30) As Byte ’ masiv cu 30 3 elemente După declaraţie. Aplicaţiile mai complexe nu pot fi concepute fără a apela la proceduri.

. pe când. parametrii reali sunt convertiţi..)] Parametrii din apelul procedurii se numesc parametrii reali. O procedură eveniment poate fi definită doar Private.modificare a proprietăţilor obiectelor sau răspunsului acestora la diferite evenimente să-i corespundă câte un subprogram.. dacă se utilizează ByRef modificările făcute argumentelor transmise procedurii rămân şi după ieşirea din procedură.. Sintaxa pentru definirea unei proceduri este următoarea: [{Private|Public}]Sub nume_procedură[([{ByRef|ByVal}] param_1 [as tip_date]. [instrucţiuni] End Sub Unde:  Private şi Public au semnificaţie similară cazului declarării variabilelor. Referitor la definirea şi apelul procedurilor să considerăm următorul exemplu: Sub test() v=7 transmit v 115 . Dacă se utilizează ByVal modificările făcute argumentelor transmise procedurii se pierd după ieşirea din procedură. funcţiile şi/sau procedurile conţin în definirea acestora o listă de parametri formali. [Exit Sub] .  Sub permite ieşirea forţată dintr-o procedură. ei sunt purtători de valoare în momentul apelului.  {ByRef|ByVal} precizează modul de transmitere a parametrilor.. Implicit se consideră a fi ByVal. Apelul unei proceduri se poate face astfel: [Call]nume_procedura [(valoare_param_1.  Parametrii din definirea procedurii se numesc parametrii formali... iar dacă nu corespund ca tip cu parametrii formali.. În momentul apelării unei funcţii şi/sau proceduri se transmit către acestea valori pentru fiecare parametru al procedurii sau funcţiei (sau nimic dacă nu există parametri).. instrucţiunile care încep cu Exit provoacă ieşirea forţată din blocurile de instrucţiuni ale anumitor structuri. ei precizează (implicit sau explicit) doar tipul parametrilor.valoare_param_2. care poate fi prin valoare sau referinţă. Pentru a da un grad de generalitate cât mai mare.…)] [instrucţiuni] .

[Exit Function] [instrucţiuni] [nume_funcţie = expresie] End Function [as Unde precizările de la explicarea sintaxei procedurilor de tip Sub. Dacă se schmbă modul de transmitere a parametrului prin ByRef. Tipul valorii returnate este specificat în linia de antet a definirii funcţiilor.. Dar. Valoarea se returnează prin linia descrisă de sintaxa: nume_funcţie = expresie Acest rezultat va fi returnat în momentul terminării execuţiei funcţiei. Apelul unei funcţii se poate face astfel: Variabila=nume_funcţie[(valoare_param_1.MsgBox v End Sub Sub transmit(ByVal a) a=a+3 End Sub Procedura test de tip Sub apelează procedura transmit de tip Sub. linia de definirea a subrutinei apelate fiind Sub transmit(ByVal a).…)] _ [as tip_date] [instrucţiuni] [nume_funcţie = expresie] . cu toate că în interiorul subrutinei transmit parametrul este modificat.)] . variabila preia rezultatul returnat de funcţie. Modul de transmitere a parametrului este prin valoare. atunci rezultatul execuţiei subrutinei test va fi afişarea valorii 10. prin apelarea u nei funcţii se returnează o valoare... aceste transformări nu rămân la ieşirea din subrutină... Diferenţele apar de la de la specificul capacităţii funcţiilor de a returna o valoare. după lista de parametrii. Referitor la definirea şi apelul funcţiilor să considerăm următorul exemplu: 116 .valoare_param_2. Sintaxa unei funcţii este următoarea: [{Private|Public}]Function nume_funcţie[([{ByRef|ByVal}]param_1 tip_date]. deci funcţia apelată poate fi folosită ca un operand în orice expresie unde este permis tipul returnat. Prin rularea subrutinei test se afişează valoarea 7. rămân valabile şi pentru acest tip de proceduri.

În caz afirmativ funcţia returnează poziţia primului caracter căutat în şirul strŞir. Limbajul VBA cuprinde în plus o serie de funcţii predefinite care facilitează scrierea procedurilor şi funcţiilor utilizator. intCompară]): verifică dacă un caracter sau un şir( strCaută) se găseşte în interiorul altui şir (strŞir). strCaută[. Dacă se doreşte executarea subprogramului în modul Trace. 117 .  Cos(expresie_numerică): returnează cosinus dintr-o expresie numerică sau dintr-un număr.  Log(expresie_numerică): returnează logaritmul natural dintr-un număr sau dintr-o expresie numerică.  CStr(expresie): face conversia la tipul String.  Day(data_calendaristică): returnează numărul zilei din luna. ]strŞir.Function test1() As Integer Dim v As Integer MsgBox increment(7) End Function Function increment(a As Integer) As Integer increment = a + 1 End Function Execuţia funcţiei afişează valoarea 8.  Exp(expresie_numerică): returnează valoarea constantei e ridicată la o puter e (expresie numerică sau număr).  CLng(expresie): face conversia la tipul Long.  Date(): Returnează data calendaristică. se poziţionează cursorul în corpul subprogramului. Valoarea returnată este de tip Double. Step into F8. Unele mai des folosite dintre acestea sunt:  Abs(expresie_numerică): returnează valoarea absolută a unei expresii numerice. apoi se selectează comanda: Run.  InStr ([intStart. Pentru a testa un subprogram fără parametri direct dintr -un modul.  CSng(expresie): face conversia la tipul Single.  Dec(expresie): face conversia la tipul Decimal.  CDate(expresie): face conversia la tipul Date. sau a unui număr.  CDbl(expresie): face conversia la tipul Double.  Asc(sir_caractere): returnează codul primului caracter din şirul de caract ere specificat. Go/Continue F5.  Chr(COD_CARACTER): returnează caracterul ASCII cu codul specificat.  CInt(expresie): face conversia la tipul Integer. se alege din meniul Debug.

 Val(şir_caractere): returnează conversia şirului de caractere specificat.intNrCaractere): extrage dintr-un şir de caractere primele intNrCaractere din partea stângă a şirului.  Space(număr): returnează numărul de spaţii specificate. poziţie_start[.prima_zi): returnează numărul zilei din saptămâna datei calendaristice. într un număr.  Lcase(şir_de_caractere): transformă literele mari dintr-un şir în litere mici. Pentru scrierea programelor fiecare limbaj dispune de implementarea aşaziselor structuri de control al execuţiei programelor.  Len(şir_caractere/variabilă): returnează numărul de caractere ale şirului de caractere specificat sau numărul de octeţi necesari pentru a stoca conţinutul unei variabile.  IsObject(expresie): returnează valoarea adevărat (TRUE) dacă identificatorul dintre paranteze este de tip obiect.  Mid((şir_caractere.  Ucase(şir_de_caractere): transformă literele mici dintr-un şir în litere mari.  IsEmpty(expresie): returnează valoarea adevărat (TRUE) dacă expresia dintre paranteze nu conţine o valoare. IsDate(expresie): returnează valoarea adevărat (TRUE) dacă expresia dintre paranteze este compatibilă cu o dată calendaristică. lungimea])): extrage un şir de caractere dintr-un alt şir de caractere.  Month(data_calendaristică): returnează numărul lunii din an.  IsError(expresie): returnează valoarea adevărat (TRUE) dacă expresia dintre paranteze conţine o eroare. Principalele structuri de control implementate în Visual Basic for Aplication sunt: 118 . poate fi scris cu doar 3 sau 4 astfel de structu ri.  IsNumeric(expresie): returnează valoarea adevărat (TRUE) dacă expresia dintre paranteze poate fi evaluată ca număr.  Left(strŞir.  Year(dată_calendaristică): returnează anul. Null este considerat valoare. fie el cât de complex. S -a demonstrat că orice algoritm.  Right(strŞir.  Str(expresie_numerică): converteşte rezultatul evaluării expresiei numerice dintre paranteze într-un şir de caractere.intNrCaractere): extrage dintr-un şir de caractere primele intNrCaractere din partea dreaptă a şirului.  WeekDate(dată_calendaristică.

4 * a * c If delta >= 0 Then x1=(-b+Sqr(delta))/(2*a) 119 . se execută secvenţa instrucţiuni A. pentru care prezentăm schema logică şi codul sursă. Dacă expresia este "falsă". care poate fi evaluată la adevărat (True) sau fals (False).6. Dacă condiţia este o valoare numerică atunci dacă este diferită de 0 este interpretată ca True iar valoarea 0 este interpretată ca False. este următorul subprogram. Compilatorul evaluează condiţia şi dacă ea este "adevărată". Grafic.7 Structura alternativă În Visual Basic for Aplication pentru implementarea structurii alternative se poate utiliza instrucţiunile IF şi SELECT CASE. care calculează soluţiile ecuaţiei de gradul al doilea. _ double b. double c) Dim delta As Double Dim x As Double Dim x1 As Double Dim x2 As Double If a <> 0 Then delta = b ^ 2 . Sintaxa variantei principale a instrucţiunii IF este următoarea: If condiţie Then [secvenţa instrucţiuni A] [Else [secvenţa instrucţiuni B ]] End If Condiţia unei structuri alternative poate fi o expresie numerică sau o expresie logică. '-----------------------Private Sub ec2(double a. scris în Visual Basic. instrucţiunea "If" are şi parte de "Else" atunci se execută secvenţa instrucţiuni B. instrucţiunea este reprezentată astfel: Da secvenţa instrucţiuni A Condiţie Nu secvenţa instrucţiuni A Un exemplu de utilizare a acestei instrucţiuni. Una şi numai una dintre cele două instrucţiuni se execută.

nu are solutii reale" Da 2 delta=b -4ac End If Else Da x=-c/b Nu delta>=0 If b <> 0 Then x = -c/b Scrie x MsgBox "x =" & x x 1 =(-b+ )/2a delta Else x 2 =(-b)/2a Nu există delta MsgBox_ soluţii "ecuatia n. În Visual Basic aceasta este numită în mod obişnuit instrucţiunea FOR.NEXT..8 Structura repetitivă Structura repetitivă. Sintaxa instrucţiunii FOR. cu testarea condiţiei înaintea executării unui ciclu.are sens" reale Scrie x 1 . x 2 End If End If End Sub Terminare b≠0 Nu Ecuaţia nu are sens Schema logică a acestei probleme este redată alăturat codului. 6.x2=(-b-Sqr(delta))/(2*a) Sub ec2(a. numărător Structura repetitivă cu val c = val i Operaţii care Cele mai multe limbaje folosesc pentru instrucţiunea repetitivă cu numărător o formă a instrucţiunii FOR. b. în funcţie de o condiţie. la modul general. 6..1. c) MsgBox "x1 =" & x1 MsgBox "x2 =" & x2 Da Nu Else a≠0 MsgBox _ "ec. cu testarea condiţiei după executarea unui ciclu. presupune repetarea unei secvenţe de instrucţiuni de un anumit număr de ori. Structurile repetitive întâlnite pot fi: cu numărător. Fiecare limbaj implementează mai multe instrucţiuni pentru realizarea structurii repetitive..NEXT este : 120 se repetă val c = val c + val p Da val c <= val f ..8.

val f . 121 . incrementându-se întotdeauna variabila contor cu val p . respectiv valoarea finală pentru o variabilă contor val c . Redăm mai jos.reprezintă valoarea iniţială. codul sursă pentru algoritmul deordonare al unui vector cu n elemente. până la valoarea finală a acesteia. implicit are valoarea =1.reprezintă valoarea pasului de incrementare/decrementare pentru variabila contor. compilatorul consideră val p egal +1. val p . La întâlnirea acestei structuri. controlul instrucţiunii este transferat la prima instrucţiune după Next.For valc=vali To valf [Step valp] [secvenţă instrucţiuni] [Exit For] [secvenţă instrucţiuni] Next [valc ] Schema logică de reprezentare a acestei structuri este redată alăturat sintaxei . plecându-se de la valoarea iniţială a variabilei contor. Dacă partea de [Step . Pentru ieşirea forţată din structura repetitivă se poate uza de partea Exit For a instrucţiunii care de obicei trebuie intercalată într -o structură alternativă.  val p . În descrierea sintaxei instrucţiunii avem :  val i .] lipseşte.  val i .. val f .pot fi şi rezultatul evaluării unor expresii. Prin execuţia rândului Exit For. se repetă secvenţa de instrucţiuni de un număr de ori..

Loop are implemenate toate aceste 4 posibilităţi. Structurile pot fi implementate prin mai multe forme.LOOP. prin instrucţiunea Do. În plus dacă condiţia este pe linia cu Do atunci structura este repetitivă cu condiţie anterioară. care poate fi evaluată la adevărat (True) sau fals (False). Atunci când se foloseşte While ciclarea continuă dacă condiţia este adevărată. Mai clar spus. Structurile repetitive de tip Do … Loop Caracteristic limbajului Visual Basic este existenţa aşanumitei instrucţiuni DO.6. în schimb când se foloseşte Until ciclarea continuă dacă condiţia este falsă. mai execută sau nu instrucţiunile din corpul structurii. echivalente fie cu structura repetitivă cu condiţie anterioară fie cu structura repetitivă cu condiţie posterioară. un timp atât cât îi e necesar condiţiei să devină adevărată.. altele.. Ea poate fi o expresie numerică sau o expresie logică. din contră. echivalente fie cu structura repetitivă cu condiţie anterioară fie cu structura repetitivă cu condiţie posterioară.2. 122 . deci e posibil ca instrucţiunile din corpul structurii să nu fie executate niciodată. Dacă condiţia este o valoare numerică..8. Această instrucţiune repetă un bloc de instrucţiuni cât timp o condiţie este adevărată sau până când o condiţie devine adevărată. Unele forme se repetă atâta timp cât condiţia este adevărată. Sintaxa poate fi redată astfel: DO [{While | Until} condiţie] [instrucţiuni] [Exit Do] [instrucţiuni] Loop sau este valabilă şi sintaxa în forma următoare: Do [instrucţiuni] [Exit Do] [instrucţiuni] Loop [{While|Until} condiţie] Condiţia este opţională. După evaluarea condiţiei. atunci dacă este diferită de 0 este interpretată ca True iar valoarea 0 este interpretată ca False. Aceste structuri repetă un bloc de instrucţiuni în funcţie de valoarea de adevăr a unei condiţii.. controlul execuţiei va fi transmis la una şi numai una dintre cele două ramuri cu cu ieşire din ea. Compilatorul evaluează condiţia şi în funcţie de rezultatul obţinut. această structură suportă mai multe forme. Limbajul Visual Basic.

întotdeauna substituibile instrucţiunile repetitive Dacă este întâlnit rândul cu Exit Do. schema logică şi codul sursă pentru algoritmul de calcul al sumei primelor n numere naturale. atunci controlul programului este transmis forţat în afara buclei.În schimb dacă condiţia este pe o linie cu Loop atunci structura este repetitivă cu condiţie posterioară. folosind cele 4 variante ale instruc ţiunii. Existenţa acestei instrucţiuni pluriforme este firească deoarece în algoritmi sunt poate. deci instrucţiunile din corpul structurii vor fi executate ce l puţin odată. la prima instrucţiune care se găseşte după linia Loop. indiferent de valoarea de adevăr a condiţiei. Redăm mai jos. i) Cazul Do While cu condiţie anterioară: '-----------------------Function sum(n As Integer)_ Function Sum (n) As Integer sum = 0 Dim i As Integer sum = 0 i=1 i=1 Da Do While i <= n i <= n sum = sum + i sum = sum + i Return i=i+1 Loop i=i+1 End Function ii) Cazul Do Until cu condiţie anterioară: '-----------------------Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do Until i > n sum = sum + i i=i+1 Loop End Function Function Sum (n) sum = 0 i=1 i>n Return Nu sum = sum + i i=i+1 iii) Cazul Do While cu condiţie posterioară: '-----------------------123 .

Structura repetitivă „pentru fiecare” Visual Basic mai are o instrucţiune specifică. Sintaxa este redată mai jos: For Each element In grup [instrucţiuni] [Exit For] [instrucţiuni] Next [element] Element poate fi o variabilă utilizată în instrucţiune pentru a itera toate elementele unui masiv sau a unei colecţii referit prin variabila grup.3.8.Each.Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do sum = sum + i i=i+1 Loop While i <= n End Function Function Sum (n) sum = 0 i=1 sum = sum + i i=i+1 i>n Ieşire Nu Function Sum (n) sum = 0 i=1 sum = sum + i i=i+1 i <= n Ieşire Da iv) Cazul Do Until cu condiţie posterioară: '-----------------------Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do sum = sum + i i=i+1 Loop Until i > n End Function 6. derivată din instrucţiunea FOR... Pentru colecţii... Această instrucţiune repetă un grup de instrucţiuni pentru fiecare element al unui masiv sau al unei colecţii de obiecte. sau un 124 . un obiect generic de variabilă. element poate fi variabilă de tipul variant..NEXT numită instrucţiunea For..Next.

rularea în mediul VBA alături de mediul Access cu formularul deschis. '-----------------------------------Sub Form() Dim f As Form Dim c As Control Set f = Forms("Produse") For Each c In f Debug. Orice algoritm recursiv se poate transforma într -unul iterativ. formularul trebuie să fi e deschis.Name Next End Sub Redăm în figura de mai jos. Pentru a fi accesate controalele. Exemplul următor listează numele tuturor controalelor incluse în formularul Produse. 6.Print c.obiect specific de variabilă.9 Programarea recursivă Sintagma Programare recursivă se referă la apelarea unei proceduri sau funcţii de către ea însăşi. 125 . grup este un nume de colecţie sau masiv. Pentru masive element poate fi doar de tipul variant.

putîndu-se supraîncărca stiva şi memoria. recursivitatea este inspirată din recursivitatea sau recurenţa din matematică.Un exemplu de funcţie recursivă. nume_obiect_colecţie("nume_obiect"). În programare. Prin aceasta se ajunge la realizarea repetabilităţii unor blocuri de instrucţiuni. Dacă efectiv subprogramul se apelează direct pe el însuşi atunci avem recursivitate directă. cal culează suma primelor n numere naturale: „------------------------Function sum_rec(n As Integer) If n > 0 Then sum_rec = n+sum_rec(n –1) End If End Function Apelul se poate face chiar din “Debug Window” prin linia: sum_rec(100).nume_metodă. Pentru a nu se apela la infinit. oarecum similară algoritmilor iterativi. Reamintim că termenul de proprietate se referă la o dată încapsulată într-un obiect. Specificarea unui obiect aparţinând unei colecţii se poate face conform uneia din următoarele variante: 1. 2. Invocarea unei metode sau proprietăţi a unui obiect se face prin prefixarea acesteia cu numele obiectului astfel:  nume_obiect. Fiecare obiect are o serie de proprietăţi şi metode ataşate. În schimb pot subprogramele recursive sunt lizibile şi uşor de depanat. scris în VBA. pe când dacă un subprogram SP1 apelează un altul SP2 care apelează la rândul lui pe SP1 atunci avem recursivitate indirectă. nume_obiect_colecţie![nume_obiect] – este nevoie de paranteze drepte numai dacă numele obiectului conţine spatii. 126 . iar termenul de metodă se referă la un subprogram încapsulat într -un obiect. care pot fi accesate din VBA. În general însă recursivitatea nu face economie de memorie. deoarece trebuie menţinută o stivă cu valorile de prelucrat.nume_proprietate. în subprogramele recursive trebuie plasat un bloc de instrucţiuni care să conţină o secvenţă de oprire.10 Obiecte ACCESS 2000 O baza de date Access este formată dintr-o mulţime de obiecte. 6.  nume_obiect.

Principalele metode ale obiectului Application sunt:  CurrentDb returnează un obiect baza de date (DataBase) care refera baza de date curentă. Toate formularele deschise din baza de date se regăsesc în colecţia Forms. Principalele proprietăţi ale obiectului Application sunt:  DoCmd apelează obiectul DoCmd. descris în paragraful precedent.SetOption nume_opţiune. opţiunea Options:.  obiect_Application. Primul formular deschis are numărul de ordine zero. nume_obiect_colecţie(index_obiect) – număr care indică poziţia în colecţie a unui obiect. Pentru a afla numărul de formulare deschise la un moment dat.  CurrentUser returnează utilizatorul curent. Metodele obiectului Form sunt:  Repaint redesenează pe ecran formularul pentru care a fost apelată această metodă. opţiunea Options:. Obiectul Application referă aplicaţia Microsoft Access 2000. Invocarea formularului sau raportului curent se poate face prin apelativul Me.3.  SysCmd se poate utiliza în principal pentru a afişa un text în bara de stare (Status Bar) sau pentru gestionarea unui Progress Bar.  GetOption returnează valorile unor parametri care se găsesc în meniul Tools. setări. Obiectul Form referă un obiect de tip formular. fiind identificate printr-un număr. 127 .  Reports permite accesul la colecţia de rapoarte deschise dintr-o baza de date. conectat la baza de date curent ă.  SetOption stabileşte valori pentru parametrii care se găsesc în meniul Tools.  Screen permite accesul la obiectul Screen (va fi descris în paragrafele următoare).  obiect_Application. trebuie citită proprietatea Count a colecţiei Forms.GetOption(nume_opţiune). alocat în ordinea deschiderii acestora. Aceste numere de ordine încep de la zero.  Requery reactualizează înregistrările din formular (dacă formularul are ca sursă o interogare se reface aceasta). Printre numeroasele obiectele care pot fi utilizate de programatori sunt şi obiectele Applicaton şi Form.  Forms permite accesul la colecţia de formulare deschise dintr -o baza de date.

Dintre proprietăţile acestui obiect amintim:  OpenArgs .  Caption . ştergerea unei înregistrări dintr-o tabela.formularul se redimensionează pe ecran automat.11 Programarea dirijată de evenimente în ACCESS 2000 Prin generalizarea utilizării interfeţelor user friend.  Controls . pentru toate evenimentele din Access.şir de caractere care poate fi transmis ca parametru la deschiderea unui formular.  AutoResize .şir de caractere afişat în bara de titlu a ferestrei formularului.  Undo . închiderea unui formular/raport. Astfel de exemplu.numele unei tabele.  RecordSource . dublu clic pe mouse. scrierea unei înregistrări într -o tabela.  DataEntry . o eroare etc.  Toolbar . interogări sau o fraza SQL ce are ca rezultat un set de înregistrări de care este ataşat formularul.  NavigationButtons . 128 . la evenimentul de deschidere a unui formular se poate ataşa o procedură/funcţie care sa testeze dacă un anumit utilizator are drepturi de utilizare a acestuia sau înainte de salvarea unei înregistrări într-o tabelă se poate ataşa o procedura care sa verifice respectarea anumitor corelaţii dintre date etc. sistemul prevede proceduri sau funcţii. Exemple de evenimente în Access 2000 pot fi: deschiderea unui formular/raport. Pentru obiecte.reprezintă colecţia de controale de pe un formular. rapoartelor şi controalelor de pe un formular/raport sau secţiunile acestora. 6.setează activarea (TRUE) sau dezactivarea (FALSE) controlului pentru deplasarea între înregistrările unui formular.formularul este afişat pe centrul ecranului.toate modificările făcute datelor afişate în formular se pierd.indică bara de instrumente (Toolbar) afişată o dată cu formularul. Ele pot fi particularizate de către programatorii de ineterfeţe prin inserare de cod. SetFocus se cedează controlul formularului specificat împreună cu metoda.formularul este deschis numai pentru introducerea de înregistrări noi. puternic interactive. activarea unui buton de comanda.  ControlBox setează activarea (TRUE) sau dezactivarea (FALSE) butoanelor de control ale ferestrei formularului.  RecordSelectors stabileşte apariţia marcatorului de înregistrare pe formular (TRUE) sau dezactivarea acestuia (FALSE). se poate vorbi de programare dirijată de evenimente în Access în contextul formularelor. astfel încât sa se vadă tot conţinutul său.  AutoCenter .

129 . ► la clic pe casetă2 formularul să devină albastru.  se selectează secţiunea Event. Particularizăm procedurile de evenimente astfel: ► la clic pe casetă1 formularul să devină roşu. Pentru început colorăm fondul pentru casetă1 cu rosu. Pentru un obiect formular (Form) principalele evenimente sunt:  OnClose : se produce la închiderea şi ştergerea de pe ecran a formularului. Sistemul deschide în editorul VBA o procedură de tip Sub sau Function cu numele compus din numele obiectului legat de numele evenimentului prin semnul _ .  se selectează evenimentul la care se doreşte ataşarea procedurii. acesta să devină gri. în momentul în care o înregistrare din tabela sau interogarea ataşata formularului (în proprietatea Record Source) este afişată pe ecran. într-un formular sunt plasate două dreptunghiuri: casetă1 şi casetă2.  OnLoad: se produce la deschiderea formularului. Pentru controale dintre evenimentele caracteristice acestora se pot enumera:  OnClick:se declanşează în momentul în care se activează butonul mouse ului. ► la clic pe formular.  OnMouseMove: se declanşează în momentul în care utilizatorul mută mouse ul pe deasupra controlului unde se tratează acest eveniment.  click pe butonul … pentru editarea procedurii respective.  OnCurrent: se declanşează atunci când o înregistrare din tabela sau interogarea ataşată formularului devine înregistrare curentă. iar pentru casetă2 cu albastru.Pentru a particulariza o procedură a unui eveniment legat de un obiect trebuie parcurse următoarele etape:  se afişază Foaia de proprietăţi. Exerciţiu: Redăm un exemplu în care.  OnChange: se declanşează atunci când conţinutul unui control casetă de text (Text Box) sau listă derulantă (Combo Box) se modifică.  OnDblClick: se declanşează în momentul în care se activează de două ori butonul mouse-ului (la dublu clic).

NotInList. Obiectul primeşte sau pierde focalizarea sau devine activ respectiv inactiv de fereastră Close. KeyUp funcţia SendKeys pentru transmiterea unei acţiuni Un raport este tipărit sau este formatat în vederea tipăririi Creat de Access la intervale de timp definite de utilizator de tipărire de ceas Format.Delete. Enter.BeforeDelConfirm. Print. DblClick. Load. AfterUpdate. MouseUp Apare o acţiune cu mouse-ul Utilizatorul apasă taste sau foloseşte de tastatură KeyDown. Resize. caseta să devină lila. LostFocus AfterDelConfirm. Retreat Timer 130 . O altă grupare a principalelor evenimente ar putea fi redată in tabelul de mai jos: Tip de eveniment Nume Utilizatorul Apare când realizează o acţiune cu formularul sau raportul Exit. Update Click. KeyPressed. de date BeforeInsert.BeforeUpdate. MouseDown.Current. GotFocus. Open. Unload de focalizare Activate.► la dublu-clic pe casetă1. Deactivate. Se fac modificări ale datelor sau înregistrărilor de mouse MouseMove.AfterInsert. Change.

control control Stergerea uneiÎnregistrări Delete. Change. KeyUp. GotFocus(F2). Programatorii pot să modifice sau nu aceste evenimente. la ieşirea din ultimul BeforeUpdate. Deactivate(F1). Close Unload. LostFocus. AfterUpdate. Activate. KeyPressed. Deactivate. VBA le oferă ca potenţial de particularizare. Activate. Cumutarea între două formulare F1 şi F2 cu Deactivate(F1). AfterInsert Activate(F2) text sau KeyDown. Activate(F2) 6. Change. Current Open. Close Enter. Change. controale active Modificarea unui text într-o casetă combinată. Deactivate. Exit Înserarea unei înregistrări. Resize. KeyUp Open. În tabelul următor redăm succesiunile de evenimente ocazionate de diferite operaţii: Operaţie Succesiune de evenimente Deschiderea unui formular cu controale active Deschiderea unui formular fără controale active Închiderea unui formular cu controale active Închiderea unui formular fără controale active Intrarea într-un control Ieşirea dintr-un control controale active Cumutarea între două formulare F1 şi F2 fără LostFocus(F1). GotFocus. KeyPressed.12 Accesul cu programele la obiectele bazei de date Obiectele bazelor de date pot fi accesate cu ajutorul extensiilor API ale limbajelor de programare. 131 . GotFocus Exit. la intrarea în primul KeyDown. Current. BeforeUpdate. Resize. Access -ul lansează o secvenţă de evenimente. Load. În continuare vom prezenta cateva aspecte ale posibilităţilor prin care se rezolvă această problemă cu VBA. LostFocus Load.de eroare Error Apare odată cu o eroare şi dă posibilitatea utilizatorului să o trateze Atunci când utilizatorul derulează o operaţie. Current Unload. AfterUpdate. BeforeDelConfirm şi dacă se apasă Yes se mai face şi AfterDelConfirm KeyUp Înserarea unei înregistrări. KeyPressed. pentru fiecare caracter introdus: Actualizarea datelor într-un control sau înregistrare KeyDown. BeforeInsert. Aşa se întâmplă pentru diversele operaţii ca re pot fi executate de operatori.

Commmand ADOX este o colecţie de obiecte produse de Microsoft pentru definirea şi crearea structurilor bazelor de date şi a securităţii acestora.ConnectionString = "Provider=Microsoft. Pentru exploatarea datelor se folosesc obiectele ADODB iar pentru definiţia datelor se folosesc obiectele ADOX.0". User Users ► nume_colecţie("nume_obiect").12. ADODB este un model ierarhic de obiecte.accdb " con. Tables Table Casetele gri reprezintă obiecte. Views View Aceste numere de ordine încep de la zero. SQL Server sau MSDE." _ & "Data Provider=Microsoft. informaţii din baze de date Access. Obiectele bazelor de date Access sunt structurate în ierarhii: ADODB (ActiveX Data Objects).OLEDB. Groups Group ► nume_colecţie(index_obiect) – index care Procedure Procedur s e Commmand indică poziţia în colecţie a unui obiect.Open MsgBox con.10.accdb. Data Source=C: \My Documents\bdNelu. Catalog redat în figura alăturată. Cel mai important obiect din ADODB este obiectul Connection care defineşte o sesiune de lucru pentru un utilizator al unei date particulare. trebuie scris următorul cod: '--------------------------------------Public Sub conexiune() Dim con As ADODB. iar Columns Column Properties Propert casetele albe colecţii de obiecte.Connection ' realizează o conectare con. Specificarea unui obiect aparţinând unei colecţii se poate face în mod similar specificării obiectelor în cazul ierarhiei ADODB. se pot folosi în principal.OLEDB. & _ "Data Source=C:\My Documents\bdNelu.Deja am dat câteva exemple în acest sens în subcapitolele ante rioare. ADOX (Microsoft ADO Extensions for DLL and Security) şi JRO (Microsoft Jet and replication Objects).0. y Indexes Index Specificarea unui obiect aparţinând unei Columns Column colecţii se poate face conform uneia dintre Properties Propert următoarele variante: Keys Key y ► nume_colecţie![nume_obiect] –fiind nevoie Columns Column Groups Group Properties Propert de paranteze drepte numai dacă numele y Users User obiectului conţine spaţii. Cum am mai spus.ConnectionString set con= Nothing End Sub 132 . redată în figură.Access.ACE. Pentru a ne conecta la baza de date.

care conţine valorile pentru proprietăţile conexiunii. În consecinţă codul se simplifică astfel: '--------------------------------------Public Sub conexiune() Dim con As ADODB. intucţiuni SQL sau procedură ce are rezultat o mulţime de înregistrări. TipCursor. Despre "conexiune" am scris puţin înainte.Deci trebuie declarată o variabilă pentru obiectul conexiune. Conexiune. Numele lor sugerează oarecum despre ce e vorba. Parametrul "tipcursor" poate fi specificat cu următoarele constante predefinite: adOpenDynamic. Pentru a realiza conexiunea sunt obligatorii specificarea proprietăţii Provider.Open Sursă. Pentru iniţializarea lucrului cu o mulţime de înregistrări se utilizează următoarea secvenţă de instrucţiuni: Dim mî as RecordSet set mî = New ADODB. bineînţeles că este prezentată ca ca sintaxă pe care o vom explica.Connection MsgBox con. adOpenKeyset. comenzi.ConnectionString set con= Nothing End Sub Se observă că nici măcar nu trebuie dată comanda Open pentru conexiunile la datele proiectului curent. TipBlocare. Diferenţele între aceste tipuri de cursoare apar de la modul cum e tr atată înregistrarea referită la un moment dat.RecordSet mî. deplasarea prin înregistrări sau posibilitatea de a se seziza modificările făcute de alţi utilizatori. Opţiuni  "mî" este numele variabilei prin care se face referire la mulţimea de î nregistrări. adOpenStatic sau adOpenForwardonly. 133 . Data Source şi User. iar ultima linie. Însă de cele mai multe ori se lucrează cu datele din baza de date curentă. Parametrul "sursă" poate fi numele unui tabel sau numele unei interogări. Apoi trebuie precizat conţinutul iniţial al şirului conexiunii.Connection ' realizează o conectare Set con = CurrentProject. Până aici s-a prezentat doar prima chestiune care trebuie rezolvată în lucrul cu datele. Obiectul care conţine informaţiile care vor fi procesate de rutine este mulţimea de înregistrări (în limba engleză: RecordSet).

Fields. Pentru trecerea de la o înregistrare la alta într-o mulţime de înregistrări (navigare) se folosesc metodele Move.MoveFirst Do For i = 0 To . adCmdTableDirect. Next Debug. '--------------------------------------Public Sub Navigare(tabel as string) Dim rs As ADODB. Constantele predefinite care stabilesc acest parametru sunt: adLockReadOnly. adCmdUnknown şi adCmdFile care precizează modul cum este evaluat parametrul "sursă".close con.Connection Set con = CurrentProject. adCmdStoredProc.Parametru "tipblocare" se referă la modul de tratare a î nregistrărilor pe timpul editării lor.Print .CursorLocation = adUseClient . Implicit ultimii doi parametrii sunt daţi de constantele: adOpenForwardonly şi respectiv adLockReadOnly.RecordCount > 0 Then . adCmdTable If .MoveNext Loop Until . con.Print .EOF End If End With rs. posibilitatea de acces la ele a altor utilizatori. Acestea fiind precizate putem să trecem la prezentarea unor exemple mai edificatoare. MovePrevious. adLockPessimistic. MoveFirst şi MoveLast.Connection Set rs = New ADODB. adLockOptimistic şi adLockBatchOptimistic. .Count . adCmdTable.Recordset Dim con As ADODB.Recordset with rs . MoveNext.Fields(i). .Open tabel.close set rs=nothing set con=nothing 134 . Pentru parametrul opţiuni se pot folosi următoarele constante VB: adCmdText.Value.CursorType = adOpenStatic .1 Debug.

Actualizările practic sunt făcute după o căutare prealabilă a articolului în cauză.End Sub Acest exemplu afişează valorile câmpurilor înregistrărilor unui tabel (dacă există câmpuri de tip obiect OLE rezultatul e imprevizibil).Delete.AddNew.Find are următoarea sintaxă: Recordset. sens. Fie un tabel "persoane" cu campurile marca şi nume.Find condiţie. Pentru a se putea interveni cu actualizări trebuie să se facă apel la metodele .Connection dim sirdate as String Set con = CurrentProject. articolesarite. articolstart Parametrul "condiţie" e evident. un proces ReadOnly. Scriem o procedură care va căuta articolul cu marca 50.Recordset Dim con As ADODB.Recordset with rs 135 .Connection Set rs = New ADODB. Început poate fi primul articol. dar atenţie este mai lentă şi folosirea ei repetată încetineşte lucrul. Metoda .Update sau . Procedura este următoarea: '--------------------------------------Public Sub Modificare_Stergere() Dim rs As ADODB. acolo unde va afişa: S-a arătat doar navigarea printre înregistrări. . Dacă tabelul este indexat cătarea se poate face cu metoda . ultimul sau articolul curent (implicit). "sens" poate fi adSearchForward sau adSearchBackWard (implicit în faţă).Seek altfel cu metoda . "articolesarite" specifică un număr de articole din vecinătatea articolului de unde se începe căutarea care nu sunt verificate (implicit 0).Find. O vom folosi pe aceasta din urmă. Apelul poate fi făcut din fereastra Immediate.

close set rs=nothing set con=nothing End Sub Ce operaţii se realizează? După iniţializări se caută articolul cu marca = 50 si se afişează conţinutul lui. Pentru modi ficare se citeşte valori noi pentru cele două c\mpuri şi apoi se utilizează metoda .CursorType = adOpenStatic . Apoi operatorul e întrebat dacă doreşte să modifice sau să şteargă articolul. d -stergere".Fields("Nume")=InputBox( _ "Altă valoare pentru Nume") .1 sirdate =sirdate & .Fields(i). _ adLockOptimistic.Count .Eof Then sirdate="" For i = 0 To .Open "persoane".Update End If End If End With rs.. con.Connection 136 . adCmdTable .Value Next Dim rasp rasp = InputBox("articolul cautat este" + vbCr _ +sirdate + vbCr + "m.Delete.Fields("Marca")=InputBox( _ "Altă valoare pentru Marca") .Fields.close con.CursorLocation = adUseClient .Update.Recordset Dim con As ADODB.modificare. Pentru adăugarea unei noi înregistrări se poate folosi procedura: '--------------------------------------Public Sub adăugare() Dim rs As ADODB. "m") If lCase(rasp)="d" Then . adOpenStatic.Delete Else .Find "marca=50" If Not . Pentru ştergere se utilizează metoda .

adInteger 137 .accdb.Execute.accdb Sub CreareTabelPrinVBA() On Error GoTo CreateTableError Dim tbl As New Table Dim cat As New ADOX." _ & "Data Source=C:\doros\Ang. adOpenStatic. în această secţiune am prezentat exemple de folosire a obiectelor ADODB.Set con = CurrentProject.ActiveConnection = "Provider=Microsoft.CursorType = adOpenStatic .Fields("Nume")=InputBox( _ "Altă valoare pentru Nume") .Access." _ & "Data Provider=Microsoft.Append "Marca".Update End With rs.CursorLocation = adUseClient .Fields("Marca")=InputBox( _ "Altă valoare pentru Marca") .a. s.12. _ adLockOptimistic.0" tbl.close con. adCmdTable .d. Procedura următoare crează un tabel cu numele "colaboratori" ce are două câmpuri "Marca" şi "Nume" în baza de date: C:\doros\Ang.Open "persoane".Columns. În continuare vom analiza folosirea obiectelor ADOX pentru definirea şi crearea structurilor de baze de date.ACE. con.0.Connection Set rs = New ADODB.Name = "colaboratori" tbl.Catalog ' Deschide catalogul bazei de date cat.close set rs=nothing set con=nothing End Sub Reamintim că la deschiderea unei mulţimi de înregistrări ca sursă se poate lua şi o interogare de selecţie ca şi comandă sau o interogare de selecţie salvată.m.OLEDB. actualizare sau adăgare cu ajorul comenzii .Recordset with rs .10.AddNew .OLEDB. Până acum. Din proceduri VBA se pot lansa şi interogări de ştergere.

ActiveConnection = Nothing Set cat = Nothing Set tbl = Nothing Exit Sub CreateTableError: Set cat = Nothing Set tbl = Nothing If Err <> 0 Then MsgBox Err.Columns.tbl. etc.Append sunt: Constant Codul Description adBinary adBoolean adUnsignedTinyInt adCurrency adDate adDouble adGUID adInteger adLongVarBinary adLongVarChar adNumeric adSmallInt adSingle adVarWChar 128 11 17 6 7 5 72 3 205 201 131 2 4 202 Binary Boolean Byte Currency Date/Time Double GUID Long Long Binary (OLE Object) Memo Numeric Integer Single Text ADOX conţine obiecte şi pentru creare sau modificare de indecşi. 50 cat.Append "Nume". În fine. Principalele tipuri de coloane care trebuie precizate la instrucţiunea . adVarWChar. structura lor poate fi modificată. se pot şterge dintre cele existente se pot modifica dintre atributele lor. creare sau modificare de interogări." 'eliberarea memoriei obiectelor Set cat.Print "Table 'MyTable' is added.Append tbl Debug. "Error" End If End Sub Odată create tabelele. următorul exemplu modifică comanda SQL a unei interogări stocate în baza de date: 138 .Description.Tables. Se pot adăuga noi coloane. creare de indecşi.Source & "-->" & Err.Column. .

Catalog Dim cmd As New ADODB.Connection ' Accesarea interogării Set cmd = cat.Procedures(1)." ' Salcvarea noii comenzi Set cat.Command ' Modificarea comenzii cmd.ActiveConnection = CurrentProject.CommandText = "SELECT * FROM ANG.'--------------------------------------Public Sub ADOXSchimbSQL() Dim cat As New ADOX.Command ' Deschiderea catalogului de tabele ale bazei de date cat.Command = cmd Set cat = Nothing Set cmd = Nothing End Sub 139 .Procedures(1).

3 puncte pentru susţinerea proiectului. Proiectul va conţine o bază de date tip MS Access compusă din următoarele obiecte: ► Cel puţin 2 tabele între care să existe relaţii. ► Rapoarte pentru listarea informaţiilor conţinute în tabele. 3 puncte pentru activitatea din timpul semestrului la această disciplină. 3 puncte pentru susţinerea examenului final. ► Max. va fi declarat restanţier la această disciplină.CAPITOLUL VII. un proiect prin care să demonstreze posibilitatea folosirii produsului MS ACCESS în gestionarea bazelor de date. ► Max. Studentul va prezenta împreună cu baza de date o documentaţie a conţinutului. ► Diverse interogări bazate pe aceste tabele. ► Descrierea datelor şi variabilelor utilizate. anul II de studii. Cerinţe minimale Studenţii anului II. ► Max. Baza de date va fi salvată pe un CD sau FD şi obiectele precizate în paragraful anterior trebuie să fie funcţionale. nota finală obţinută de un student este compusă din: ► 1 punct din oficiu. 140 . structurată pe următoarele capitole: ► Motivaţia lucrării. listată şi îndosariată (cca 10-15 pagini). ► Concluzii trase după realizarea proiectului şi propuneri de perfecţionare. Dacă un student nu susţine corect acest proiect. ► Listingul şi explicaţia diverselor interogări sau module utilizate. ► Descrierea machetelor pentru rapoartele de listare a informaţiilor conţinute în tabele. ► Formulare de introducere de date în aceste tabele. ► Descrierea machetelor pentru formularele de introducere de date. la finalul semestrului I. la disciplina „Baze de date‖. de la specializările „Finanţe şi bănci‖ şi „Management‖. ÎNDRUMAR PENTRU REALIZAREA PROIECTULUI LA DISCIPLINA „BAZE DE DATE” 7. Pentru disciplina „Baze de date‖. trebuie să întocmească.1.

► evidenţa invitaţiilor la un teatru. câteva exemple de posibile teme: ► gestiune depozit de materiale. ► ocuparea camerelor într-un cămin. ► evidenţa numerarului. ► registru de intrări şi ieşiri la un secretariat. ► ocuparea camerelor într-un hotel. ► evidenţa mijloacelor fixe. ► evidenţa membrilor unui club 141 . ► evidenţa vanzărilor biletelor de tren. ► evidenţa bonurilor de materiale. ► registru de înmatriculare. ► evidenţă de oferte şi cereri la o agenţie imobiliară. ► evidenţa vânzărilor biletelor de avion. întocmire balanţă şi fişe. Tabelele Tabelele cuprinse în baza de date trebuie să se refere la un domeniu concret şi să cuprindă date necesare pentru rezolvarea unei probleme. reconstituire extras de cont. ► evidenţa contului curent. 7. ► evidenţa plăţilor către furnizori. ► evidenţa obiectelor de inventar. ► fişe de bibliotecă. întocmire balanţă şi fişe. întocmire balanţă şi fişe. în continuare. ► evidenţa maşinilor dintr-un parc auto. ► evidenţa contribuţiei artiştilor la spectacole.2. ► evidenţă încasări de la clienţi. Baza de date a. ► gestiune chioşc de închiriat filme. ► evidenţa bolnavilor într-o clinică. ► evidenţa articolelor contabile şi întocmirea balanţei şi fişelor . ► evidenţa cheltuielilor de scară. ► evidenţa enoriaşilor unei parohii. ► evidenţa notelor studenţilor.Cerinţele prezentate mai sus pentru baza de date şi pentru documentaţia aferentă sunt obligatorii şi minimale. Redăm. întocmire registru de casă.

nu doar de o parte a cheii. Rata2 b. simultan. (câmpul Nume depinde numai de câmpul Cod. Matricol Nume Rata1 Rata2 deoarece conţine o listă de câmpuri şi nu e în forma normală 1. Deci. Cele mai importante interogări ale proiectului vor fi cele care se referă la datele din mai multe tabele. este incorect ca să existe două tabele cu următoarea structură: Catalog Rulaj Cod Nume Preţ Cod Nume Data Cantitate TipOperatie deoarece al doilea tabel conţine informaţii redundante (câmpul Nume) şi nu respectă a doua regulă de normalizare care necesită ca fiecare coloană care nu este cheie să depindă complet de cheia primară. normalizate măcar până la forma normală 3 şi vor conţine informaţii neredundante. Interogările Prin obiectele create. care constituie cheia primară).Tema problemei de rezolvat este aleasă de student. Nu este corect nici un tabel de forma: TaxeStudenţi Nr. c. de inserare (INSERT). nu neapărat din listă şi se va aprecia originalitatea. Formularele Formularele create trebuie să conţină posibilităţi de introducere a tuturor datelor definite în 142 . ca studenţii să-şi aleagă teme cu care au avut tangenţă în experienţa lor profesională. studentul va face dovada că înţelege diversele tipuri de interogări: de extragere (SELECT cu toate clauzele). de modificare (UPDATE) şi de ştergere (DELETE). Este recomandabil. Bazele de date vor fi relaţionale. nu de combinaţia Cod+Data.

► Imagini. În rapoarte se vor plasa controalele următoare: ► Etichete. sub diferit e forme. a unui formular care monitorizează funcţionarea obiectelor proiectului. ► Imagini. Cel puţin într-un raport. trebuie să nu fie create cu expertul. existenţa în proiect. Mai mult de jumătate din numărul formularelor din proiect. se vor plasa câmpuri care vor conţine valori rezultate ale funcţiilor de grupare. se va apela la tehnica interogărilor (de tip join). ► Casete combo. linii sau dreptunghiuri. În figura de mai jos prezentăm un exemplu de raport: 143 . linii sau dreptunghiuri. Rapoartele Rapoartele trebuie să poată lista toate informaţiile din tabele. Atunci când e necesar listeze date prin exploatarea unor relaţii dintre tabele. ► Butoane de comandă. trebuie să nu fie create cu expertul. se va apela la tehnica modulelor Visual Basic. d. ► Casete text. Atunci când e necesar să se introducă date prin exploatarea unor relaţii dintre tabele. în diferite moduri ordonare sau de grupare. Se va aprecia pozitiv. ► Casete text. În formulare se vor plasa controale de următoare tipuri: ► Etichete. a interogărilor (de tip join) sau a subformularelor. Mai mult de jumătate din numărul rapoartelor din proiect. În figurile de mai sus sunt prezentate câteva exemple de formulare.tabele.

7. listată şi îndosariată (cca 10-15 pagini). Prima pagină a dosarului va avea următorul format: 144 . ca model.3. structurată pe următoarele secţiuni: ► motivaţia lucrării. ► descrierea machetelor pentru formularele de introducere de date. Documentaţia Studentul va prezenta împreună cu baza de date o documentaţie a conţinutului. ► listingul şi explicaţia diverselor interogări sau module utilizate. ► descrierea datelor şi variabilelor utilizate. dar în redarea ei nu este obligatoriu să se recurgă la formulările stricte redate mai jos. ► descrierea machetelor pentru rapoartele de listare a informaţiilor conţinute în tabele. În documentaţie nu vor fi redate elemente teoretice. Studenţii vor trebui să respecte întocmai structura acestei documentaţii. ► concluzii trase după realizarea proiectului şi propuneri de perfecţionare. ci vor fi prezentate succint elementele conţinute în proiect.

natura. pentru un tabel cu numele „Sahisti‖. se va explica structura. Descrierea datelor şi variabilelor utilizate În această secţiune vor fi prezentate sau explicate: ► toate câmpurile tabelelor.ACADEMIA COMERCIALĂ SATU MARE PROIECT LA DISCIPLINA BAZE DE DATE Folosirea MS ACCESS în gestionarea unei baze de date conţinutul bazei de date . Autor student: numele studentului. tipul. Motivaţia lucrării . dimensiunea şi restricţiile informaţiilor pe care le stochează. ► variabilele calculate ale controalelor din formulare sau rapoarte. De exemplu. menirea organizaţiei într-o organizaţie . anul şi specializarea . numărul de calculatoare. Proiectul este realizat cu ajutorul aplicaţiei MS Access Office 2003. a. ► câmpurile calculate ale interogărilor. Pentru funcţionarea lui sunt necesare: numărul şi pregătirea angajaţilor. etc . cu informaţii despre sportivii legitimaţi. b. după modelul următor: Structura de tabel pentru tabelul “sahisti” 145 . alte resurse de hard sau soft.Satu Mare 2010 În această secţiune se pot prezenta elemente precum cele redate în modelul de mai jos: conţinutul bazei de date Acest proiect este destinat gestionării . pentru angajaţii săi de la numele compartimentului sau biroului compartimentul .

Descrierea machetelor pentru formularele de introducere de date sau a rapoartelor de ieşire În aceste secţiuni vor fi prezentate sau explicate formularele (sau rapoartele) folosite. ―III‖ – categoria a III-a. când e calculat de federaţia naţională. Da fără diacritice. Dacă sunt mai multe cuvinte. ―F‖ pentru sexul feminine text Prenume (70) Sex Nascut text (1) Da date Da Data neşterii sportivului. în secţiuni separate. ―WMI‖. Codul acordat de federaţia internaţională pentru sportiv. Dacă sunt mai multe cuvinte.aaaa Titlu Titlul sau categoria sportivă. ―GM‖ – mare maestru internaţional. când e calculat de federaţia internaţională. ―MI‖ – maestru internaţional. fără diacritice. text (3) Da ―CM‖ – candidat de maestru.Camp NrCarnet Tip întreg lung text (50) Nul Explicaţii despre conţinut Da Numărul legitimaţiei are 6 cifre. cu litere mari. în format zz. ―II‖ – categoria a II-a. e necesară o variabilă de tip Întreg lung. Poate lua valori între 401 şi 1400. sau valori Da între 1401 şi 2900. între ele se intercalează cratimă Una dintre valorile ―M‖ pentru sexul masculin. 146 . E recomandat să existe un camp cu lărgime considerabilă. În documentaţie formularele şi rapoartele vor fi prezentate distinct. ―WFM‖. sau respectiv. ―WM‖. ―I‖ – categoria a I-a. e necesară o variabilă de tip Întreg lung.ll. Coeficientul valoric al sportivului. nu depăşeşte 50 caractere. ―M‖ –maestru. nu depăşeşte 70 Da caractere. valori pozitive Nume Numele sportivului. Pentru sportivii de sex masculine sunt posibile valorile: ―NC‖ – neclasificat. ―WGM‖. Are Da 7 cifre. între ele se intercalează cratimă Toate prenumele pe care le are sportivul. ―FM‖ – maestru FIDE. Pentru sportive sunt posibile valorile corespunzătoare: ―WCM‖. cu litere mari. CIV întreg Poza text (100) întreg lung IdFide c. valori pozitive. Valorile pot fi stocate într-un număr întreg pozitiv (pe doi octeţi) Numele întreg (inclusive calea de directoare) a fişierului acre Da conţine imagine pozei sportivului.

după cum are şi numele. metodele şi evenimentele la care s-a intervenit cu modificări.  introducerea a 4 butoane de comenzi pentru ştergere. Se vor prezenta toate proprietăţile. la nivel global pentru formular (sau raport). în cazul interogărilor de selecţie.  introducerea unui combobox pentru selectarea articolelor după nume. Sal from Ang where fnc=”SOFER” Extragere SOFERI numeA Popan Matus Chivu sal 800 1100 950 147 . finisările care s -au făcut sunt:  scoaterea butoanelor de navigare. De exemplu: Primul formular este destinat. se va afişa comanda SQL şi. De exemplu: Interogarea următoare listează numele şi salariul şoferilor din ta belul „Ang‖: Select NumeA. completării tabelului CATALOG. sau pentru fiecare control în parte. salvare. se va prezenta schiţat macheta rezultatului. Listingul şi explicaţia diverselor interogări sau module utilizate Pentru fiecare dintre interogările create se va explica ce realizează. d. Este un formular simplu. restaurare şi adăugare articole.Machetele corespunzătoare formularelor (sau rapoartele) vor fi captate cu ajutorul tastei „PrintScreen‖ şi inserate în documentaţie. Se vor prezenta toate controalele incluse în fiecare formular (sau raport).

148 . Concluzii trase după realizarea proiectului şi propuneri de perfecţionare În câteva fraze vor fi redate:  limitele proiectului realizat.  posibilităţile de îmbunătăţire şi de extindere.Dacă proiectul conţine module VisualBasic.  constrângerile pe care le suportă. sursele acestora vor fi listate şi explicate. e.

Editura Gutenberg Arad-2009 Năstase.M. M. Bucureşti 2003 Sabău.. V. Editura Economică. Andreica. Mihai..Editura ASE București -2007 *** — http://office...P. I. Dardală.BIBLIOGRAFIE Doros. Todor.-Baze de date prin exemple.Bologa. C..R. proiectare şi implementare. —Informatica pentru utilizatorii de calculatoare personale . Gh. I. A. D.pagină web a prodului Access 149 . I. —Dictionar pentru utilizatorii de calculatoare personale . Aplicații. I.V.S..— Baze de date – Microsoft Access 2000 ..R. Orașul virtual-Editura Gutenberg Arad-2009 Doros.a. Todor. . Tulbure. Bucureşti 2003 Muntean. Doros. Bucureşti 2008 Velicanu.s.— Sisteme informatice.. L.E.G.... Analiză. I. —Societatea informațională. Sabău.com/ro-ro/access . A. Editura Teora. Popei. —Bazele informaticii. L. Ardelean..— Baze de date. Editura MatrixRom.microsoft. A.Editura Dacia Cluj-Napoca-2007 Doros..Editura Dacia Cluj-Napoca-2005 Lungu..F.Muntean.M. Bologa.