Baze de date Aceess Caracteristici si Interogari



Universitatea Spiru Haret Facultatea de Matematica-Informatica Centrul Universitar Focsani




Baze de date Aceess Caracteristici si Interogari











Introducere

Microsoft Access 2003 este aplicatia de management al bazelor de date pusa la dispozitie de suita Microsoft Office. Spre deosebire de Excel, Access va permite sa stocam si sa administram volume mari de date, organizate in unitati numite inregistrari. O baza de date Access consta din urmatoarele obiecte:

. Tabele - contin toate inregistrarile
. Interogari - localizeaza inregistrari specifice
. Formulare - afiseaza inregistrarile din tabele, una cite una
. Rapoarte - tiparesc loturi de inregistrari
. Pagini de acces la date - pun la dispozitie date prin intermediul paginilor Web
. Macrocomenzi - actiuni automate uzuale
. Module - stocheaza declaratii si proceduri Visual Basic, care ne permit sa scriem programe pentru bazele de date, astfel incat acestea sa poata interactiona cu alt software.

Utilitarele de asistenta din aplicatia Access asigura un proces simplu, pas cu pas, de configurare a tabelelor, formularelor, paginilor de acces la date, rapoartelor si interogarilor.
Prezenta lucrare contine 5 paragrafe.
§ 1 contine notiuni de baze de date,tipuri BD. O baza de date (BD) reprezinta o colectie de date integrata, anume structurata si dotata cu o descriere a structurii si a relatiilor dintre date.
§ 2 contine caracteristica generala a SGBD Access.
§ 3 contine tabelele Access ,care in baza lor se definesc celelalte clase de obiecte.
§ 4 contine functii Access.
Ultimul § contine interogari Access care include si subpunctele interogari de selectie,de sortare, de actualizare a datelor,de excludere a inregistrarilor, de grupare si totalizare si interogari incrucisate.












C U P R I N S

1 Notiune de baza de date.Tipuri de BD. 4

2 SGBD Access. Caracteristica generala 4

3 Tabele Access. 6

4 Functii Access 15

5 Interogari Access 17

5.1Interogari de selectie a inregistrarilor(Select Query)
6 Bibliografie................................30






1 Notiune de baza de date.Tipuri de BD.

Printre multiplele forme de organizare a datelor, bazele de date ocupa un loc aparte.
O baza de date (BD) reprezinta o colectie de date integrata, anume structurata si dotata cu o descriere a structurii si a relatiilor dintre date.
In functie de modul de organizare a informatiilor, se cunosc citeva modele de BD:
ierarhic (arborescent), retea, relational s.a.
Modelul ierarhic.Cu ajutorul modelului conceptual ierarhic, schema bazei de date poate fi reprezentata sub forma unui arbore in care nodurile exprima colectii de date, iar ramurile reflecta relatiile de asociere intre inregistrarile colectiilor de date superioare si inferioare.
Accesul la inregistrarile colectiilor de date inferioare se face prin traversarea arborelui, adica se parcurg toate colectiile aflate in subordonare ierarhica dintre colectia - radacina si colectia cercetata. Unui element superior ii pot corespunde unul sau mai multe elemente inferioare, iar unui element inferior ii corespunde un singur element superior.
Modelul retea. Modelul retea se aseamana cu cel ierarhic, diferenta constind in aceea ca unui element inferior ii pot corespunde unul sau mai multe elemente superioare.
Modelul relational. Modelul relational este in prezent cel mai raspindit model de baze de date. Acest model are o singura structura de date: relatia sau tabelul. O baza de date relationala este un ansamblu de relatii (tabele) grupate in jurul unui subiect bine definit. Deci, o relatie poate fi redata printr-un tabel, in care fiecare rind reprezinta o inregistrare diferita, iar fiecare coloana un atribut. Coloanele tabelului sunt identificate prin nume diferite si reprezinta cimpurile (atributele, caracteristicile) modelului conceptual. In fiecare coloana datele trebuie sa fie de acelasi tip. Cautarea in acest model de BD se face secvential toate articolele si comparind criteriile de cautare. Articolele ce satisfac conditiei cautarii se selecteaza si pot fi afisate.
Subiectele pe care se axeaza tabelele unei BD pot fi cele mai diverse: activitatea unei firme, stocarea marfurilor la un depozit, rezultatele unui recensamint,etc. Desi in modelul relational principala structura de date o reprezinta tabelul, o baza de date este mai mult decit o simpla multime de tabele.Pe parcurs vom vedea ca intre tabelele bazei de date exista o interdependenta strinsa, in timp ce intre tabelele de calcul obisnuite aceasta interdependenta practic lipseste.

Gestiunea bazelor de date.

Sistemul de gestiune a bazelor de date (SGBD) este acel sistem de programe care faciliteaza si supervizeaza introducerea de informatii in baza de date, actualizarea si extragera din baza, controlul si autorizarea accesului la date. Un sistem de gestiune a bazelor de date trebuie sa fie capabil sa indeplineasca urmatoarele functii:
 de descriere ,care rezida in definirea structuriidatelor, a relatiilor dintre acestea si a conditilor de acces la informatile continute in baza de date;
 de actualizare, care presupune inserarea, redactarea si suprimarea datelor;
 de interogare a BD, care permite obtinerea diferitor informatii din BD conform unor criterii de cautare;
 de obtinere de date noi, care consta in prelucrarea informatiei initiale in scopul obtinerii unor totaluri, medii etc.;
 de intretinere, care consta in crearea copiilor de rezerva, compactarea BD si repararea ei in cazul deteriorarii;
 de securitate a datelor, care rezida in protejarea BD impotriva accesului neautorizat si in atribuirea drepturilor de acces.




Administrarea bazelor de date.

Administrarea BD presupune coordonarea lucrarilor de proiectare a BD, protectia (securitatea) informatiei, dezvoltarea BD,etc. Aceste functii le indeplineste Administatorul Bazei de Date (ABD). El defineste obiectele sistemului , elaboreaza principiile de protectie a datelor, raspunde de alegerea si implimentarea SGBD, asigura functionarea normala a sistemului.

2 SGBD Access. Caracteristica generala

La inceputul anilor 80 s-a produs o trecere in masa la elaborarea si utilizarea sistemelor de gestiune a bazelor de date de tip relational.Acest fenomen se explica prin atingerea unor limite tehnice si prin flexibilitatea redusa a sistemelor de gestiune a bazelor de date cu structuri arborescente si retea care se foloseau pina atunci .Inzestrate cu limbaje de generatia a patra si cu generatoare de aplicatii puternice , SGBD de tip relational ofera numeroase facilitati de proiectare si dezvoltare a aplicatilor .Cele mai raspindite SGBD de acest tip sunt: Oracle, Informix, SyBase, MySQL, Interbase, Access, acesta din urma fiind subiectul capitolului de fata.
Sistemul de gestiune a bazelor de date MS Access 2003 (si versiunile care l-au precedat) a fost realizat de corporatia Microsoft si reprezinta o noua ideologie in acest domeniu, avind performante sporite.
Lansarea sistemului MS Access 2003
SGBD MS Access functioneaza numai in mediul Windows. Exista mai multe modalitati de lansare a sistemului Access, una din ele fiind executarea consecutiva a actiunilor Start/All Programs(sau Programs)/Microsoft Office/Microsoft Office Access 2003.
Ca rezultat, obtinem o fereastra, asemanatoare cu cea din figura 1.



