Sunteți pe pagina 1din 27

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
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
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.
• Modulul (Module) reprezintă un obiect care conţine proceduri definite de utilizator şi scrise
în limbajul de programare Visual Basic.

Tabel Tabel Tabel

Interogare

Formular Raport

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
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
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;
• 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.

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:

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 Byte Tip de date întreg a cărui plajă de valori admisă
(tip de date este între O şi 255. Spaţiul ocupat de un
numeric) 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.
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ă
a fiecărei părţi este de 2048 caractere.
Lookup Câmpuri ale căror valori vor fi completate automat prin
Wizard 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;
• , - 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;
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 :
• "ş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:
• 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.
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.
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 Valoarea Actiunea utilizatorului Valoarea memorata
proprietatea din
Allow zero length proprietatea
Required
Enter Null
No No Bara spatiu Null
Sir de lungime 0 Nu este permis
Valoarea din Valoarea din Actiuneanea Valoarea Memorata
proprietatea Alow proprietatea utilizatorului
zero length Required
Enter Null
Bara de spaţiu Null
No Yes
Şir de lungime 0 Nu este permis

Enter Null
Bara de spatiu Null
Yes No
Şir de lungime 0 Şir de lungime 0
Enter Nu este permis
Bara de spaţiu Nu este permis
No Yes
Şir de lungime 0 Nu este permis
Enter Nu este permis
Bara de spaţiu Şir de lungime 0
Yes No
Ş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.

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

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.
• 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
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
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.
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).
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ă.
• 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.

Policlinica