Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Obiectele (componentele) Microsoft Access

access



+ Font mai mare | - Font mai mic



Obiectele (componentele) Microsoft Access

Sunt in fapt instrumentele principale de lucru ale programului ele fiind vizibile sub forma de grupuri in partea stanga a ferestrei initiale Microsoft Access, cu titulatura de Objects - obiecte:



Figura 1 : Obiectele Microsoft Access


Imaginea din Figura 1 ilustreaza lansarea in executie a programului Microsoft Access si incarcarea bazei de date cu numele 'Repartitie materiale'. Lansarea in executie a programului Microsoft Access se realizeaza pe 2 cai:

a) Start Programs Microsoft Office Tools Microsoft Access

b) Dublu-clic pe icon-ul programului (daca exista pe Desktop)

Ulterior se deschide o baza de date noua (Blank Access database) sau se incarca una deja existenta (Open an existing file). Baza de date, cum s-a mai mentionat, este en- titatea generala care cuprinde toate celelalte obiecte - in fapt: un fisier cu extensia .mdb ce poate fi incarcat in executie prin dublu-clic.

Obiectul de studiu al prezentului suport de curs il reprezinta primele 4 elemente din bara de obiecte (Tables, Queries, Forms, Reports) - celelalte 3 (Pages, Macros, Modules) presupunand cunostiinte de programare pe obiecte in Visual Basic - peste nivelul cursului.

Sa nu uitam ca trebuie facuta o distinctie clara intre "modurile de lucru" din

Microsoft Access:

a) Design (sugerat de un echer albastru-deschis) - prin care se realizeaza opera-

tia de proiectare a unei baze de date cu toate componentele ei (tabele, form-uri, interogari, rapoarte).

b) Open - care inseamna executia unui obiect (tabela, form, interogare, raport)

ce in prealabil a fost proiectat cu instrumentele Microsoft Access.

1. Tabelele - obiectul principal Microsoft Access

O tabela este colectie de date referitoare la un anumit subiect. Datele in tabele sunt prezentate sub forma de coloane (campuri) si randuri (articole). Toate datele dintr-o tabela descriu subiectul unei tabele. Intr-o baza de date putem avea mai multe tabele, fiecare continand informatii despre subiecte diferite. De exemplu, putem avea tabele care sa contina date despre anumiti producatori, despre clienti, iar o alta tabela poate contine date despre intermediari.

Structura unei tabele

Intr-o tabela un camp reprezinta un anumit tip de informatie. Poate fi numele unei companii, numele unei persoane, data de nastere a unei persoane, pretul unui produs, etc. Un articol este o colectie de informatii despre o persoana, despre un anumit lucru, sau despre un anumit eveniment. Fiecare articol dintr-o tabela contine aceleasi campuri, si fiecare camp contine acelasi tip de informatii pentru fiecare articol.

In Microsoft Access exista doua cai de a proiecta o tabela: folosind Table Wizard-ul si fara ajutorul lui. Daca se doreste proiectarea unei tabele care sa contina informatii referitoare la persoane sau informatii din domeniul afacerilor, cea mai usoara cale este crearea tabelelor cu ajutorul lui Table Wizard. Daca in baza de date suntem in fereastra tabelelor si se apasa pe butonul New, va aparea o fereastra din care se alege modul de creare al tabelei. Daca se alege Table Wizard , atunci acesta va oferi utilizatorului o lista cu sabloane de tabele, de unde se poate alege tipul tabelei dorite si apoi Table Wizard va propune o lista de campuri pentru aceasta tabela. Imediat dupa creare, tabela este goala. Dupa ce tabela nou creata a fost salvata, se pot introduce date.

Daca se doreste crearea unei tabele fara Table Wizard, se va deschide o fereastra de creare a tabelei de unde se specifica ce campuri contine tabela si care este tipul lor. Pentru a adauga un nou camp trebuie sa se atribuie acestui camp un nume care se va scrie in coloana Field Name. Apoi se va specifica tipul campului in coloana Data Type. Implicit, tipul unui camp nou este Text, dar se pot selecta si alte tipuri. Tipurile posibile sunt: Text (maximum 256 de caractere), Memo (pentru comentarii, maximum 64.000 de caractere), Number, Date/Time (pentru data si timp), Currency (valori monetare), Counter ( un tip numeric care se incrementeaza automat pentru fiecare articol si are dimensiunea unui Long Integer), Yes/No (valori booleene), OLE Object (obiecte OLE, grafice, imagini, etc.). In Microsoft Access 95, tipul Counter este inlocuit cu tipul AutoNumber, care este tot un tip numeric cu incrementare automata doar ca pentru acest tip se poate specifica lungimea campului si modul in care sa fie generate numerele: aleator sau secvential. O incrementare aleatoare este utila in cazul in care se doreste o amestecare a inregistrarilor din baza de date. In general pentru ca semnificatia fiecarui camp din tabela sa fie mai usor de inteles se pot scrie comentarii pentru fiecare camp in coloana Description. Pentru stergerea unui camp se va face clic pe sectorul de camp si apoi se va apasa tasta Del.

De multe ori in campurile tabelelor se pot introduce date eronate. Pentru a impiedica acest lucru Microsoft Access pune la dispozitia utilizatorilor o lista cu proprietati pentru fiecare camp cu ajutorul carora se poate specifica ce fel de date se pot introduce in acel camp si felul in care vor fi introduse. Aceasta lista se afla in partea de jos a ferestrei. In functie de tipul fiecarui camp vor fi afisate anumite proprietati.

Proprietatea FieldSize se foloseste pentru specificarea dimensiunii unui camp. Aceasta proprietate este disponibila doar pentru campurile de tip Text sau Numeric. Implicit lungimea unui camp Text este de 50 de caractere, dar lungimea maxima este de 256 de caractere. Pentru tipurile numerice, FieldSize creaza un interval de valori ce determina dimensiunea campului respectiv. Avem urmatoarele tipuri numerice: Byte cu valori intre 0 si 255, Integer cu valori intre 32.768 si 32.767, Long Integer cu valori intre -2.147.483.648 si 2.147.483.647.

Single cu valori intre -3,4x1038 si 3,4x1038 cu 7 zecimale si Double cu valori intre -1,797x10308 si 1,797x10308, implicit aceasta proprietate este setata pe valoarea Double.

Microsoft Access afiseaza valorile unui camp in mai multe formate. De exemplu, numerele de tip Double sau Single pot fi afisate cu un anumit numar de zecimale, in campurile Currency poate sa apara sau nu simbolul monedei curente, valorile de tip Date/Time pot fi afisate in diferite formate de date. Astfel, cu ajutorul proprietatilor Format si Decimal Places se poate specifica formatul in care sa apara valorile in campuri si cate zecimale sa fie afisate (daca este cazul).

Daca proprietatile Format si Decimal Places controleaza modul de afisare al datelor pe ecran, proprietatea Imput Mask controleaza modul de introducere al datelor in tabela. Masca de intrare determina daca fiecare caracter al campului este necesar sau nu, precum si tipul de caracter acceptat: numeric, alfabetic, alfanumeric sau orice caracter. In plus, se poate specifica daca caracterul este scris cu litere mici sau majuscule si daca introducerea acestora sa fie de la stanga la dreapta sau invers.

Proprietatea Caption determina eticheta implicita care va aparea in dreapta fiecarui camp cand acesta va fi afisat intr-un form sau raport, sau in modul de afisare Datasheet. In cazul in care aceasta proprietate nu este completata, se va folosi ca eticheta chiar numele campului.

De multe ori se stie ce valoare va lua un anumit camp cand va fi introdus un articol nou. Aceasta valoare se poate defini cu ajutorul proprietatii Default Value. Pentru campurile numerice implicit aceasta valoare va fi setata pe 0.

Pentru a sublinia faptul ca un camp trebuie completat neaparat se seteaza proprietatea Required pe valoarea Yes.

Daca se doreste ca intr-un camp sa nu fie valori de lungime zero atunci se va seta proprietatea Allow Zero Lengtb pe valoarea No. O valoare nula nu reprezinta acelasi lucru ca o valoare de lungime zero. Un camp ce contine o valoare nula indica faptul ca nu se stie nimic despre continutul campului respectiv.