Figura 1. Lansarea sistemului Access


Crearea / accesarea unei baze de date
Dupa cum am mai mentionat, elementele principale ale unei baze de date sunt tabelele. Dar o baza de date poate contine si alte elemente care se creeaza pe baza tabelelor (interogari, formulare, rapoarte etc.). Aceste elemente, impreuna cu tabelele, formeaza asa-numitele clase de obiecte ale bazei de date.
Pentru a crea o baza de date noua, in zona Open a ferestrei reprezentate in figura 1 alegem optiunea Create a new file, iar in caseta urmatoare - optiunea Blank Database. Putem, de asemenea, utiliza comenzile de creare/accesare a bazelor de date din meniul File.

Figura .2
Pentru a deschide o baza de date existenta in zona Open a ferestrei reprezentate in figura 1 executam un clic pe denumirea uneia din bazele de date utilizate recent sau selectam optiunea More pentru a accesa o baza de date amplasata pe un dispozitiv de memorie auxiliara. In caseta de dialog care apare indicam numele BD

Figura.3
(de ex., BIBL) si localizarea ei (discul, dosarul).Obtinem o fereastra in care sunt disponibile cele 7 clase de obiecte Access.


Figura. 4 Fereastra cu clasele de obiecte Access

Inchiderea / redeschiderea bazei de date
Inchiderea unei baze de date poate fi facuta prin executarea comenzii Close din meniul File sau prin actionarea butonului din bara de titlu a bazei de date. De regula, la inchidere, sistemul salveaza automat baza de date impreuna cu toate obiectele pe care le contine. Inchiderea unei baze de date nu inseamna si inchiderea aplicatiei MS Access, astfel incit putem deschide o alta de date sau crea o baza de date noua, in modul descris mai sus.

Iesirea din Access
Iesirea din MS Access poate fi facuta in unul din urmatoarele moduri:
. se apasa combinatia de taste Alt+F4;
. se executa comanda Exit din meniul File;
. se actioneaza butonul din bara de titlu a aplicatiei


3. Tabele Access.

Crearea unui tabel
Dupa ce am deschis o baza de date , eveniment confirmat prin aparitia ferestrei cu cele 7 clase de obiecte (fig.4) , putem crea diferite obiecte in oricare din clasele nominalizate. Dar deoarece fiecare din clasele Queries, Forms, Reports, Pages, Macros si Modules se definesc in baza tabelelor, acestea (tabelele) trebuie create in primul rind. Cu alte cuvinte, daca o BD nu contine cel putin un tabel, crearea altor clase de obiecte devine lipsita de sens.
Pentru a crea un tabel nou ,de exemplu, Comenzi, selectam clasa de obiecte Tables, apoi actionam butonul . Caseta de dialog New Table care apare (fig.5) ne ofera 5 moduri de definire a structurii tabelului.


Figura.5 Moduri de definire a structurii unui tabel

Daca selectam optiunea Design View si actionam butonul OK, obtinem o fereastra
(fig.6) in care definim cimpurile tabelului si caracteristicile lor.


fig.6.Definirea campurilor tabelului Comenzi

Caracteristicile cimpurilor
Pentru fiecare cimp al tabelului se specifica 3 caracteristici, si anume:
. Field Name (denumirea cimpului, obligatoriu);
. Data Type (tipul cimpului, obligatoriu);
. Description (descrierea cimpului, optional).
Pentru comoditate, denumirile cimpurilor se introduc pe verticala, urmind ca in regimul de introducere a datelor Datasheet View denumirile cimpurilor sa-si ocupe pozitiile obisnuite (pe orizontala). Regimul Design View nu permite introducerea inregistrarilor in tabel, ci doar descrierea cimpurilor care alcatuiesc tabelul.
Denumirea cimpului poate contine diferite caractere, inclusiv spatii, cu exceptia unor semne speciale ( ".", "!" s.a.). In caz de necesitate, denumirea poate contine semnul "_" (subliniere). Lungimea denumirii cimpului (impreuna cu spatiile) nu poate depasi 64 de caractere.
Exemple: autorul;Id_ tarii; locul_ de_ munca; LoculDeMunca; Locul de Munca.
Tipul cimpului poate fi unul din urmatoarele:
. Text - pentru texte sau numere care nu vor fi folosite in calcule;
. Memo - pentru texte lungi (biografia autorului, rezumatul cartii etc.).
. Number - pentru numere care vor fi folosite in calcule;
. Date/Time - pentru date calendaristice;
. Currency - pentru valori banesti;
. AutoNumber - pentru numere intregi care isi maresc in mod automat valorile (numarul de ordine, de exemplu);
. Yes/No - pentru valori logice care pot lua numai doua valori: Yes (adevar), No (fals);
. OLE Object - pentru imagini (fotografia autorului), sunete (imnul tarii).
. Hyperlink - pentru adrese Hyperlink. Valorile acestui cimp pot fi adrese Internet (de exemplu, www.google.com) sau locatii (calea spre un fisier
sau dosar din calculator)
. Lookup Wizard - reprezinta, de fapt, nu un tip de date, ci o proprietate a cimpului prin care valorile lui pot fi selectate din alt tabel. Acest mod de abordare simplifica procedura introducerii valorilor cimpului si, in plus reduce riscul comiterii unor erori.
Pentru a schimba tipul cimpului (implicit tipul este Text), trecem in coloana Data Type (fig.6) si din lista derulanta alegem tipul dorit. Apoi trecem (daca e cazul) in coloana Description, pentru a introduce note explicative, sau in rindul urmator, pentru descrierea altui cimp.

Stabilirea cheilor primare
Daca valorile unui cimp sunt unice (nu se repeta), putem semnala acest lucru, pentru a evita introducerea accidentala a doua valori identice. Aceasta procedura poarta denumirea de stabilire a cheii primare, in cazul tabelului CITITORI, cheia primara poate fi stabilita pe cimpul IdCarte, pentru a exclude eventualitatea repetarii identificatorului cartii (in biblioteca nu pot exista doua carti cu acelasi identificator). Cheia primara poate fi stabilita si pe citeva cimpuri. Pentru a stabili cheia primara, selectam cimpul respectiv, apoi executam un clic pe butonul din bara cu instrumente. Ca rezultat, in partea din stinga a cimpului respectiv apare semnul cheii (vezi fig. 6).
Dupa incheierea procedurii de descriere a cimpurilor si de stabilire a cheii primare, salvam tabelul (descrierea lui), selectind comanda Save din meniul File si indicind numele tabelului. Daca nu am stabilit o cheie primara (acest lucru nu este obligatoriu), sistemul ne va avertiza, sugerindu-ne stabilirea cheii pe un cimp de tip AutoNumber. Pentru a confirma, actionam butonul Yes. In acest caz sistemul stabileste automat cheia primara pe un cimp AutoNumber (daca el exista) sau creeaza suplimentar un asemenea cimp (daca el nu exista), stabilind pe el cheia primara. Pentru a renunta la stabilirea cheii primare, actionam butonul No.

