Download - Curs 4-Baze de Date(M. Acces)

Transcript
Page 1: Curs 4-Baze de Date(M. Acces)

Baze de date -Microsoft Access.

Curs 1 – SGBD-ul MICROSOFT ACCESS

1. Noţiuni introductive despre Access.

Microsoft Access 2000 este un puternic şi robust sistem de gestionare a bazelor de

date relaţionale pe 32 de biţi (RDBMS) pentru crearea de aplicaţii clasice sau de tip

client-server pentru baze de date pentru sistemele de operare Windows 9x şi Windows

NT4+ sau Windows 2000.

Principalul motiv al succesului programului Access este faptul că aduce pe

suprafaţa de lucru a mare parte din facilităţile sistemelor pentru baze de date relaţionale

client/server, denumite şi baze de date SQL.

Access 2000 (şi alte versiuni ) şi Visual Basic 6.0 au amândouă capacitatea de a

folosi controale ActiveX (cunoscute şi sub vechea denumire de controale OLE) create de

Microsoft, de alţi programatori de module de extensie şi de utilizatori.

Access a fost proiectat în vederea creării de aplicaţii multiutilizator, în care

fişierele bazelor de date sunt partajate în reţea, iar Access foloseşte un sistem de

securitate complex pentru a împiedica persoanele neautorizate să citească sau să modifice

bazele de date. Sistemul de securitate folosit în Access este modelat pe baza celui din

Microsoft SQL Server.

Access are o structură unică pentru baze de date care poate combina toate tabelele

de date înrudite şi indexurile, formularele, rapoartele şi codurile VBA ale acestora într-un

singur fişier .mdb. În prezent există o tehnică general acceptată pentru proiectarea bazelor

de date(GADBDP), aceea de a folosi fişiere .mdb separate care conţin obiecte de date şi

aplicaţie; fişierul .mdb cu obiectul de aplicaţie are legături la fişierul .mdb cu tabele de

date. Access 2000 foloseşte şi un format sigur pentru fişiere, .mde, astfel că puteţi să

distribuiţi aplicaţiile Access fără să permiteţi accesul la codul-sursă VBA.

Access poate importa date din şi poate exporta date în cele mai cunoscute formate

de fişier pentru baze de date şi foi de calcul tabelar, precum şi ca fişiere de text. De

Page 2: Curs 4-Baze de Date(M. Acces)

asemenea, Access poate ataşa fişiere cu tabele FoxPro şi Paradox la bazele de date şi

permite lucrul cu aceste fişiere în formularul lor nativ. De asemenea, puteţi să folosiţi

programul Access pe staţii de lucru care au rolul de clienţi pentru servere de reţea cu

fişiere şi baze de date în cadrul sistemelor client/server pentru baze de date. Ca atare,

Access îndeplineşte toate cerinţele pentru un sistem profesional de dezvoltare pentru

lucrul cu baze de date client/server.

Pentru a putea fi considerată un sistem complet pentru gestionarea bazelor de date

relaţionale(relational database management system-RDBMS), o aplicaţie trebuie să poată

efectua următoarele patru funcţii de bază distincte, fiecare având un mod propriu de

reprezentare în ochii utilizatorului:

Organizarea datelor implică crearea şi manevrarea tabelelor care conţin date într-

un format tabelar convenabil(cu linii şi coloane), denumit modul de afişare Datasheet în

Access.

Legarea tabelelor şi extragerea datelor implică legarea mai multor tabele prin

relaţii între date, în vederea creării unor tabele temporare, stocarea în memoria

calculatorului sau în fişiere temporare pe disc, care conţin datele alese de d-voastră.

Access foloseşte interogări pentru legarea tabelelor şi alegerea datelor care trebuie

stocate într-un tabel temporar numit obiect Recordset. Un obiect Recordset cuprinde

datele care rezultă din executarea interogării; obiectele Recordset se numesc tabele

virtuale pentru că ele sunt stocate în memoria calculatorului, nu în fişiere de tip bază de

date. Extragerea datelor limitează utilizarea obiectelor Recordset la anumite grupuri de

date care îndeplinesc criteriile stabilite de utilizator. Expresiile sunt folosite pentru

calcularea valorilor cu datele respective(de exemplu, se poate calcula un total prin

înmulţirea preţului unitar cu cantitatea) şi pentru afişarea valorilor calculate ca şi când ar

fi un câmp în unul din tabele.

Introducerea şi editarea datelor înseamnă crearea şi implementarea unor

formulare pentru afişarea, introducerea şi editarea datelor ca alternativă la prezentarea

tabelară. Formularele permit preluarea de la aplicaţie a controlului asupra modului în care

sunt afişate datele. Introducerea datelor în formulare este o operaţie necesară în cazul

Page 3: Curs 4-Baze de Date(M. Acces)

aplicaţiilor pentru intranet şi Internet. Posibilitatea de tipărire a formularelor, de exemplu

a comenzilor şi facturilor, este în mod sigur o caracteristică foarte utilă pentru utilizatori.

Prezentarea datelor impune crearea de rapoarte în care să poată fi sintetizate

informaţiile din obiectele Recordset pe care le puteţi vedea, tipări şi publica pe Internet

sau într-un intranet. Capacitatea de realizare a unor rapoarte semnificative este scopul

final al oricărei aplicaţii pentru gestionarea bazeor de date.

Arhitectura Microsoft ACCESS

O bază de date ACCESS poate fi definită ca o colecţie de obiecte: tabele (table), cereri de

interogare (query), formulare (form), rapoarte (report), pagini Web (pages), comenzi macro

(macro) şi module (module).

Trebuie subliniată diferenţa majoră care există între Microsoft ACCESS si alte sisteme de

gestiune a bazelor de date. Astfel, în Visual FoxPro, prin baze de dale (database) se înţeleg doar

acele fişiere în care sunt stocate datele.

• Tabela (Table) este un obiect definit de utilizator în care sunt stocate datele primare

(expresia modelului relaţional).

• Formularul (Form) este un obiect care permite introducerea datelor, afişarea acestora sau

controlul întregii aplicaţii.

• Interogarea (Query) este un obiect care permite vizualizarea informaţiilor obţinute prin

prelucrarea datelor din una sau mai multe tabele şi/sau alte cereri de interogare.

• Raportul (Report) este un obiect care permite formatarea şi tipărirea informaţiilor obţinute

în urma consultării bazei de date sub formă de documente.

• Pagina Web de accesare a datelor (Pages) reprezintă un obiect care include un fişier HTML

şi alte fişiere suport în vederea furnizării accesului Ia date prin intermediul browser-elor Internet.

• Comanda Macro (Macro) reprezintă un obiect care conţine o definiţie structurată a uneia

sau mai multor acţiuni pe care ACCESS le realizează ca răspuns la un anumit eveniment.

Page 4: Curs 4-Baze de Date(M. Acces)

• Modulul (Module) reprezintă un obiect care conţine proceduri definite de utilizator şi scrise

în limbajul de programare Visual Basic.

Pentru toate funcţiile de bază din Access există cinci funcţii auxiliare:

Macrocomenzile sunt serii de acţiuni care realizează automatizarea operaţiilor

repetitive executate în bazele de date. Pentru a crea o macrocomandă în Access trebuie

să alegeţi dintr-o listă de acţiuni posibile acţiunile în ordinea în care vreţi să fie

efectuate de program. De exemplu, puteţi să folosiţi o macrocomandă pentru a deschide

un raport, pentru a tipării un raport, apoi pentru a închide raportul respectiv. În

versiunile anterioare ale programului Access, macrocomenzile au constituit în special

elemente pentru automatizarea operaţiilor în baza de date. În Access 2000,

macrocomenzile sunt folosite în special în special pentru realizarea compatibilităţii cu

bazele de date create în versiunile Access anterioare. Pentru bazele de date Access

2000, în vederea automatizării acţiunilor se vor folosi codurile Visual Basic for

Applications(VBA).

Modulele sunt funcţii şi proceduri scrise în limbajul de programare VBA.

Funcţiile VBA sunt folosite pentru efectuarea calculelor mai complexe decât cele care

Tabel

Tabel

Tabel

Interogare

Raport

Formular

Page 5: Curs 4-Baze de Date(M. Acces)

pot fi exprimate printr-o serie de simboluri matematice convenţionale sau pentru

efectuarea de calcule care impun luarea de decizii. Subprocedurile VBA sunt scrise

pentru efectuarea de operaţii care depăşesc posibilităţile unor acţiuni standard

executate prin macrocomenzi. Pentru a executa subprocedurile VBA, trebuie să

ataşaţi subprocedura la anumite evenimente care au loc atunci când un formular sau

un raport este obiectul avtiv. În Access 2000, puteţi să executaţi procedurile VBA şi

direct din modulul acestora.

Securitatea este reprezentată de funcţii incluse ca opţiuni în meniuri ţi în

subproceduri VBA. Cu ajutorul funcţiilor folosite într-un mediu multiutilizator puteţi să

le permiteţi ale altor utilizatori să vă folosească bazele de date. Puteţi să permiteţi accesul

unor grupuri de utilizatori sau unor utilizatori individuali şi puteţi să le limitaţi

capacitatea de a vedea sau a modifica total sau parţial tabelele din bazele de date.

Funcţia de tipărire vă permite să tipăriţi practic orice vedeţi în ferestra

programului Access. De pe bara cu instrumente puteţi să comandaţi tipărirea

codurilor VBA, nu însă şi a macrocomenzilor pe care le scrieţi.

Funcţiile pentru publicare permit distribuirea informaţiilor prin reţele intranet de

firmă şi în mediul public al Internet-ului, sub formă de pagini de Web. Access 2000

foloseşte şi pagini DAP(Data Access Pages), care vă permit să creaţi aplicaţii pentru

afişarea şi actualizarea datelor în pagini care folosesc limbajele DHTML(Dynamic

HTML) şi XML (eXtensible Markup Language).

Deschiderea unei baze de date pune la dispoziţia aplicaţiei conţinutul acesteia prin

fereastra Database. Puteţi să deschideţi numai o singură bază de date într-o şedinţă

obişnuită de lucru în Access. Scrierea codului VBA vă permite să lucraţi cu tabele din

mai multe baze de date deschise în Access folosind legarea(termenul folosit în

Access 2000 pentru anexare) tabelelor din alte baze de date.

Deschiderea unui tabel determină afişarea conţinutului acestuia în modul de

afişare Datasheet.

Deschiderea unei interogări determină deschidere tabelelor implicate, fără însă a le

afişa. Access execută apoi interogarea în aceste tabele pentru a crea un obiect

Page 6: Curs 4-Baze de Date(M. Acces)

Recordset tabelar. Modificările operate asupra datelor din obiectul Recordset

determină operarea modificărilor în datele din tabelele asociate cu interogarea

executată, dacă obiectul Recordset este actualizabil.

Deschiderea unui formular sau a unui raport determină în mod automat

deeschiderea tabelului sau a interogării asociate cu acesta. Formularele şi

rapoartele sunt asociate, de regulă, cu interogări, dar o interogare poate să fie

asociată şi cu un singur tabel.

Închiderea unei interogări determină şi închiderea tabelelor asociate.

2. Crearea obiectelor de tip tabel

Tabelele constituie obiectele fundamentale ale unei baze de date ACCESS. Într-un tabel se

stochează atât descrierea tabelei cât şi înregistrările de date. Gestiunea tabelelor (creare,

modificare, vizualizare, ştergere) a unei baze de date Access 2000 se poate realiza din secţiunea

Tables a ferestrei bazei de date (Database Window)

Crearea tabelelor.

Un tabel se poate crea în mai multe moduri:

alegând comanda Table din meniul Insert;

Page 7: Curs 4-Baze de Date(M. Acces)

prin acţionarea butonului de comandă New din fereastra Databases (după ce s-a

selectat secţiunea Tables);

Access va afişa pe ecran caseta de dialog de mai jos , care propune mai multe variante de

descriere a structurii unui tabel.

A. Design View este echivalentă cu acţionarea hyperlink-ului Create table in Design View.

Utilizatorul stabileşte absolut toţi parametrii necesari pentru descrierea structurii unui tabel:

numele câmpurilor, tipurile de date ale acestora, reguli de validare, etc. Fereastra Access de

descriere a tabelei (figura de mai jos ) este formată din două zone: zona a în care se definesc

câmpurile din structura tabelei, şi zona b în care sunt precizate proprietăţile acestora.

Page 8: Curs 4-Baze de Date(M. Acces)

Descrierea câmpurilor:

Numele câmpului (Field Name);

Numele unui câmp trebuie să respecte următoarele reguli:

• Poate să conţină litere (majuscule sau minuscule, sau ambele tipuri), cifre şi numeroase

caractere speciale;

• Poate să conţină maximum 64 de caractere;

• Este interzisă utilizarea caracterelor: punct (.), semnul exclamării (!), parantezele drepte ([]).

• Numele câmpului nu poate să înceapă cu un spaţiu.

In formarea numelui câmpului se recomandă:

• Să nu se utilizeze caracterul spaţiu; pentru îmbunătăţirea lizibilităţii numelui se poate înlocui

spaţiul cu caracterul de subliniere (_) sau se pot utiliza litere majuscule şi minuscule în acelaşi

nume;

• acesta poate să conţină orice literă, cifră, spaţii, etc.; caracterele interzise sunt: [],.!’

Tipul de date al câmpului (Data Type); utilizatorul are la dispoziţie nouă tipuri de date de

bază (tabelul de mai jos), pentru unele dintre ele fiind disponibile subtipuri de date. În funcţie de

necesităţi; subtipurile se configurează în zona de jos a ferestrei (secţiunea General);

Proprietăţile câmpului (Field Properties)

Tipurile şi subtipurile de date Access sunt prezentate în tabelul de mai jos:

Page 9: Curs 4-Baze de Date(M. Acces)

Text Este un tip de date alfanumeric, de lungime maximă 255.

Implicit, Access propune dimensiunea (proprietatea Field

Size) 50 pentru un câmp de tip Text. Un câmp de acest tip

poate să conţină practic orice caracter.

Memo Este un tip de date alfanumeric (poate conţine orice

caracter), în lungime maxima de 65535 caractere.

Utilizatorul nu poate configura o dimensiune mai mică

decât aceasta.

Number

(tip de date

numeric)

Byte Tip de date întreg a cărui plajă de valori admisă

este între O şi 255. Spaţiul ocupat de un

asemenea câmp este de 1 byte.

Integer Tip de date întreg cu plaja de

valori admisă între -32768 şi +32768. Ocupă

2 bytes.

Long Integer Tip de date întreg de dimensiuni foarte mari cu

plaja de valori admisă -

2147483648 si +2147483648 . Ocupă 4 bytes.

Single Tip de date cu plaja de valori admisă între -3,402823x1038

până la –1,401298X10-45 pentru numere negative, iar

pentru numere pozitive între

1,401298x10-45 până la 3,402823x1038. Ocupă 4 bytes şi are

precizie de 7 zecimale.

Double Tip de date de dimensiuni foarte mari cu plaja de valori

admisă între -1,79769313486231x10308 până la -

4,94065645841247x10-324 pentru numere negative, iar

pentru numere pozitive între 4,94065645841247x10-324

pana la 1,79769313486231 x10308. Ocupă 8 bytes şi are

precizie de 15 zecimale.

Page 10: Curs 4-Baze de Date(M. Acces)

Replication lD Tip de date GUID (Global unique identifier). Ocupă 16

bytes. Sunt utile pentru câmpurile care sunt (sau fac parte

dintr-o) cheie externă ale caror chei primare sunt de tipul

AutoNumber, ReplicationID.

Decimal Tip de date cu plaja de valori admisă

între -1028 –1 şi +1028-1. Ocupă 12 bytes şi precizie

(proprietatea Precision) maximă de 28.

Date/Time Memorează date calendaristice, inclusiv ora în formate

predefinite. Datele calendaristice admise sunt între anul

100 şi 9999. Formatele de afişare se stabilesc în

proprietatea Format. Ocupă 8 bytes.

Curency Tip de date numeric, care operează cu maxim patru

zecimale şi maxim 15 pozitii in stinga punctului zecimal.

Ocupa 8 bytes.

AutoNumber LongInteger Tip de date care îşi atribuie automat valori, la crearea unei

noi înregistrări. Valorile atribuite pot fi secvenţiale

(proprietatea New Values=Increment) sau aleatoare

(proprietatea New Values=Random). Câmpurile de tip

AutoNumber, nu pot fi actualizate. Ocupa 4 bytes.

ReplictionID Tip de date care îşi atribuie automat valori de tip GUID.

Exemplu de valoare GUID: {EODC2C27-EDE8-

412A-B1C4-AF69021A1365}. Ocupa 16 bytes.

Yes/No Tip de date logic, care poate lua doar două valori: adevărat

(valoarea -1)sau fals (valoarea 0). Ocupa 1 bit.

OLE Object Tip de date care poate să includă imagini, documente

WORD, foi de calcul EXCEL, etc. Dimensiunea maximă

este de 1 GB, cu condiţia să existe acest spaţiu pe disk. Nu

poate fi cheie şi nici nu poate fi index.

Hyperlynk Şir de caractere, care poate memora o adresă WEB, ce va fi

utilizată sub formă de hyperiink. Este formată din trei părţi:

textul de afişat, adresa şi subadresa. Dimensiunea maximă

Page 11: Curs 4-Baze de Date(M. Acces)

a fiecărei părţi este de 2048 caractere.

Lookup

Wizard

Câmpuri ale căror valori vor fi completate automat prin

selecţia dintr-o listă simplă de valori (List Box) sau dintr-o

listă derulantă de valori (Combo Box)

Comentarii (Description), este o proprietate opţională, unde utilizatorul poate introduce sub

formă de şiruri de caractere diverse informaţii cu privire la un câmp.

In zona b a ferestrei (General şi Lookup) se pot stabili valori pentru două categorii de

sproprietăţi:

=> proprietăţi pe care le au toate câmpurile;

proprietăţi specifice anumitor câmpuri, în funcţie de tipul de date.

