CATEGORII DOCUMENTE |
BAZE DE DATE
Interogari si rapoarte in Access
Vom porni la drum, in acest episod, constientizand de la bun inceput un adevar rezultat din practica indelungata: "Metoda de interogare, indiferent ca se aplica asupra persoanelor sau asupra datelor, va duce in mod sigur la intocmirea unui raport."
Se stie ca o interogare este un set de intrebari ce se pune asupra 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. De asemenea s-a amintit in primul articol din seria despre Microsoft Access ca datele interogate pot fi dintr-o singura tabela sau pot fi din mai multe tabele, iar interogarea culege infromatiile cerute intr-un dynaset ( set dinamic de articole). Un dynase 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, rapoarte si chiar pentru controalele lista.
Ca si in cazul tabelelor si a formularelor, o interogare se poate crea folosind vrajitorii oferiti de Microsoft Access sau in mod manual.
Daca se doreste crearea unei interogari cu ajutorul vrajitorului, dupa ce se alege optiunea Query Wizards din fereastra New Querry va aparea o noua fereastra de unde se poate alege tipul de interogare care se doreste. Crosstab query - prezinta datele sub forma de linii si coloane asemenea unei tabele. Cu ajutorul acestor interogari se poate prezenta o cantitate mare de informatie intr-un format usor de citit. Find Duplicates query - cauta articolele duplicate dintr-o tabela sau interogare. Find Unmatched query - cauta toate articolele dintr-o tabela ce nu sunt in relatie cu articole din alte tabele. Archieve query - copiaza articole dintr-o tabela intr-o noua tabela si optional le sterge din tabela originala.
De cele mai multe ori nu este nevoie de Query Wizard pentru a crea o interogare noua.
In continuare se va prezenta modul de creare a unei interogari. Dupa ce se alege optiunea New Query din fereastra New Query se va deschide fereastra Query Design (Proiectarea interogarii) si fereastra Add Tables (Show Tables in Access 95). 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 apeland optiunea Add Tables (Show Tables in Access 95) din meniu 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. 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 ":".
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 este inclus ca o coloana in dynaset sau este folosit doar pentru criteriile de selectie. 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.
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: a<a,a>a,a<=a, a>=a, a<>a,aLikea,aBetweena si aNota. 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.
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.
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 includea 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.
Pana acum s-au prezentat interogari care culeg datele din mai multe tabele, le sorteaza, flirteaza si apoi datele rezultate se depun intr-un dynaset. Microsoft Access pune la dispozitiea utilizatorilor un tip special de interogari numite interogari actiune (Query Action) cu ajutorul carora se pot efectua actiuni de stergere, adaugare, modificare a articolelor din anumite tabele, sau chiar de creare a unor tabele noi,. Astfel avem interogarea Delete (Delete Query) pentru stergerea de articole dintr-o tabela, interogarea Update (Update Query) pentru modificarea datelor dintr-o tabela, interogarea Append (Append Query) pentru adaugarea de noi articole intr-o tabela si interogarea Make Table (Make Table Query) ce creeaza o noua tabela pornind de la inregistrari existente.
Pentru crearea unei interogari actiune se va crea o interogare Select in modul prezentat anterior si apoi se alege din meniul Query sau din toolbar tipul de interogare dorit. Interogarea Delete este utila in cazul in care se doreste stergerea mai multor articole din anumite tabele deodata. Cel mai simplu mod de creare a unei interogari Delete este de a crea o interogare Select care sa filtreze datele care se doresc sa fie sterse si apoi se transforma aceasta interogare intr-o interogare Delete. O interogare Delete poate determina si stergerea unor articole din alte tabele cele care intra in interogare, in cazul in care avem relatii intre tabele cu proprietatea de stergere in cascada. Interogarea Update se foloseste pentru a schimba continutul unor campuri, noile valori putand sa se bazeze pe vechile valori sau sa fie independente de acestea. si in cazul interogarilor Update pot aparea modificari si in alte tabele decat in cele din interogare, datorita proprietatii Cascading Updates a relatiilor dintre tabele. In acest caz cel mai simplu mod de creare a interogarii este de a crea o interogare Select care sa filtreze datele ce trebuiesc modificate, apoi se transforma aceasta interogare in interogare Update si apoi in randul Update To din grila interogarii se vor introduce noile valori. Acest tip de interogare este util mai ales in cazul in care avem date gresite in tabele si vrem sa le inlocuim cu cele corecte.
Spre deosebire de interogarea Update, interogarea Make Table nu modifica datele dintr-o tabela existenta, ci va crea o noua tabela dintr-un set de articole selectate. Noua tabela poate fi creata in baza de date curenta sau intr-o alta (alte) baza (baze) de date. Utilizarea acestui tip de interogare este foarte utila pentru crearea unor tabele temporare care sa contina copiile altor tabele la un moment dat. Procedeul este de asemenea foarte simplu: se creeaza o interogare Select ce selecteaza datele care se doresc introduse in tabela temporara si apoi se transforma intr-o interogare Make Table din meniul Query sau facand clic pe butonul din toolbar,; apoi se introduce numele noii tabele si daca este cazul numele bazei de date.
Interogarea Append, din punct de vedere al functionarii, este similara cu interogarea Make Table,cu deosebirea ca datele sunt adaugate la o tabela deja existenta. De asemenea, se poate ca tabela la care se adauga noile articole sa fie din alta baza de date. Aceste interogari se folosesc in special in cazul in care se doreste adaugarea unor seturi de articole care indeplinesc anumite conditii. De exemplu, daca avem doua tabele cu persoane, ce au aceeasi structura, cu singura deosebire ca intr-una din tabele dorim sa pastram doar persoanele din Bucuresti, cu ajutorul interogarii Append, acest lucru se poate face foarte simplu, selectand articolele din prima tabela si apoi adaugandu-le in cea de-a doua tabela. Interogarile Append pot fi folosite si in cazul in care unele campuri dintr-o tabela nu exista in cealalta tabela. De exemplu, daca prima tabela are 10 campuri si tabela din care se adauga are 6 campuri, in inregistrarile care se vor adauga vor fi completate doar cele 6 campuri. Pentru a crea o interogare Append,ca si in cazul celorlalte interogari, se va crea o interogare Select, se vor filtra datele care trebuiesc adaugate, daca este cazul, si apoi se va transforma aceasta interogare intr-o interogare Append, specificandu-se tabela in care se vor adauga noile articole. In grila interogarii, in randul Field se va specifica campul din care se adauga valoarea iar in randul Append To se va specifica campul in care se adauga valoarea.
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.
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 lke 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 adefinitiea 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 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 = aPagea ξ Page ξ a /ξ Page a, 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.
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.
La fel ca in cazul formularelor, si rapoartele sunt asensibilea 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 95 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.
In cazul in care suntem intr-un modul si vrem sa ne referim la unul din controalele raportului, metoda este aproape identica cu cea a apelarii unui control dintr-un formular, cu deosebirea ca acum vom folosi Reports in loc de Forms; referirea se va face astfel: Reports! NumeleRaportului Numele-Controlului
De asemenea, daca se doreste tiparirea unui raport sau afisarea lui pe ecran dintr-un formular, in momentul care se face clic pe buton, vom proceda astfel: la evenimentul On Click al butonului respectiv se va scrie: DoCmd OpenReport Numele Raportului, A_PREVIEW(mod preview), sau DoCmd OpenReport NumeleRaportului, A_NORMAL (listare la imprimanta). O alta solutie este aceea de utilizare a vrajitorilor in momentul crearii butoanelor, care vor scrie acelasi lucru in locul nostru.
V
Comenzi macro si module in Access
Comenzile macro reprezinta o interfata simpla si placuta pusa la dispozitia celor care nu sunt specialisti in programare, pentru a putea executa diferite operatii cu obiectele bazei de date, precum si pentru a defini meniuri
Daca pentru proiectarea unor aplicatii mai simple putem folosi cu succes comenzile macro, pentru dezvoltarea unei aplicatii serioase in Access trebuie folosit limbajul Access Basic ( sau Visual Basic in Access 95). Subrutinele si functiile scrise pentru aceste aplicatii sunt pastrate in module.
O comanda macro este o secventa de actiuni programata sa se execute la comanda. De exemplu, daca dorim sa executam deschiderea unei tabele, apoi apelarea unei interogari si tiparirea unui raport, dupa care tabela sa se inchida, toate aceste actiuni pot fi incluse intr-o comanda macro si se executa automat ori de cate ori este nevoie. Comenzile macro sunt prezentate in fereastra Database, la fel ca tabelele, formularele, interogarile si celelalte obiecte din Access. Dar aceste comenzi macro pot fi, de fapt, nu numai comenzi simple, ci si mai multe comenzi macro combinate intr-un grup. Gruparea comenzilor macro similare duce la o localizare si o intretinere mai usoara a acestora. Comenzile macro se utilizeaza pentru realizarea mai usoara si mai rapida a sarcinilor repetitive, dar in unele cazuri reprezinta singura posibilitate de a realiza anumite operatii. De exemplu, cu ajutorul unei comenzi macro denumite AutoKeys se pot defini tastele rapide ale unei aplicatii, iar comanda macro Autoexec se autoapeleaza de fiecare data la deschiderea bazei de date. Tot cu ajutorul comenzilor macro se pot crea meniuni definite de utilizator (pentru crearea meniurilor Microsoft Access-ul 2.0 pune la dispozitia utilizatorilor un instrument numit MenuBuilder). Desi majoritatea programatorilor in Access prefera sa foloseasca mediul de programare Access Basic sau Visual Basic, comenzile macro constituie cea mai usoara metoda pentru cei care doresc sa construiasca o aplicatie, dar sunt incepatori. Cu exceptia comenzilor macro sau speciale pe care le-am prezentat anterior, orice se poate realiza prin comenzi macro se poate realiza si printr-o secventa de cod in Acces Basic. Ba chiar in Access 95, exista posibilitatea de a transforma orice comanda macro intr-o secventa de cod Visual Basic.
La fel ca celelalte obiecte de baza ale Access-ului, si comenzile macro sunt reprezentate in fereastra Database. Pentru a crea o comanda macro noua se selecteaza din fereastra Database optiunea Macro, apoi se executa clic pe butonul New. Asa dupa cum se vede in figura, fiecare rand al unei comenzi macro contine actiunea care trebuie executata si o coloana pentru comentarii. Sectiunea din partea de jos a ferestrei ofera spatiul necesar pentru introducerea argumentelor actiunilor ce se vor executa. In coloana Comments se vor specifica detaliile necesare utilizarii macrocomenzii. Dupa ce ati creat comanda macro, alegand actiunile dorite, o puteti testa, dupa ce ati salvat-o si ati inchis fereastra, prin executarea unui clic pe butonul Run din fereastra Database. Desi exista numeroase actiuni macro disponibile (47 in Access 2.0 si 49 in Access 97) vom prezenta doar cateva dintre ele.
Actiunea |
Descrierea |
Msg Box |
Afisarea unui mesaj intr-o caseta de dialog |
Echo |
Afisarea unui mesaj in bara de stare |
SetValue |
Pentru a modifica continutul sau proprietatile unui control |
GoToControl |
Deplasarea cursorului de selectie la un anumit control |
Requery |
Actualizarea continutului unui obiect la cerere |
OpenReport |
Pentru tiparirea unui raport |
SendKeys |
Pentru a simula apasarea tastelor |
OutpuTo |
Exportarea datelor |
RunCode |
Rularea unei functii Access sau Visual Basic |
Unei comenzi macro i se pot adauga doua coloane suplimentare, si anume, Macro Name (Nume de comanda macro) si Condition (Conditie), prin intermediul meniului View. Aceste coloane va permit sa creati subcomenzi macro, adica sa executati comenzi macro intr-un grup macro si sa executati actiunile macro in mod conditionat. Coloana Condition va da posibilitatea sa executati o comanda macro numai atunci cand este indeplinita o anumita conditie. Expresiile care sunt introduse in coloana Condition trebuie sa poata fi evaluate la True sau False. Daca de exemplu avem un camp intr-o tabela cu numele Varsta si dorim ca actiunea sa se realizeze numai daca valoarea acestui camp este mai mare sau egala cu 18, atunci trebuie introdusa o conditie de forma urmatoare: [Varstas >= 18
Pentru a repeta aceeasi conditie pentru actiunea urmatoare, se vor introduce trei puncte (.) in coloana Condition. Prin repetarea acestor trei puncte in randuri succesive vom obtine un efect asemanator cu cel al unui bloc If . Endif dintr-o secventa de cod. Pentru a evita repetarea inutila a conditiilor, comanda macro se poate opri prin actiunea StopMacro. Daca doriti sa sariti peste anumite actiuni atunci introduceti cate un zero in coloana Condition pentru fiecare rand pe care vreti sa-l sariti, zero fiind echivalent cu valoarea fals (False) actiunile vor fi depasite. Coloana Macro Name permite existenta mai multor comenzi macro intr-un singur grup macro. Dupa cum am vazut, o comanda macro poate sa contina una sau mai multe actiuni. Pentru a crea o comanda macro noua intr-un grup de comenzi se procedeaza in felul urmator: in coloana Macro Name se introduce numele comenzii macro, iar apoi se defineste secventa de actiuni ce trebuie executate, fara ca in randurile urmatoare sa se mai introduca vreun nume in coloana Macro Name. Comanda macro se termina imediat ce in coloana Macro Name apare numele unei alte comenzi macro. Referirea la o comanda macro dintr-un grup se face prin numele grupului si numele comenzii macro, separate printr-un punct. De exemplu:
unde OpenForms este numele grupului de comenzi macro, iar OpenClients este numele comenzii macro care deschide formularul Clients. Prin combinarea coloanelor Condition si Macro Name se pot simula blocurile If. Else . End If, desi procedeul este cam greoi.
Asa dupa cum am mai spus, in Microsoft Access exista doua comenzi macro speciale: Autoexec si AutoKeys. Macrocomanda Autoexec este o comanda macro la fel ca oricare alta din punct de vedere al modului de creere, dar are particularitatea ca se lanseaza de fiecare data la deschiderea bazei de date. Pentru a impiedica lansarea acestei comenzi macro, la lansarea bazei de date trebuie tinuta apasata tasta Shift. In versiunea 2.0 a Microsoft Access-ului comanda macro Autoexec este folosita de obicei pentru a ascunde fereastra Database si a o inlocui cu fereastra aplicatiei (un formular care serveste drept interfata pentru aplicatie). In Access 95, aceste actiuni precum si altele sunt gestionate cu ajutorul optiunii StartUp din meniul Tools, un sistem de lucru mult mai frumos care previne aparitia si disparitia ferestrei Database. Cu toate acestea, macrocomanda Autoexec poate fi utila in cazul in care la deschiderea bazei de date se doreste deschiderea unor formulare suplimentare (nu doar fereastra aplicatiei), executarea unor functii care sa completeze initializarea unor variabile publice sau multe alte actiuni care se doresc efectuate la lansarea aplicatiei.
Comanda macro AutoKeys va permite sa definiti comenzi rapide de la tastatura pentru o aplicatie. Dar trebuie avut in vedere faptul ca atribuirile din AutoKeys anuleaza definitiile din Windows, iar utilizatorii ar putea sa fie derutati, de exemplu, de atribuirea combinatiei Ctrl+C unei alte semnificatii decat cea de copiere. Dar aceasta comanda macro este foarte utila atunci cand se doreste, de exemplu, dezactivarea unei combinatii sau taste prin atribuirea unei alte semnificatii. O macrocomanda AutoKeys poate fi de asemenea utila in faza de proiectare cand se pot defini combinatii de taste pentru a se executa anumite operatii, de exemplu alinierea unor controale la stanga, etc. Daca doriti ca o comanda rapida de tastatura sa fie desemnata numai intr-un context particular, utilizati coloana Condition pentru a defini conditiile in care comanda este valabila.
Uneori, atunci cand scrieti aplicatii, poate veti dori sa restrangeti posibilitatile de actiune ale utilizatorilor asupra formularelor si rapoartelor. Puteti face acest lucru prin crearea unor meniuri ale aplicatiei. Se pot crea oricate meniuri intr-o aplicatie care vor fi atasate la unul sau mai multe formulare sau rapoarte. Modul de creare al unui meniu intr-o aplicatie Access 2.0 sau Access 95 difera de cel din Access 97. In versiunile 2.0 si 95, Microsoft Access pune la dispozitia dezvoltatorilor de aplicatii un utilitar special, si anume, Menu Builder. Acesta poate fi activat in mai multe moduri. Pentru a crea un meniu pentru un formular sau raport, deschideti formularul sau raportul in modul Design. Avand formularul selectat deschideti caseta de proprietati si alegeti proprietatea MenuBar din lista cu proprietati. Executati clic drept pe proprietatea MenuBar si selectati Build. Dupa ce ati efectuat aceste operatii pe ecran va apare o caseta de dialog care este chiar Menu Builder.
Acum veti putea selecta pentru atasare la formular unul din meniurile existente sau puteti selecta optiunea < Empty Menu Bar > pentru a putea construi un nou meniu. Dupa ce ati selectat aceasta optiune, veti putea crea prima optiune a noului meniu introducand numele (Caption), argumentele si textul care va aparea in bara de stare atunci cand se va selecta optiunea. Executati apoi clic pe butonul Next si pe urma pe butonul → pentru a defini un element de meniu. Dupa selectarea unei actiuni de tipul DoMenultem puteti sa executati clic pe butonul (.) pentru introducerea argumentelor. Va apare o noua caseta de dialog care va permite cu usurinta sa selectati o bara de meniu, un nume de meniu, o comanda, si daca este nevoie, chiar si o subcomanda. Dupa ce veti executa clic pe butonul OK din fereastra MenuBuilder, veti fi interogat asupra numelui meniului. Numele pe care il veti da este numele pe care il veti atasa oricarui din formularele si rapoartele dumneavoastra. Dupa atasarea meniului la unul din formularele dumneavoastra, ori de cate ori veti lansa formularul va aparea meniul atasat. Menu Builder poate fi apelat si direct nu numai dintr-un formular sau dintr-un raport deschise in modul Design. Selectati din meniul principal optiunea File/Add-ins/Menu Builder si veti observa ca se va deschide o fereastra de dialog din care puteti sa editati un meniu sau sa creati unul nou executand clic pe butonul New. Dupa ce ati creat meniul veti putea vedea ca Microsoft Access-ul a creat cateva comenzi macro. Aceste macrocomenzi pastreaza de fapt instructiunile de cod ale meniului. Deci, se pare ca putem sa cream meniuri si folosindu-ne doar de comenzi macro. Sa vedem ce macrocomenzi trebuie sa cream pentru a construi un meniu. Mai intai sa cream o comanda macro noua. Alegem sa se execute actiunea DoMenultem, apoi definim argumentele actiunii, iar in coloana MacroName vom introduce un nume care va fi chiar numele primei optiuni din prima componenta a meniului.
Salvam comanda macro cu un nume sugestiv (de obicei sa inceapa cu Menu-). Cream o alta macrocomanda cu actiunea AddMenu, care are ca argumente un nume (Menu Name) care ia numele primei componente a meniului si numele unei comenzi macro (Menu Macro Name) care este chiar numele comenzii macro mai inainte create. Salvam aceasta macrocomanda sub numele Menu (poate fi orice alt nume) si aceasta comanda macro poate fi atasata formularelor sau rapoartelor dumneavoastra ca si meniu.
Modul de creare al unui meniu in Access 97 difera de cel din Access 2.0 sau Access 95. In primul rand nu mai exista Menu Builder, dar se pot crea meniuri cu ajutorul comenzilor macro, in modul prezentat mai inainte, apoi comanda macro care reprezinta meniul va putea fi convertita intr-un meniu selectand din meniul principal optiunea Tools/Macro/Create Menu From Macro. Access-ul 97 va crea un meniu pe care il vom putea activa si dezactiva cu ajutorul optiunii View/Toolbars/Customize. Tot cu ajutorul acestei optiuni vom putea crea un meniu nou, fara a utiliza comenzile macro, executand clic pe butonul New din fereastra de dialog care va apare.
Microsoft Access-ul permite utilizatorilor sa-si construiasca si bare cu instrumente (Toolbars)care fac parte din baza de date si sunt memorate impreuna cu baza de date. In Access 97 putem sa cream meniuri si fara sa ne folosim de comenzi macro. Selectati din meniul principal View/Toolbars/Customize apoi in fereastra de dialog care va apare executati clic pe butonul New. Introduceti numele meniului pe care doriti sa-l creati. Alegeti din bara de selectie optiunea Commands, iar din lista de categorii selectati ultimul element din lista, adica New Menu. In lista de comenzi (Commands) va apare New Menu. "Trageti" de acest element al listei de comenzi pe fereastra care a fost creata atunci cand ati apasat butonul New. Repetati aceasta "tragere" pana cand meniul dumneavoastra este complet.
Modulele
Am vazut ca putem sa cream aplicatii simple, sa legam obiecte intre ele formand un sistem coerent, utilizand doar comenzile macro. Pentru a dezvolta aplicatii mai serioase este nevoie insa de un limbaj de programare care sa ofere un control mai bun asupra obiectelor bazei de date. Acel limbaj se numeste Access Basic, in versiunea 2.0, si este chiar limbajul Visual Basic in versiunile Access 95 si Access 97. Codul scris in Access Basic este grupat in unitati numite proceduri (procedures). O procedura contine o secventa de cod Access Basic care executa o operatie sau calculeaza o valoare. Exista doua tipuri de proceduri.
Functii (Function) care returneaza intotdeauna o valoare care este un rezultat al unor calcule si care poate fi folosit pentru a executa alte operatii. Deoarece functiile returneaza o valoare ele pot fi utilizate in expresii de calcul. Functiile pot, de asemenea, sa accepte parametrii.
Rutine (Sub) care executa operatii,dar nu returneaza o valoare si nu pot fi utilizate in expresii. La fel ca functiile, rutinele accepta parametrii. O rutina a unui eveniment (event procedure) este o rutina care este atasata unui formular sau unui raport. Atunci cand Access-ul detecteaza producerea unui eveniment va invoca automat rutina desemnata acelui eveniment.
Codul scris in Access Basic este pastrat intr-o baza de date Microsoft Access sub forma de module (modules). Modulele ofera un mod de organizare a procedurilor scris in Access Basic. Fiecare modul contine o singura sectiune pentru declaratii (Declarations section) si procedurile care se adauga acestei sectiuni. Sectiunea de declaratii contine in mod implicit comanda Option Compare Database, dar nu mai poate sa contina si altele.
Trebuie avut in vedere faptul ca o linie de cod in Access Basic nu contine decat o singura instructiune; se pot include totusi mai multe comenzi pe aceeasi linie, dar acestea vor trebui separate prin doua puncte (:).
O baza de date Microsoft Access poate sa contina doua tipuri de module:
Module din formulare sau rapoarte - fiecare form sau raport are inclus in interiorul sau un modul care contine rutinele de evenimente pe care le scrieti pentru a raspunde la evenimentele care intervin in formular sau raport. Pe langa aceste rutine de evenimente fiecare modul poate sa contina si alte proceduri care sunt proceduri private ale formularului sau raportului. Modulele din formulare sau rapoarte sunt incluse in aceste obiecte ale bazei de date. Deci, daca copiem un formular intr-o alta baza de date atunci se va copia si modulul pe care-l contine, iar daca stergem un formular sau un raport atunci se va sterge si modulul.
Module globale - in Microsoft Access, asa cum se pot crea module ale formularelor sau rapoartelor, se pot crea module globale, care sunt deja obiecte separate in baza de date si nu mai sunt incluse in alte obiecte, si sunt folosite pentru a stoca proceduri care pot fi executate de oriunde in aplicatie. Procedurile din modulele globale pot fi apelate din expresii, din rutinele de eveniment sau din proceduri din alte module globale.
Atunci cand creati un nou modul acesta nu va contine decat sectiunea de declaratii, fara nici o procedura. Procedurile vor fi create de dumneavoastra insiva. Intr-un modul nu exista un program principal, exista doar sectiunea de declaratii si procedurile. Modulele nu pot fi executate doar procedurile pe care acestea le contin.
Pentru a crea un modul global nou din fereastra Database selectam pagina cu modulele si executam clic pe butonul New. Dupa aceasta se va deschide fereastra modulului nou creat care contine doar sectiunea de declaratii, cu o singura linie de cod (Option Compare Datebase). Acum veti putea adauga proceduri modulului executand clic pe butonul New Procedure din toolbar sau alegand din meniu Edit/New/Procedure. Va apare o fereastra de dialog din care veti putea opta pentru tipul procedurii, si anume, daca este functie (function) sau subrutina (sub) si va trebui sa introduceti numele noii proceduri. Apoi la inchiderea modulului acesta va trebui salvat sub un anumit nume. Modulele din formulare sau rapoarte se creaza avand formularul sau raportul deschis in modul Design.
Sa vedem acum, pe scurt, cum s-a ajuns la aceasta structurare a codului scris in Access Basic si ce este nou in Microsoft Access 95. In prima versiune a aplicatiei Access, toate subrutinele erau stocate in module (obiecte separate ale bazei de date), care puteau fi vazute in fereastra Database. Utilizatorii au observat ca adeseori aceste module contineau functii care se foloseau doar intr-un singur formular sau raport, astfel incat versiunea 2.0 aduce ceva nou, si anume "formularele cu cod in spate", (CBF- Code Behind Forms). De acum incolo, fiecare formular sau raport are inclus in modul intern care nu este afisat in fereastra Database si care contine codul corespunzator doar acelui formular sau raport. Fiecare modul CBF este creat pentru a manipula niste rutine speciale care vor fi apelate la aparitia unor evenimente particulare. Aceste proceduri pentru tratarea evenimentelor determina adevarata putere si flexibilitate a sistemului, constituind esenta adevaratei programari a bazelor de date in Access. Posibilitatile sunt extinse in continuare in Access 95 si Access 97, codul scris intr-un modul CBF putand fi folosit acum si in alte formulare sau rapoarte si chiar si in alte module.
In concluzie
In concluzie, putem crea aplicatii utilizand doar comenzi macro pentru a lega intre ele obiectele unei baze de date, dar pentru aplicatiile mai complexe va trebui sa folosim si limbajul Access Basic sau Visual Basic (in Access 95). Atunci cand avem de rezolvat operatii care constau dintr-o succesiune de actiuni ne vom folosi de macrocomenzi, iar pentru a rezolva sarcini mai complicate vom scrie proceduri (functii si subrutine) pe care le vom grupa in module.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3005
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved