Baze de date -Microsoft Access. Curs 1 – SGBD-ul MICROSOFT ACCESS ACCESS 1. Noţiuni introductive despre Access. 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. Princi Principal palul ul motiv motiv al succes succesulu uluii progra programul mului ui Access Access este este faptul faptul că aduce 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 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. client/server. Pentru a putea fi considerată un sistem complet pentru gestionarea bazelor de date relaţionale(relational 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 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 relaţi ţiii într întree date date,, în vede vedere reaa creă creări riii unor unor tabe tabele le temp tempor orar are, e, stoc stocar area ea în memo memori riaa 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 îndepline îndeplinesc sc criteriil criteriilee stabilit stabilitee de util utilizat izator or.. Expresiile sunt folosite folosite pentru 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. Intr Introdu oducer cerea ea şi editar editarea ea datelo datelor r
înse înseam amnă nă crea creare reaa şi im impl plem emen enta tare reaa unor 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 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 d e date. Astfel, în Visual Visual FoxPro, prin baze de dale (database) se înţeleg doar acele fişiere în care sunt stocate datele.
• Tabela (Table) (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ă 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 elem elemen ente te pent pentru ru auto automa mati tiza zare reaa oper operaţ aţii iilo lorr în baza baza de date date.. În Acce Access ss 2000 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, 2000, în vedere vedereaa automa automatiz tizări ăriii acţiun acţiunilo ilorr se vor folosi folosi coduri codurile le Visual isual Basic Basic for Applications(VBA). Modulele
sunt sunt funcţi funcţiii şi procedu proceduri ri scris scrisee în lim limbaj bajul ul de progr programa amare re VBA. 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 pentr pentruu efect efectuar uarea ea de operaţ operaţii ii care care depăşe depăşesc sc posibi posibilit lităţi ăţile le unor unor acţiun acţiunii stand standard ard execut executate ate prin prin macroc macrocome omenzi nzi.. Pentr Pentruu a execut executaa subpro subproced ceduri urile le VBA, VBA, trebui trebuiee 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 unor grup grupur urii de util utiliz izat ator orii sau sau unor unor util utiliz izat ator orii indi indivi vidu dual alii şi pute puteţi ţi să le limi limita taţi ţi capacitatea de a vedea sau a modifica total sau parţial tabelele din bazele de date. Funcţ Funcţia ia de tipări tipărire re
vă perm permit itee să tipă tipări riţi ţi prac practi ticc oric oricee vede vedeţi ţi în feres ferestr traa
progr programu amului lui Access. Access. De pe bara bara cu instru instrumen mente te puteţi puteţi să comand comandaţi aţi tip tipări ărirea rea 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 Access folosind legarea(termenul folosit în Access 2000 pentru anexare) tabelelor din alte baze de date.
Desch Deschide idere reaa unui unui tabel tabel determ determină ină afişa afişarea rea conţin conţinutu utului lui acest acestuia uia în modul 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 Recordset tabelar tabelar.. Modificăr Modificările ile operate operate asupra asupra datelor datelor din obiectul obiectul Recordset Recordset determină operarea modificărilor în datele din tabelele asociate cu interogarea executată, dacă obiectul Recordset este actualizabil.
Desc Deschi hide dere reaa unui unui form formul ular ar sau sau a unui unui rapo raport rt dete determ rmin inăă în mod mod auto automa matt deesch deeschide idere reaa tabelu tabelului lui sau sau a inter interogă ogării rii asoci asociate ate cu acest acesta. a. Formul Formulare arele le ş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. ACCESS. Într-un tabel se stochea stochează ză atât atât descri descrierea erea tabelei tabelei cât şi înregi înregistr strări ările le de date. date. Gestiu Gestiunea nea tabele tabelelor lor (creare, (creare, modificare, vizualizare, ştergere) a unei baze de date Access 2000 se poate realiza din secţiunea
Tables a ferestrei ferestrei bazei de date (Database Window)
Crearea tabelelor tab elelor.. 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ă să conţină litere (majuscule (majuscule sau sau minuscule, sau ambele tipuri), tipuri), cifre cifre şi numeroase
caractere speciale; • Poate să conţină maximum 64 de caractere; • Este interzisă utilizarea caracterelor: punct (.), semnul 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; spaţiu; pentru îmbunătăţirea îmbunătăţirea lizibilităţii lizibilităţii numelui se poate înlocui î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
la dispoziţie nouă nouă tipuri de date de bază (Data Type); utilizatorul are la
(tabelul (tabelul de mai jos), pentru unele unele dintre ele fiind fiind disponibile disponibile subtipuri subtipuri de date. În funcţie 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 dimensiunea (proprietatea Field Size) 50 pentru un câmp de tip Text. Text. Un câmp de acest tip
Memo
poate să conţină practic orice or ice caracter. 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) I n t e ger
asemenea câmp este de 1 byte. Tip de date întreg cu plaja de valori
Long Long Int Integer eger
admisă între -32768 şi +32768. Ocupă 2 bytes. Tip de date date între ntregg de de di dimen mensiuni iuni foart oartee mar marii cu cu
Single
plaja de valori admisă
-
2147483648 si +2147483648 . Ocupă 4 bytes. 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
Double
precizie de 7 zecimale. 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
Repl Replic icat atio ionn lD lD
precizie de 15 zecimale. Tip de dat datee GUI GUID D (Glo (Globa ball uni uniqu quee ide ident ntif ifie ier) r).. Ocu Ocupă pă 16 bytes. Sunt utile pentru câmpurile care sunt (sau fac parte dintr-o) cheie externă ale caror chei primare sunt de tipul
Decimal
AutoNumber, AutoNumber, ReplicationID. Tip de date cu plaja de
valori
admisă
între -1028 –1 şi +1028-1. Ocupă 12 bytes şi precizie Date/Time
(proprietatea Precision) maximă de 28. Memorează date calendaristice, inclusiv ora în formate predefinite. Datele calendaristice admise sunt între anul 100 şi 9999. Formatele de d e afişare se stabilesc în
Curency
proprietatea Format. Ocupă 8 bytes. Tip de date numeric, care operează cu maxim patru zecimale şi maxim 15 pozitii in stinga punctului zecimal. Ocupa 8 bytes.
AutoNumb umber
LongInte nteger ger
Tip de de da date car caree îş îşi at atribuie uie au automa omat va valori ori, la la cr crearea rea un unei noi înregistrări. Valorile Valorile atribuite pot fi secvenţiale (proprietatea New Values=Increment) Values=Increment) sau aleatoare a leatoare (proprietatea New Values=Random). Values=Random). Câmpurile de d e tip
AutoNumber, nu pot fi actualizate. Ocupa 4 bytes. Repl Replic icti tion onID ID
Tip de dat date car caree îşi îşi atri atribbuie uie aut autom omat at val valori ori de de titip GUI GUID. D. 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
OLE Object
(valoarea -1)sau fals (valoarea 0). Ocupa 1 bit. Tip de date care poate să includă imagini, documente WORD, foi de calcul EXCEL, etc. Dimensiunea maximă este de 1 GB, cu condiţia c ondiţia să existe acest spaţiu pe disk. Nu poate fi cheie şi nici nu poate p oate fi index. Şir de caractere, care poate memora o adresă WEB, ce va fi
Hyperlynk
utilizată sub formă de hyperiink. Este formată din trei părţi: textul de afişat, adresa şi subadresa. Dimensiunea maximă Lookup
a fiecărei părţi este de 2048 caractere. 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 care le au toate 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. d e zecimale utilizat pentru afişarea unui număr. nu măr. Valorile Valorile Decimal Places - stabileşte numărul de 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 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 tex t afişat în cazul în care valoarea valoar ea memorată este adevărat (True);
-
A treia zonă este utilizată pentru textul afişat în cazul în care car e 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 se utilizea utilizează ză pentru pentru a stabili stabili formatul formatul propriu-zis propriu-zis de de afişare afişare al al conţinut conţinutului ului 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 acest form format at de intr introdu oducer ceree a date datelo lorr, în cazu cazull în care care se util utiliz izeaz eazăă ambel ambelee propri propriet etăţ ăţi, i, proprietatea Format are prioritate faţă de proprietatea Input Mask. Proprietatea Input Mask pune 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 utilize utilizează ază pentru pentru definirea definirea propriupropriu-zisă zisă a formatul formatului ui de introducere; introducere;
-
A doua zonă, zonă, se se utilizea utilizează ză pentru pentru a specifica specifica dacă dacă se memorează memorează şi şi caracterele caracterele care fac 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 se utilizeaz utilizeazăă pentru a specifica specifica un caracter caracter,, care este este afişat afişat într-o într-o poziţie poziţie din din şablon.
Caractere ce se pot utiliza pentru definirea unui şablon de introducere a datelor: • 0 - sunt 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 sunt permise toate cifrele de la 0 la 9, fără semn, inclusiv spaţiu; este permis conţinutul incomplet; • # - sunt sunt permise cifrele de la la 0 la la 9, inclusiv inclusiv spaţiu, semn; este permis conţinutul incomplet; • L - sunt permise literele de la A la Z; nu este permis permis conţinutul incomplet al câmpului; • ? - sunt permise permise literele de la A la Z şi conţinutul 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 sau spaţiu şi conţinut conţinut incomplet al câmpului; • < - caracterele introduse sunt convertite în minuscule; minuscule; • > - caracterele introduse sunt convertite în majuscule; majuscule; • ., - separatorul pentru zecimale, pentru mii; • : ; - / separatori pentru date calendaristice şi pentru timp; • password - afişează afişează caracterul asterisc (*) în momentul introducerii de date; 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
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, 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, 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 primul caracter introdus în câmpul nume nu poate fifi 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()) factura])=Year(Date()) - anul din câmpul data factura trebuie să fie în
momentul introducerii, acelaşi cu cel din data sistemului.
Validation alida tion 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) (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 introducer ea unui şir de lungime zero (Yes) (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
proprietatea
din
Allow zero length
proprietatea
Acti Actiun unea ea util utiliz izat ator orul ului ui
Valoa aloare reaa mem memorat orataa
Required No
No
Enter Bara spatiu Sir de lungime 0
Null Null Nu este permis
Valoarea din
Valoarea din
Actiuneanea
proprietatea Alow
proprietatea
utilizatorului
zero length
Required
No
Yes
Yes
No
No
Yes
Yes
No
Valoarea Memorata
Enter Bara de spaţiu Şir de lungime 0
Null Null Nu este permis
Enter Bara de spatiu Şir de lungime 0 Enter Bara de spaţiu Şir de lungime 0 Enter Bara de spaţiu Şir de lungime 0
Null Null Şir de lungime 0 Nu este permis Nu este permis Nu este permis Nu este permis Ş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 î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, 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 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 pr oprietatea 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. 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 alida tion 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 evenimentul clic clic pe butonul de închidere î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 dintr-o tabelă utili utilizat zat drept cheie primară şi valorilor aceluiaşi câmp dintr-o dintr-o altă tabelă, unde este utili utilizat zat drept cheie externă. Access impune existenţa aceluiaşi tip de date date pent pentru ru câmpu câmpuri rile le care care part partic icip ipăă la o relaţ relaţie ie,, în cazu cazull câmp câmpul ului ui de tip tip Number proprietatea Field Size a celor două câmpuri trebuie să fie identică. identică. Relaţia dintre câmpurile 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 (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 relaţi ţiaa many-to-one este reflexivă, adică adică relaţia relaţia many-to-om este este refle reflexi xiaa relaţ relaţie ieii corespondente one-to-many. Dacă se selectează o înregistrare din tabela din partea many a relaţiei relaţiei se poate afla înregistrarea înregistrarea care corespunde 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 Relaţia m-n (many-to-many (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 lângăă stab stabil ilire ireaa relaţ relaţii iilo lorr într întree tabel tabelel elee unei unei baze baze de date, date, Access Access permi permite te ş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 Acest sist sistem em este este cunos cunoscu cutt sub sub numel numelee de relaţ relaţie ie părinte-copil. Integritatea Integritatea referenţială 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(selec ecta tare re şi glis glisar are) e) dins dinspr pree chei cheiaa prim primar arăă a unei unei tabe tabele le spre spre o chei cheiaa exte extern rnăă drop (sel corespunzătoare sau invers. După realizarea acestei operaţii finalizarea finalizarea definirii unei legături legături se realize realizează ază în fereast fereastra ra din din figura figura următo următoare are unde unde este este prezent prezentată ată definirea definirea unei unei relaţii relaţii între tabelul Operaţii (cheie (cheie primară primarăCodOperatie) şi tabel tabelul ul OperatiiEfectuate (cheie (cheie extern 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 Enforce Referenţial Referenţial Integrity 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 prezentate tipurile tipurile de legături 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 indiferent dacă au sau nu înregistrări înregistrări corespondente corespondente după câmpul (câmpurile) de legătură legătură în celalalt tabel, în exemplul de legătură prezentat în Figura 4. 10, este posibilă o interogare între cele două tabele tabele,, în care care vor fi luate luate în consid considera erare re toate toate înregi înregistr strări ările le din tabelu tabelull Operaţii, indiferent dacă au sau nu corespondent în tabelul OperatiiEfectuate.
Exemple:
Promovabilitatea studentilor. studentilor.
Policlinica