Deseori se doreste cautarea unei informatii intr-un anumit camp. Se poate mari considerabil viteza de cautare daca se creeaza indexuri pentru campurile respective, indecsii asigurand mecanismul de regasire rapida a datelor. Crearea unui index pentru un anumit camp consta in pozitionarea proprietatii Indexed a campului respectiv, pe una din valorile "Yes (Duplicates OK)" sau "Yes (No Duplicates)".

Figura 2: Structura unei tabele


In Figura 2 e exemplificata structura unei tabele (campurile si natura lor - lungime,

tip). S-a ajuns la structura tabelei vizualizata in aceasta imagine astfel:

- Selectie tabela (Materiale)

- Selectie optiune "Design"

- Page-frame "General"

Chei primare

Microsoft Access lucreaza mult mai eficient daca se defineste o cheie primara pentru fiecare tabela. In Figura 2 aceasta e campul "cod mat" - primul al tabelei. Cheia primara a unei tabele consta intr-un camp sau mai multe ce reprezinta in mod unic fiecare articol din tabela. Cel mai des, cheia primara este un identificator sau un cod si are valori diferite pentru fiecare articol. Se recomanda ca fiecare tabela sa contina o cheie primara, deoarece tabelele cu chei primare au urmatoarele avantaje: Microsoft Access creeaza automat un index pentru cheia primara, folosirea indecsilor ajutand la cresterea vitezei interogarilor si a altor operatii pe tabele; cand se introduce un articol intr-un form sau intr-un datasheet, Microsoft Access afiseaza articolele indexate dupa cheia primara, cand se introduc informatii in tabela nu se permite introducerea de valori existente deja, deoarece in acest mod nu este fiecare articol reprezentat in mod unic de catre cheia primara. In cazul in care se creeaza o tabela noua si daca se doreste salvarea acestei tabele si inca nu s-a definit o cheie primara Microsoft Access va propune crearea automata a unui nou camp Counter (AutoNumber) care va fi cheie primara pentru aceasta tabela. Pentru a desemna un camp sa fie cheie primara trebuie sa se selecteze campul dorit si apoi din meniu de la optiunea Edit se alege Set Primary Key sau se face click pe butonul SetPrimary Key, si in dreptul campului selectat va aparea o cheita care va marca campul respectiv ca fiind cheie primara. In cele mai multe cazuri cheia primara a unei tabele este formata doar dintr-un singur camp, dar exista posibilitatea ca un singur camp sa nu identifice in mod unic un articol.

De exemplu, daca avem o tabela care contine rezervarea camerelor intr-un hotel, tabela are un camp care contine data rezervarii si un camp care contine numarul camerei. In acest caz cele doua campuri identifica in mod unic un articol din aceasta tabela. Astfel, daca se doreste crearea unei chei primare formata din mai multe campuri selectarea acestora se face tinand tasta CTRL apasata, si apoi se apasa butonul Set Primary Key.

In modul Design (de proiectare a tabelei) nu se pot introduce date in tabela; pentru a putea introduce date, tabela nou creata trebuie salvata. Daca se salveaza pentru prima data tabela, atunci trebuie dat un nume pentru tabela respectiva, din maxim 64 de caractere, incluzand si spatii.

Relatii intre tabele

Pentru ca Microsoft Access este o baza de date relationala, se pot folosi datele din mai multe tabele sau interogari la un moment dat. Daca baza de date contine informatii ce se pot asocia intre ele dupa anumite criterii, atunci ele pot fi legate in cadrul MDB-ului prin intermediul relatiilor. Microsoft Access utilizeaza relatiile pentru:

Crearea de asocieri in interogari in momentul in care se creaza o noua interogare si se adauga tabele sau interogari intre care exista o relatie, Microsoft Access realizeaza in mod automat asocieri pentru a lega intre ele datele din interogare.

Afisarea articolelor asociate dintr-un subformular sau subraport: o utilizare comuna a subformularelor sau a subrapoartelor este pentru a include articole dintr-o tabela asociata.

Fortarea integritatii referentiale pentru a proteja relatiile dintre tabele in momentul adaugarii, modificarii sau stergerii articolelor.

O relatie se formeaza prin precizarea unei legaturi intre campuri identice din mai multe tabele. Relatiile pot fi de mai multe tipuri:

Relatia one-to-many (de la unu la mai multi): aceasta relatie este cea mai cunoscuta si mai utila. Tabelul din partea "unu" a relatiei trebuie sa aiba o cheie primara, iar tabelul din partea "mai multi" trebuie sa contina un camp similar. Cheia straina trebuie sa fie de acelasi tip si sa aiba aceeasi dimensiune cu cheia primara.

Relatia many-to-many (de la mai multi la mai multi): in unele cazuri, o relatie simpla de la unu la mai multi nu poate rezolva situatia. Sa consideram cazul administratorului unui colegiu universitar ce trebuie sa tina evidenta studentilor inscrisi si evidenta tuturor cursurilor oferite de colegiu.

Relatia unu la unu (one-to-one). Doua tabele unite printr-o relatie de unu la unu sunt similare, in practica, cu un tabel care cuprinde campurile din ambele tabele.

Drept consecinta a relationarii intre tabele apare mecanismul "Lookup" ("vedere in oglinda"), care ofera posibilitatea ca aflandu-ne pe inregistrarile dintr-o tabela sa putem selecta inregistrari din alta tabela (mecanismul-obiect Combo Box).

Figura 3 : Relatii intre tabele


2. Formularele

Formularul este obiectul Microsoft Access folosit pentru introducerea si afisarea datelor. Pentru a crea un formular, trebuie aleasa din bara de selectie a ferestrei bazei de date optiunea Form, apoi se executa clic pe butonul New. Imediat dupa aceasta operatie, pe ecran apare o fereastra in care Microsoft Access va ofera posibilitatea sa optati pentru crearea formularului cu ajutorul Form Wizard-ului sau pentru un formular simplu. Daca se alege Form Wizard-ul (creare supervizata de "vrajitor"), atunci va trebui selectata ,mai intai tabela sau interogarea pe care se va baza noul formular, iar apoi din fereastra care va aparea va trebui ales "sablonul dorit". Daca se opteaza pentru Blank Form (creare manuala), atunci Microsoft Access creeaza direct un formular simplu care va fi sau nu bazat pe o tabela sau pe o interogare, in functie de selectarea sau neselectarea unei tabele sau a unei interogari din lista.

Un formular poate fi afisat in fereastra bazei de date in trei moduri diferite:

Modul Design (proiectare) - este folosit pentru a modifica prezentarea si proprietatile unui formular.

Modul Datasheet (foaie de date) - se afiseaza direct datele din tabela sau interogarea pe care se bazeaza formularul;

Modul Form (formular) - reprezinta modul de vizualizare al unui formular in timpul utilizarii.

Din aceste trei moduri doar in modul Design se pot efectua modificari asupra unui formular. Pentru a modifica un formular, din fereastra Database se alege formularul dorit apoi se apasa butonul Design. Dupa deschiderea formularului in mod Design se pot efectua diverse operatii: adaugarea de noi controale (fiecare obiect dintr-un formular este denumit control), setarea proprietatilor formularului sau ale controalelor, aranjarea controalelor in interiorul formularului, etc. Controalele care afiseaza date sunt, de cele mai multe ori, legate de un camp din sursa de date (tabela sau interogare) si permit afisarea si introducerea datelor in acelasi fel in care introduceti date in modul Datasheet. Unele controale pot fi legate de o expresie in Access Basic, dar aceste controale nu pot fi editate. Pentru a adauga noi controale trebuie sa deschideti fereastra Toolbox (cutia cu unelte) selectand din meniu optiunea View/Toolbox. Alegeti obiectul dorit executand clic pe el, iar apoi trageti-l cu mouse-ul in fereastra formularului. Pentru a va folosi de un program wizard care sa va ajute sa creati controalele trebuie sa apasati mai intai butonul Control Wizard din ToolBox. Controalele, la fel ca formularele, au diverse proprietati care pot fi accesate selectand din meniu View/Properties sau pur si simplu executand dublu clic pe obiect. Fereastra Properties afiseaza caracteristicile obiectului sau obiectelor (in cazul unei selectii multiple). Din punctul de vedere al datelor, cea mai importanta proprietate a unui formular este RecordSource (sursa de date a formularului). Aceasta proprietate se poate stabili specificandu-se numele tabelei sau interogarii care furnizeaza datele sau printr-o secventa SQL valabila.

Dupa ce au fost create controalele pot fi selectate, repozitionate, aliniate si redimensionate.

Formularele sunt impartite in mai multe sectiuni. Ce mai importanta sectiune, in care se afla majoritatea controalelor este sectiunea Detail, dar mai exista si alte sectiuni: Form Header (antetul formularului), Form Footer (subsolul formularului), Page Header (antetul paginii) si Page Footer (subsolul paginii). Fiecare sectiune are proprietatile sale caracteristice, selectarea unei sectiuni facandu-se prin executarea unui clic intr-o zona fara controale sau prin selectarea bazei care contine numele sectiunii.

Figura 4 : Exemplu de formular in executie

In mod curent, trebuie sa avem in vedere 2 (doua) tipuri de formulare si implicit

metode de construire a acestora:

a) Formulare grefate pe tabelele de date

b) Formulare de tip general

a) Formularele grefate pe tabelele de date - sunt asa-zisele "machete de editare" a da-

telor in tabele (introduceri, modificari, stergeri, cautari.).

Pentru a proiecta un astfel de formular e recomandabila metoda "Wizard" ("Vrajitor"), mai ales pentru "incepatori" si se parcurg urmatorii pasi:

- Selectie obiect "Forms" (din grupul "Objects")

- Selectie optiune "Create form by using Wizard" (dublu-clic sau "Design" - echerul.) - apare fereastra de tip "vrajitor", "Form Wizard"

- Se alege tabela pentru care se creaza formularul (de exemplu: "Unitati") - se poate alege si o interogare ("query")

- Sunt intrebat ce campuri din tabela trebuie sa apara in formular (de regula toate,

caz in care se activeaza butonul - ind um, den um, daca se doreste un anumit camp se selecteaza campul si apoi se activeaza butonul ); in caz ca ne razgandim asupra campurilor avem la dispozitie butoanele complementare celor de mai sus - si )

- Butonul "Next" (din acest moment, in urmatorii pasi se vor proiecta forma de prezentare si stilul, pe ecran, a formularului):

- Forma de prezentare ("layout") - care poate fi: "Columnar", "Tabular" etc.

- Butonul "Next"

- Stilul ("style") formularului - de obicei se alege "Standard"

- Butonul "Next"

- Titlul formularului (pe baza caruia se poate lansa in executie formularul)

- Sunt intrebat daca, din acest moment, pot lansa deja in executie formularul (opti-

unea: "Open the form to view or enter information") sau voi continua cu proiectarea

(optiunea: "Modify the form's design")

- Butonul - care incheie ciclul programului de tip "Wizard" destinat proiectarii unui formular grefat pe un tabel din baza de date.

ATENTIE (!!!), insa: nici pe departe sa nu credem ca am incheiat treaba, de fapt greul abia de-acum incepe.

In urma parcurgerii pasilor prezentati anterior si mentinadu-ne in modul de lucru

"Design", vom obtine pe ecran formatul formularului impreuna cu o caseta cu numele "Toolbox" (cutia cu unelte, sau instrumente de lucru):

Figura 5 : Formular impreuna cu "Toolbox"

Cutia (sau caseta) cu instrumente - "Toolbox"-ul - joaca un rol esential in proiec-

tarea machetelor de tip "Form"; de aici pot fi preluate - cu ajutorul mouse-ului, prin operatiunea "drag and drop" - diverse figuri ("obiecte") si asezate pe ecran, pe baza lor realizandu-se diferite "operatiuni" si "actiuni" asa cum va fi exemplificat. Dintre aceste obiecte cele mai uzitate sunt: Label (eticheta), Textbox, Combobox, Checkbox, CommandButton (buton) etc. - obiecte ce pot fi vizualizate prin simpla deplasare a mouse-ului deasupra "Toolbox"-ului, intrand in actiune mecanismul "ToolTip Text" (text afisat pe ecran in urma mouse-ului.).

Trebuie retinut ca, atunci cand aplicatia este lansata in executie, "obiectele" mentionate mai sus reactioneaza atunci cand apar asa-zisele "evenimente"- de exemplu: clic-stanga mouse, apasarea unei taste: obisnuite ("A", "B", "1".) sau fun-

ctionale ("F1", F2", "Esc".) etc. In Figura 5 este ilustrat un form pe baza caruia se editeaza date in tabela "Unitati". Se observa in partea de jos, "Form Footer", 3 (trei) butoane cu titulaturile: "Adaugare", "Stergere", "Revenire". Aceste butoane reactioneaza la evenimentul "clic-stanga mouse". Spre exemplu, daca se opereaza clic-stanga pe butonul "Adaugare", indiferent pe ce inregistrare ne aflam in tabela

"Unitati", aplicatia "stie" sa realizeze pozitionarea pe o inregistrare noua (goala), care

asteapta sa fie editata (adaugata) in tabela.

ATENTIE!!! Sistemul acorda un ajutor important in proiectarea obiectelor din cadrul form-urilor - prin mecanismul "Wizard" - dar cu conditia ca "bagheta magica" - obiectul "Control Wizards" al "Toolbox"-ului, sa fie activa

b) Formulare de tip general - sunt machetele prin care se proiecteaza menu-urile si submenu-urilor aplicatiilor in Access, fara legatura directa cu tabelele de date. Iata un exemplu de menu, in aplicatia noastra cu titlul "Repartitie materiale":

Figura 6 : Formular de tip general

Operand "clic" pe unul din cele 4 (patru) butoane, se va realiza efectul sugerat de titulatura acestuia. De exemplu: "clic" pe butonul "Editare date" va avea ca efect trecerea intr-un alt menu, subordonat, care va permite editarea datelor in tabelele bazei de date. "Clic" pe butonul are ca rezultat iesirea din aplicatie, inclusiv din mediul "Access".

Prin urmare, intre form-urile de tip general pot exista relatii de subordonare multipla - asa zisele "imbricari", de aici denumirile de "menu" si "submenu".

In fapt, schema organizatorica generala a aplicatiei, ar putea fi prezentata sub forma unei diagrame:



Afisare rapoarte

 

Afisare interogari

 

Editare date

 

T1 := tabela Unitati

T2 := tabela Materiale

T3 := tabela Stocuri initiale

T2 := tabela Miscari

Q1 := interogarea Balanta INNER JOIN

Q2 := interogarea Balanta INTERMEDIARA

Q3 := interogarea Balanta FINALA

R1 := raport Balanta INNER JOIN

R2 := raport Balanta INTERMEDIARA

R3 := raport Balanta FINALA

Butoanele cu titulatura "Revenire" (cate unul la fiecare din "form"-urile: "Editare date", "Afisare interogari", "Afisare rapoarte") au ca efect inchiderea ("Close") a form-ului general respectiv si revenirea la form-ul general imediat superior (in cazul de fata: "Formular general aplicatie").

Butonul a fost proiectat in cadrul form-ului "Formular general aplicatie", evenimentul "clic-stanga" mouse pe el determinand iesirea din aplicatie si din mediul

Access.

Proprietatile form-urilor

O problema importanta a form-urilor (atat cele tratate la punctual "a" cat si "b") este aceea a proprietatilor ("Properties"). Proprietatile pot fi aferente intregului form sau pentru obiecte din cadrul form-ului. Pentru a fi activata pagina referitoare la proprietati, se va opera astfel:

- pentru intregul form: clic-dreapta pe punctul cel mai din stanga-sus al form-ului

("Corner-Left") Properties (daca acest punct nu e vizibil, se opereaza clic-stanga

- pentru un obiect din form: clic-dreapta pe insusi obiectul vizat Properties

Sa retinem cateva din cele mai importante (si mai utile) proprietati in ordinea aparitiei acestora in pagina:

- Caption: titulatura care va aparea pe form / obiect.

- Scroll Bars: se refera la barele de derulare, orizontala si verticala, ale form-lui.

- Record Selectors: se selecteaza pozitia inregistrarii curente dintr-o tabela.

- Navigation Buttons: butoane prevazute de sistem, in partea de jos a unui form,

pe baza carora se poate naviga pe inregistrarile dintr-o

tabela (precedenta, urmatoarea, prima, ultima.).

Sa retinem ca, form-urile de tip general (care, ne amintim, nu gestioneaza inregistrari din tabele) trebuie sa aiba setate astfel cele trei proprietati anterioare:

(Scroll Bars: Neither, Record Selectors: No, Navigation Buttons: No).

-Modal: daca e setata "Yes", form-ul aflat in executie nu permite asa-zisa "iesire

in decor" (in caz ca se opereaza "clic" in afara lui, form-ul nu dispare de

pe ecran.

Figura 7 : Proprietati form "per ansamblu"


O serie de proprietati, specifice unor obiecte dintr-un form, consideram a fi foarte

utile. Vom trata ca exemplu obiectul Combo Box aferent campului "ind um" din tabela "Stocuri initiale", pe baza caruia se pot selecta inregistrari din tabela "mama",

relationata, "Unitati" (a ne reaminti de mecanismul "Lookup" - "vedere in oglinda"),

fara a mai fi necesara introducerea de la tastatura. Vom retine, ca fiind foarte utile,

urmatoarele proprietati:

- Name: numele obiectului (dat de sistem dar putand fi schimbat de proiectant.)

- Control Source: numele campului, asa cum apare in tabela din care vor proveni

datele

- Row Source: sau "sursa randului", apare sub forma unei fraze de tip "SELECT",

problema fiind mai complexa va fi detaliata la capitolul privind in-

terogarile

- List Rows: numarul de randuri care va fi afisat in lista

- ListWidth: latimea portiunii afisate, lateral, in "Lookup"-ul obiectului

Figura 8: Proprietati obiect "Combo Box" ind um


3. Interogarile

O interogare este un set de intrebari ce se pun tabelelor din baza de date, sau o definitie a datelor ce se doresc gasite: ce campuri, din care tabele, corespunzator caror criterii, in ce ordine de sortare dar si coloane rezultate din utilizarea unor formule de calcul, prin utilizarea instrumentului Builder Datele interogate pot fi dintr-o singura tabela sau pot fi din mai multe tabele tinandu-se cont de relationarea intre ele. Un query arata ca o tabela, dar nu este o tabela, este doar o vizualizare dinamica a datelor din una sau din mai multe tabele. Interogarile pot fi folosite ca sursa pentru formulare sau pentru rapoarte. De altfel, sa retinem ca o recomandare importanta: rapoartele mai complexe, cu date afisate din mai multe tabele, eventual avand coloane ce contin formule de calcul - obtinute cu instrumentul Builder", vor trebui sa aiba la baza date dintr-o interogare care a fost creata in prealabil.

Crearea unei query

Ca si in cazul tabelelor si a formularelor, o interogare se poate crea folosind "vrajitorii" oferiti de Microsoft Access ("Create query by using wizard") sau in modul

"Design view" ("Create query in Design view").

Pentru a crea (proiecta) o interogare noua, in Access '2000, se selecteaza obiectul

"Queries", se alege una din optiunile mentionate mai sus ("Create query by using wizard" sau "Create query in Design view") apoi "New". Obtinem fereastra "New

Query" ilustrata in Figura 9

Figura 9:Proiectarea unei interogari


In continuare se va prezenta modul concret de proiectare a unei interogari, alegand prima varianta "Design View":

Apare fereastra Show Tables . Din aceasta fereastra se aleg tabelele sau interogarile care contin datele necesare interogarii. Dupa ce s-au ales tabelele aceasta fereastra trebuie inchisa, insa daca se constata ca mai sunt necesare si alte tabele se poate deschide din nou reapeland optiunea Show Tables din menu-ul Query. Daca s-au adaugat mai multe tabele, se pot observa uneori niste linii intre tabele ce reprezinta relatiile dintre ele si arata cum sunt articolele dint-o tabela in relatie cu articolele din alte tabele. Acum, ca s-au ales tabelele interogarii trebuie specificat si ce campuri din aceste tabele sunt implicate in interogare. In partea de jos a ferestrei Query Design se afla o grila care contine campurile interogarii. Astfel, pentru a adauga un camp in interogare se poate face dublu-clic pe el, sau se face clic pe el si tinand tasta mouse-ului apasata se trage acest camp pe pozitia dorita din grila ( drag and drop  . Exista posibilitatea de a introduce in grila mai multe campuri odata. Se selecteaza mai multe campuri in stilul Windows: Shift+clic pentru o gama continua sau Ctrl+clic pentru o selectare individuala, si apoi se trage pe toate campurile unei tabele in interogare se pot selecta toate campurile prin dublu-clic pe numele tabelei, sau se poate trage semnul asterix din casuta tabelei pe grila. Pentru a selecta un camp in grila interogarii se face clic pe selectorul aflat deasupra numelului campului. Acest camp selectat poate fi mutat pe o alta pozitie in grila interogarii; poate fi sters din interogare apasand tasta "Del" sau poate fi inserat un nou camp inaintea lui apasand tasta "Ins". De multe ori in interogare se doreste folosirea altor nume pentru unele campuri decat cele din tabele. Astfel, pentru a da un nou nume diferit de cel din tabela se face clic la stanga numelui de camp existent si se va scrie noul nume urmat de ":" - practic titulatura coloanei create.

Daca se doreste ca sa se vada in grila numele tabelei din care face parte fiecare camp al interogarii, din meniul Table Name, si in grila va aparea un nou rand sub randul Field, numit Table Name, si in grila va aparea un nou rand sub randul Field, numit Table. Acelasi lucru se face in cazul in care se doreste sa nu apara numele tabelelor din care fac parte campurile interogarii. De multe ori se doreste ca datele sa fie prezentate intr-o anumita ordine sau sa fie sortate dupa o anumita cheie. In grila interogarii exista un rand numit Sort, sub randul Field (sau Table daca exista), si in acest rand se poate specifica pentru fiecare camp ordinea de sortare: Asceding (de la 0 la 9 si de la A la Z), Desceding (de la 9 la 0 si de la Z la A) sau (not sorted). Faptul ca un camp este inclus intr-o interogare nu inseamna ca acest camp trebuie afisat in dynaset. Uneori campurile sunt necesare doar pentru specificarea criteriilor de selectie a articolelor din tabele. Cu ajutorul casetei de validare din randul Show se poate specifica daca campul respectiv va fi afisat sau nu in interogare. O interogare poate include pe langa campurile din tabele si alte campuri (care pot fi rezultate in urma unor operatii facute pe campurile din tabele) sau rezultate ale unor expresii. Daca se doreste acest lucru se face clic pe randul Field si apoi se apasa butonul drept al mouse-ului. Se alege optiunea Build si va aparea fereastra Expression Builder unde se poate construi expresia dorita. In cadrul acestor campuri se pot folosi toata gama din Access si se mai pot introduce si valori din campurile unor formulare. De exemplu, daca avem formularul Clienti, in care avem campul Nume si se doreste implicarea intr-un anumit fel a acestui camp in interogare, referirea la acest camp se face astfel: Forms! Clienti Nume

Fereastra Query are trei moduri de afisare: modul Design, in care se creeaza definitia interogarii, modul Datasheet in care se pot vedea rezultatele interogarii si modul SQL unde se pot vedea instructiunile SQL.

Criterii de selectie pentru query

In cazul unor criterii simple de selectare a articolelor, ca de exemplu toate persoanele cu numele de familie Popescu sau toate persoanele dintr-un anumit oras se trece in randul Criteria. Daca se introduc valori in dreptul mai multor campuri pe acelasi rand vor fi selectate doar acele articole care indeplinesc toate conditiile. Daca criteriile sunt introduse pe randuri diferite vor fi selectate articolele care indeplinesc cel putin una din conditiile puse. Pe langa operatorul de egalitate, Microsoft Access pune la dispozitia utilizatorilor si alti operatori pentru specificarea criteriilor de selectie: `< > < > <>`,`Like`,`Between` si `Not`. De asemenea, in celulele grilei de pe randul Criteria se pot introduce expresii, iar pe baza rezultatelor furnizate sa se obtina selectia dorita. Totusi pot sa apara probleme in anumite cazuri. De exemplu, daca se fac comparari intre date de tip numeric diferit, Integer cu Double, 45 nu este egal cu 45.98. Mai des apar probleme la compararile de expresii de tip Date/Time cu formate diferite. Deci trebuie avuta grija in astfel de cazuri.

Tipuri de interogari

Interogarile sunt de diverse tipuri, prima categorie rezultand din fereastra "New

Query" - Figura 9:

- tipul "Select Query" - interogarea cea mai "comuna", care poate fi proiecta-

ta printr-una din optiunile: "Design View" sau "Simple Query Wizard".

- tipul "Crosstab Query" - interogari de tip "incrucisat", prezinta datele sub

forma de linii si coloane asemenea unei matrici; li se mai spune si tipul "grid".

- tipul Find Duplicates query - determina inregistrarile duplicate din tabele sau interogari si numai acestea vor fi afisate.

- tipul Find Unmatched query - determina inregistrarile dintr-o tabela / inte-

rogare care nu sunt relationate cu inregistrari din alta tabela / interogare.

Dupa ce am intrat deja in faza de proiectare a unei noi interogari, am incheiat si

etapa "Show Table", avem la indemana optiunea "Query" din menu-ul principal, pe

care daca o activam (clic-stanga) obtinem urmatoarea imagine:

Figura 10: Noi tipuri de interogari


Observam si optiunea de tip sub-menu "SQL Specific" care odata activata face vizibile 3 noi optiuni - dintre care retinem: "Union" (un tip mai special de interogare

care va fi tratata la momentul potrivit).

Sa tratam noile tipuri de interogari, in ordinea care apar pe ecran in Figura 10:

- tipul "Make-Table Query" - creaza o noua tabela ("destinatie") dintr-una

sau mai multe tabele ("sursa"), din care pot fi selectate toate sau numai anumite campuri.

- tipul "Update Query" - realizeaza modificari globale de inregistrari intr-una

sau mai multe tabele existente.

- tipul "Append Query" - realizeaza adaugarea de inregistrari dintr-una sau mai multe tabele ("sursa"), la sfarsitul unei tabele ("destinatie").

- tipul "Delete Query" - realizeaza stergeri de inregistrari intr-una sau mai multe tabele existente.

Sa punctam diferenta intre "Make-Table Query" si "Append Query", care la prima vedere par identice. In primul caz se genereaza inclusiv structura noii tabele spre deo-

sebire de interogarea tip "Append" care are nevoie de structura tabelei destinatie deja

configurate pentru a putea adauga inregistrari.

Evident ca, atunci cand proiectam interogari care realizeaza adaugarea de inregis-

trari, trebuie sa avem in vedere, cu mare atentie, natura campurilor (tipul si lungimea) implicate. Nu putem, de pilda, sa prevedem copierea unui camp de tip

numeric intr-o tabela unde campul corespondent este declarat tip "Text".sau invers.

Vom observa totodata ca pentru a proiecta interogari de tipurile mentionate mai sus, trebuie in prealabil sa deschidem proiectarea pentru o "Select Query" dupa care

activam optiunea "Query".

Mai exista si tipul "Union Query" (Query SQL Specific Union) a carui proiectare necesita cunostinte de tip SQL (mai precis fraze "SELECT" unificate) si care va fi tratat la punctul care urmeaza, Coerenta datelor in interogari.

Coerenta datelor in interogari

Pentru a intelege acest aspect sa pornim de la inregistrarile existente la un moment

dat in tabelele din baza de date "Repartitie materiale", luata ca exemplu si o situatie ce

se cere a fi obtinuta printr-o interogare: Balanta FINALA.

Figura 11: Tabelele bazei de date si interogarea cea mai semnificativa


Interogarea "Balanta FINALA" contine date prelucrate din tabelele "Unitati", "Materiale", "Stocuri initiale" si "Miscari" - care sunt relationate intre ele, dar si

o coloana (STOC FINAL) cu date care rezulta in urma aplicarii unei formule de

calcul:

- INDICATIV UM din tabela "Unitati"

- COD MATERIAL din tabela "Materiale"

- STOC INITIAL din tabela "Stocuri initiale"

- INTRARI si IESIRI din tabela "Miscari"

- STOC FINAL rezulta in urma formulei de calcul:

(STOC INITIAL + INTRARI - IESIRI)

Ceea ce trebuie remarcat insa este faptul ca datele de provenienta nu sunt preluate

brut din campurile tabelelor ci pe baza unui algoritm intern de care NOI suntem raspunzatori (!!!) - de aici rezultand ceea ce am numit "coerenta datelor in interogari". Sa luam cateva exemple cu observatiile de rigoare:

- randul 1 al interogarii (INDICATIV UM:02490, COD MATERIAL:001) - care

sunt si campurile de legatura intre tabele (!) - concentreaza date din 3 inregistrari ale

tabelelor: stoc init = 1000 (tabela: "Stocuri initiale"), int = 100 si ies = 10 (tabela: "Miscari"); daca se adauga, sa zicem, inca 5 inregistrari in "Miscari" aferente acele-

iasi "combinatii" (ind um=02490, cod mat=001), in interogare va ramane tot 1 inre-

gistrare, modificandu-se doar valorile de la INTRARI si / sau IESIRI.

- randul 3 al interogarii (INDICATIV UM:02490, COD MATERIAL:003) - are

stoc init = 3000, valoare preluata din tabela "Stocuri initiale", iar INTRARI-ele si

IESIRI-ile sunt 0; asta inseamna ca in tabela de "Stocuri initiale" exista inregistrarea aferenta cu stocul initial dar in tabela "Miscari" nu exista vreo "intrare" sau "iesire"

pentru "02490" cu "003".

- randul 7 al interogarii (INDICATIV UM:02493, COD MATERIAL:002) - se afla intr-o situatie "inversa" fata de randul 3 prezentat in paragraful precedent; nu exista inregistrare corespondenta in tabela "Stocuri initiale" (de aceea interogarea are in coloana STOC INITIAL valoarea 0), in schimb exista "Miscari" corespondente: respectiv o "intrare" de 20 bucati care a fost preluata ca atare in interogare.

- randul 8 al interogarii (INDICATIV UM:02493, COD MATERIAL:003) - ulti-

mul, are o situatie similara randului 7, cu deosebirea ca pe langa o "intrare" de 30 bu-

cati exista si o "iesire" de 300 bucati - de aceea "stocul final" va fi negativ (0 + 30 -

- sa facem un mic experiment: introducem in plus in tabela "Miscari", 2 inregis-

trari astfel:

- prima : IND UM=02490, COD MAT=002, INT=200

- a doua: IND UM=02490, COD MAT=002, IES=20,

dupa care sa consultam interogarea "Balanta FINALA" - respectiv "combinatia: 02490 - 002"; vom constata ca cele doua "miscari" operate se reflecta in coloanele

aferente ale interogarii, insumandu-se "intrarile" respectiv "iesirile" si actualizandu-se

coloana de "stoc final";

- sa mai remarcam cazul campului "ind um = 02492" din tabela "Unitati"; acesta

nu se regaseste in interogare intrucat nu exista nici in "Stocuri initiale" nici in "Mis-

cari" vreo inregistrare corespondenta; similar s-ar intampla in cazul campului

"cod mat" din tabela "Materiale".

Prin urmare, trebuie sa intelegem ca inregistrarile din interogarea "Balanta FINALA" rezulta dintr-o "corespondenta biunivoca" a inregistrarilor existente in

tabelele "Stocuri initiale" si "Miscari": daca "combinatia" de campuri [ind um] si

[cod mat] exista cel putin intr-una din tabele, ea trebuie sa se regaseasca si in inte-

rogare dar numai o data.

Ar fi totul OK daca proiectarea interogarii "Balanta FINALA" ar fi atat de simpla

si logica pe cat pare "fenomenul economic" pe care l-am tratat. Dar pentru a obtine

ce ne-am propus de la interogarea "Balanta FINALA" (de tip "Select Query") trebuie

mai intai sa construim "Balanta INTERMEDIARA", de tip "Union Query". De data

aceasta va trebui sa "jonglam" putin cu fraze de tip SQL si sa le urmarim efectul (a se

vedea Figura 12). Sa retinem si cum putem proiecta o "Union Query": se pleaca de la

o interogare simpla ("Select Query"), care sa contina coloanele corespunzatoare situa- tiei solicitate si se salveaza ca atare; apoi, se intra in "Design"-ul interogarii si: Query SQL Specific Union; in fereastra nou aparuta se poate lucra numai cu fraze de tip SQL. Se poate vizualiza chiar si intr-o "Select Query" fraza SQL atasata (View

SQL View), care poate fi copiata (Ctrl/C) in "Clipboard", pentru ca ulterior sa fie

"lipita" (Ctrl/V) in alta interogare - evident ca urmeaza prelucrarea ulterioara a acesteia, dupa necesitati.

Figura 12: Design-ul si executia Balanta INTERMEDIARA,

Executia Balanta FINALA

Executia Balanta INNER JOIN


Dispunem aici de toate datele problemei", pe care trebuie sa o tratam. Sub aspectul "coerentei datelor din interogari", distingem 3 "puncte" de rezolvat:

a) stoc initial" existent si lipsa "miscari"

b) "stoc initial" lipsa si "miscari" existente

c) "stoc initial" existent si "miscari" existente

