|
Cereri si vederi asupra bazei de date ACCESS
Putem lista liniile unui tabel, asa cum am fǎcut panǎ acum, dar avem urmǎtoarele inconveniente:
s-ar putea sǎ nu avem nevoie de toate liniile ci numai de unele care indeplinesc anumite conditii - am invǎtat deja sǎ facem acest lucru prin filtrare
s-ar putea sǎ nu ne trebuiascǎ toate campurile
s-ar sǎ avem nevoie de informatii combinate din mai multe tabele (de exemplu cand listǎm o carte sǎ avem nevoie si de numele editurii si de numele autorilor
am putea sǎ creǎm tabele asa cum avem nevoie, dar am descoperit toate neajunsurile unui asemenea mod de organizare in primul capitol.
Existǎ solutie ?
Bine inteles! Solutia se numeste vedere (view) care inseamnǎ un tabel fictiv cu care se pot face o serie de operatii, fǎrǎ ca el sǎ ocupe un loc efectiv in memoria externǎ.
O vedere este rezultatul unei cereri (query) pe care o putem crea in limbajul SQL, sau prin meniuri in QBE (query by exemple = cerere prin exemple). Limbajul SQL nu este in vederile acestei cǎrti, asa cǎ vom adopta a doua cale.
Cererile care utilizeazǎ mai multe tabele fac apel la relatiile pe care le-am stabilit in capitolul 4 (ecranele 50 - 57).
In acest capitol o sǎ invǎtǎm:
Sǎ creǎm o relatie pentru a defini o listǎ de alegeri (care este rezultatul unei cereri)
Sǎ creǎm o cerere simplǎ (dintr-un singur tabel)
Sa creǎm o cerere utilizand mai multe tabele intre care existǎ relatii
Sǎ modificǎm o cerere
Sǎ adǎugǎm campuri calculate
Sǎ facem grupuri
1 Crearea unei relatii pentru a defini o listǎ de alegeri.
O sǎ observǎm intai cǎ dacǎ vrem sǎ nu gresim cand introducem editor unei cǎrti trebuie sǎ o luǎm dintre editurile existente sau, dacǎ acestǎ editurǎ nu existǎ, sǎ o adǎugǎm mai intai in tabelul 'editura'. Pentru aceasta vom relua proiectarea tabelului 'carte'.
La caracteristicile campului 'nreditura' vom trece selectand <Lookup> unde vom completa:
la <Display control> - "Combo Box'
la <Row Source Type> - 'Table Query'
la <Bound Column> - 1
la <Column Count> - 2
la <Row Source> - selectǎm <.> si se deschide ecranul 67.
Aici vom proiecta o cere astfel:
Selectǎm tabelul 'editura'
Selectǎm <.Add> si tabelul se mutǎ sus
Iesim selectand <Close> din subecran
Dupǎ ce am iesit, selectǎm campurile de care avem nevoie. Acestea sunt 'nreditura' si 'nume_ed'. Douǎ campuri, cum am declarat in 'Column count', din care primul se ia in considerare la legǎtura cu tabelul 'carte', cum am declarat in 'Bound Column'. Selectia campurilor se va face cu dublu clic pe numele campului sau prin 'drag and draw'. Vom mai selecta, pe linia <Sort> si coloana 'nume_ed' optiunea <Ascending> pentru ca editurile sǎ fie listate in combo box in ordine alfabeticǎ crescǎtoare.
Incheiem,ca de obicei , reproiectarea tabelului 'carte' si revenim in meniul principal. Vom face acum crearea unui formular simplu pentru a vedea efectul modificǎrilor.
In bara de sus selectǎm < Insert> apoi <Form> si obtinem:
Alegem <Form Wizard> si <OK> ca sǎ incepem un proces de generare a unui formular anticipand putin continutul capitolului 6.
> >>
In acest ecran vom selecta campurile
pe care le dorim in formular unul cate unul cu . Dacǎ le vrem pe toate selectǎm
butonul .
Dupǎ <Next> apare ecranul:
Vom alege aici modul de afisare pe coloane selectand <Columnar> si <Next>. Apare:
Aici trebuie sǎ ne alegem aspectul fondului formularului. Incercati toate liniile si dupǎ ce v-ati stabilit la cea mai potrivitǎ, selectati <Next>. Apare ecranul:
Aici, dupǎ ce am selectat <Open .>, selectǎm <Finish> si obtinem:
Dacǎ vrem, putem deschide acest formular din meniul principal selectand <Forms> si apoi formularul dorit. In formular putem vedea
Se poate vedea cum functioneazǎ combo boxul selectand corespunzǎtor din campul 'nreditura'.
2 Crearea unei cereri simple.
Dacǎ vrem sǎ creǎm un tabel fictiv numai cu clientii din Brasov o sǎ creǎm o cerere in felul urmǎtor. Din meniul principal selectǎm <Querys>. Apare:
Vom selecta aici prima optiune <Create Query in Design view>. Apoi apare:
Selectǎm, din tabel, tabelul 'client' fǎcand clic pe <Add>. Dupǎ <Close> apare ecranul:
De aici putem selecta, cum am vǎzut deja, campurile de care avem nevoie. De asemenea selectǎm ordinea crescǎtoare a numelor si , la <Criteria> scriem
" ='brasov' ",pentru a pune in tabelul fictive numai clientii Brasoveni.
E C R A N 80
Inchidem, ca de obicei, procedeul dand nume acestui query.
Din ecranul principal, selectand <Querys> si apoi 'client brasov' cu dublu clic, putem vedea pe ecran continutul tabelului fictive pe care tocmai l-am creat. Bineinteles cǎ trebuia mai intai sǎ introduceti date si cǎ trebuie sǎ aveti cel putin un client cu orasul 'brasov'.
Dacǎ vrem, de exemplu, sǎ creǎm un tabel cu clientii si cǎrtile comandate de acestia, informatia nu poate fi luatǎ dintr-un singur tabel asa cǎ trebuie sǎ stim sǎ facem
3 Crearea unei cereri utilizand mai multe tabele.
Selectǎm, ca mai inainte, <Querys>, < Create Query in Design view >, adǎugǎm cu <Add> tabelele 'client', 'comanda', detaliu_comanda' si 'carte', dupǎ care obtinem:
Selectǎm, aici, 'nume', 'prenume','titlu' ca in tabelul urmǎtor:
Pǎrǎsim dand numele 'client carte'.
Dacǎ vrem sǎ vedem, ca mai inainte, rezultatul, obtinem:
Vrem, acum, sǎ aflǎm si valoarea cǎrtilor comandate de fiecare client si sǎ ordonǎm clientii dupǎ aceastǎ valoare. Selectǎm, exact ca mai inainte, campurile 'nume' si 'prenume', din aceleasi tabele, si adǎugǎm un camp calculat valoare=nr_bucati*pret. Cu clic pe butonul drept al mouse-ului pe partea de <Sort> se obtine:
Cu clic pe <Totals> trecem in ecranul urmǎtor:
Se vede aici cǎ inregistrǎrile vor fi grupate dupǎ 'nume' si 'prenume'. De aici cu clic pe butonul care a apǎrut sub 'valoare' in linia <Totals> obtinem:
Cu clic pe <Sum> vom incheia aceastǎ proiectare si obtinem:
Iesim de aci, ca de obicei, dand nume acestei cereri 'clienti cu valori'. Procedǎm ca mai inainte ca sǎ vedem rezultatul acestei cereri.