Access
Tabele in AccessTabele in AccessPentru a simplifica modalitatea de creare a tabelelor vom ilustra prin exemple fara a intra in detalii, modul in care se creaza tabelele, cum se definesc campurile, ce proprietati au acestea si care sunt modalitatile cele mai simple de actiune in acest sens. In cadrul capitolului, vor fi prezentate mai multe exemple, pentru ca cititorul sa se familiarizeze cu tabelele. Vom construi prin exemple tabelul Angajati pezentat anterior. Pentru a exemplifica posibilitatile oferite, mai construim inca doua tabele de Functii si Sectii, din primul, vom prelua functia pe care o vom introduce in campul aferent din tabelul Angajati.
Obsevam ca in fereastra Database avem obiectele Access: Tables, Queries, Forms, Reports, Macros, Modules. In baza noastra de date avem tabelele Angajati, Functii, Sectii si sa exemplificam continutul tabelului Functii. Dupa cum se observa continutul din tabelului urmator, dispunem de un navigator printre inregistrarile tabelului. In exemplul de mai sus, inregistrarea curenta este cea de a treia. In tabel ne putem deplasa asa cum arata indicatoarele, pornind de la inregistrarea curenta, astfel: pe prima, pe precedenta (relativ la intregistrarea curenta), pe urmatoarea, pe ultima si dupa ultima inregistrare (in ultimul caz pentru a adauga inregistrari noi). De asemenea, avem indicat numarul (de ordine) al inregistrarii curente si numarul total de inregistrari din tabel. Tabelele Sectii si Functii contin cate un camp care este Sectia respectiv Functia. Pentru a introduce informatii in tabelul Functii Sectii il deschidem (Open) si introducem numele functiilor care dorim sa le avem. In mod analog, vom deschide si tabelul Sectii in care vom introduce sectiile existente in firma noastra.
Crearea tabelului Angajati va fi ilustrata prin urmatoarele imagini iar cometariile vor fi facute numai pentru situatiile noi in care ne vom afla.
Dupa cum observam campul Marca este definit ca Auto Number este un numar intreg in forma lunga. Pentru el valorile noi se dau prin incrementare, este indexat si nu admite duplicate. De asemenea campul Marca a fost definit ca si cheie primara. Trebuie sa remarcam inca odata in plus, cheia primara impune existenta pentru fiecare inregistrare a unei valori unice (care nu mai apare la o alta inregistrare) iar in cazul in care o inregistrare este stearsa, valoarea pe care a avut-o cheia nu va mai fi atribuita nici unei alte inregistrari care va fi adaugata ulterior. Cand se adauga o inregistrare noua, aceasta primeste urmatoarea valoare (fata de valoarea atribuita ultimei inregistrari adaugate). Faptul ca un camp a fost definit ca si cheie primara, permite stabilirea de relatii intre tabele.
Analizand campul Nume, observam ca el este de tipul Text, are o lungime de 10 caractere, am indexat tabelul dupa Nume si admite duplicate (lucru evident deoarece nimic nu ne impiedica sa avem doi angajati cu numele Pop Ioan, identificarea lor facandu-se dupa marca). Campul Sex este Text si are lungimea un caracter. De asemenea, impunem o regula de validare care restrictioneaza valorile care pot fi introduse in acest camp la caracterele “M” sau “F”. Acesta se postuleaza in Validation Rule (regula de validare). In cazul in care introducem alt caracter decat cele specificate mai sus, va aparea un mesaj cel specificat in Validation Text (care va trebui receptat printr-o tastare pe OK in MsgBox), dupa care se reia introducerea in campul Sex (pentru aceeasi inregistrare).
Campul Salariu are
tipul Currency si are valoarea
implicita 0 plasata in proprietatea Default Value. Intr-un
In cele ce urmeaza vom utiliza un Combo Box pentru a facilita introducerea datelor in campul Functie. Definim campul Functie iar ca suport de introducerea datelor utilizam Combo Box in proprietatea Display Control, precizand faptul ca luam datele dintr-un tabel in proprietatea Row Source Type si tabelul Functii din care vom lua valorile, in proprietatea Row Source. In proprietatea Bound Column precizam care este campul de legatura, iar daca am dori sa afiseze din tabelul Functii mai multe campuri, vom preciza in proprietatea Column Count cate coloane sa afiseze din el. Celelalte detalii se pot imagina usor, de exemplu se pot afisa 8 linii din tabelul Functii.
Intr-un mod asemanator, putem utiliza in loc de Combo Box, List Box pentru introducerea datelor. Vom ilustra aceasta pentru campul Sectii.
Exemplificam utilizarea Combo Box si List Box in urmatoarele doua imagini. In campul Functie am preluat valoarea care o dorim din tabelul Functii, alegand-o din cele posibile. Mentionam ca putem introduce si alte valori care nu sunt in acest tabel, fara a primi mesaj de avertizare si daca dorim aceasta, atunci trebuie sa o specificam pecum am aratat, in proprietatea Validation Rule.
In campul Sectie, am preluat o valoare din lista de valori specificata la definirea campului Sectie. Trebuie sa precizam ca si aici se pot introduce si alte valori decat cele prezentate in lista de valori de la definirea campului. De asemenea, se impune precizarea faptului ca o completare a listei de valori se poate face in proiectare modificand in campul Sectia.
Consideram ca pe baza exemplelor de mai sus, se pot crea tabele cu elementele prezentate. Nu am intrat in detalii pe care le-am considerat inutile. Desigur ca exista inca multe detalii care vor trebui aprofundate, dar care nu fac obiectul prezentei carti. Vom reveni cu cateva concluzii. Campurile care sunt incluse intr-un tabel au tipuri de date care trebuiesc specificate si caracteristici cum ar fi lungimea lor care de asemenea se impun a fi precizate. Exista posibilitatea de a face anumite validari asupra datelor introduse intr-un camp, cu afisarea de mesaje in cazul in care nu se introduc valorile care sunt cerute. Anumite campuri pot lua valori implicite, caz in
care utilizatorul trebuie sa completeze numai daca in Sunt campuri care pot sa fie sau nu obligatorii, fapt care se specifica in proprietatea Required care are valoarea Yes (pentru obligatoriu) si No pentru optional. In cazul in care nu am completat un camp care este obligatoriu pentru o inregistrare si dorim sa trecem la o alta inregistrare, va apare un mesaj de atentionare si Access va reveni pe campul (obligatoriu) care va trebui introdus. In exemplele de mai sus, am omis ilustrarea acestei posibilitati. La inchiderea tabelului se cere salvarea sa, i se cere numele acestuia, care trebuie sa fie intuitiv si care va fi utilizat ori de cate ori se va face referire la el sau la campurile din el. Daca tabelul nu are cheie primara, atunci Access solicita daca sa puna o cheie primara sau nu, in caz in care utilizatorul raspunde afirmativ, atunci Access ii pune chie primara cu numele ID. Nu intram in detalii referitoare la ajustarea dimensiunii ferestrelor, la modalitatea de obtinere a culorilor pe care le dorim, pentru a avea pe ecran o imagine agreabila. Acestea se pot obtine cu putin efort, relativ usor.
|