(a ne aminti de corespondenta biunivoca" a inregistrarilor existente in tabelele "Stocuri initiale" si "Miscari" tratata anterior).

Prin proiectarea unei interogari obisnuite, "Select Query", nu putem rezolva decat

problema punctului c), respectiv obtinem "Balanta INNER JOIN". Dar nici aceasta

problema nu e rezolvata in totalitate pentru ca "intrarile" si/sau "iesirile" aferente aceleiasi combinatii [ind um] - [cod mat] apar ca inregistrari separate in interogare.

Or noua ne trebuie ca ele sa figureze pe acelasi rand, iar daca se repeta, "intrarile" respectiv "iesirile" corespondente sa fie cumulate. Prin urmare "Balanta INNER JOIN" nu ne-ajuta cu nimic.

Observam datele din Balanta INTERMEDIARA": vom regasi inregistrarile

reunite din tabelele Stocuri initiale" (6) si "Miscari" (7), ordonate dupa combinatia [ind um] - [cod mat], care, repetam, constituie "elementul de legatura" intre cele doua

tabele. Ulterior, "Balanta FINALA" va regrupa inregistrarile aferente aceleiasi combi-

natii [ind um] - [cod mat] si va cumula corespunzator "intrarile" si "iesirile". De exemplu, primele 3 inregistrari din "Balanta INTERMEDIARA" se regasesc in prima