Proprietăţi din categoria General:

Field Size - stabileşte dimensiunea maximă admisă pentru tipurile de date Number, AutoNumber,

Text. Pentru primele două, valorile maxime admise sunt cele precizate în tabelul 4.1, iar pentru

tipul Text o valoare între O şi 255.

Decimal Places - stabileşte numărul de zecimale utilizat pentru afişarea unui număr. Valorile

posibile sunt Auto (numărul este afişat cu atâtea zecimale cu câte a fost calculat; nu sunt afişate

mai mult de 15 zecimale) sau un număr între O şi 75. Numărul de zecimale afişat poate fi

influenţat şi din proprietatea Format.

Format - stabileşte formatul de afişare al unui câmp. Aceste formate se pot defini de utilizator

cu ajutorul unor secvenţe speciale de caractere sau pentru unele tipuri de date există deja

predefinite formate uzuale.

Pe lângă aceste formate predefinite se mai pot utiliza anumite combinaţii speciale de caractere.

Pentru câmpurile numerice formatul de afişare se împarte în patru zone separate prin caracterul

„;" :

prima zonă se referă la modul de afişare al numerelor pozitive;

a doua zonă se referă la modul de afişare al numerelor negative;

a treia zonă se referă la modul de afişare al numărului zero; <=>

a patra zonă se referă la modul de afişare al valorii Nuli; Caracterele ce se pot

utiliza într-un format de afişare al unui câmp numeric:

• .- separatorul zecimal este punctul;

Page 12: Curs 4-Baze de Date(M. Acces)

• , - separatorul miilor este virgula;

• O - sunt afişate cifre sau zero;

• # - sunt afişate cifre sau spaţiu;

• $ - este afişat şi caracterul $;

• % - numărul este înmulţit cu 100 şi alături este afişat caracterul procent (%);

• E+, E-, e+, e- stabileşte formate de afişare în format ştiinţific.

Formatele predefinite de afişare pentru câmpurile de tip Date/Time.

Caractere care se pot utiliza într-un câmp de tip Date/Time:

: - separator pentru timp;

/ - separator pentru data calendaristică;

d - ziua este afişată sub formă de valori de la l la 31;

dd - ziua este afişată sub formă de valori de la 01 la 31;

ddd - sunt afişate numai primele trei caractere din numele unei zile;

dddd - este afişat numele complet al unei zile;

• w - ziua este afişată ca valoare din săptămână, de la l la 7;

• ww - este afişat numărul săptămânii în an, de la l la 53;

• m - este afişat numărul lunii din an, de la l la 12;

• mm - este afişat numărul lunii din an de la 01 la 12;

• mmm - sunt afişate numai primele trei caractere din numele unei luni;

• mmmm - este afişat numele complet al lunii;

• y - numărul zilei din an;

• yy - sunt afişate ultimele două caractere din an de la 01 la 99;

• yyy – anul este afişat complet de la 100 la 9999;

• q - data este afişată ca numărul trimestrului din an, de la l la 4;

• h - ora este afişată prin numere de la O la 23;

• hh - ora este afişată prin numere de la 00 la 23;

• n - minutele sunt afişate prin numere de la O la 59;

• nn - minutele sunt afişate prin numere de la 00 la 59;

• s - secundele sunt afişate prin numere de la O la 59;

• ss - secundele sunt afişate prin numere de la 00 la 59;

• AM/PM sau am/pm sau A/P sau a/p - este afişat AM, am, A sau a pentru primele 12 ore ale

zilei şi PM, pm, P sau p pentru ultimele 12 ore din zi;

Page 13: Curs 4-Baze de Date(M. Acces)

Exemple:

"Data: "dd/mm/yy" săptămâna: "ww afişează Data: 01/06/01 săptămâna: 22

dddd/mmmm/yyyy afişează vineri/iunie/2001 ”ORA:"hh:nn:ssAM/PM afişează

ORA:12:00:OOAM

Pe lângă aceste formate predefinite, utilizatorul îşi poate crea propriile formate pentru câmpurile

logice într-o structură formată din trei zone separate prin caracterul „;" :

- In prima zonă, se poate stabili un text care nu are influenţă asupra conţinutului câmpului;

- A doua zonă este utilizată pentru a stabili un text afişat în cazul în care valoarea

memorată este adevărat (True);

- A treia zonă este utilizată pentru textul afişat în cazul în care valoarea memorată este

false.

In cazul câmpurilor de tip logic, efectul formatelor definite de utilizator se poate observa numai

dacă se utilizează controale de tip casetă de text (Text Box).

În cazul câmpurilor de tip Text sau Memo, nu există formate predefinite de afişare, însă prin

intermediul unor caractere, utilizatorul îşi poate stabili propriile formate. Aceste formate se

stabilesc sub forma a două zone:

- Prima zonă se utilizează pentru a stabili formatul propriu-zis de afişare al conţinutului

câmpului;

- A doua zonă, pentru stabilirea formatului de afişare în cazul valorilor vide sau Nuli.

Caractere ce se pot utiliza pentru stabilirea formatelor de afişare pentru câmpurile de tip Text sau

Memo:

• @ - este obligatorie introducerea unui caracter sau spaţiu;

• & - nu este obligatorie introducerea unui caracter;

• > - transformă toate caracterele în majuscule, indiferent de modul de tastare;

• < - transformă toate caracterele în minuscule, indiferent de modul de tastare;

• Exemple:

• <;"Nu exista text" va afişa şirul introdus cu litere minuscule, iar în cazul în care nu este

introdus un şir va afişa textul “Nu exista text”.

Aşa cum s-a amintit, pe lângă aceste formate de caractere predefinite se pot utiliza şi secvenţe

speciale de caractere, care pot fi utilizate după necesităţi. Sunt caractere care se pot utiliza pentru

orice tip de câmp şi caractere care se pot utiliza numai pentru anumite tipuri de date.

Caractere care se pot utiliza în orice tip de câmp :

Page 14: Curs 4-Baze de Date(M. Acces)

• "şir caractere" - afişează şirul de caractere dintre ghilimele împreună cu conţinutul

câmpului;