Proprietatile cimpurilor
In afara de tipul cimpului, putem stabili si unele proprietati ale sale, cum ar fi marimea (lungimea), numarul cifrelor zecimale, formatul datei calendaristice etc. Fiecare tip de date are proprietati prestabilite, dar ele pot fi modificate, executind un clic pe cimpul respectiv (fig. 6, partea de sus) si modificind valorile prestabilite care apar in partea de jos.
Cimpurile de tip Text pot avea lungimi cuprinse intre l si 255 de caractere. Implicit, marimea cimpului este de 50, dar ea poate fi modificata in limitele amintite, in functie de lungimea maxima preconizata a valorilor cimpului respectiv. Astfel, pentru IdCarte (identificatorul cartii), modificam marimea cimpului din 50 (valoarea prestabilita) in 8 (valoarea necesara). La fel procedam si cu caracteristicile altor cimpuri.
Mentionam si cu aceasta ocazie, ca pentru cimpurile ce contin numai valori numerice (identificatori numerici), care nu vor fi folosite in calcule, vom prefera tipul Text in locul tipului Number. Acest mod de abordare va facilita ulterior cautarea informatiei in baza de date.
Cimpurile de tip Number au lungimi diferite in functie de optiunea specificata pentru proprietatea Field Size.
Optiunea implicita pentru cimpurile de tip Number este, de regula, Single, dar ea poate fi modificata, utilizind comanda Options din meniul Tools. Pentru cimpurile de tip Number poate fi stabilita si proprietatea Format, in care specificam modul de afisare a valorilor (numarul cifrelor zecimale etc.).
Cimpurile de tip Date/Time au lungimi variabile in functie de formatul datei/orei specificat pentru proprietatea Format a cimpului. De altfel, formatul de reprezentare a datelor calendaristice, la fel ca si delimitatorii dintre data, luna si an, pot sa difere de cele utilizate in aceasta lucrare. Reprezentarea datelor tine de modul in care a fost personalizat sistemul Windows. Pentru a schimba formatul de reprezentare a datelor calendaristice (dar si a orei, a numerelor si a valutei), este necesar de a efectua setarile respective, utilizind aplicatia Regional Options din meniul Control Panel al meniului de baza Start.

Remarca: Daca anul este indicat cu 2 cifre, Access il interpreteaza astfel:
pentru valorile din intervalul 00-29 se subintelege anii 2000-2029; pentru valorile din intervalul 30-99 se subintelege anii 1930-1999.

Cimpurile de tip logic (Yes/No) ocupa in memoria calculatorului un octet si pot fi reprezentate in 4 moduri, in functie de optiunea specificata pentru proprietatea Format a acestui cimp, si anume: Yes/No, True/False, On/Off, -1/0. In ultimul caz valoarea - l corespunde starii True (adevar), iar valoarea 0 - starii False (fals).

Specificarea valorilor prestabilite
Daca o buna parte din valorile unui cimp se repeta frecvent (de exemplu, in cazul cind majoritatea cititorilor au studii superioare), putem specifica o valoare prestabilita (implicita) a cimpului respectiv. Valoarea prestabilita (in cazul nostru "super") se specifica pentru proprietatea Default Value a cimpului. In procesul introducerii datelor sistemul atribuie cimpului valoarea prestabilita in mod automat, utilizatorul urmind sa modifice doar valorile care difera de cea prestabilita.

Stabilirea unor conditii de validare
Pentru a diminua riscul introducerii unor valori gresite, putem stabili conditii (reguli) de validare pentru valorile cimpurilor respective. Regulile de validare se stabilesc pentru proprietatea Validation Rule a cimpului. Totodata, pentru proprietatea Validation Text se specifica mesajul care trebuie sa fie afisat in cazul nerespectarii regulii. Astfel, daca se stie ca pretul cartilor nu depaseste valoarea 200, specificam pentru proprietatea Validation Rule a cimpului Pret conditia <=200, iar pentru proprietatea Validation Text -mesajul "Pretul cartii nu poate fi mai mare de 200 de lei. Reintroduceti pretul cartii. La fel, data imprumutului/restituirii cartii nu poate depasi data curenta, astfel ca pentru cimpurile DataImpr si DataRestit putem stabili conditia <=Date() pentru proprietatea Validation Rule. Mesajul specificat pentru proprietatea Validation Text va fi si el adecvat. In fiecare din situatiile descrise vor fi afisate mesajele respective in cazul introducerii unor valori care nu corespund conditiilor de validare stabilite in procesul definirii cimpurilor.
Modificarea descrierii unui tabel
In cazul cind apare necesitatea modificarii descrierii initiale a unui tabel (adaugarea sau excluderea unuia sau mai multor campuri, schimbarea ordinii, modificarea unor caracteristici etc), deschidem tabelul respectiv in regimul Design View si efectuam modificarile necesare dupa cum urmeaza (in orice consecutivitate):
a) Modificarea denumirii cimpului. Executam un clic pe denumirea cimpului si efectuam schimbarile necesare.
b) Adaugarea unui cimp. Marcam cimpul, inaintea caruia trebuie inserat noul cimp. Pentru aceasta executam un clic in partea stinga a rindului respectiv, acesta schimbindu-si culoarea. Apoi executam comanda Insert Row din meniul Edit.
c) Excluderea unui cimp. Marcam cimpul ca in cazul precedent, apoi apasam tasta Delete. Confirmam actiunea prin OK.
d) Schimbarea ordinii (deplasarea) cimpurilor. Marcam cimpul care urmeaza a fi deplasat, apoi, tinind apasat butonul sting al mouse-ului, deplasam cimpul dat peste cimpul, inaintea caruia dorim sa fie situat.
e) Schimbarea caracteristicilor. Executam un clic pe rindul in care este definit cimpul, apoi stabilim caracteristicile cimpului in modul descris in paragrafele precedente. In cazul in care in tabel au fost introduse date,modificarea caracteristicilor cimpurilor tabelului poate implica denaturarea informatiei. Astfel, daca micsoram lungimea unui cimp de tip Text, este posibila trunchierea (din dreapta) a datelor. Modificarea tipului cimpului poate avea, de asemenea, consecinte nedorite. Din aceasta cauza ne vom stradui sa definitivam proprietatile cimpurilor inainte de a introduce valori in tabel.
f) Adaugarea sau anularea unei chei primare. In caz de necesitate, putem adauga sau anula una sau mai multe chei primare. Pentru a schimba cheia primara de pe un cimp pe altul, selectam cimpul nou, apoi actionam butonul din bara cu instrumente. Pentru a stabili cheia primara pe citeva cimpuri , le selectam, apoi actionam acelasi buton. Pentru a anula una sau mai multe chei primare, executam comanda Indexes din meniul View, apoi in caseta care se deschide selectam cimpurile respective si apasam tasta Delete.
Dupa efectuarea modificarilor, salvam tabelul cu Save As sau Save din meniul File.
Introducerea datelor in tabel
Dupa ce am efectuat procedurile de descriere a tabelului , putem introduce date in cimpurile lui. Pentru a initia procesul de introducere a datelor , deschidem BD (daca nu este deschisa) , apoi in fereastra Database (fig.4) selectam tabelul necesar (de exemplu Cititori) si executam un clic pe Open. Ca rezultat, se afiseaza cimpurile tabelului respectiv fig.7(initial tabelul contine doar un rind liber).


fig.7 Introducerea si modificarea datelor in tabel

Nu este absolut obligatoriu sa completam toate cimpurile; astfel daca anumite date nu sint deocamdata cunoscute, introducerea lor poate fi aminata.
Exceptie fac cimpurile pentru care au fost stabilite chei primare. Aceste cimpuri nu pot avea valori nule, de aceea valorile lor trebuie introduse in mod obligatoriu. Ordinea introducerii datelor poate fi si ea oricare. Daca a fost stabilita o cheie primara , la o noua deschidere a tabelului inregistrarile vor fi afisate in ordinea crescatoare a valorilor cimpului respectiv. Datorita acestui fapt, orice inregistrare noua se adauga la sfirsitul tabelului, avind certitudinea ca ulterior ea va fi plasata in locul corespunzator. Dupa terminarea introducerii datelor inchidem tabelul, actionind butonul sau executind comanda Close din meniul File (modificarile efectuate se salveaza automat).
Remarca: Tipul si caracteristicile datelor introduse trebuie sa corespunda intocmai tipului si caracteristicilor cimpurilor respective definite in procesul
crearii (descrierii) tabelului.

Redactarea datelor
Daca apare necesitatea modificarii (editarii) inregistrarilor unui tabel, deschidem tabelul in regimul Datasheet View, actionind butonul Open din fereastra Database (sau executind un dublu-clic pe numele tabelului). Ca rezultat, obtinem tabelul cu continutul precedent, continut pe care-1 putem modifica la dorinta. Modificarile pot fi cele mai diverse: inlocuirea datelor existente, completarea unor cimpuri, ale caror valori nu erau cunoscute anterior, adaugarea unor inregistrari noi, stergerea unor inregistrari, copierea unor valori etc. Majoritatea acestor modificari se efectueaza prin simpla deplasare in cimpul si rindul necesar si prin inlocuirea continutului vechi prin altul nou. Mentionam, ca semnul indica rindul curent, iar atunci cind
initiem procedura se modificare a inregistrarii, acest semn este inlocuit cu ultimul fiind prezent pina la trecerea la o alta inregistrare.
In cele ce urmeaza vom descrie citeva proceduri de redactare a datelor.
a) Adaugarea unor inregistrari noi. Inregistrarile noi sunt plasate la sfirsitul
tabelului .
b) Excluderea unor inregistrari. Pentru a sterge una sau mai multe
inregistrari consecutive, marcam aceste inregistrari prin glisarea ("tragerea")
mouse-ului pe verticala din stinga tabelului, apoi apasam tasta Delete sau
alegem comanda Delete din meniul Edit. Ni se va cere confirmarea actiunii,
la care vom raspunde prin OK sau vom renunta prin Cancel.
c) Copierea unor blocuri de date. Pentru a copia un bloc de date, marcam
blocul, apoi actionam butonul Copy din bara cu instrumente. Ca rezultat,
continutul blocului se copie in memoria Clipboard. Din acest moment, continutul
memoriei Clipboard poate fi "lipit" oriunde. In acest scop marcam locul inserarii (blocul-destinatie) si actionam butonul Paste din bara cu instrumente.
Remarca: Dimensiunile si caracteristicile blocului-destinatie trebuie sa corespunda intocmai dimensiunilor si caracteristicilor blocului-sursa.
Modificarile efectuate in orice inregistrare a tabelului se salveaza in mod automat de fiecare data cind trecem la o alta inregistrare, sau la inchiderea tabelului. Aceasta inseamna ca dupa terminarea lucrului cu un tabel nu este neaparat nevoie sa-1 salvam, - sistemul o va face singur. Utilizatorul trebuie doar sa aiba grija sa inchida tabelul in caz ca nu-1 va mai utiliza. Daca, insa, am efectuat modificari ce tin de aspectul tabelului (latimea coloanelor, ordinea lor etc.) si dorim ca aceste modificari sa fie prezente la o noua deschidere, inainte de a inchide tabelul, il salvam cu comanda Save din meniul File.
MS Access pastreaza informatia despre modificarile efectuate, ceea ce permite, in cazul cind am gresit, anularea modificarilor si revenirea la starea precedenta. Pentru a anula modificarile din cimpul curent, apasam tasta Esc, iar pentru a anula modificarile din inregistrarea curenta -apasam tasta Esc de doua ori. Pentru a anula modificarile din inregistrare dupa ce s-a trecut la o noua inregistrare, executam comanda Undo Saved Record din meniul Edit. Prin aceasta se revine la situatia anterioara actiunii gresite (nedorite).

Modificari ce nu afecteaza structura fundamentala
Pe langa modificarile care vizeaza structura unui tabel si continutul lui, sunt posibile si modificari care schimba doar modul de prezentare a tabelului, fara a afecta structura lui fundamentala. Aceste modificari tin de ordinea afisarii cimpurilor (coloanelor), latimea cimpurilor, inaltimea rindurilor etc.
a) Schimbarea ordinii afisarii cimpurilor, in unele cazuri, este necesar de a schimba ordinea afisarii cimpurilor, diferita de cea din descrierea fundamentala, stabilita in regimul Design View. Pentru a reamplasa un cimp, il marcam, apoi, tinind apasat butonul sting al mouse-ului, il deplasam in pozitia dorita si eliberam butonul. Ca rezultat, cimpul deplasat inlocuieste cimpul peste care a fost suprapus, acesta din urma deplasindu-se la dreapta. In mod analog putem deplasa si alte cimpuri, astfel incit ordinea cimpurilor sa devina cea dorita. Dar oricare ar fi modificarile efectuate in regimul Datasheet View (Foaie de date), ele nu afecteaza ordinea si caracteristicile cimpurilor stabilite in regimul Design View (Proiectare).
b) Sortarea inregistrarilor. Pentru a obtine o consecutivitate a inregistrarilor, diferita de cea existenta, putem efectua o sortare (in ordine crescatoare sau descrescatoare) dupa valorile unui cimp al tabelului. Pentru aceasta plasam cursorul pe cimpul respectiv si actionam unul din butoanele sau . Daca la inchiderea tabelului aceasta modificare nu se salveaza, la o noua deschidere a tabelului inregistrarile se vor afisa in ordinea obisnuita. Modul de sortare descris aici nu prevede sortari complexe, acestea putind fi obtinute in baza interogarilor .
c) Modificarea latimii coloanei unui cimp. In cazul cind latimea unui cimp nu corespunde lungimii datelor pe care le contine, putem schimba (mari, micsora) latimea lui. Pentru aceasta pozitionam indicatorul mouse-ului pe linia din partea dreapta a denumirii cimpului (forma indicatorului se schimba in sageata dubla orizontala), apasam butonul sting al mouse-ului si, deplasindu-1 la stinga-la dreapta, micsoram-marim latimea cimpului. Daca in pozitia in care indicatorul mouse-ului ia forma mentionata mai sus executam un dublu-clic, latimea cimpului devine egala cu lungimea celei mai mari inscrieri a acestui cimp din partea vizibila a tabelului. Subliniem si cu aceasta ocazie ca aceste modificari nu schimba latimea initiala a cimpului, stabilita in procesul descrierii lui in regimul Design View.
d) Modificarea inaltimii rindurilor. Pentru a modifica inaltimea rindurilor, pozitionam indicatorul pe linia ce desparte oricare doua rinduri (forma indicatorului se modifica in sageata dubla verticala), apasam butonul sting al mouse-ului si, deplasindu-1 in sus-in jos, micsoram-marim inaltimea rindurilor (se modifica simultan inaltimea tuturor rindurilor, si nu doar a celui curent).
Daca nu salvam tabelul cu Save din meniul File, modificarile descrise in a)-d) isi pierd actualitatea, astfel incit, la o noua deschidere a tabelului, ordinea cimpurilor si a inregistrarilor, dimensiunile coloanelor si rindurilor vor ramine aceleasi de pina la modificarea tabelului. Daca insa dupa efectuarea modificarilor salvam tabelul, aceste modificari vor fi actuale la o noua deschidere a tabelului, dar si in acest caz ele nu afecteaza caracteristicile din descrierea lui initiala. Dupa terminarea lucrului cu un tabel, il putem minimiza (in cazul cind intentionam sa-1 mai utilizam) sau inchide (in cazul cind nu-1 vom mai utiliza). Deschizind consecutiv citeva tabele si redimensionind ferestrele respective, putem afisa pe ecran mai multe tabele ale BD. Inchiderea tabelului se face, dupa cum am mai mentionat, prin executarea comenzii Close din meniul File. Pentru a relua lucrul cu un tabel, il deschidem, actionind butonul Open din fereastra Database (fig. 4).


Relatii dintre tabele. Integritatea datelor
Relatiile dintre doua tabele se stabilesc, de regula, prin intermediul unor cimpuri identice (cu aceeasi denumire, de aceeasi lungime, cu aceleasi proprietati) prezente in ambele tabele.
In cazul relatiei de tipul unu la multi in tabelul primar (din partea caruia se realizeaza relatia "unu") trebuie sa existe un cimp, numit cheie primara, in care nu se admit valori care se repeta, iar in tabelul secundar (din partea caruia se realizeaza relatia "multi") trebuie sa existe un cimp analogic cu cel din tabelul primar, numit cheie straina, care poate admite valori care se repeta.
Relatia multi la multi poate fi transformata in doua relatii de tipul unu la multi prin definirea unui tabel intermediar, in care se introduc, in calitate de chei straine, cheile primare ale primelor douг tabele. Astfel, pentru a evita relatia multi la multi dintre tabelele CARTI si CITITORI, a fost definit tabelul COMENZI in care au fost incluse cimpurile IdCarte si IDCit din tabelele respective.
Relatia de tipul unu la unu presupune existenta in ambele tabele a unei chei primare cu aceleasi caracteristici, in fond, doua tabele intre care exista o relatie de tipul unu la unu pot fi oricind unite intr-un singur tabel; la fel, orice tabel poate fi divizat in doua sau mai multe tabele intre care se stabileste o relatie de tipul unu la unu. Divizarea unui tabel in modul mentionat mai sus poate fi utila in cazul unui tabel cu un numar foarte mare de cimpuri (un tabel Access, de exemplu, nu poate contine mai mult de 255 de cimpuri), dar si in situatia cind o parte din informatia care se refera la o entitate are un caracter confidential, sau se utilizeaza foarte rar. In concluzie, desi relatiile de tipul unu la unu nu sunt caracteristice unei baze de date de tip relational, totusi in unele situatii acest tip de relatii este preferabil sau chiar necesar.
Daca la proiectarea tabelelor tinem cont de principiile expuse mai sus , atunci Access stabileste automat relatiile dintre tabelele care contin cimpuri comune. Totusi putem stabili relatii intre tabelele bazei de date si in mod explicit, utilizind comanda Relationships din meniul Tools. In acest caz apare


fig.8 Relatiile dintre tabelele bazei de date BIBL

o fereastra (fig.8) in care indicam tabelele intre care se stabilesc relatii,apoi, cu ajutorul mouse-ului, trasam legaturile intre cimpurile respective.
Daca unul din cimpurile de legatura este de tip cheie primara (el are o
culoare mai pronuntata), trasarea se face pornind de la acest cimp. Tabelul
de la care se traseaza legatura se numeste tabel primar (principal), iar
celalalt - secundar (subordonat). Ca rezultat, apare o caseta de dialog (fig.9)


fig.9 Stabilirea proprietatilor relatiilor
in care putem specifica proprietatile relatiei (legaturii).
Pentru relatia dintre doua tabele pot fi stabilite urmatoarele proprietati:
1. Tipul relatiei (Relationship Type) poate fi stabilit ca unu la unu (one
to one) sau unul la multi (one to many);
2. Impune integritatea referentiala (Enforce Referential Integrity}.
Includerea acestui parametru asigura integritatea datelor in procesul
introducerii, modificarii sau stergerii inregistrarilor din tabelele legate. Acest
lucru este posibil doar in cazul cind cimpul din tabelul principal este de tip
cheie primara, iar cimpul de legatura din tabelul subordonat are acelasi tip de
date. Atunci cind introducem date in cimpul de legatura al tabelului
subordonat, sunt acceptate doar acele valori care se contin in cimpul
respectiv al tabelului principal. De exemplu, daca nu exista un cititor cu
identificatorul 0472 in tabelul CITITORI, sistemul nu va admite aparitia
acestui cod in cimpul respectiv al tabelului COMENZI. In acest caz este
necesar sa introducem mai intii datele despre cititorul in cauza in tabelul
CITITORI, apoi sa utilizam identificatorul cititorului in tabelul COMENZI.
La fel, nu putem exclude o inregistrare din tabelul principal, daca valoarea
cimpului de legatura a acestei inregistrari se contine in una sau mai multe
inregistrari ale tabelului subordonat.
3. Modificarea in cascada a inregistrarilor (Cascade Update Related
Fields). Daca acest parametru este inclus, sistemul va modifica toate valorile
cimpului de legatura ale tabelului subordonat in cazul cind valoarea cimpului
respectiv al tabelului principal se modifica. De exemplu, daca un cititor a pierdut
carnetul de cititor cu numarul 0519 (identificatorul cititorului) si i se remite un nou
carnet cu numarul 1465, aceasta valoare trebuie sa se modifice in toate
inregistrarile tabelului COMENZI in care figureaza valoarea veche. In caz contrar,
imprumuturile de carti facute de cititorul cu identificatorul 0519 nu sunt valide,
deoarece nu se cunoaste nici o informatie despre cititorul in cauza.
4. Excluderea in cascada a inregistrarilor (Cascade Delete Related
Records). Daca acest parametru este activ, atunci excluderea unei inregistrari
din tabelul principal implica excluderea tuturor inregistrarilor din tabelul
subordonat, in care valoarea cimpului de legatura coincide cu cea a cimpului
respectiv din tabelul principal. De cele mai multe ori asemenea excluderi
sunt firesti, deoarece existenta unor inregistrari in tabelul subordonat, pentru
care valoarea cimpului de legatura nu se contine si in tabelul principal, duce
la pierderea integritatii datelor.
Toate rationamentele de mai sus tin de integritatea datelor, asigurarea careia reprezinta unul din principiile fundamentale ale proiectarii bazelor de date.


4.Functii Access

MS Access contine un set de functii standard de cele mai diferite tipuri.
Pentru descrierea lor vom folosi urmгtoarele convenюii:
CampNum - argument ce reprezinta cimpuri de tip Number sau Currency;
CampText - argument ce reprezinta cimpuri de tip Text;
CampDate - argument ce reprezinta cimpuri de tip Date/Time;
Camp - argument ce reprezinta cimpuri de orice tip;
n,m - argumente ce reprezinta numere naturale;
i - argument ce reprezinta numere intregi;
{} - argumentele incluse in paranteze figurate sunt optionale (neobligatorii);
Argumentele functiei se pun intre paranteze rotunde si se separa prin punct si virgula (uneori prin virgula). In cazul lipsei argumentelor, dupa denumirea functiei se pun paranteze rotunde care nu contin in interior nimic. In cazul cind argumentul functiei reprezinta un cimp, numele cimpului se ia intre paranteze patrate [].
Enumeram in cele ce urmeaza citeva dintre functiile sistemului Access:
1. Abs(CampNum) - calculeaza valoarea absoluta (modulul).
2. Avg(CampNum) - calculeaza media aritmetica.
3. Sin(CampNum) - calculeaza valoarea sinusului.
4. Exp(CampNum) - calculeaza puterea numarului e.
5. Log(CampNum) - calculeaza logaritmul natural.
6. Sqr(CampNum) - calculeaza radacina patrata.
7. Int(CampNum) - calculeaza partea intreaga.
8. Rnd(i) sau Rnd() - returneaza un numar aleator situat intre 0 si 1.
9. Sum(CampNum) - calculeaza suma.
10. Max(CampNum)-calculeazavaloareamaxima
l 1. Min(CampNum) - calculeaza valoarea minima.
12. Var(CampNum) - calculeaza variatia (dispersia).
13. Count(Camp) - calculeaza numarul valorilor nenule.
14. Left(CampText,n) - extrage primele n caractere (din stinga).
15. Right(CampText,n) - extrage ultimele n caractere (din dreapta).
16. Len(CampText) - calculeaza lungimea expresiei.
17. LTrim(CampText} - lichideaza toate spatiile de debut (din fata).
18. RTrim(CampText) - lichideaza toate spatiile (blancurile) de la sfirsit.
19. Trim(CampText) - lichideaza toate spatiile de debut si de la sfirsit.
20. Mid(CampText;n{;m}) - extrage primele m caractere, incepind cu al
n-lea. In cazul cind m lipseste - extrage toate caracterele, incepind cu al n-lea.
21. InStr({n;}Text,CimpText) - calculeaza locul, incepind cu care
valoarea Text se contine in intregime in CimpText. Cautarea se face incepind
cu pozitia l (sau n, daca este specificat).
22. Date() - returneaza data curenta.
23. Time() - returneaza ora curenta.
24. Now() - returneaza data si ora curente.
25. Weekday(CampDate) - calculeaza ziua saptaminii care corespunde datei.
26. Year(CampDate) - extrage anul (cu 4 cifre).
27. DateAdd("Tip";i;CampDate) - aduna/scade la/din CampDate i intervale de
tipul dat (i poate lua si valori negative). "Tip " poate avea una din urmatoarele valori:
"q"- trimestre; ex.: DateAdd("q";7;Date()) - peste 7 trimestre din ziua
curenta.
"m" - luni; ex.: DateAdd("m ";-9;Date()) - cu 9 luni in urma fata de ziua curenta.

"d" - zile; ex.: DateAdd("d";25;[DataImpr]) - peste 25 de zile de la data imprumutului.

"yyyy" - ani; ex.: DateAdd("yyyy";-4;Date()) - cu 4 ani in urma de la data

curenta,

"ww" - saptamini; ex: DateAdd("ww";2;[DataRestit]) - peste 2 saptamini de la data restituirii.

"h" - ore; ex.: DateAdd("h";-27;Now()) - cu 27 de ore in urma.


Remarca: Functiile descrise mai sus pot fi utilizate numai in interogari, formulare, rapoarte si in limbajul de programare Visual Basic for Applications.
5. Interogari Access

Performantele unui SGBD depind in mare masura de capacitatea extragerii rapide a diferitor informatii in forma dorita. In multe cazuri este necesar de a selecta date din mai multe tabele simultan. De exemplu, pentru a selecta cartile din domeniul informaticii editate in Franta dupa anul 2001, utilizam 3 tabele: CARTI, TARI si TEMATICI. Pentru a formula conditii de selectie, in MS Access exista o clasa speciala de obiecte (alaturi de tabel )numite Interogari (engl. Queries).

Sinonime: Interogari - Cereri - Interpelari.

Interogarile reprezinta modalitati de selectie si afisare a informatie din unu sau mai multe tabele, formulate cu ajutorul unor conditii logice.

Tipuri de interogari
In functie de modul de definire si rezultatele actiunii, interogarile pot fi clasificate astfel:
a) interogari de selectie (folosind conditii logice);
b) interogari de sortare (indicind cimpul/cimpurile si ordinea sortarii);
c) interogari de excludere a unor inregistrari din BD (de exemplu,
excluderea tuturor cititorilor care nu au imprumutat carti in
ultimii 2 ani);
d) interogari de modificare a unor inregistrari din BD (de exemplu,
majorarea preturilor tuturor cartilor cu 20%);
e) interogari de obtinerea a unor informatii rezultante (in cimpuri noi)
in baza informatiei existente (de exemplu, obtinerea virstei cititorului prin scaderea anului de nastere din anul curent);
f) interogari de obtinere a unor totaluri, medii etc.;
g) interogari incrucisate.
In toate cazurile, cu exceptia ultimelor doua, rezultatul interogarii este un nou set de date, numit set dinamic (engl: Dynaset). Setul dinamic (rezultalul interogarii) contine doar cimpurile specificate ale inregistrarilor din tabelele specificate care satisfac conditiilor specificate. Denumirea '"Set dinamic" este legata de faptul ca orice modificari ale datelor din tabelele specificate in interogare implica modificari respective ale rezultatului interogarii (la o noua executare a ei). Si invers, orice modificari in setul dinamic implica modificari in tabelele respective (cu conditia respectarii integritatii datelor). Seturile dinamice nu se memorizeaza; ele se formeaza din nou de fiecare data cind executam o interogare. Dac in tabelele BD intervin modificari, rezultatele executarii a doua interogari identice pot fi diferite, in cele ce urmeaza vom descrie modalitatile de definire si executare a interogarilor nominalizate.

5.1 Interogari de selectie a inregistrarilor(Select Query)

Exemplu:1
Pentru a defini o interogare de selectie (de exemplu, afisarea emisiunilor cu desene animate), actionam fila Queries din fereastra Database (fig. 10), apoi butonul New.



fig.10 Fereastra cu clasele de obiecte Access

In continuare indicam unul din cele 5 moduri de creare a interogarilor (in cazul nostru Design View)
Din caseta care apare (fig. 11) selectam consecutiv (in orice ordine) tabelele necesare (in cazul nostru,Emisiuni,Genuri,Canale TV) si pentru fiecare actionam butonul Add.


fig.11 Selectarea tabelelor pentru definirea interogarii

Dupa selectarea tabelelor actionam butonul Close. Daca tabelele au cimpuri comune (definite in procesul crearii lor), Access stabileste in mod automat legaturile respective (fig. 12). In continuare indicam, in partea de jos a ferestrei, cimpurile din fiecare tabel (in ordinea dorita) care urmeaza a fi afisate sau pentru care se vor specifica conditii de selectie si/sau de sortare. Includerea cimpurilor se face prin "tragerea" lor cu ajutorul mouse-ului din tabelele din caseta de sus in rindul Field al casetei de jos sau prin executarea unui dublu-clic pe denumirile respective. Dupa aceasta specificam conditiile selectiei si/sau ordinea sortarii, in acest fel interogarea se considera definita (fig. 12).


fig12.Specificarea conditiilor de selectie

In rindul Criteria din partea de jos a ferestrei specificam conditia selectiei Des* pentru cimpul DenGen al tabelului Genuri. Daca dorim ca inregistrarile sa fie afisate intr-o anumita ordine (crescatoare/alfabetica sau descrescatoare) pentru cimpul respective specificam optiunile Ascending sau Descending in rindul sort. Daca indicam Ascending pentru cimpul DenEmisiunii al tabelului emisiuni denumirile emisiunilor vor fi afisate in ordenea alfabetica.
Interogarea astfel definita poate fi executata imediat in scopul obtinerii rezultatului (fig. 13), sau salvata pentru a fi executata ulterior. In primul caz actionam butonul (Datasheet View) din bara cu instrumente in aldoile caz executam comanda Save din meniul File. La salvarea interogarii indicam numele ei, care nu trebuie sa coincida cu numele unor tabele sau ale unor interogari definite anterior. Setul dinamic (rezultatele interogarii) contine cimpurile marcate cu simbolul in rindul Show al ferestrei. Celelalte cimpuri chiar daca sunt incluse in interogare, nu se afiseaza.



fig.13 Rezultatele interogarii

Exemplu 2. Lista emisiunilor cu durata mai mica de 30 de minute.

Pentru afisarea emisiunilor cu durata mai mica de 30 minute actionam fila Queries din fereastra Database , apoi butonul New. In continuare indicam unul din cele 5 moduri de creare a interogarilor, in cazul nostru Design View (fig.14).


fig.14

Din caseta care apare (fig.15) selectam tabelul Emisiuni,Canale TV si Genuri si actionam butonul Add.


fig.15

Dupa selectarea tabelului actionam butonul Close. Apoi executam dublu clic pe denumirile campurilor si vor trece in rindul Field din caseta de jos (fig.16).

fig.16
Dupa aceasta specificam conditiile selectiei. In rindul Criteria scrim conditia <30 pentru campul Durata Emisiunii al tabelului Emisiuni si ne va afisa lista emisiunilor cu durata mai mica de 30 minute.


fig.17. Rezultatul interogarii

Exempul 3: Lista emisiunilor stiri
Pentru afisarea emisiunilor stiri actionam fila Queries din fereastra Database , apoi butonul New. In continuare indicam unul din cele 5 moduri de creare a interogarilor, in cazul nostru Design View (fig.14).
Din caseta care apare (fig.15) selectam tabelul Emisiuni , Genuri actionam butonul Add .Dupa selectarea tabelului actionam butonul Close.
Apoi executam dublu clic pe denumirile campurilor si vor trece in rindul Field din caseta de jos (fig.18).
fig.1

Dupa aceasta specificam conditiile selectiei. In rindul Criteria scrim conditia "stiri" pentru campul DenGen al tabelului Genuri si ne va afisa lista emisiunilor stiri.

fig.19. Rezultatul interogarii


Exemplul 4: Lista emisiunilor in limba rusa

Fie ca dorim sa afisam lista emisiunilor in limba rusa. Pentru aceasta executam urmatorii pasi:
Definim o interogare in care includem tabelele Emisiuni, Limbi, Canale TV din care selectam campurile DenEmisiunii, DenCanal, DenLimba (fig.20)


fig.20
Dupa aceasta specificam criteriul de selectie in rindul Criteria pentru campul DenLimba din tabelul Limbi si ne va afisa lista emisiunilor in limba rusa.

fig.21
5.2 Interogari de sortare a inregistrarilor

Dupa ce am definit conditiile de selectie, putem stabili conditii de sortare pentru unul sau mai multe campuri.
Exemplu 1: Pentru afisarea emisiunilor in ordine alfabetica executam un clic in rindul Sort al casetei (fig.22) in dreptul campului DenEmisiuni si din lista derulanta alegem optiunea Ascending.


fig.22

Pentru a afisa rezultatul interogarii (fig.23), actionam butonul (Datasheet View) din bara cu instrumente.
fig.23

Sortarea datelor poate fi facuta si fara a specifica conditii de selectie. In acest caz se vor afisa toate inregistrarile, dar ordinea lor va corespunde conditiilor stabilite in rindul Sort pentru campurile respective.
Exemplu 2: Lista emisiunilor in ordinea duratei lor.

Pentru afisarea emisiunilor in ordine duratei lor executam un clic in rindul Sort al casetei (fig.24) in dreptul campului Durata emisiunii si din lista derulanta alegem optiunea Ascending.


fig.24
Pentru a afisa rezultatul interogarii (fig.25), actionam butonul (Datasheet View) din bara cu instrumente.


fig.25

5.3 Interogari de actualizare a inregistrarilor (Update Query)

In cazul cind este necesar de a modifica un numar mare de inregistrari conform unuia si aceluiasi algoritm, putem defini o interogare de modificare (Update Query)
Vom descrie in continuare modul de definire a unei interogari pentru care stirile se maresc cu 5 minute.
1. Definim interogarea in modul descris in p.5.1.
2. Includem tabelul Emisiuni si Genuri.
3. Selectam Update din meniul Query sau actionam butonul din bara de instrumente.Ca rezultat titlul ferestrei se modifica in Update Query, iar in partea de jos apare rindul Update To (fig.26).


fig.26

4. Includem (prin "tragere") in celulele rindului Field campurile DenEmisiunii, DenGen, Durata emisiunii.
5. Introducem in rindul Update To pentru campul DenEmisiunii expresia [DenEmisiunii], DenGen expresia [DenGen], Durata emisiunii expresia [Durata emisiunii]+5
6. Introducem in rindul Criteria pentru campul DenGen conditia Stiri.
7. Actionam butonul din bara cu instrumente, pentru a obtine valorile curente ale campului Durata emisiunii care urmeaza a fi modificate (fig.27).


fig.27

Modificarile propriu-zise vor fi operate numai dupa trecerea in regimul Design View si actionarea butonului din bara cu instrumente sau executarea comenzii Run din meniul Query. In acest caz pe ecran va aparea un mesaj despre numarul total al inregistrarilor care urmeaza a fi modificate. Actionind butonul Yes , Access va efectua modificarile (fig.28). Pentru a renunta la modificari, actionam butonul No .

fig.28
Remarca: Interogarile de tip Update se executa de regula o singura data. In cazul executarii repetate a interogarii definite in exemplul de mai sus, vom obtine de fiecare data marirea emisiunilor stiri cu 5 minute.

5.4 Interogari de excludere a inregistrarilor (Delete Query)

Fie, de exemplu, ca dorim sa excludem din tabelul Emisiuni toate emisiunile intre ora 1000 -1200. Pentru aceasta, executam urmatoarele actiuni:
1. Definim interogarea in modul descris in p 5.1.
2. Includem tabelul Emisiuni.
3. Selectam Delete Query din meniul Query sau actionam butonul
(daca este afisat) din bara cu instrumente. Ca rezultat, titlul ferestrei se
schimaг in Delete Query iar in partea de jos a ferestrei apare rindul Delete.
4. Din lista cimpurilor tabelului Emisiuni, afisata in partea de sus a
ferestrei (fig. 8.12), selectam campurile care vor fi afisate sau pentru care vor
fi specificate conditii de selectie DenEmisiunii si Timpul inceperii si le "tragem" in celulele respective ale rindului Field din partea
de jos. Ca rezultat, in celulele respective pentru fiecare camp apare optiunea
Where (din engleza - Unde, In care).
5. Introducem in celulele rindului Criteria conditiile selectiei. In cazul
nostru pentru cimpul Timpul inceperii scriem conditia Between 1000 And 1200.


fig.29
6. Pentru a obtine lista inregistrarilor care urmeaza a fi excluse (dar inca n-au fost excluse), actionam butonul (Datasheet View) din bara cu instrumente. Ca rezultat, obtinem fereastra, reprezentata in figura 8.13.


fig.30
7. Daca rezultatele obtinute in p.6 sunt cele dorite, revenind la regimulDesign View, putem elimina realmente inregistrarile, executind comanda Run din meniul Query sau actionind butonul (Run) din bara cu instrumente. Ca rezultat, pe ecran apare un mesaj despre numarul total al inregistrarilor care urmeaza a fi eliminate. Daca actionam butonul Yes, inregistrarile vizate sunt eliminate definitiv. Pentru renuntare, actionam butonul No.
8. Salvam interogarea, executind comanda Save As din meniul File si
indicind numele interoga

5.5 Interogari de grupare si totalizare a inregistrarilor

In multe cazuri apare necesitatea de a obtine valori rezumative referitoare la toate inregistrarile din tabel sau pentru o submultime a lor. De exemplu, ar putea sa ne intereseze cite emisiuni de fiecare gen sunt. In acest scop in Access pot fi definite interogari in care sunt specificate conditii de grupare si totalizare.
Pentru obtinerea valorilor rezumative, sunt prevazute urmatoarele functii:
-Sum, pentru calcularea sumei valorilor cimpului;
-Avg, pentru calcularea mediei valorilor cimpului;
-Min, pentru gasirea valorii minime;
-Max, pentru gasirea valorii maxime;
-Count, calculeaza numarul de valori ale cimpului (excluzind cele vide);
-StDev, pentru calcularea abatem standard;
-Var, pentru calcularea dispersiei.
Valorile rezumative pot fi obtinute atit pentru toate inregistrarile din tabel cit si pentru grupuri de inregistrari.
Fie ca dorim sa obtinem informatii despre cite emisiuni de fiecare gen sunt. Pentru aceasta executam urmatoarele actiuni:
1. Definim o interogare in care includem tabelele Emisiuni si Genuri din care selectam cimpurile DenGen si DenEmisiunii (fig)

fig.31
2. Selectam optiunea Totals din meniul View; ca rezultat in caseta de jos apare rindul Total, iar in celulele respective ale cimpurilor selectate optiunea Group By
3. Din lista derulanta a cimpului DenEmisiunii (rindul Total) selectam optiunea Count.
4. Actionam butonul pentru a obtine valorile cautate (fig)



fig.32



5.7 Interogari incrucisate (Crosstab Query)

In multe cazuri rezultatele unei interogari sunt greu de perceput din cauza volumului mare de informatii selectate. In figura sunt prezentate datele despre cite emisiuni de fiecare gen sunt, obtinute cu ajutorul unei interogari de grupare si totalizare.

fig
Access permite gruparea si reprezentarea datelor intr-o forma compacta, forma care se aseamana cu un tabel electronic.In acest scop se definesc interogari speciale, numite interogari incrucisate (Crosstab Query).
Pentru a defini o interogare incrucisata procedam initial ca in cazul unei interogari de selectie obisnuita, adica selectam tabelele Emisiuni, Canale TV, Genuri, din care selectam campurile DenGen, DenCanal, DenEmisiunii (fig)

fig
In continuare parcurgem urmatorii pasi:
1. Selectam optiunea Crosstab din meniul Query. Ca rezultat, titlul ferestrei
se schimba in Crosstab Query, iar in partea de jos apare rindul Crosstab.
2. Definim campul DenGen, valorile caruia vor servi in calitate de denumiri ale rindurilor tabelului. Pentru aceasta actionam butonul cu sageata din rindul Crosstab pentru campul DenGen si din lista derulanta care apare selectam optiunea Row Heading.
3. In mod analogic definim campul DenCanal, valorile caruia vor servi in calitate de denumiri ale coloanelor tabelului . Pentru aceasta actionam butonul cu sageata din rindul Crosstab pentru campul DenCanal si din lista derulanta care apare selectam optiunea Column Heading.
4. In rindul Total inlocuim optiunea Group By din campul DenEmisiunii prin
operatorul Count.
5. Pentru campul DenEmisiunii in rindul Crosstab stabilim optiunea Value pe
care o selectam din lista derulanta prin analogie cu actiunile descrise mai sus.
6. Actionam butonul pentru vizualizarea rezultatelor (fig)


fig

































Bibliografie




1. Alexandru Teodorescu, - BAZE DE DATE, Editura Albastra
2. M. Gorunescu, F. Gorunescu, A. Prodan, - EXCEL ACCESS SI PAGIN WEB, Editura Albastra
3. Eduard Koller, Monica Rosculet, -PROGRAMARE IN ACCESS 97, Editura Teora
4. Pavel Nastase, Florin Mihai, - BAZE DE DATE - MICROSOFT ACCESS 2000, Editura Teora
5. Alison Balter, - INVATA SINGUR MICROSOFT OFFICE ACCESS 2003 IN 24 DE ORE, Editura Niculescu
6. Sandor Kovacs, - ACCESS 2000 - IMPLEMENTAREA BAZELOR DE DATE, Editura Albastra
7. Microsoft Press, - MICROSOT ACCESS 2000, MANUALUL INCEPATORULUI, Editura Teora

Copyright © Contact | Trimite referat



Ultimele referate adaugate
Mihai Beniuc
   - Mihai beniuc - „poezii"
Mihai Eminescu Mihai Eminescu
   - Mihai eminescu - student la berlin
Mircea Eliade Mircea Eliade
   - Mircea Eliade - Mioara Nazdravana (mioriţa)
Vasile Alecsandri Vasile Alecsandri
   - Chirita in provintie de Vasile Alecsandri -expunerea subiectului
Emil Girlenu Emil Girlenu
   - Dragoste de viata de Jack London
Ion Luca Caragiale Ion Luca Caragiale
   - Triumful talentului… (reproducere) de Ion Luca Caragiale
Mircea Eliade Mircea Eliade
   - Fantasticul in proza lui Mircea Eliade - La tiganci
Mihai Eminescu Mihai Eminescu
   - „Personalitate creatoare” si „figura a spiritului creator” eminescian
George Calinescu George Calinescu
   - Enigma Otiliei de George Calinescu - geneza, subiectul si tema romanului
Liviu Rebreanu Liviu Rebreanu
   - Arta literara in romanul Ion, - Liviu Rebreanu