inregistrare din "Balanta FINALA" cu insumarile de rigoare - a se observa ca inregis-

trarile corespund aceleiasi combinatii: [ind um] = 02490, [cod mat] = 001 (!!!)

E timpul sa tratam, pe scurt, comanda SQL cu numele: SELECT, in fapt care este scopul sau si cum se construiesc frazele de tip SELECT.

Scopul efectiv al comenzii este de a consulta tabelele bazei de date si a le afisa conform cerintelor noastre, pe baza unor criterii prevazute in clauzele ei.

Sintaxa comenzii, cu principalele clauze, fara pretentia de a fi cuprinsa in intregi-

me, este urmatoarea:

SELECT [DISTINCT] | [ALL] tabela.camp [AS titlu .]

..

FROM tabela [INNER JOIN ]

[WHERE conditie ]

[GROUP BY tabela.camp ]

[ORDER BY tabela.camp ]

[UNION SELECT ]

De mentionat, relativ la cuvintele-cheie incluse in paranteze drepte [], ca respecti-

vele optiuni nu sunt obligatorii in contextul comenzii; mai multe puncte inseamna po-

sibilitatea de continuare Si sa nu uitam: orice fraza sau combinatie de fraze tip SQL

trebuie finalizata cu caracterul ";" (punct si virgula.).

SELECT - e "cuvantul cheie" al comenzii, sugerand ca incepe operatiunea de "selec-

tie" din tabelele de inregistrari.

DISTINCT - are rolul de eliminare a inregistrarilor duplicate, din punctul de vedere

al unor campuri sau combinatii de campuri din tabele sau interogari, fiind

selectata numai una; combinatia "[ind um] - [den mat]" tratata cu alte oca-

zii este un exemplu in acest sens.

ALL - inseamna ca se solicita selectia tuturor inregistrarilor,