• ! - aliniază conţinutul unui câmp la stânga, în loc de aliniere a dreapta;

• [Culoare] - afişează conţinutul unui câmp în culoarea precizată;

• (space)

Caption - stabileşte un şir de caractere care va fi afişat în titlul unei coloane, în momentul

introducerii datelor; dacă această proprietate nu are nici o valoare, şirul afişat în titlul unei

coloane este chiar numele câmpului; valoarea acestei proprietăţi nu are nici o influentă asupra

numelui câmpului în utilizarea sa în interogări, VBA, etc. Exemplu: dacă numele unui câmp este

DenProd, şi în proprietatea Caption se scrie Denumire Produs.

Default Value - stabileşte o valoare implicită care este propusă în momentul în care se introduc

date într-un tabel; se recomandă^n cazul în care există o valoare preponderentă a conţinutului

unui câmp; în cazul în care utilizatorul nu introduce o altă valoare în câmpul respectiv, valoarea

din această proprietate va fi memorată în conţinutul acestuia. Exemplu: pentru un câmp care

memorează valoarea TVA, ţinând cont că pentru majoritatea produselor aceasta este 19%, pentru

a uşura munca de culegere date, este recomandat ca în proprietatea Default Value să se

stabilească această valoare. La introducerea datelor, dacă un produs are această cotă, atunci

valoarea sa nu se mai tastează.

Input Mask - stabileşte un format (mască, şablon) de introducere a datelor pentru un anumit

câmp. La fel ca în cazul proprietăţii Format, există o serie de caractere prin care se stabileşte

acest format de introducere a datelor, în cazul în care se utilizează ambele proprietăţi,

proprietatea Format are prioritate faţă de proprietatea Input Mask.

Proprietatea Input Mask pune la dispoziţia utilizatorului câteva măşti predefinite dar şi

posibilitatea definirii unor măşti personalizate. Măştile personalizate se definesc sub forma a trei

zone separate prin caracterul punct şi virgulă (;):

- Prima zonă se utilizează pentru definirea propriu-zisă a formatului de introducere;

- A doua zonă, se utilizează pentru a specifica dacă se memorează şi caracterele care fac

parte din şablonul de introducere sau nu; valoarea zero stabileşte că se memorează

inclusiv caracterele din definiţia şablonului, iar valoarea unu inhibă această posibilitate;

- A treia zonă se utilizează pentru a specifica un caracter, care este afişat într-o poziţie din

şablon.

Caractere ce se pot utiliza pentru definirea unui şablon de introducere a datelor:

Page 15: Curs 4-Baze de Date(M. Acces)

• 0 - sunt permise toate cifrele de la 0 la 9, fără semn; nu se permite conţinut incomplet al

câmpului, dacă se utilizează acest simbol. Exemplu: o mască definită sub forma 000000, va afişa

la introducere ______ şi nu va permite decât

introducerea a exact şase cifre.

• 9 - sunt permise toate cifrele de la 0 la 9, fără semn, inclusiv spaţiu; este permis conţinutul

incomplet;

• # - sunt permise cifrele de la 0 la 9, inclusiv spaţiu, semn; este permis conţinutul incomplet;

• L - sunt permise literele de la A la Z; nu este permis conţinutul incomplet al câmpului;

• ? - sunt permise literele de la A la Z şi conţinutul incomplet;

• A - sunt permise toate literele şi cifrele; nu este permis conţinutul incomplet al câmpului;

• a - sunt permise toate literele şi conţinut incomplet al câmpului;

• & - orice caracter sau spaţiu; nu este permis conţinutul incomplet al câmpului;

• C - orice caracter sau spaţiu şi conţinut incomplet al câmpului;

• < - caracterele introduse sunt convertite în minuscule;

• > - caracterele introduse sunt convertite în majuscule;

• ., - separatorul pentru zecimale, pentru mii;

• : ; - / separatori pentru date calendaristice şi pentru timp;

• password - afişează caracterul asterisc (*) în momentul introducerii de date;

• \ - afişează un caracter în şablon fără a determina memorarea acestuia în conţinutul câmpului.

Exemplu: \O\R\A\:00:00:00 va afişa şi cuvântul ORA: fără a fi memorat. De remarcat că Access

transformă automat secvenţa \O\R\A\: în "ORA:".

Exemplu de alte şabloane:

• "(040)-"00\-00000## este un posibil şablon pentru introducerea unui număr de telefon din

România; la introducere va afişa: (040)-_-____. Prin utilizarea caracterului O, nu se permit

prefixe decât din două cifre, şi numere de telefon de minim 5 cifre, iar prin utilizarea caracterului

# sunt permise numere din 6 şi 7 cifre.

>AAAA<aaaa defineşte un format de introducere în care primele 4 caractere sunt obligatorii şi

sunt transformate automat în majuscule, iar următoarele 4 sunt opţionale şi transformate automat

în minuscule.

NOTA: utilizarea proprietăţii Input Mask inhibă tasta Insert, singurul mod de lucru fiind cel de

suprascriere.

Page 16: Curs 4-Baze de Date(M. Acces)

Validation Rule - defineşte o regulă de validare pentru un câmp, practic o expresie ce se va testa

pentru conţinutul introdus într-un câmp. Regulile de validare se testează după introducerea unei

valori într-un câmp sau în momentul în care se încearcă salvarea unei înregistrări (în momentul

în care se încearcă introducerea unei înregistrări noi, la trecerea de la o înregistrare la alta, sau la

salvarea explicită a acesteia) pentru câmpurile nevizitate de utilizator. Dacă o regulă de validare

a unui câmp nu se verifică, înregistrarea nu se poate salva decât dacă se corectează conţinutul

câmpului în aşa fel încât să se verifice regula de validare stabilită. Expresia pentru această

proprietate se poate scrie şi în mod asistat cu ajutorul ferestrei Expression Builder, ce poate fi

invocată din butonul S.

Numele câmpurilor dintr-o expresie Validation Rule trebuie scris între caracterele []. O expresie

Validation Rule la nivel de câmp nu poate referi alte câmpuri, decât cel curent. Se pot utiliza

funcţii Access, constante, operatori, etc.

Exemple de reguli de validare pentru un câmp de tip Number, Integer:

• >100 and <=200 stabileşte valorile posibile între 101 şi 200

• oNull sau is Not Null - câmpul trebuie să conţină o valoare. Exemple de reguli de validare

pentru un câmp de tip Text:

• "Călăraşi" Or "Bucureşti" Or "Braşov" sau In("Calarasi"; "Bucureşti"; "Braşov") - valoarea

câmpului nu poate fi decât una din cele trei.

• Mid([nume];l;l)="A" - primul caracter introdus în câmpul nume nu poate fi

decât A sau a.

Exemple de reguli de validare pentru un câmp de tip Date/Time:

• >=Date() - data introdusă trebuie să fie mai mare sau egală cu data sistemului.

• Year([data factura])=Year(Date()) - anul din câmpul data factura trebuie să fie în

momentul introducerii, acelaşi cu cel din data sistemului.

Validation Text - defineşte un mesaj de atenţionare care va fi afişat în momentul în care regula

de validare definită în proprietatea Validation Rule este încălcată.

Required - poate lua valoarea Yes sau No, corespunzătoare valorilor logice adevărat (True) sau

fals (False) şi stabileşte dacă valoarea unui câmp este obligatoriu (Yes) de introdus sau nu (No).

Pentru câmpurile de tip Text, Memo, Hyperlink este bine să se utilizeze această proprietate în

strânsă legătură cu proprietatea Allow Zero Length.

Page 17: Curs 4-Baze de Date(M. Acces)

Allow Zero Length - stabileşte dacă este permisă introducerea unui şir de lungime zero (Yes)

sau nu (No) într-un câmp de tip Text, Memo sau Hyperlink. Variantele de memorare în condiţiile

utilizării proprietăţilor Required şi Allow Zero Length sunt prezentate în tabelul 4.2. Tabel 4.2.

Tabel 4.2.

Valoarea din

proprietatea

Allow zero length

Valoarea

din

proprietatea

Required

Actiunea utilizatorului Valoarea memorata

No No

Enter Null

Bara spatiu Null

Sir de lungime 0 Nu este permis

Valoarea din

proprietatea Alow

zero length

Valoarea din

proprietatea

Required

Actiuneanea

utilizatorului

Valoarea Memorata

No Yes

Enter Null

Bara de spaţiu Null

Şir de lungime 0 Nu este permis

Yes No

Enter Null

Bara de spatiu Null

Şir de lungime 0 Şir de lungime 0

No Yes

Enter Nu este permis

Bara de spaţiu Nu este permis

Şir de lungime 0 Nu este permis

Yes No

Enter Nu este permis

Bara de spaţiu Şir de lungime 0

Şir de lungime 0 Şir de lungime 0

Indexed - stabileşte un câmp drept index. Valori posibile:

No - neindexat

Yes (Duplicates OK) - index; sunt permise valori duplicate pe câmpul index;

Yes (No Duplicates) - index; nu sunt permise valori duplicate pe acest câmp.

Page 18: Curs 4-Baze de Date(M. Acces)

Definirea cheii primare şi a indecşilor

Orice tabelă trebuie să posede o cheie primară (Primary Key), adică un câmp sau un grup de

câmpuri care identifică în mod unic fiecare înregistrare. Dacă utilizatorul nu stabileşte o cheie

primară, Access stabileşte una în mod implicit creând un câmp de tip AutoNumber care va

conţine un număr unic pentru fiecare înregistrare. Deşi Access creează în mod implicit o cheie

primară, următoarele raţiuni recomandă utilizatorului să definească o cheie primară:

• cheia primară este un index.

• indecşii realizează o clasificare a datelor după unul sau mai multe câmpuri ceea ce

are drept consecinţă creşterea vitezei de realizare a interogărilor.

• la fiecare adăugare a unei noi înregistrări, Access nu autorizează înregistrări duble

pentru câmpul cheie primară.

• Microsoft Access afişează datele în ordinea cheii primare.

Crearea unei chei primare unice este denumită în lumea bazelor de date asigurarea integrităţii de

entitate.

În afară de indecşi pe un singur câmp se pot defini şi indecşi multipli, care funcţionează

pe mai multe câmpuri simultan. Aceştia se pot defini/modifica numai în fereastra Indexes. în

aceeaşi fereastră se pot gestiona şi indecşii pe un singur câmp. Fereastra cu indecşii unei tabele

(Indexes) se activează din meniul View, opţiunea Indexes.

Pentru definirea unui index (sau pentru o cheie primară) format din mai multe câmpuri,

se scrie numele indexului in coloana Index Name, iar în coloana Field Name se aleg câmpurile

care formează indexul sau cheia primară. Coloana Sort Order indică modul de ordonare al

datelor în index, în cazul indecşilor ce includ mai multe câmpuri, valoarea proprietăţii Indexed,

pentru fiecare câmp în parte este No.

Proprietăţile din fereastra Indexes:

• Primary - valoarea Yes indică faptul că indexul este cheie primară;

• Unique - valoarea Yes indică faptul că indexul va avea valori unice, nefiind permise

duplicatele; pentru o cheie primară, această proprietate are obligatoriu valoarea Yes.

• Ignore Nulls - valoarea Yes indică faptul că sunt permise valorile Nuli într-un index; pentru

o cheie primară, această proprietate are obligatoriu valoarea No.

Exemplu: într-un tabel care va memora, facturi, ce are drept cheie

Page 19: Curs 4-Baze de Date(M. Acces)

primară un câmp generic ID de tip AutoNumber, se stabileşte un index numit Factura, care este

format din câmpurile Serie Factura şi Număr Factura. Proprietatea Unique va avea valoarea Yes

pentru acesta deoarece seria împreună cu numărul unei facturi sunt unice la nivel naţional. Un alt

index se defineşte pe câmpul Data Factura, care nu trebuie sa aibă valori unice.

Pe lângă modalitatea descrisă anterior, cheia primară a unui tabel se mai poate defini astfel:

• Dacă este vorba de o cheie formată dintr-un singur câmp, se poziţionează

cursorul în câmpul respectiv şi se acţionează butonul: din bara de instrumente Table Design;

• Pentru chei primare formate din mai multe câmpuri, se selectează câmpurile din bordura

ferestrei de proiectare şi se acţionează butonul menţionat anterior.

NOTĂ: O cheie externă nu se defineşte explicit nicăieri în Access sub noţiunea de cheie

externă, ea fiind stabilită prin definirea relaţiilor dintre tabele. Pentru creşterea

performanţelor se recomandă definirea de indecşi pentru fiecare cheie externă.

B. Datasheet View este echivalentă cu acţionarea hyperlink-ului Create table by entering

data. în această variantă, Access propune o fereastră de introducere date sub forma unui

tabel cu nume de câmpuri generice Fieldl, Field2....FieldlO. Inserarea de noi câmpuri pe

lângă cele zece propuse implicit, se realizează din meniul Insert-Column.

Page 20: Curs 4-Baze de Date(M. Acces)

• Schimbarea numelor implicite ale coloanelor se realizează din meniul Format-Rename

Columnă funcţie de datele introduse în celule, la salvarea tabelului, Access stabileşte ce tip de

date va aloca fiecărui câmp.

Dacă, de exemplu, coloana unui câmp conţine celule cu numere şi o celulă cu un şir de

caractere, Access, va alege pentru acel câmp tipul de dale Text. Dacă o coloană conţine numai

numere, Access va alege un tip de date numeric, care să satisfacă toate valorile existente în

celulele câmpului.

B. Table Wizard este echivalentă cu acţionarea hyperlink-ului Create table by using wizard.

Alegerea acestei variante are ca efect activarea unei ferestre în care se propun diverse modele de

tabele cu o mare varietate de câmpuri, toate denumirile fiind în limba engleză. Pentru un

utilizator care doreşte crearea unor tabele în limba română, deşi acest instrument wizard prin

definiţie se doreşte a fi de mare ajutor, alegerea sa este total neinspirată. Probabil dacă variantele

Microsoft Office localizate vor conţine şi Access în limba română, atunci acest nstrument se va

dovedi de un real folos pentru utilizatorii români.

C. Import Table, permite importul tabelei dintr-o altă aplicaţie Access, Oracle, Excel, etc.

D. Link table, permite includere prin ataşare (legare) dintr-o altă bază de date.

Proprietăţi ale unui tabel

Pentru a vizualiza fereastra cu proprietăţi a unui tabel se activează opţiunea.

Properties din meniul View, sau se acţionează butonul din bara de instrumente Table

Design.

Validation Rule - are aceeaşi semnificaţie ca proprietatea cu acelaşi nume ataşată câmpurilor,

numai că operează la nivel de tabel, în momentul în care se încearcă salvarea unei înregistrări (în

momentul în care se încearcă introducerea unei înregistrări noi, la trecerea de la o înregistrare la

Page 21: Curs 4-Baze de Date(M. Acces)

alta, sau la salvarea explicită a acesteia), dacă nu se verifică această regulă de validare, nu se va

putea salva înregistrarea. Faţă de aceeaşi proprietate la nivel de câmp, la nivel de tabel, se pot

referi mai multe câmpuri ale tabelului în expresia care defineşte proprietatea.

Exemplu de regulă de validare pentru un tabel care are în componenţă între altele următoarele

câmpuri: SimbolCont, Soldinitialdebitor, SoldinitialCreditor. Regula impune ca un cont să nu

aibă simultan soldul iniţial debitor sau creditor în acelaşi timp.

(Not IsNull([soldinitialdebitor]) Imp [soldinitialcreditor]=0) Or (Not lsNull([soldinitialcreditor])

Imp [soldinitialdebitor]=0)

Validation Text - afişează un mesaj în momentul în care regula de validare definită la nivel de

tabel, este testată şi nu se verifică.

Filter - stabileşte un criteriu în funcţie de care vor fi selectate înregistrările în fereastra de

introducere date. Pentru a activa/dezactiva filtrul trebuie acţionat butonul Apply Filter

sau din meniul Records, opţiunea Apply Filter/Sort respectiv Remove Filter/Sort.

Exemplu: [Data factura]>#l/l/2001# va afişa toate facturile de după data 1/1/2001.

Order By - stabileşte ordinea de afişare a înregistrărilor, în momentul introducerii datelor.

Numele câmpurilor trebuie precizate între [].

Exemplu: [Serie factura],[Număr factura].

Salvarea tabelelor

Tabelele Access se pot salva în mai multe moduri:

• din meniul File se alege opţiunea Save;

• se execută clic pe butonul Save de pe bara cu instrumente de lucru;

• se execută evenimentul clic pe butonul de închidere a ferestrei de descriere a tabelei

• din meniul de control se alege opţiunea Glose,

Indiferent de modul de salvare, Access afişează caseta de dialog Save As care solicită furnizarea

unui nume pentru tabelă. Utilizatorul introduce numele tabelei în caseta de text Table Name şi

apoi execută clic pe butonul OK. Numele tabelelor pot avea până la 64 de caractere şi trebuie să

respecte convenţiile Access descrise pentru formarea numelor de câmpuri.

1. Definirea relaţiilor dintre tabele in Access. Pentru a avea acces simultan la datele din mai multe tabele ale aceleiaşi baze de date este

necesar să se definească relaţiile standard dintre aceste tabele. Relaţiile între tabele se definesc pe

baza valorilor unui câmp dintr-o tabelă utilizat drept cheie primară şi valorilor aceluiaşi câmp

Page 22: Curs 4-Baze de Date(M. Acces)

dintr-o altă tabelă, unde este utilizat drept cheie externă. Access impune existenţa aceluiaşi tip

de date pentru câmpurile care participă la o relaţie, în cazul câmpului de tip Number

proprietatea Field Size a celor două câmpuri trebuie să fie identică. Relaţia dintre câmpurile de

tip Text trebuie, în principiu, să folosească câmpuri de aceeaşi lungime. Se recomandă ca

stabilirea relaţiilor între tabele să se facă înainte de înregistrarea datelor.

În S.G.B.D. Access există următoarele posibilităţi de realizare a relaţiilor dintre tabele:

• Relaţia 1-1 (one-to-one sau unu la unu) este cea mai simplă relaţie între două

tabele, în această relaţie, unei valori a câmpului cheie principală dintr-o tabelă îi corespunde o

singură valoare din câmpul folosit drept cheie externă din cealaltă tabelă. Altfel spus, unei

înregistrări din tabela aflată în partea stângă a relaţiei îi corespunde o singură înregistrare din

tabela aflată în partea dreaptă a relaţiei. Tabelele aflate într-o relaţie one-to-one se pot combina

într-o singură tabelă, în care apar toate câmpurile celor două tabele.

• Relaţia 1-n (one-to-many sau unul la mai mulţi) constituie tipul cel mai răspândit

de relaţii. Conform acestei relaţii unei înregistrări din tabela aflată în partea stângă a relaţiei îi

corespund două sau mai multe înregistrări din tabela aflată în partea dreaptă a relaţiei. Asocierea

se bazează pe un câmp cheie principală unic într-o tabelă şi un câmp cheie externă din cealaltă

tabelă care admite valori duplicate.

• Relaţia n-1 (many-to-one sau mai mulţi la unul) este opusă relaţiei 1-n. Pentru a

crea relaţia many-to-one este suficient să se inverseze relaţia one-to-many. De aceea, se spune

că relaţia many-to-one este reflexivă, adică relaţia many-to-om este reflexia relaţiei

corespondente one-to-many. Dacă se selectează o înregistrare din tabela din partea many a

relaţiei se poate afla înregistrarea care corespunde cheii sale externe din tabela din partea one a

relaţiei. Relaţiile n-1 nu sunt bazate pe câmpuri cheie primară din nici una dintre cele două

tabele.

• Relaţia m-n (many-to-many sau mulţi la mai mulţi) nu poate fi exprimată ca o

simplă relaţie între două tabele. Relaţia many-to-many se poate exprima prin intermediul unei a

treia tabele care are relaţii one-to-many şi many-to-one cu cele două tabele.

Pe lângă stabilirea relaţiilor între tabelele unei baze de date, Access permite şi

specificarea unor reguli care forţează integritatea datelor. Aceste reguli se numesc restricţii de

integritate referenţială; ele permit să se conserve intacte relaţiile între tabele într-un sistem de

gestiune a unei baze de date relaţionale.

Page 23: Curs 4-Baze de Date(M. Acces)

Integritatea referenţială funcţionează după câmpul cheie. Acest sistem verifică în

mod continuu câmpul cheie, primară şi străină, la fiecare operaţie de adăugare, ştergere

sau modificare a unei înregistrări. Dacă o schimbare a unei chei afectează legătura între

tabele, sistemul avertizează că se violează regulile de integritate referenţială. Atunci când

două tabele sunt legate printr-o relaţie, o tabelă se numeşte părinte şi cealaltă se numeşte copil.

Acest sistem este cunoscut sub numele de relaţie părinte-copil. Integritatea referenţială

garantează că nu vor exista înregistrări orfane, adică,înregistrare copil fără o înregistrare părinte.

Capacitatea de a asigura în mod automat integritatea referenţială este o caracteristică

importantă a programului Access.

Definirea legăturilor dintre tabele se realizează din meniul Tools-Relationships, acesta

activând un panou de editare vizuală a acestora.

Pentru a putea defini o legătură între două tabele, trebuie să existe compatibilitate între tipul de date al cheu primare şi cel al cheii externe corespunzătoare. După plasarea tuturor tabelelor în panoul de editare, definirea propriu-zisă a unei relaţii se realizează prin drag-and-drop (selectare şi glisare) dinspre cheia primară a unei tabele spre o cheia externă corespunzătoare sau invers. După realizarea acestei operaţii finalizarea definirii unei legături se realizează în fereastra din figura următoare unde este prezentată definirea unei relaţii între tabelul Operaţii (cheie primarăCodOperatie) şi tabelul OperatiiEfectuate (cheie externă CodOperatie).

Page 24: Curs 4-Baze de Date(M. Acces)

Crearea legaturilor

Dacă o cheie este formată din mai multe câmpuri, acestea se editează corespunzător în panoul

Edil Relationship (Figura de mai sus ).

Opţiunile din fereastra Edit Relationships au următoarea semnificaţie:

• Enforce Referenţial Integrity - defineşte o restricţie de integritate referenţială. Nu se

permite actualizarea valorii unei chei externe, dacă această valoare nu există deja în tabelul unde

aceasta este cheie primară.

Page 25: Curs 4-Baze de Date(M. Acces)

• Cascade Update Related Fields - actualizarea valorii unei chei primare dintr-un tabel se

propagă şi în înregistrările din tabelele unde aceasta este cheie externă.

• Cascade Delete Related Fields - ştergerea valorii unei chei primare, are ca efect şi ştergerea

înregistrărilor din tabelele unde aceasta este cheie externă.

In caseta Relationship Type sunt prezentate tipurile de legături care pot exista între două

tabele: One to One- 1-1; One to Many - l -n

Dacă în această casetă este afişat mesajul Indeterminate, înseamnă că tipul de relaţie nu

poate fi definit, cea mai probabilă eroare fiind incompatibilitatea între tipul de date al cheii

primare şi cel al cheii externe, sau inexistenţa unei chei primare în relaţia respectivă.

Butonul de comandă Join Type permite şi definirea unor tipuri de relaţii particulare între tabele,

aşa cum se observă din figura 4.10.

Figura 4. 10

Variantele 2 şi 3 permit utilizarea implicită în interogări a join-urilor externe de tip

LEFT şi RIGHT, care presupun într-o interogare luarea în considerare a tuturor înregistrărilor

dintr-un tabel, indiferent dacă au sau nu înregistrări corespondente după câmpul (câmpurile) de

legătură în celalalt tabel, în exemplul de legătură prezentat în Figura 4. 10, este posibilă o

interogare între cele două tabele, în care vor fi luate în considerare toate înregistrările din tabelul

Operaţii, indiferent dacă au sau nu corespondent în tabelul OperatiiEfectuate.

Exemple:

Promovabilitatea studentilor.

Page 26: Curs 4-Baze de Date(M. Acces)

Policlinica