AS - daca e folosita, aceasta clauza va genera titulatura ( titlu") ca antet al coloanei

din interogare.

FROM - e un cuvant-cheie obligatoriu de utilizat (alaturi de insusi SELECT") si se

refera la sursa de date (una sau mai multe tabele / interogari).

INNER JOIN - este ceea ce numim jonctiune interna", prin care liniile unei tabele se

combina cu liniile altei tabele fiind selectata doar partea comuna" a

lor; evident, criteriul de selectie este un camp sau combinatie de cam-

puri-cheie; poate fi asimilata cu intersectia a doua multimi din care a

selectata "partea comuna"; a se vedea ca exemplu interogarea

"Balanta INNER JOIN", mai precis fraza SQL atasata.

WHERE - este o clauza conditionala pe baza careia se pot stabili criterii de selectie in

cautarile executate prin fraza SELECT; in fapt, se pun conditii astfel incat

cautarile sa fie mai selective.

GROUP BY - asigura gruparea mai multor inregistrari, pe baza unui criteriu de selec-

tie (campuri sau asociatie de campuri-cheie), urmand a se face o totali-

zare a valorilor altor campuri (de tip: SUM sau COUNT); clauza trebu-

ie utilizata in asociatie cu functia SUM sau COUNT.

ORDER BY - are rolul de a ordona rezultatele operatiilor de cautare si prelucrare

dupa anumite criterii, de regula campuri-cheie din tabele; practic

se realizeaza o sortare a datelor dupa campuri-cheie.

UNION SELECT - incepe o alta fraza "SELECT" al carei efect se va conjuga cu al

frazei "SELECT" precedente; este extrem de utila intrucat ne

permite combinarea oricator fraze "SELECT" deci obtinerea de

rezultate mult mai spectaculoase decat daca am folosi una

singura.

Repetam, exista si alte multe clauze ale frazei "SELECT" dar cele prezentate an-

terior le consideram a fi principalele.

Acum, avand la dispozitie "materialul didactic" necesar, putem incerca cateva

exemple dar in principal va trebui sa "destelenim" exemplul afisat in Figura 12

Exemplul 1

SELECT [Stocuri initiale].[ind um], [Stocuri initiale].[cod mat],

[Stocuri initiale].[stoc init]

FROM [Stocuri initiale]

WHERE ((([Stocuri initiale].[stoc init])>2000));

Vor fi selectatate din tabela "Stocuri initiale" numai inregistrarile pentru care cam-

pul "stoc init" are peste 2000 bucati.

Exemplul 2

SELECT Miscari.[ind um], Miscari.[cod mat], Miscari.int, Miscari.ies

FROM Miscari

WHERE (((Miscari.[cod mat]) Like [Cod material:] & '*'));

Vor fi selectate din tabela Miscari" acele inregistrari pentru care campul "cod mat"

va fi cel pe care noi, ca utilizatori, il vom tasta, sub forma parametrizata:


Observam o noutate: cuvantul-cheie "Like" (ca si.) urmat de o expresie. Acesta se utilizeaza pentru campurile declarate tip "Text" - in cazul nostru "cod mat". Expre-

sia este si ea mai speciala: [Cod material:] reprezinta titulatura care apare in fereas-

tra parametrizata, & e semnul specific operatiunii de concatenare iar "*" inseamna ca

se asteapta de la utilizator parametrul propriu-zis ("*" = "orice"), practic o valoare

aferenta campului "cod mat" din tabela "Miscari".

Exemplul 3

SELECT Miscari.[ind um], Miscari.[cod mat],

SUM(Miscari.int) AS [TOT INT], SUM(Miscari.ies) AS [TOT IES],

COUNT(Miscari.int) AS [NR INT], COUNT(Miscari.ies) AS [NR IES]

FROM Miscari

GROUP BY Miscari.[ind um], Miscari.[cod mat]

ORDER BY Miscari.[ind um], Miscari.[cod mat];

De data asta fraza este mai complexa. Sa privim sursa de date (tabela "Miscari") si

rezultatul frazei "SELECT" de mai sus (interogarea "Grupsumcount") - Figura 13.

Figura 13: Sursa de date si rezultatul frazei "SELECT" din Exemplul 3


Sa remarcam inainte de toate prezenta functiilor SUM si COUNT. SUM realizeaza in-

sumarea valorilor aferente campurilor "int" respectiv "ies" din tabela "Miscari", iar

COUNT le numara. Dar cele doua functii nu actioneaza de sine-statator ci in legatura

cu clauza "GROUP BY". Aceasta are rolul de a grupa inregistrarile gasite conform criteriului stabilit - in cazul nostru combinatia de campuri [ind um] si [cod mat] - insumarea si numararea realizandu-se pe "grupurile" respective. A se urmari, in acest sens, combinatia "02490 - 001": apare de doua ori in tabela "Miscari" dar numai o singura data in interogare cu insumarile (SUM) si numaratorile (COUNT) de rigoare. Daca ar lipsi clauza "GROUP BY" functiile SUM respectiv COUNT ar "calcula" o singura valoare pentru fiecare camp desemnat in interogare, cu rol de "total general".

In fraza "SELECT" exista si clauza "ORDER BY" urmata de o expresie, identica

celei din "GROUP BY". Rolul ei este de a sorta in ordine crescatoare ("Ascending"),

inregistrarile din tabela "Miscari". E importanta si aceasta operatiune intrucat sesizam

ca ordinea fizica a inregistrarilor in tabela nu este strict crescatoare: a observa ultimele

doua inregistrari.

Exemplul 4

Acum vom relua cazul interogarii "Balanta INTERMEDIARA". In Figura 12, de

la inceputul acestui capitol, am tratat aceasta interogare numai sub aspectul de "feno-

men economic", sa vedem insa care e si aspectul de "fenomen informatic" - respectiv

frazele SQL existente in interogare. Problema in acest caz e mai dificila, de aceea e

bine sa avem in fata ochilor datele concrete, privite ca "sursa" si "rezultat" -

Figura

Figura 14: Sursa de date si rezultatul frazei "SELECT" din Exemplul 4


Sesizam inainte de toate ca exista 2 (doua) fraze "SELECT" reunite prin cuvantul-cheie "UNION" - ne reamintim: in acest caz a doua fraza "SELECT" va continua

efectul primeia.

Ce se cerea de la interogare:

- reunirea aaaaaaaa

Proprietatile interogarilor

In Microsoft Access, se pot folosi numeroase proprietati pentru a determina caracteristicile unei interogari, a campurilor din interogare si a tabelelor din interogare. Aceste proprietati pot fi apelate in mai multe moduri: (1) din meniul View se alege optiunea Proprieties; (2) se apeleaza butoanele din toolbar; (3) se face clic dreapta si din shortmenu se alege optiunea Proprieties. Cu ajutorul acestor proprietati se poate stabili formatul unor campului respectiv, descrierea acestuia, etc. Cand intr-o interogare numele unei tabele sau lista de nume de campuri ce furnizeaza date interogarii este incomod de utilizat, se poate asocia un Alias pentru lista respectiva. Cele mai semnificative proprietati sunt chiar cele ale interogarii. Amintim in continuare doar cateva: OutoutFields - daca aceasta proprietate este setata pe Yes atunci toate campurile din tabela vor fi incluse in dynaset. TopValues - implicit aceasta proprietate este setata pe All, adica sa afiseze toate articolele interogarii. Daca se seteaza pe o valoare intreaga, de exemplu 10 sau 200, vor fi afisate doar primele 10 sau 200 articole din interogare. De asemenea se poate introduce o valoare procentuala dar acest lucru duce la incetinirea interogarii. UniqueValues si UniqueRecords - sunt setate implicit pe No respectiv Yes. In cazul in care ambele proprietati sunt setate pe No, atunci in interogare se vor afisa toate articolele. Daca proprietate Unique Values este setata pe Yes atunci articolele duplicate din interogare vor fi eliminate. Daca se seteaza Unique Records pe Yes atunci se vor elimina articolele duplicate din tabelele de baza. Aceste doua proprietati nu pot fi pozitionate simultan pe Yes.

Salvarea si rularea interogarilor

Dupa ce se salveaza o interogare, aceasta devine un obiect al bazei de date. Pentru a salva o interogare se alege din meniul File optiunea Save (Save As.) sau din toolbar, butonul de salvare, Microsoft Access ofera implicit un nume interogarii, dar acesta poate fi schimbat cu un nume sugestiv de maxim 64 caractere care poate sa includa si spatii. O interogare nu poate avea acelasi nume cu o tabela. In cazul in care se introduce un nume de tabela, Access-ul va afisa o intrebare prin care se propune suprascrierea tabelei. Daca se alege Yes tabela cu acelasi nume va fi inlocuita, iar daca interogarea continea acea tabela datele din acesta se vor pierde.

Pentru a rula o interogare din fereastra interogarilor se va face clic pe butonul Open. In cazul in care suntem in modul Design interogarea poate fi rulata alegand optiunea Run din meniul Query sau din toolbar butonul Run.

4. Rapoartele

Microsoft Access furnizeaza o serie de metode de extragere si prezentare a datelor din baza de date, folosind interogarile, formularele si rapoartele. Daca interogarile au fost proiectate pentru selectarea si prelucrarea datelor, formularelor pentru operarea datelor prin intermediul monitorului, rapoartele au fost proiectate in primul rand pentru listarea la imprimanta a datelor din baza, intr-un format atractiv. In rapoarte, datele pot fi organizate si prezentate in grupuri, pot include subformulare si subrapoarte, grafice, imagini, linii si fonturi speciale. Ca si celelalte obiecte din baza de date prezentate pana acum, si rapoartele pot fi create manual sau cu ajutorul vrajitorilor. Daca in cazul interogarilor cea mai comoda cale de creare a unei interogari era cea manuala, in cazul rapoartelor cel mai usor mod de creare este prin intermediul vrajitorilor oferiti de Microsoft Access.

Crearea unui raport

Pentru a crea un raport, din fereastra rapoartelor se face clic pe butonul New si va deschide fereastra New Report, de unde se poate alege modalitatea de creare a raportului: manual sau folosind vrajitorii. In cazul in care s-a ales Report Wizards (vrajitorii) trebuie selectata sursa raportului: o tabela sau o interogare. Exista mai multi vrajitori dintre care amintim: AutoReport Wizard - cea mai rapida cale de creare a unui raport, vrajitorul nu pune nici un fel de intrebari, aranjeaza toate datele pe o singura coloana. Groups/Totals Report - acest tip de raport organizeaza datele in grupuri si le afiseaza intr-un format tabelar (randuri si coloane). Se pot calcula totaluri pentru fiecare grup si totaluri pentru intreg raportul.Mailing Label Wizard - cu ajutorul acestor rapoarte se pot afisa nume si adrese intr-un format special pentru etichete si plicuri. Tabular Wizard - acest vrajitor creaza un raport in care fiecare rand reprezinta un articol din sursa raportului. Dupa ce s-a ales tipul de raport dorit se urmeaza directiile oferite de Report Wizard iar in ultima fereastra a vrajitorului se apasa pe butonul Finish.

Pentru a crea un raport fara ajutorul vrajitorilor se alege butonul Blank Report din fereastra New Report iar apoi se adauga toate controalele si textele manual ca si in cazul formularelor, proiectarea manuala a unui raport fiind similara cu proiectarea manuala a unui formular, folosindu-se aceleasi controale care pot fi selectate din acelasi toolbox, aceleasi proprietati, etc.

Pentru a salva un raport se alege din meniul file optiunea Save (Save As.) si se atribuie raportului un nume sugestiv de maxim 64 de caractere care poate contine si spatii.

Daca suntem in modul de proiectare al raportului acesta poate fi vizualizat in trei moduri: Design View, mod in care se pot face modificari asupra unui raport (adaugarea de noi controale, schimbarea sau aranjarea acestora, etc.); Sample Preview, pentru verificarea fonturilor, a dimensiunilor si a modului de aranjare in pagina a informatiilor; Print Preview, pentru verificarea datelor din intregul raport. Un raport poate fi vizualizat in modul Print Preview si din fereastra rapoartelor, apasand butonul Preview. In modul Preview al unui raport, daca se face clic pe o anumita zona din pagina, aceasta zona poate fi marita sau micsorata. De asemenea, tot din modul Preview, un raport poate fi exportat in diferite formate (Microsoft Word sau Microsoft Excel), facand clic pe butonul Output to Excel din toolbar. In cazul in care un raport are mai multe pagini se pot folosi butoanele de navigare din fereastra raportului pentru a trece de la o pagina la alta. Microsoft Access ofera utilizatorilor posibilitatea de a seta orientarea paginii. Pentru acest lucru, din meniul File se alege optiunea Print Setup (sau din toolbar daca suntem in modul Preview), apoi din grupul Orientation se alege optiunea dorita: Portrait pentru orientare verticala sau Landscape pentru orientare orizontala.

Pentru a tipari la imprimanta un raport, acesta trebuie deschis in orice mod de vizualizare sau trebuie selectat din fereastra Database, apoi din meniul File se alege optiunea Print. De asemenea se poate clic pe butonul Print din toolbar. In acest moment, se va deschide o fereastra de unde se pot selecta paginile din raport ce se doresc tiparite si numarul de copii al raportului.

De multe ori se poate intampla stergerea unui raport din greseala si se pierde timp pentru a-l crea din nou. Microsoft Access pune la dispozitia utilizatorilor o facilitate de listare a definirii raportului. In acesta `definitie` sunt incluse proprietatile raportului, numele, tipurile si proprietatile controalelor din raport. Folosind aceasta facilitate, se pot reconstrui intr-un mod foarte eficient rapoartele pierdute din anumite cauze. Pentru listarea la imprimanta a descrierii unui raport, din meniul File descrierii unui raport, din meniul File se alege optiunea Print Definition.

Sectiunile unui raport

Sectiunile Page Header si Page Footer reprezinta antetul si subsolul de pagina. Aceste sectiuni se folosesc in special pentru rapoartele formate din mai multe pagini. In antetul de pagina se pot pune titluri de coloane, data tiparirii, numarul paginii, etc. In subsolul paginii de asemenea se poate pune data sau pagina curenta. Pentru a numerota paginile trebuie adaugat un TextBox in antet sau subsol iar la proprietatea Control Source a acestui TextBox in antet sau subsol iar la proprietatea Control Source a acestui TextBox se va scrie textul = `Page` Page Page `, unde variabila Page reprezinta numarul total de pagini din raport. In Access 95 acest lucru se poate face mult mai usor selectand optiunea Page Numbers din meniul Insert. Data curenta se poate adauga raportului in mod similar: in Access 95 alegand optiunea Date and Time din acelasi meniu Insert, sau in versiunile mai vechi de Access adaugand un TextBox in raport si scriind in proprietatea Control Source textul = Now(), unde functia Now() returneaza data si ora curenta.

Sectiunile Report Header si Report Footer reprezinta antetul si subsolul raportului. Aceste sectiuni apar doar pe prima pagina respectiv ultima pagina. In antet se poate introduce titlul raportului iar subsolul raportului poate cuprinde un rezumat al informatiilor prezentate in raport, o serie de totaluri si contorizari.

Majoritatea rapoartelor afiseaza datele intr-un format tabelar. Ca si in cazul formularelor continue, sectiunea Detail a raportului se repeta pentru fiecare inregistrare.

Ca si in cazul formularelor, rapoartele pot sa contina subrapoarte, dar spre deosebire de formularele incluse in formulare, includerea subrapoartelor in rapoarte nu este asa de des folosita, doar in cazul in care este nevoie de mai multe sectiuni Detail intr-un raport.

Sortarea si gruparea

In momentul in care se doreste tiparirea unui raport, de obicei datele sunt organizate intr-o anumita ordine. Inregistrarile dintr-un raport sunt afisate in ordinea definita in raport, nu in ordinea din tabela sau interogarea pe care este bazat raportul. Pentru a defini ordinea de sortare a datelor intr-un raport se alege optiunea Sorting and Grouping din meniul View sau se face clic pe buonul Sorting and Grouping din toolbar si se va deschide fereastra Sorting and Grouping unde se pot defini cheile din raport si ordinea lor de sortare. Portiunea de sus a acestei ferestre este destinata definirii cheilor si a ordinii de sortare, iar in partea de jos a ferestrei avem proprietatile fiecarui grup din raport. In coloana Field/Expression se specifica campurile din raport dupa care se vor face sortarile. Nivelul de sortare incepe de sus, prima linie reprezentand cheia cea mai semnificativa din raport. In coloana Sort Order se va specifica ordinea de sortare a fiecarui camp: Asceding (ascedent) sau Desceding (descedent). Pentru a sterge o cheie din raport, din aceeasi fereastra se selecteaza randul care contine cheia respectiva, facand clic pe selectorul campului, si se apasa tasta Del.

Pentru multe raporte , doar sortarea datelor nu este suficienta, deseori fiind nevoie ca raportul sa fie impartit in mai multe sectiuni sau grupuri. Grupurile permit afisarea grupata a unor colectii de articole, de exemplu cazul unei tabele care contine rezervarile de camere dintr-un hotel. Cu ajutorul facilitatii de grupare a articolelor, datele din tabela se vor putea afisa grupate dupa data rezervarii si astfel mult mai usor de studiat raportul respectiv. Datele pot fi grupate dupa orice camp din raport sau expresie, pe maxim 10 nivele. De asemenea, datele se pot grupa dupa acelasi camp de mai multe ori. Daca se doreste, se pot adauga anteturi sau subsoluri pentru grupurile raportului, setand proprietatile Group Header sau Group Footer pe Yes. Pentru a tipari un intreg grup pe o singura pagina se poate seta proprietatea Keep Together pe valoarea Whole Group. Proprietatea grupului Group On este pentru a specifica dupa ce criteriu anume sa se faca gruparea (dupa fiecare valoare, dupa primul caracter in cazul textelor , dupa an, luna, zi, ora, minut in cazul campurilor de tip Date/Time, sau pe intervale in cazul datelor numerice). In subsolurilor grupurilor se pot afisa totaluri sau contorizari referitoare la informatiile din din grupul respectiv.

Evenimentele raportului

La fel ca in cazul formularelor, si rapoartele sunt `sensibile` la o serie de evenimente. Comparativ cu formularele, rapoartele au mai putine evenimente, dar unele din ele sunt identice. Astfel, si in cazul rapoartelor avem evenimentele Open si Close, care conduc la deschiderea si inchiderea raportului; Activate si Deactivate care apar la deschiderea raportului (dupa Open), respectiv la inchiderea raportului (inainte de Close); Error, eveniment care este declansat ori de cate ori apare o eroare in raport. In Access 2000 s-au mai introdus doua noi evenimente: NoData, pentru cazul in care nu sunt date in raport si evenimentul Page, care este declansat ori de cate ori este creat un delimitator de pagina.

Figura 6 : Exemplu de Raport sub Access '2000



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 4061
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved