Centralizarea Informatiilor In Microsoft Access

Cuprins

Introducere 3

Crearea unei baze de date 5

Proiectarea bazei de date 5

Crearea tabelelor 6

Crearea relatiilor 7

Importarea datelor 8

Exportarea datelor 9

Extragerea datelor 10

Formulare 10

Subformulare 13

Interogari 14

Rapoarte 23

Crearea aplicatiilor de baze de date 25

Referirea obiectelor 25

Macroinstructiuni 28

Evenimente 33

Controalele din mediul Access 41

Filtre 61

Prezentarea aplicatiei 64

Bibliografie 69

Introducere

Lucrarea de fata isi propune sa trateze centralizarea informatiilor intr-o baza de date create cu ajutorul utilitarului Microsoft Access, pus la dispozitie de suita Microsoft Office. Microsoft Access este produsul pentru baze de date relationale, potrivit atat pentru proiectele de mai mica anvergura cu un singur utilizator, cat si pentru bazele de date distribuite cu mai multi utilizatori.

Lucrarea este impartita in patru sectiuni.

Prima sectiune contine prezentarea posibilitatilor oferite de Microsoft Access pentru manipularea datelor in conformitate cu cerintele utilizatorilor. In aceasta parte este prezentat modul in care se proiecteaza o baza de date, crearea tabelelor si relatiilor dintre acestea, precum si doua facilitati importante pe care Microsoft Access le ofera utilizatorilor sai, si anume importarea si exportarea datelor. Utilitarul poate importa date din fisiere de text, din foi de calcul sau alte fisiere de baze de date, datele importate devenind parte componenta a fisierului MDB. Exportarea permite altor programe sa foloseasca datele dintr-un tabel sau dintr-o interogare Microsoft Access. Microsoft Access poate scrie direct in anumite formate de fisiere, cum ar fi: dBase, Paradox, Lotus 1-2-3, Excel si Word.

A doua sectiune debuteaza cu prezentarea obiectelor care mai pot fi create in Microsoft Access, si anume: formulare, subformulare, interogari si rapoarte.

In a treia sectiune este prezentat procesul de creare a obiectelor, de definire a proprietatilor acestora si de programare a raspunsurilor la evenimentele lor, proces esential in crearea unei aplicatii Microsoft Access.

La inceput este prezentat modul de referire al unui obiect, care ofera posibilitatea de a controla obiectul sau accesul la datele pe care le contine. Sunt prezentate o serie de comenzi macro care pot fi utilizate penru a asista la introducerea datelor, la validarea datelor introduse sau pentru a realiza sarcini repetitive.

Sunt prezentate si evenimentele formularului si raportului, care permit urmarirea a ceea ce se intampla cu datele din formular, respectiv raport, precum si interactiunea dintre un formular si alte formulare sau rapoarte.

Fiecare element de control are o serie de proprietati care definesc infatisarea si continutul acestora si modul in care raspund la cerintele utilizatorilor.

Elementele de control au atasate evenimente care pot ca prin programarea acestora, aplicatia sa reactioneze la apasarea de taste, la clic-uri cu butonul mouse-ului si la selectarea sau anularea selectarii casetelor de text. Controalele grafice pot infrumuseta aspectul bazei de date si ii extind posibilitatile de utilizare. In finalul sectiunii sunt prezentate filtrele care sunt utilizate pentru a gasi o inregistrare, pentru a selecta inregistrarile individuale sau pentru a reordona un set de inregistrari.

Ultima sectiune este dedicata prezentarii aplicatiei. Aplicatia isi propune crearea unei baze de date eficiente pentru gestiunea activitatilor unui spital. Ea este realizata in Microsoft Access si poate fi lansata in executie de pe orice calculator ce are instalat acest program si nu necesita dotari suplimentare ale calculatorului.

Crearea unei baze de date

Microsoft Access ofera posibilitatea de manipulare a datelor in conformitate cu cerintele utilizatorilor. O baza de date permite localizarea rapida a unui element din aceasta, compararea statisticilor pe diverse perioade de timp, interogarea anumitor categorii din datele bazei de date si obtinerea cu usurinta a rezumatelor tiparite.

Daca se creeaza o baza de date prea mare pentru o retea de calculatoare personale, Access asigura interfata cu sistemele de operare, cu servere care ruleaza programe Oracle sau SQL Server.

Microsoft Access are o structură de bază de date capabilă să combine într-un singur fișier de tip .mdb toate obiectele cu care lucrează: tabelele, interogările, formularele, rapoartele, comenzile macro și codul Visual Basic.

La deschiderea fisierului, obiectele care formeaza baza de date sunt afisate in fereastra Database.

Proiectarea unei baze de date

Proiectarea reprezinta procesul de transformare a cerintelor de date din lumea reala intr-o structura de baza de date care consta in relatiile dintre tabele si campuri.

Proiectarea este utila pentru a scapa de urmatoarele probleme:

daca se schimba numele unui camp, va trebui sa se modifice toate interogarile, formuralele, rapoartele, comenzile macro si modulele care folosesc numele campului respectiv;

daca se schimba tipul unui camp va fi nevoie sa se modifice si formatul de reprezentare a datelor in interogari, formulare si rapoarte, precum si declaratiile de variabile din cadrul modulelor;

modificarea dimensiunii unui camp poate duce la invalidarea relatiilor cu tabelele asociative sau la situatii in care spatiul de ecran alocat in formulare si rapoarte este necorespunzator;

modificarea relatiilor poate determina efecte neasteptate asupra interogarilor.

Crearea tabelelor

Tabelele reprezinta obiectele din cadrul bazei de date care stocheaza datele. Un tabel este constituit din campuri, care sunt coloane carora li se atribuie cate un nume, fiecare avand un tip de date si o dimensiune bine precizata. Aceasta abordare structurata a datelor asigura bazelor de date puterea si viteza de care au nevoie.

Un tabel poate fi creat cu ajutorul procedurii de asistenta (fereastra Database se alege butonul New->Table Wizard ) sau direct (fereastra Database se alege butonul New->Design View)

Tipurile de date indica setul de valori permise a fi introduse in campul respectiv si, implicit, spatiul de memorie necesar si setul de operatii suportate. Microsoft Access are incorporate urmatoarele tipuri de date:

Text-caractere alfanumerice, pana la 255 bytes.

Memo- caractere alfanumerice, pana la 64000 bytes Number- include mai multe tipuri care difera prin modul de stocare si viteza de raspuns: tipul byte, tipul integer, tipul long integer, tipul single si tipul double.

Date/Time- date calendaristice si momente de timp.

Currency(valuta)- numere reale rotunjite cu precizie de 15 cifre la partea intreaga si 4 la partea zecimala.

AutoNumber- numere intregi pozitive, inserare secvential si automat de catre Access pentru fiecare inregistrare nou introdusa in tabel.

Yes/No-valori logice afisate dupa preferinta in forma Yes/No, True/False, On/Off.

Obiect OLE- pastreaza datele provenite de la alte programe, permite bazei de date sa stocheze documente create de programe de prelucrare a textelor, seturi de foi de calcul, ilustratii, sunete si video clipuri.

Hyperlink-text sau combinatii de texte si numere memorate ca text si folosite ca adresa hyperlink.

Lookup Wizard- o procedura de asistenta care creaza un tip de date astfel: utilizatorul poate sa aleaga o valoare dintr-un alt tabel sau dintr-o lista de valori utilizand o zona de listare sau o zona derulanta.

Proprietatile campurilor:

Field Size limiteaza numarul de caractere/cifre care se pot memora intr-un camp de Text sau Number.

Format indica un anumit format pentru afisarea informatiei.

Input Mask masca de intrare care controleaza modul in care sunt introduse datele in cadrul campului.

Caption ofera o eticheta care sa inlocuiasca numele campului in formulare sau rapoarte.

Default Value specifica o valoare implicita pentru campul respectiv, care va fi introdusa automat atunci cand punctul de insertie se afla in camp dar care poate fi inlocuita cu o alta valoare, daca este cazul.

Validation Rule indica un criteriu pe care trebuie sa-l respecte datele introduse in camp pentru a fi acceptate (o formula introdusa direct sau cu ajutorul procedurii de asistenta Expression Builder ).

Validation Text ofera o explicatie pentru regula de validare, explicatie care apare intr-o caseta dialog atunci cand regula nu este respectata.

Required indica obligativitatea introducerii informatiei in campul respectiv.

Allow Zero Length permite folosirea sirurilor de lungime zero.

Indexed seteaza un index suplimentar pe baza campului respectiv.

Lookup defineste tipul de control care va reprezenta campul respectiv in modul de afisare Datasheet si in formulare.

Crearea relatiilor

Relatiile se formeaza prin precizarea unei legaturi intre un camp (sau o combinatie de campuri) dintr-un tabel si campurile corespunzatoare din alt tabel.

Tipuri de relatii:

Relatii unu la unu in care unei inregistrari dintr-un tabel ii corespunde o singura inregistrare din cel de-al doilea table.

Relatii unu la multi in care unei inregistrari dintr-un tabel ii corespund mai multe inregistrari din cel de-al doilea tabel, dar unei inregistrari din al doilea tabel nu-i poate corespunde decat o singura inregistrare din primul table.

Relatii multi la multi in care unei inregistrari dintr-un tabel ii corespund mai multe inregistrari din cel de-al doilea tabel si unei inregistrari din al doilea tabel ii pot corespunde mai multe inregistrari din primul tabel; acest tip de relatie se stabileste prin construirea unui tabel de asociere, a carui cheie primara este formata din cheile primare ale celor doua tabele.

Setarea relatiilor

In meniul Tools se alege optiunea Relationships, apoi se adauga tabelele prin intermediul ferestrei Show Tables. Dupa ce au fost adaugate tabelele se poate crea o relatie prin selectarea unui camp din tabelul primar si tragerea acestuia peste campul corespunzator din tabelul asociat si se deschide o fereastra in care sunt configurate detaliile relatiei, sunt aratate ambele tabele si campurile implicate in relatie.

Integritatea relatiei (Referential Integrity) este un sitem de reguli pe care Microsoft Access le utilizeaza pentru a asigura consistenta relatiilor dintre inregistrarile tabelelor corelate si pentru a preveni modificarea sau stergerea accidentala, eronata a datelor. Astfel, daca integritatea relatiei dintre tabele a fost validata atunci: nu poate fi introdusa o valoare in campul de cheie secundara daca ea nu a fost mai intai introdusa in campul de cheie primara corelat sau se poate introduce o inregistrare in tabelul secundar punand in campul de cheie secundara valoarea null, nu se poate sterge o inregistrare din tabelul principal daca ea este corelata cu inregistrari din tabelele secundare si nu se poate modifica o valoare din campul de cheie primara din tabelul principal daca aceea inregistrare este corelata cu inregistrari din tabelele secundare.

Pentru a stabili o relatie intre doua tabele si apoi pentru a putea valida integritatea acesteia trebuie indeplinite urmatoarele conditii: campul de legatura din tabelul principal sa fie un camp de cheie primara sau sa contina un index cu valori unice, campurile care realizeaza corelatia sa fie de acelasi tip si ambele tabele sa apartina aceleasi baze de date.

Daca utilizatorul doreste ca aceste reguli de integritate a relatiei dintre tabele sa fie respectate, atunci in fereastra Relationships trebuie selectata caseta de optiune Enforce Referential Integrity (Impune integritatea referentiala) care contine optiunile Cascade Update Related Fields (modificarea valorii unei chei primare in tabelul principal duce automat la schimbarea acelei valori oriunde apare in campul de cheie secundara din tabelele secundare) si Cascade Delete Related Fields (stergerea unei inregistrari din tabelul principal antreneaza automat stergerea tuturor inregistrarilor corelate din tabelele secundare).

Tipuri de asocieri

Microsoft Access permite stabilirea a trei tipuri de asocieri intre inregistrarile din tabelele corelate si se pot seta astn tabelul principal duce automat la schimbarea acelei valori oriunde apare in campul de cheie secundara din tabelele secundare) si Cascade Delete Related Fields (stergerea unei inregistrari din tabelul principal antreneaza automat stergerea tuturor inregistrarilor corelate din tabelele secundare).

Tipuri de asocieri

Microsoft Access permite stabilirea a trei tipuri de asocieri intre inregistrarile din tabelele corelate si se pot seta astfel: se actioneaza butonul Join Type din fereastra Relationships si se alege unul din cele trei tipuri de asocieri care sunt prezentate in continuare:

Asocieri interne(Inner Join) prin care o interogare bazata pe doua tabele va intoarce doar acele inregistrari care corespund in ambele tabele; este implicit selectata prin optiunea Only include rows where the joined fields from both tables are equal.

Asocieri externe(Outer Join) prin care se precizeaza ca o interogare trebuie sa selecteze toate inregistrarile dintr-un tabel impreuna cu datele care corespund din celalalt table.

Asociere intrinseca(Self Join) prin care o interogare bazata pe un singur tabel permite o cautare recursiva in acesta.

Importarea datelor

Microsoft Access poate manipula datele externe in doua moduri diferite. Primul consta in importarea datelor, acestea devenind un tabel (sau mai multe tabele asociate) in cadrul fisierului MDB. Cealalta posibilitate consta in crearea unei legaturi la sursa de date externa. Datele raman in fisierele lor originale, iar orice modificare realizata in Microsoft Access va fi “vazuta” si de programul original.

Prin importare se realizeaza o copie a informatiei intr-un tabel Microsoft Access nou creat in BD Microsoft Access destinatie fara a modifica in nici un fel tabelul sau fisierul sursa. Operatia de importare a informatiei este recomandata atunci cand datele respective vor fi prelucrate numai cu aplicatia Microsoft Access, deoarece Microsoft Access lucreaza mai repede cu propriile sale tabele si le poate modifica dupa caz.

Prin legare, datele raman in BD/fisierul sursa in formatul care le-a fost atribuit de aplicatia respectiva dar sunt vizualizate de catre Microsoft Access. BD/Fisierul sursa poate fi folosit in continuare de catre aplicatia care l-a creat dar el poate fi actualizat si de aceasta si de Microsoft Access. Operatia de legare a informatiei este recomandata fie atunci cand datele sunt susceptibile de a fi prelucrate atat de Microsoft Access cat si de catre aplicatia care a creat BD/fisierul sursa, fie atunci cand BD este prelucrata la retea si, in principiu, tabelele sunt depuse intr-o BD pe serverul de retea iar formularele, rapoartele si celelalte obiecte Microsoft Access sunt depuse in BD separate pe calculatoarele legate in retea.

Pentru a realiza operatie de importare se selecteaza eticheta Table din fereastra Database, dupa care se alege New. Apoi se preia din meniul File optiunea Get External Data (preia datele externe) si se selecteaza Import.

Exportarea datelor

Datele continute in tabele si interogari pot fi exportate catre alte BD Access (ceea ce revine la copierea obiectelor intre diferite BD) sau catre fisiere create cu alte aplicatii. Tabelele, interogarile, formularele si rapoartele pot fi exportate catre fisiere HTML. Cu exceptia rapoartelor, acestea pot fi exportate si catre fisiere IDC/HTX care pot fi apoi folosie in paginile Web. Se pot atasa datele dintr-un tabel, formular, raport, modul VBA sau dintr-o interogare unui mesaj e-mail daca se utilizeaza Microsoft Exchange, Microsoft Mail sau orice alta aplicatie de posta electronica compatibila cu Messaging Application Programming Interface (MAPI).

Exportarea datelor catre o baza de date se realizeaza astfel: se afiseaza BD sursa in fereastra aplicatiei, se selecteaza obiectul care trebuie exportat, din meniul File se alege optiunea Save As/Export si se afiseaza fereastra de dialog Save As, se selecteaza butonul de optiune To An External File Or Database si se va afisa o noua fereastra de dialog de tip Save As de unde se aleg directorul si BD catre care se exporta obiectul, iar din lista derulanta Save As Type se selecteaza aplicatia cu care a fost creata BD destinatie.

Daca se exporta un tabel se pot exporta fie numai structura tabelului fie atat structura cat si datele.

Operatia de export nu poate copia decat un singur obiect odata; daca trebuie copiate mai multe obiecte de acelasi tip este preferabil sa se faca o operatie de import.

Extragerea datelor

Formulare

Formularele (Forms) reprezinta ferestrele primare folosite pentru introducerea si afisarea datelor in Microsoft Access.

Un formular poate fi afisat in trei moduri diferite:

Modul Design (Proiectare) este utilizat pentru a schimba prezentarea si proprietatile unui formular, sau pentru a modifica controalele dintr-un formular.

Modul Datasheet (Foaie de date).

Modul Form (Formular) reprezinta modul de afisare normal al unui formular in curs de utilizare; in functie de felul in care a fost proiectat formularul, acest mod de afisare poate afisa o singura inregistrare (modul Single Form) sau mai multe inregistrari deodata (modul Continuous Form);

Formularele permit prezentarea datelor intr-o forma care il scuteste pe utilizator de preocuparile legate de modul de stocare a acestora. Un formular de baza de date permite tragerea inregistrarilor (cu mouse-ul) din mai multe tabele asociate, filtrarea inregistrarilor care indeplinesc anumite criterii de selectie si ordonarea lor in functie de dorinta utilizatorului

Formularul poate contine butoane de comanda si campuri calculate ceea ce nu este valabil pentru o foaie de date.

Crearea unui formular se face prin alegerea etichetei Form din fereastra Database si se executa clic pe New. Microsoft Access raspunde oferind serviciile mai multor programe wizard pentru formulare (Form Wizards), dupa cum urmeaza:

Design View (modul proiectare) permite crearea tuturor elementelor formularului manual.

Form Wizard ofera posibilitatea de a controla fiecare etapa a procesului de creare a formularului.

AutoForm:Columnar (Configurarea automata a formularului: asezare in coloana) creeaza un formular cu controalele aliniate unul sub celalalt (configuratie corespunzatoare pentru un formular principal).

AutoForm:Tabular (Configurarea automata a formularului: asezare tabelara ) creeaza un formular cu controalele aliniate unul langa celalalt (configuratie corespunzatoare pentru un subformular).

AutoForm:Datasheet (Configurarea automata a formularului: modul Datasheet) creeaza un formular avand modul de afisare prestabilit Datasheet (configuratie corespunzatoare pentru afisarea numarului maxim posibil de inregistrari deodata).

Chart Wnzard (program pentru reprezentari grafice) creeaza un grafic.

PivotTable Wizard (program pentu tabele pivot) creeaza un formular pentru afisarea datelor din Excel 7.0.

Dedesubtul listei programelor wizard se afla o caseta cu lista derulanta in care trebuie sa se selecteze tabelul sau interogarea care va servi ca sursa de date pentru formular.

Fiecare obiect dintr-un formular este denumit element de control (control). Pentru a adauga un control nou unui formular se executa clic pe pictograma ToolBox (caseta cu instrumente), dupa care se alege tipul de element dorit. Pentru a crea un control nelegat este suficient sa se execute clic pe formular. Pentru a crea un control care este legat de un camp din tabelul asociat este nevoie de fereastra Field List (lista de campuri). Aceasta fereastra se activeaza prin clic pe pictograma Field List, apoi se trage pe formular tipul de control dorit din caseta de instrumente si campul din fereastra Field List.

Pe langa sectiunea Detail un formular mai are si sectiunile: Form Header (antet formular ), Form Footer (subsol formular), Page Header (antet pagina) si Page Footer (subsol pagina). Sectiunea Form Header este folosita pentru a afisa un titlu sau un control care nu face parte din inregistrarea curenta, cum ar fi o lista combinata utilizata pentru filtrare sau pentru parcurgerea inregistrarilor. Sectiunea Form Footer este folosita pentru a afisa rezultate, cum ar fi totalurile coloanelor dintr-un formular tabelar.

Formularele care cuprind un numar mare de controale pot fi impartite in doua sau mai multe pagini pentru a fi afisate pe rand folosind elementul Page Break (delimitator de pagina).

Fiecare sectiune are proprietatile sale caracteristice.

Proprietatile formularului

Pentru a afisa proprietatile unui formular se executa clic pe butonul Properties si sunt afisate proprietatile obiectului curent. Din punct de vedere al datelor, cea mai importanta proprietate a formularului este RecordSource (sursa inregistrarii) care este stabilita prin numele tabelului sau interogarii care furnizeaza date formularului. Daca RecordSource este necompletata, formularul nu are un set de inregistrari suport. In cazul in care este schimbata proprietatea RecordSource formularul va citi si va scrie date intr-un alt tabel.

Proprietatile Data controleaza tipul operatiilor cu date care sunt permise in cadrul formularului. Fiecareia dintre proprietatile urmatoare i se poate atribui valoarea Yes sau No:

AllowEdits (permite editarea):daca este No utilizatorii pot vedea, dar nu pot modifica inregistrarile existente.

AllowDeletions (permite stergerile):daca este No, inregistrarile nu pot fi sterse.

AllowAdditions (permite adaugarile):daca este No nu pot fi adaugate inregistrari noi.

DataEntry (introducere de date):daca este Yes formularul poate fi folosit numai pentru introducerea unor inregistrari noi. Inregistrarile existente nu vor fi prezentate, iar numaratorul de inregistrari indica numai numarul de inregistrari adaugate de la deschiderea formularului.

Proprietatile Format controleaza aspectul formularului. Printre ele sunt incluse:

Caption (titlu): se introduce textul care va fi afisat pe bara de titlu a formularului.

DefaultView (mod de afisare prestabilit):stabileste daca formularul va fi afisat in modul Single Form (cel mai uzual), Continuous Form (ex: proiect tabelar) sau Datasheet.

ViewAllowed (moduri de afisare permise): stabileste daca utilizatorul poate trece de la modul Form la modul Datasheet.

ScrollBars (bare de derulare):stabileste daca formularul are bare de derulare orizontale si/sau verticale.

RecordSelectors (elemente de selectare a inregistrarilor):daca este Yes un element de selectare a inregistrarii va fi afisat pe toata inaltimea sectiunii Detail.

NavigationButtons (butoane de navigatie):daca este No butoanele de navigatie vor lipsi de la capatul din stanga al barei de derulare orizontale.

RecordDividers (linii de separare a inregistrarilor):daca este Yes o linie va fi afisata intre inregistrari in cadrul unui formular in modul Continuous.

AutoResize (redimensionare automata):daca este Yes, fereastra formularului va fi dimensionata corespunzator la fiecare deschidere a acestuia.

AutoCenter (centrare automata):daca este Yes, formularul este centrat pe ecran la deschidere.

ControlBox (caseta de control):daca este Yes, caseta de control va fi inclusa in partea stanga a barei de titlu.

MaxMinButtons (butoanele de maximizare si minimixare).

CloseButton (butonul inchide):daca este No, butonul de inchidere al formularului este dezactivat.

Eticheta Other Options (alte proprietati) cuprinde urmatoarele proprietati mai importante:

PopUp (aparitie la suprafata):daca este Yes, formularul se va deplasa deasupra altor formulare putand fi mutat chiar in afara ferestrei Access.

Modal:daca este Yes, alte formulare sunt dezactivate pana cand acesta este inchis.

Subformulare

Un formular Microsoft Access complet poate fi afisat in cadrul altui formular. Aceasta facilitate este ideala pentru afisarea datelor asociate din doua tabele. Daca intre doua tabele exista o relatie de la unu la mai multi, formularul principal afiseaza o inregistrare din tabelul primar in modul Single Form, iar subformularul afiseaza mai multe inregistrari din tabelul asociat in modul Continuous sau Datasheet. Atunci cand utilizatorul trece la o alta inregistrare din formularul principal, Microsoft Access actualizeaza automat subformularul cu inregistrarile asociate corespunzator. Se pot adauga inregistrari noi tabelului primar in formularul principal sau tabelului asociat in subformular.

Suformularul reprezinta o metoda esentiala pentru a vedea cum lucreaza relatiile intre tabele.

Pentru a crea un subformular se poate folosi una dintre metodele care sunt prezentate in continuare, si anume:

se construieste formularul pe o interogare care implica doua sau mai multe tabele. Form Wizard poate crea un formular si un subformular pentru a reprezenta aceste date;

se creaza un formular principal si se executa clic pe pictograma Subform/ Subreport din caseta de instrumente. Programul wizard poate sa creeze un subformular nou sau sa foloseasca un formular existent ca subformular;

se creaza un formular principal si un subformular si se salveaza. In continuare, se deschide formularul principal in modul de afisare Design si se trage numele subformularului din fereastra Database in cadrul formularului principal.

Proprietatile subformularului

Proprietatea LinkMasterFields (leaga campurile formularului principal) asteapta numele campului din formularul principal.

Proprietatea LinkChildFields (leaga campurile subformularului) asteapta numele campului corespunzator din subformular.

In majoritatea situatiilor.aceste date sunt introduse automat de utilizator atunci cand este tras subformularul in formularul principal. Daca se defineste o relatie intre cele doua tabele, Microsoft Access va folosi campurile implicate in relatie, iar in caz contrar va cauta denumiri de camp care se potrivesc si le va utiliza daca tipurile de date sunt compatibile sau se vor completa campurile de catre utilizator in fereastra Properties pentru proprietatile LinkMasterFields si LinkChildFields.

Proprietatea SourceObject (obiect sursa) stabileste care formular va fi prezentat in interiorul unui element de subformular. Daca aceasta proprietate este modificata controlul din subformular va contine alt formular.

Subformulare imbricate

Un suformular poate contine un subformular suplimentar pentru a afisa trei tabele legate prin intermediul unei relati de la unu la mai multi. Daca formularul principal afiseaza informatii despre un client, primul subformular ar putea contine o factura , in timp ce subformularul imbricat ar cuprinde detaliile facturii (adica, o inregistrare pentu fiecare element de pe factura). Doar subformularul imbricate (de la nivelul cel mai profund) poate fi in modul Continuous sau Datasheet. Microsoft Access pemite doar trei niveluri de imbricare.

Interogari

Interogarea (query) este o comanda care indica aplicatiei Microsoft Access ce tip de informatie trebuie extrasa dintr-un tabel sau din mai multe tabele (interogarea de selectie). O interogare permite de asemenea efectuarea unor calcule asupra datelor din tabele (interogarile Total si interogarile cu campuri calculate), executarea unor modificari atat la nivelul structurii tabelelor (interogarile SQL) cat si la nivelul informatiei continute (interogarile actiune).

Clasificarea interogarilor:

interogari simple pentru filtrarea datelor sau pentru efectuarea calculelor (interogari de selectie, interogari de calcul, interogari de calcul Totals);

interogari parametizate

interogari de tip tabel intersectat (Crosstab);

interogari-actiune (Update, MakeTable, Append, Delete);

interogari de cautare-completare (AutoLookup Query);

interogari SQL.

Interogarile pot fi afisate in trei moduri:

Design View-afiseaza grila QBE si permite crearea interogarii direct in aceasta grila.

SQL View-afiseaza o fereastra pentru introducerea/modificarea codului SQL al interogarii.

Datasheet View-afiseaza rezultatul executarii interogarii intr-un format de tip tabel de date sau foaie de date.

Interogarile simple

Pentru a crea o interogare simpla se selecteaza eticheta Query din fereastra Database si se executa clic pe New. Se deschide fereastra dialog New Query, se alege optiunea Design View (proiectarea interogarii), va aparea fereastra Show Tables (prezinta tabelele) de unde se poate alege tabelul sau tabele, interogarea sau interogarile pe care se bazeaza interogarea care este creata. Pentru a adauga inregistrarile interogarii se executa dublu-clic pe denumirile tabelelor care contin acele inregistrari. In continuare, campurile implicate in interogare sunt adaugate grilei QBE. Pentru a adauga un camp dintr-un tabel se executa dublu clic pe el sau se selecteaza din lista derulanta din randul Field.

Semnul asterisc poate fi folosit, ca un caracter de inlocuire pentru a trimite catre grila toate campurile tabelului respectiv.

Cand se lucreaza cu mai multe tabele, fereastra Query Design afiseaza linii de legatura intre campurile care au definit relatiile dintre tabele. Asocierile (joins) corespunzatoare definesc modul in care interogarea selecteaza inregistrarile. Modificarea asocierii afecteaza numai modul in care aceasta interogare isi selecteaza inregistrarile, neavand nici un efect asupra relatiilor propriu-zise.

Sub randul Field, grila interogarii contine un rand Sort in care se poate selecta tipul de sortare dorit Ascending (ascendent) sau Descending (descendent). Daca se cere realizarea sortarii pe mai multe campuri, Microsoft Access va sorta secvential de la stanga la dreapta.

Caseta de validare din cadrul randului Show precizeaza fie includerea campului ca o coloana in cadrul informatiilor de iesire ale interogarii, fie utilizarea acestuia numai pentru criterii de selectie.

O interogare de selectie se creeaza la fel ca si o interogare simpla la care in celulele Criteria ale campurilor care constituie chei de selectie se introduc criteriile de selectie care vor duce la realizarea selectiei dorite de catre utilizator. Daca se introduc mai multe valori in acelasi rand de criterii sub campuri diferite, Microsoft Access va extrage numai inregistrarile care indeplinesc toate criteriile mentionate. In cazul in care criteriile sunt introduse pe randuri diferite, o inregistrare va fi inclusa daca indeplineste oricare dintre criterii.

In expresiile de selectare se pot folosi si operatori de comparare, cum ar fi : >, <, >=, <=, = (corespondenta exacta), like (compararea cu un nume generic scris cu caractere de inlocuire), between, <> (diferit), not. Daca este inclus un caracter de inlocuire intr-un criteriu, Microsoft Access va adauga automat operatorul like. Operatorul is este adaugat automat la referirile care implica valoarea null. Delimitatorul # este adaugat automat datelor calendaristice, iar de o parte si de alta a unui text sunt adaugate ghilimele.

O interogare de calcul se creaza asemanator cu o interogare simpla la care se adauga unul sau mai multe campuri calculate. Pentru a crea un camp calculat se selecteaza o coloana noua in grila QBE si se introduce numele campului urmat de doua puncte (:) si formula de calcul. Referirile la alte nume de campuri trebuie sa fie incluse intre paranteze drepte. Campurile calculate pot fi create atat pentru text cat si pentru numere. In cadrul campurilor calculate se poate folosi toata gama de functii oferita de Microsoft Access plus functiile definite de utilizator . Campurile calculate pot fi sortate sau utilizate la alegerea criteriilor.

Interogarile de calcul Totals se bazeaza pe utilizarea functiilor predefinite din linia Total a grilei QBE. Aceste functii pot fi aplicate unuia sau mai multor campuri din interogare, tuturor inregistrarilor intoarse de aceasta sau numai unui subset al lor. Linia Total se adauga intr-o interogare din meniul View optiunea Totals.

In continuare sunt prezentate functiile si clauzele predefinite din categoria Total:

clauza Group By permite gruparea inregistrarilor in vederea efectuarii calculelor;

clauza Expression creaza un camp calculat care include in expresia sa o functie calculate;

clauza Where specifica un criteriu de selectie pentru un camp care nu va fi folosit pentru gruparea inregistrarilor; daca se seteaza celula Total a unui camp pe aceasta clauza, Microsoft Access deselecteaza automat caseta Show si nu mai afiseaza campul in rezultatul interogarii;

functia Sum realizeaza suma valorilor din campul respectiv, pentru toate inregistrarile sau pentru fiecare grup de inregistrari;

functia Count realizeaza numararea de valori dintr-un camp cu exceptia inregistrarilor pentru care campul este vid;

functia Avg caculeaza valoarea medie a datelor din campul respective;

functiile Min si Max examineaza toate datele din campul respectiv si intorc valoarea cea mai mica, respectiv cea mai mare.

Pentru a fi create in modul SQL interogarile simple utilizeaza instructiunea select, care are urmatoarea sintaxa:

SELECT [predicat] lista_campuri FROM lista_de_tabele

[WHERE…]

[GROUP_BY…]

[HAVING…]

[ORDER_BY…]

[WITH_OWNERACCESS_OPTION];

unde:

predicat-poate contine clauzele ALL, DISTINCT, DISTINCTROW sau TOP; aceste valori sunt introduse atunci cand sunt schimbate proprietatile interogarii:proprietatea UniqueValues pentru DISTINCT, UniqueRecords pentru DISTINCTROW si TopValues pentru TOP

lista_de_campuri-este creata pe masura ce campurile sunt trase in grila QBE; numele de campuri sunt separate prin virgula

FROM lista_de_tabele-este stabilita atunci cand sunt adaugate tabele (sau interogari) in grila QBE; pentru a separa numele tabelelor se foloseste virgula

Clauza WHERE este stabilita atunci cand se introduc criteriile

Clauzele GROUP_BY si HAVING sunt generate pentru interogarile Totals

ORDER BY-este stabilita atunci cand se introduc date in randul Sort

WITH_OWNERACCESS_OPTION-este adaugata daca este schimbata proprietatea Permissions de la User’s la Owner’s in fereastra Properties a interogarii.

Interogarea parametrizata

Interogarea parametrizata este o interogare a carei executie consta in afisarea unei casete dialog predefinite in care utilizatorul poate introduce criteriul de selectie sau valoarea care trebuie sa apara intr-un camp.

O interogare parametrizata se creaza astfel: se creaza o interogare simpla pentru tabelul respectiv, pe randul Criteria al campului respectiv se introduce mesajul explicativ incadrat intre paranteze drepte si apoi se executa interogarea.

Interogarea de tip tabel intersectat (Crosstab Query)

O interogare de tip tabel intersectat sintetizeaza datele in mod cu totul diferit fata de o interogare simpla (de selectie) afiseaza rezultatul sub forma unei foi de date, iar datele campului respectiv sunt grupate dupa doua criterii simultan.

O interogare Crosstab procedeaza astfel: efectueaza calculul dorit (sumare, numarare, valoare medie, etc.) asupra datelor campului corespunzator din tabelul de baza, apoi identifica cele doua campuri ale caror valori distincte la nivelul fiecarui camp vor deveni valorile celor doua criterii (valorile distincte ale primului camp devin antete de coloana, valorile distincte ale celui de-al doilea camp devin etichete de linii) si afiseza la intersectia liniei i cu coloana j rezultatul care verifica valoarea din eticheta i si valoarea din antetul coloanei j.

O interogare tabel intersectat are nevoie de cel putin trei campuri: unul care sa furnizeze valorile pentru titlurile de coloana, unul penru valorile corespunzatoare titlurilor de rand si inca unul pentru calcularea valorilor de afisat la punctele de intersectie.

O interogare Crosstab se creaza la fel ca o interogare simpla la care se mai adauga urmatorii pasi:

din meniul Query se alege optiunea Crosstab Query;

se indica un camp sau mai multe campuri drept camp eticheta, prin deschiderea celulei Crosstab din grila QBE a campului respectiv si se alege valoarea Row Heading (pentru aceste campuri trebuie lasata in celula Total valoarea Group By);

analog se indica si unicul camp antet prin alegerea valorii Column Heading in celula Crosstab a acestuia (si pentru acest camp trebuie lasata in celula Total a campului valoarea Group By);

se alege campul principal pin setarea celulei sale Crosstab pe valoarea Value si se indica functia predefinita de aplicat pentru acest camp din celula Total;

se introduc criterii de selectie pentru a elimina inregistrarile necorespunzatoare si apoi se executa interogarea.

Interogarea Crosstab poate fi creata si in modul SQL cu ajutotul instructiunii transform, avand urmatoarea sintaxa:

TRANSFORM functie_predefinita SELECT_clauze

PIVOT camp_pivot [ IN (lista_de_valori) ]

unde:

functie_predefinita-este functia din randul Total pentru campul respectiv (campul care are o valoare in randul Crosstab)

SELECT_clauze-este o instructiune standard de interogare select

camp_pivot-este tocmai campul selectat ca furnizor de titluri de coloana

lista_de_valori-este o lista optionala de valori literale de utilizat ca titluri de coloana

Interogarile actiune

O interogare actiune este o interogare care modifica mai multe inregistrari printr-o singura operatie (nu determina afisarea unor informatii pe ecran ci numai modificarea datelor depuse in tabelele Microsoft Access).

Exista patru tipuri de interogari actiune:

interogarea Update (actualizare)-modifica valorile din campul specificat intr-un tabel sau in mai multe tabele;

interogarea MakeTable (creare tabel)-creaza un tabel nou cu ajutorul unei parti sau a tuturor inregistrarilor dintr-un tabel sau din mai multe tabele;

interogarea Append (adaugare)-adauga un grup de inregistrari aflate intr-un tabel sau in mai multe tabele la baza unui tabel sau a mai multor tabele;

interogarea Delete (stergere)-sterge un grup de inregistrari dintr-un tabel sau din mai multe tabele simultan.

O interogare de actiune se creaza asemanator cu o interogare simpla la care se adauga din meniul Query optiunea specifica pentru fiecare tip de interogare actiune si anume: Update Query, MakeTable Query, Append Query sau Delete Query.

Pentru a fi creata in modul SQL o interogare actiune se foloseste una dintre urmatoarele instructiuni SQL, in functie de tipul ei, dupa cum urmeaza.

Interogarea Update

UPDATE expresie_tabel

SET lista_de_valori

WHERE criterii_de_selectie;

unde:

expresie_tabel- este o expresie care identifica unul sau mai multe tabele ale caror date vor fi actualizare; expresia poate fi un nume unic de tabel, numele unei interogari deja create sau o combinatie obtinuta prin oricare dintre cele trei tipuri de asociere: inner join, left join sau right join

lista_de_valori- o expresie formata din numele campurilor de actualizat si valorile de actualizare asociate fiecaruia (constante sau expresii)

criterii_de_selectie- o expresie pe care trebuie s-o satisfaca o inregistrare pentru fi actualizata

Interogarea MakeTable

SELECT camp1[,camp2[,…]] INTO table_nou

FROM expresie_tabel

unde:

camp1,camp2,…- numele campurilor care trebuie copiate in noul tabel

tabel_nou- numele noului tabel care trebuie creat

expresie_tabel- o expresie care identifica unul sau mai multe tabele din care provin datele pentru crearea noului tabel

Interogarea Append

INSERT INTO tabel_destinatie [(camp1[,camp2[,…]])]

SELECT [tabel_sursa.]camp1[,camp2[,…]]

FROM expresie_tabel;

unde:

tabel_destinatie-numele tabelului sau interogarii careia i se adauga inregistrari

tabel_sursa-numele tabelului/interogarii din care fac parte inregistrarile care se adauga

camp1,camp2-numele campurilor destinatie daca urmeaza argumentului tabel destinatie, respectiv numele campurilor sursa, daca urmeaza argumentului tabel sursa

expresie_tabel-o expresie care identififca unul sau mai multe tabele din care provin datele pentru crearea noului tabel

Interogarea Delete

DELETE [tabel.*]

FROM tabel

WHERE citerii_de_selectie

unde:

tabel-numele optional al tabelului din care se sterg inregistari

tabel-numele optional al tabelului din care se sterg inregistrari

criterii_de_selectie-o expresie pe care trebuie s-o satisfaca o inregistrare pentru a fi stearsa

Interogarea de cautare-completare (AutoLookup Query)

Acest tip de interogare introduce automat informatie in tabelul secundar al unei relatii 1-m, prin cautarea ei in tabelul principal dupa un index cu valori unice aflat in campul de asociere (nu neaparat in campul de legatura).

O interogare AutoLookup se creaza astfel:

se creaza o interogare simpla de selectie bazata pe cele doua tabele aflate in relatie 1-m;

se includ in grila QBE campurile necesare din ambele tabele astfel:

campul de asociere inclus trebuie sa provina din tabelul secundar;

daca exista campuri comune in cele doua tabele atunci se vor include campurile din tabelul principal;

se definesc criteriile de selectie in celulele Criteria daca este necesar si se executa interogarea;

se trece la introducerea noii inregistrari in tabelul secundar astfel:

la baza interogarii in linia libera afisata se introduc noile informatii;

in campul de asociere se introduce valoarea de cautare si Enter;

daca Microsoft Access gaseste in tabelul principal in campul de asociere valoarea respectiva atunci completeaza in inregistrarea din interogare informatiile continute in inregistrarea din tabelul principal, altfel afiseaza un mesaj de eroare; daca este cazul se introduce o noua inregistrare la baza interogarii; se inchide interogarea si se vizualizeaza tabelul secundar.

Interogarile SQL

O interogare SQL este o interogare care modifica insasi structura unui tabel. Ea nu poate fi creata decat cu ajutorul unei instructiuni SQL si doar in modul SQL.

Exista urmatoarele tipuri de interogari SQL:

interogarea Union (de combinare);

interogarea PassThrough (de transferare);

interogarea DataDefinition (de definire a datelor).

Interogarea Union combina campurile (coloanele) corespunzatoare din doua sau mai multe tabele sau interogari intr-un singur camp (coloana) cu ajutorul unei operatii UNION.

[tabel] query1 UNION [ALL] [tabel] query2

[UNION [ALL] [tabel] queryn […]]

unde:

query1-n-poate fi: o instructiune SELECT, numele unei interogari sau numele unui tabel

Interogarea PassThrough trimite comenzi direct bazelor de date accesibile din Microsoft Access prin protocolul ODBC (Object Database Connectivity Protocole= un protocol standard de accesare a informatiei de pe serverele de baze de date SQL (ex: Microsoft SQL Server)) intr-un format compatibil cu serverul respectiv. Aceasta interogare este utilizata pentru obtinerea de informatii de pe serverul accesat si executarea procedurilor memorate pe serverul ODBC accesat.

Interogarea DataDefinition creeaza sau modifica obiecte ale BD prin:crearea un index pentru un camp sau pentru un grup de campuri (instructiunea CREATE INDEX), stergerea un tabel din BD sau eliminarea unui index dintr-un camp sau dintr-un grup de campuri (instructiunea DROP), construirea unui tabel (instructiunea CREATE TABLE) sau modificarea structurii unui tabel dupa ce a fost creat cu CREATE TABLE (adauga un camp nou sau o noua restrictie) cu ajutorul instructiuni ALTER TABLE.

CREATE [UNIQUE] INDEX numr_index

ON nume_tabel (nume_camp [ASC|DESC],…..)

[WITH {PRIMARY| DISALLOW NULL| IGNORE NULL}]

unde:

nume_index- este numele indexului care trebuie creat

nume_tabel- numele tabelului din BD curenta care va contine indexul

nume_camp- numele campului care trebuie indexat

UNIQUE- defineste campul/grupul de campuri specificat ca index cu valori unice (daca exista valori duplicate in aceste campuri, inregistrarile respective vor fi sterse automat de catre Microsoft Access)

PRIMARY- defineste campul/grupul de campuri specificat drept cheie primara pentru tabelul respectiv

WITH- pemite specificarea regulilor de validare a datelor (DISALLOW NULL (nu permite introducerea valorilor nule in campul/campurile de index al unei noi inregistrari), IGNORE NULL (nu permite includerea in index a inregistrarilor cu valori nule in campul/campurile de index))

DROP {TABLE nume_tabel|INDEX nume_index ON nume_tabel}

unde:

nume_tabel- este numele tabelului care trebuie sters, respectiv al tabelului din care trebuie sters un index

nume_index- numele indexului care trebuie sters din tabel

CREATE TABLE nume_tabel (nume_camp tip [(dimensiune)] [NOT NULL])

[nume_index1] [,nume_camp2 tip [(dimensiune)]] [NOT NULL] [nume_index2]

[…]

[,CONSTRAINT nume_index_de_grup_de_campuri [….]]

unde:

nume_tabel- este numele tabelului care trebuie creat

nume_camp1, nume_camp2- numele campurilor din tabelul de creat (trebuie sa existe cel putin un camp)

tip- tipul de date al campului din noul tabel

dimensiunea- dimensiunea campului in caractere

nume_index1, nume_index2- numele unor indexi de un singur camp definitii cu ajutorul unei clause CONSTRAINT

nume_index_de_grup_de_campuri-numele unui index de mai multe campuri definit cu ajutorul unei clause CONSTRAINT

ALTER TABLE nume_tabel {ADD {COLUMN nume_camp tip[(dimensiune)]}

[NOT NULL] [CONSTRAINT nume_index] |

CONSTRAINT nume_index_de_grup_de_campuri}

unde:

nume_tabel- numele tabelului care trebuie modificat

nume_camp- numele campului care trebuie adaugat sau eliminat din tabel

tip- tipul de date al campului

dimensiune- dimensiunea campului in caractere

nume_index- numele unui index de un singur camp definit cu ajutorul unei caluze CONSTRAINT

nume_index_de_grup_de_campuri- numele unui index de mai multe campuri definit cu ajutorul unei clauze CONSTRAINT

nume_index- numele indexului de mai multe campuri care trebuie eliminat

Proprietatile interogarilor

Proprietatile interogarilor pot fi definite prin intermediul ferestrei Properties atat pentru interogarea propriu-zisa cat si pentru campurile acesteia. In continuare sunt prezentate cateva dintre cele mai importante proprietati ale interogarilor:

Description (descrierea): intretinerea bazei de date poate fi simplificata daca este utilizata aceasta proprietate pentru a obtine informatii referitoare la formularele, rapoartele sau casetele combinate care folosesc aceasta interogare.

OutputAllFields (adauga toate campurile grilei de iesire): daca este Yes, Microsoft Access va adauga caracterul de inlocuire asterisc in instructiunea SQL, astfel incat toate campurile din toate tabele sunt incluse in foaia de date a interogarii (se stabiliste valoarea prestabilita prin intermediul Tools|Options|Tables| Queries).

TopValues (valorile de sus): schimbarea valorii prestabilite All cu un numar determina interogarea sa afiseze numai primele inregistrari, in conformitate cu ordinea de sortare curenta. Daca interogarea este complexa sau tabelele de baza sunt mari, stabilirea unei valori intregi va determina o extragere mai rapida decat stabilirea unei valori procentuale, deoarece aceasta din urma impune programului Microsoft Access calcularea numarului inregistrarilor. Pentru a afisa valorile din partea de jos a listei, se foloseste o ordine de sortare descendenta.

UniqueValues si UniqueRecords (valori unice si inregistrari unice): daca ambele valori sunt stabilite la No, interogarea va afisa fiecare rand din fiecare tabel. Randurile duplicate din interogare pot fi eliminate prin stabilirea proprietatii UniqueValues la Yes. Optiunea UniqueRecords elimina numai acele inregistrari care sunt duplicate in tabelele de baza, o situatie care nu ar trebui sa apara intr-o baza de date normalizata corect.

Run permissions (permisiuni de rulare): daca o baza de date a fost securizata, permisiunile de afisare sau de modificare a interogarii pot fi definite ca Qwner’s (ale proprietarului) sau User’s (ale utilizatorului).

SourceDatabase (baza de date sursa).

ConnectString (sir de conectare).

Microsoft Access pune la dispozitie mai multe programe wizard care pot asista la crearea interogarilor. Programele wizard cele mai importante sunt urmatoarele: Simple Query Wizard (program pentru interogari simple), Crosstab Query Wizard (program pentru interogari de tip tabel incrucisat), Find Duplicates Query Wizard (program pentru interogari de gasire a duplicatelor) si Find Unmatched Query Wizard (program pentru interogari de gasire a inregistrarilor care nu corespund).

Rapoarte

Raportul este un instrument eficient de prezentarea informatiei stocate in BD prin tiparire la imprimanta si ofera utilizatorului un control complet asupra dimensiunii si aspectului fiecarui element constitutiv.

Raportul ofera posibilitatea de prelucrare a datelor in scopul obtineii unor rezultate sintetice: subtotaluri, totaluri, etc. Datele pot fi grupate pe un numar de pana la zece niveluri diferite, fiecare cu propriile sale informatii sintetice.

Un raport se creaza astfel: se afiseaza BD in fereastra Database cu tabul Reports activat, se alege butonul de comanda New care determina afisarea fereastrei dialog New Report din care se alege tabelul sau interogarea pe care se va baza raportul din caseta derulanta si comanda Design View, apoi cu ajutorul iconului Field List de pe toolbarul ReportDesign si al iconurilor de pe toolbarul Toolbox se includ in raport campurile de date necesare prin crearea controalelor grafice asociate, neasociate sau calculate, intr-un mod similar celui prezentat pentru formulare.

Majoritatea rapoartelor sunt proiectate intr-o configuratie tabelara. La fel ca in cazul unui formular in modul Continuous Form (formular continuu), sectiunea Detail a raportului se repeta pentru fiecare inregistrare atunici cand raportul este afisat anticipat sau tiparit. In afara sectiunii Detail, un raport poate avea antet si subsol de pagina (Page Header, Page Footer), antete si subsol de raport (Report Header, Report Footer) precum si anteturi si subsoluri pentru un numar de pana la 10 niveluri de grupare.

Rapoartele pot sa contina de asemenea subrapoarte, desi imbricate este limitata la maximum trei niveluri. Raportul are o functie de sortare si grupare (Sorting and Grouping) care se ocupa de o multitudine de relatii dintr-un singur raport.

Antetul si subsolul de pagina definesc elementele care trebuie sa apara in partea de sus si in cea de jos a fiecarei pagini din raport. Un antet de pagina tipic poate cuprinde titluri de coloane deasupra fiecarui camp. Un subsol de pagina poate contine numarul paginii sau data tiparii. Spre deosebire de celelalte subsoluri de sectiuni, subsolul de pagina nu poate cuprinde un total al datelor de pe pagina.

Pentru a numerota paginile unui raport se selecteaza optiunea Page Numbers (numere de pagina) din meniul Insert, iar pentru a adauga data tiparirii se selecteaza optiunea Date add Time din meniul Insert.

Antetul raportului (Report Header) apare numai pe prima pagina, ca un titlu pentru intregul raport. Pentru a include sigla companiei in titlul raportului se alege optiunea Picture (desen) din meniul Insert.

Subsolul raportului (Report Footer) apare numai pe ultima pagina si poate cuprinde un rezumat al tuturor datelor din diversele sectiuni ale raportului.

Fiecare subdiviziune a unui raport are o proprietate ForceNewPage (forteaza o pagina noua). Pentru a crea o pagina separata pentru un raport se alege optiunea After Section (dupa sectiune) pentru proprietatea ForceNewPage a antetului raportului. Pentru a crea o pagina separata la sfarsitul raportului se alega optiunea Before Section (inainte de sectiune) pentru proprietatea ForceNewPage a subsolului raportului.

Pentru a stabili ordinea de sortare in cadrul unui raport se executa clic pe pictograma Sorting and Grouping de pe bara de instrumente. Cheia de sortare cea mai semnificativa este chiar prima pozitie din aceasta lista. Fiecare camp din fereastra Sorting and Grouping are proprietatile GroupOn (grupeaza dupa) si GroupInterval (interval de grupare). Aceste proprietati sunt utile pentru campurile de tipul data calendaristica/ora. Ca optiune prestabilita, Microsoft Access va grupa dupa Each Values (fiecare valoare), raportul respectiv fiind grupat dupa fiecare valoare data calendaristica/ora individual.

Anteturile de grup au de asemenea o proprietate RepeatSection (repetare sectiune). Atunci cand aceasta proprietate este stabilita la valoarea Yes, sectiunea Group Header se va repeta in partea de sus a fiecarei pagini sau coloane care face parte din grupare.

Cu ajutorul optiunii Page Setup (configurarea paginii) din meniul File se pot configura marginile, pagina sau aspectul raportului.

Crearea aplicatiilor de baze de date

Referirea obiectelor

Microsoft Access este un mediu de programare complet care raspunde cerintelor utilizatorului in zeci de moduri diferite.

Crearea unei aplicatii Microsoft Access este procesul de creare a obiectelor, de definire a proprietatilor acestora si de programare a raspunsurilor la evenimentele lor.

Obiectele la care se refera aceasta lucrare sunt formularele si rapoartele care au fost prezentate in sectiunea anteriora, precum si controalele pe care acestea le contin.

Aceste obiecte (formulare, rapoarte si controale) au proprietati si evenimente. Proprietatile definesc modul de utilizare a unui obiect si evenimentele definesc ceea ce se intampla la utilizarea acestuia. Invatarea modalitatilor de referire a unui obiect ofera cunoasterea si forta necesara pentru administrarea datelor pe care le contine si pentru controlul posibilitatilor de actiune ale acestuia.

Microsoft Access tine evidenta tuturor formularelor deschise sub forma unei colectii denumite Forms (formulare). Aceasta colectie se refera la formularele deschise in mod curent, nu la toate formularele salvate. De exemplu, daca se utilizeaza un formular denumit frmClients ne putem referi la el in felul urmator: Forms![frmClients].

Semnul exclamarii (bang) separa denumirea obiectului de cea a colectiei careia ii apartine. De o parte si de alta a numelui obiectului au fost utilizate paranteze drepte, desi acestea pot fi omise daca numele nu contine spatii sau alte caractere neobisnuite.

Daca formular frmClients ar cuprinde un control denumit NumeDeFamilie (Surname) ne putem referi la el astfel: Forms ! [frmClients] ! [Surname]. Daca se foloseste acest mod de referire, Microsoft Access va cauta controlul respectiv si va intoarce valoarea pe care o contine in inregistrarea curenta. De exempul, se poate introduce aceasta referire in randul de criterii al unei interogari; la rularea interogarii respective, Microsoft Access va limita setul dinamic de date la persoanele care au un nume de familie identic cu cel care apare in inregistrarea din formular.

Pe langa citirea unei valori din cadrul obiectului exista si posibilitatea de a scrie o valoare in acesta utilizand actiunea SetValue (stabileste valoarea) intr-o comanda macro (putand schimba continutul unui control stabilind o valoare noua pentru acesta)

Fiecare obiect are anumite proprietati care pot fi vizualizate in fereastra Properties si la care ne putem referi atunci cand le utilizam in formulare astfel: Forms ! [frmClients] ! [Surname].Visible.

Daca este stabilita proprietatea Visible la No se pote ascunde un element dintr-un formular ,iar daca se stabileste Forms ! [frmClients].Visible la No se ascunde tot formularul.

Proprietatea Caption defineste titlul ce urmeaza sa fie afisat in bara de titlu a formularului. Pentru a schimba titlul pe parcursul utilizarii formularului, pur si simplu se stabileste o valoare noua pentru proprietatea Caption: Foms ! [frmClients].Caption.

Proprietatea RecordSource se refera la tabelul sau interogarea care furnizeaza inregistrari formularului. Casetele de text au proprietatea ControlSource care se refera la campul din tabel care furnizeaza datele pentru control. Aceste proprietati se pot referi in felul urmator: Forms ! [frmClients].RecordSource si Forms ! [frmClients] 1 [Surname].ControlSource.

Desi Microsoft Access accepta uneori schimbarea operatorilor intre ei este bine sa fie utilizat semnul exclamarii pentru orice obiect caruia i se atribuie un nume si punctul pentru orice nume de sistem interne,ca de exemplu proprietatile.

Nu este necesar sa se foloseasca sintaxa completa pentru a se face referire la un alt control din cadrul aceluiasi formular. De exemplu, daca dorim sa cream o caseta de text pentru a afisa cursul 201 de la departamentul PSY in forma PSY201 se poate adauga o caseta de text aceluiasi formular si pentru proprietatea ControlSource se stabileste urmatoarea valoare: =[DepartmentID] & [CoursedID]. Ori de cate ori se doreste stabilirea egalitatii unui control cu un alt control trebuie sa se includa semnul egal la inceputul proprietatii ControlSource.

Pentru a ne referi la controalele din cadrul subformularelor se deschide orice formular in modul de afisare Design si in cazul in care acesta contine subformular se va observa o zona alba in care vor fi afisate datele formularului copil. Aceasta zona reprezinta un control al subformularului care are propriile sale proprietati, la fel ca o caseta de text sau ca orice alt control. De exemplu, ascunderea controlului subformularului poate fi realizata cu relatia urmatoare: Forms ! [frmClients] ! [frmMySub].Visible=No

Controlul subformularului contine un formular copil atunci cand formularul este in curs de utilizare. Totusi, controlul nu este acelasi lucru cu formularul copil. Controlul subformularului are o proprietate Form care trebuie utilizata pentru a se face referire la formularul copil, dupa cum urmeaza: Forms ! [frmClients] ! [frmMySub].Form.

Pentru a se face referire la un control din cadrul subformularului se procedeaza ca in exemplul urmator: Forms ! [frmClients] ! [frmMySub].Form ! [MyControl]

Atunci cand se lucreaza in cadrul unui subformular este mai comod sa ne referim la formularul parinte, fara a fi nevoie sa se introduca sintaxa completa a acestuia sau chiar fara sa se cunoasca denumirea formularului parinte. Pentru aceasta se foloseste proprietatea Parent (parinte). Toate controalele au un parinte, iar in majoritatea situatiilor parintele este chiar formularul care contine controlul. De exemplu, daca se lucreaza int-un subformular cu un control denumit Cantitate (Quantity) exista posibilitatea de referire la subformular astfel: [Quantity].Parent, iar la formularul principal in felul urmator: [Quantity].Parent.Parent.

Sintaxa de referire la controalele din cadrul rapoartelor este identica cu cea pentru formulare, cu exceptia faptului ca denumirea colectiei de rapoarte deschise este Reports. Daca un raport denumit rptSurvey (trece in revista) este deschis in mod curent este referit in felul urmator: Reports ! [rptSurvey]. Controlul denumit ValoareaCeaMaiMare(HighestPeak) va fi referit astfel:Reports ! [rptSurvey].Report! [MySub], iar proprietatile in acelasi fel: Reports ! [rptSurvey] ! [ReportDate].Visible.

Pentru a ne referi la datele stocate intr-un tabel care nu este inclus in proprietatea RecordSource a unui formular sau raport se creaza o caseta de text pentru a afisa rezultatul si se utilizeaza functia Dlookup() in proprietatea ControlSource care asigura datele corespunzatoare in caseta de text de fiecare data cand se trece la inregistrarea urmatoare.

Functia Dlookup() asteapta trei argumente in interiorul parantezelor.Fiecare dintre aceste argumente trebuie plasat intre ghilimele si separate prin virgule.

Exemplu:daca am avea un IdentificatorCompanie egal cu 874 si ar trebui sa tiparim numele companiei intr-un raport, atunci pentru a rezolva aceasta cerere caseta de text din raport va avea o proprietate ControlSource data de expresia: =Dlookup(“CompanyName”,”tblCompany”,”CompanyID=874”).Exista posibilitatea de a nu tipari numele companiei 874 pentru fiecare inregistrare prin folosirea semnului & care concateneaza valoarea curenta a campului IdentificatorCompanie cu clauza Where si se va obtine urmatoarea expresie: = Dlookup (“CopanuName” , ”tblCompany”,”CompanyID=” & [CompanyID]). Aceasta metoda poate fi folosita chiar si pentru a cauta o alta inregistrare in acelasi tabel. Exemplu: daca am avea un camp IdentificatorMascul (SireID) si un altul IdentificatorFemela (DamID) care contin valorile de cheie primara pentru parintele de sex masculin, respectiv pentru cel de sex feminin in cadrul aceluiasi tabel; pentru a afisa numele parintilor intru-un formular sunt adaugate doua casete de text a caror proprietate ControlSource este legata la expresiile create cu functia Dlookup() ca in exemplul urmator: =Dlookup(“Name”,”tblHorses”,”ID=” & [SireID]).

Aceasta metoda este foarte simpla atunci cand campul Identificator(ID) este un numar; iar daca acesta este de tip text, Access va cere sa fie cuprins intre ghilimele. Sa presupunem ca trebuie cautat un camp NumeCategorie in tabelul tblCat, pentru care IdentificatorCategorie are valoarea C. Metoda cea mai simpla de furnizare a ghilimelelor necesare consta in folosirea ghilimelelor simple in locul celor duble:= Dlookup (“CategoryName”,”tblCat”,”Category=’C’ ” ). Pentru a folosi aceasta expresie intr-un formular este nevoie de valoarea curenta a campului IdentificatorCategorie in cadrul formularului nu de C pentru fiecare inregistrare si expresia devine:=Dlookup(“CategoryName ”, “tblCat”, “Category= ‘” & [Category] & “’”).

Utilizand acest procedeu exista posibilitatea de a extrage valori din mai multe campuri deodata. De exemplu, putem cauta atat “Textier”(“Writer”) cat si “TitlulCantecului” (“SongTitle”) astfel: =DLookup(“[Writer] & ‘ , ’ & [SongTitle]”, “tblSongs”, “SongID= ‘” & [SongID] & “’”).

In situatia in care campul care trebuie cautat contine un apostrof, ca in cazul numelui D’Sylva este recomandat sa se evite folosirea metodei ghilimelelor simple si sa se genereze niste ghilimele in cadrul ghilimelelor prin dublarea acestora. Utilizand aceasta metoda ultimul exemplu devine: =DLookup(“[Writer] & “”, “” & [SongTiltle]”. “tblSongs”, “ SongID = “”” & [SongID] & “”””).

Microsoft Access pune la dispozitie utilitarul Expression Buider (Constructorul de expresii) care poate asista la crearea expresiilor simple sau complexe. Acest program de creare a expresiilor poate reduce efortul de introducere de la tastature a caracterelor necesare, poate preveni erorile de ortografie si poate oferi indicatii asupra unor functii,cum ar fi DLookup().

Macroinstructiuni

O comanda macro este o secventa de actiuni programata sa se desfasoare la comanda. Spre deosebire de celelalte produse majore din Microsoft Office, Microsoft Access nu permite utilizatorului sa creeze comenzi macro prin inregistrarea unei secvente de taste apasate , ci prin selectarea fiecarei actiuni dintr-o lista derulanta si furnizarea detaliilor asupra obiectelor implicate de operatia respectiva.

Comenzile macro prezentate in fereastra Database pot fi in realitate mai multe comenzi macro combinate intr-un grup. Gruparea comenzilor macro similare creeaza conditiile pentru o localizare si o intretinere mai usoara a acestora.

Comenzile macro permit realizarea sarcinilor repetitive mai usor si mai repede. Prin asocierea unei comenzi macro unui buton, unei apasari de tasta sau unui element de meniu se poate imbunatatii interfata aplicatiei si creste eficienta activitatii utilizatorului. O comanda macro poate fi de asemenea asociata unui eveniment, de exemplu pentru a verifica valabilitatea unei introduceri de date sau pentru a raspunde la o intrare de date intr-un mod particular.

In unele situatii, comenzile macro reprezinta singura posibilitate de realizare a unor anumite sarcini. Comanda macro AutoKeys (taste automate) defineste tastele de comenzi rapide ale unei aplicatii. Meniurile definite de utilizator pot fi create numai sub forma de comenzi macro. O comanda macro denumita AutoExec (executare automata) va fi executata automat la fiecare deschidere a bazei de date, desi utilizarile obisnuite ale acestei macrocomenzi sunt controlate mai bine din cadrul meniului Tools|Startup (Instrumente|Lansare) din Microsoft Access.

Comenzile macro sufera de o limitare majora, nu ofera nici o posibilitate de revenire asupra operatiilor executate daca ceva nu a functionat cum trebuie. Intr-un mediu cu mai multi utilizatori, in care exista o posibilitate destul de mare de aparitie a problemelor legate de blocarea inregistrarilor sau fisierelor, erorile de blocare nu pot fi tratate in interiorul comenzilor macro.

Desi majoritatea programatorilor in Microsoft Access prefera sa foloseasca mediul mai stabil si mai puternic reprezentat de Visual Basic, comenzile macro constituie cea mai usoara metoda pentru incepatori de a invata programarea in Microsoft Access. Cu exceptia situatiilor speciale mentionate anterior (meniuri personalizate, desemnari de taste pentru comenzile rapide si executarea la incarcarea programului), orice poate fi realizat cu o macrocomanda, de asemenea, in cod Visual Basic. Unii programatori realizeaza comenzile macro pentru a crea prototipul unei aplicatii; altii considera ca este mai eficient sa lucreze direct in cod. O facilitate oferita de Microsoft Access este tocmai posibilitatea de transformare a tuturor comenzilor macro dintr-un formular in cod VBA.

Pentru a crea o comanda macro se selecteaza eticheta Macro in fereastra Database si se executa clic pe New. Fiecare rand al unei comenzi macro contine actiunea de executat, iar panoul de mai jos a ferestrei Macro ofera spatiul necesar pentru introducerea argumentelor corespunzatoare actiunii. O coloana de comentarii (Comments) permite elaborarea documentatiei necesare utilizarii macrocomenzii respective. Dupa ce se creaza lista cu toate actiunile pe care comanda trebuie sa le indeplineasca, macrocomanda trebuie salvata, inchisa si apoi executata prin clic pe butonul Run din fereastra Database pentru a o testa.

Actiunea MsgBox determina afisarea de catre Microsoft Access a unei ferestre ascunse cu un mesaj si o pictograma la alegere si asteapta patru argumente:

Message (mesaj)-textul de afisat in caseta de mesaje.

Beep (semnal sonor)-daca este Yes un semnal sonor va fi emis la aparitia casetei de mesaje.

Type (tip)-tipul de pictograma care va fi afisat in caseta de mesaje.

Tiltle (titlu)-textul de afisat in bara de titlu a casetei de mesaje.

Actiunea MsgBox este folosita frecvent pentru a da un avertisment, pentru a explica ce fel de date sunt asteptate sau pentru a oferi informatii despre procedura care trebuie urmata pentru a realiza o anumita sarcina. O caseta de mesaje poate fi utila, de asemenea, in timpul dezvoltarii unei aplicatii pentru a se urmari, de exemplu progresele obtinute in crearea unei comenzi macro care nu functioneaza conform asteptarilor.

De obicei ,textul argumentului Message este un mesaj simplu, fara nici un fel de ghilimele. Exista de asemenea posibilitatea de a folosi o expresie calculata, incepand mesajul cu semnul egal si inchizand textul intre ghilimele.

Actiunea Echo realizeaza doua functii: suprima actualizarile ecranului in timpul executiei unei comenzi macro si plaseaza un mesaj in bara de stare pentru a indica desfasurarea actiunilor cuprinse in comanda macro. Stabilirea optiunii Off pentru actiunea Echo poate creste in mod semnificativ viteza de executie a unei comenzi macro, care selecteaza, de exemplu mai multe obiecte, deplaseaza cursorul de selectie de la un control la altul sau modifica datele in mod progresiv.

Actiunea Echo preia doua argumente:

Echo On (ecou activat)-o valoare de tipul Yes/No indicand daca actualizarile progresive ale ecranului trebuie prezentate (Yes) sau suprimate (No).

Status Bar Text (textul de pe bara de stare)-textul care trebuie sa apara in cadrul barei de stare pana in momentul in care comanda macro se finalizeaza.

Deoarece textul Status Bar Text dispare la terminarea comenzii macro, actiunea Echo este utilizata in mod normal doar pentru sarcinile consumatoare de timp.

Actiunea SetValue (stabileste valoarea) modifica continutul sau proprietatile unui control. Aceasta actiune este utilizata adeseori pentru a asista la completarea cu date bazate pe ceea ce un utilizator a introdus deja.

SetValue asteapta numai doua argumente: elemental (item) a carui valoare dorim sa o stabilim si o expresie reprezentand valoarea la care trebuie stabilit elementul. Sa consideram exemplul unui tabel care cuprinde membrii unei oganizatii in care campul IdentificatorMembru (MemberID) se bazeaza pe o parte a NumeluiDeFamilie si a Prenumelui. Actiunea SetValue poate fi utilizata pentru a completa campul IdentificatorMembru cu noi membri, dupa ce numele primilor membri au fost introduse. In acest caz, elementul va fi MemberID, iar expresia ar putea fi =Left([Surname],4) & Left([FirstName],2).

Actiunea SetValue poate fi folosita de asemenea pentru a modifica o proprietate a unui control. De exemplu, pentru a ascunde un control denumit MaiMulteDetalii (MoreDetail) se utilizeaza actiunea SetValue pentru a stabili valoarea elementului [MoreDetail].Visible la aceasta expresie: No.

Actiunea GoToControl (treci la control) se utilizeaza pentru a deplasa cursorul de selectie la un anumit control. Aceasta actiune accepta un singur argument:numele controlului destinatie. Trebuie folosit doar numele controlului, nu referirea completa a obiectului, astfel incat poate fi utilizata doar atunci cand cursorul de selectie se afla in formularul dorit.

Atunci cand o caseta de text este legata de alte elemente din cadrul aceluiasi formular, Microsoft Access o actualizeaza in mod automat. Totusi, daca elementul de control face parte dintr-un alt formular, el nu va fi anuntat asupra actualizarilor, cu exceptia cazului in care se solicita in mod special acest lucru.

Actiunea Requery (reinterogheaza) permite actualizarea continutului unui obiect la cerere.

O actiune Requery trebuie executata din formularul care contine controlul pe care vrem sa-l reinterogam. Argumentul ControlName (numele controlului) trebuie sa contina numai numele controlului, nu o referire completa a acestuia. Daca acest argument este lasat necompletat, va fi reinterogat tot setul de inregistrari al formularului.

Actiunea OpenReport (deschidere raport) accepta patru argumente:

Report Name (numele raportului)-numele raportului care trebuie deschis.

View (mod de afisare)-Preview (afisare anticipata pe ecran), Print (la imprimanta) sau Design.

Filter Name (numele filtrului)-numele unei interogari sau al unui filtru salvat utilizat pentru limitarea numarului de inregistrari.

Where Condition (conditia where)-o expresie care va fi acceptata ca o clauza WHERE intr-o expresie SQL.

Argumentul Where Condition este util in multe situatii. De exemplu, pentru a tipari numai inregistrarea curenta dintr-un formular, o comanda macro ar putea folosi actiunea OpenReport cu o conditie Where care se refera la valoarea cheii primare a inregistrarii, ca de exemplu: [ID] =Forms ! [MyForm] ! [ID].

Actiunea SendKeys (trimite tastele) plaseaza o secventa de taste in bufferul de tastatura, ca si cum utilizatorul tocmai le-ar fi apasat. Aceasta secventa include taste pentru folosirea meniurilor, trecerea la alte controale, simularea apasarii tastei Enter, deschiderea casetelor de dialog si stabilirea optiunilor acestora sau chiar trimiterea unor apasari de taste catre o alta aplicatie Windows.

SendKeys preia doua argumente:

Keystrokes (apasari de taste)- apasarile de taste care trebuie simulate.

Wait (asteapta)- o valoare de tipul Yes/No indicand programului Microsoft Access daca trebuie sa astepte sau nu prelucrarea tastelor apasate inainte de a continua.

Argumentul Keystrokes poate include taste speciale, cum ar fi tastele functionale sau cele pentru deplasarea cursorului, prin indicarea numelui tastei intre acolade, ca de exemplu {F1}. Exista posibilitatea de a indica mai multe actionari de taste prin includerea unui numar; de exemplu, secventa {Tab 3} {Tab} determina deplasarea inainte cu trei controale, dupa care inlocuieste continutul cu un spatiu si trece la controlul urmator. Se utilizeaza semnul (%) pentru a face referire la tasta Alt si semnu (^) pentru a face referire la tasta Ctrl. In cazul unui formular standard, trimiterea secventei ^{F4} determina inchiderea formularului, iar %{F4} inchide aplicatia.

Pentru a referi un element dintr-un meniu, este preferabila utilizarea actiunii DoMenuItem (executa elementul de meniu) in locul actiunii SendKeys.

Actiunea DoMenuItem preia argumentele urmatoare:

Menu Bar (bara de meniuri)-contextul, cum ar fi Form sau Form Design.

Menu Name (numele meniului)-care meniu(File, Edit, etc. ).

Command (comanda)-numele comenzii(Save, Find, etc. ).

Subcomand (subcomanda)-valoarea unei subcomenzi, cum ar fi de exemplu o intrare de date intr-o fereastra flotanta.

Una dintre situatiile in care SendKeys ar putea fi preferata fata de DoMenuItem o constituie anularea modificarilor aduse inregistrarii curente. Daca inregistrarea curenta nu a fost editata, elementul de meniu Undo Current Record (anuleaza modificarile aduse inregistrarii curente) nu este disponibil, astfel incat executarea unei comenzi macro care incearca sa obtina accesul la el va determina aparitia unor erori. Prin apasarea de doua ori a tastei Esc se obtine de asemenea anularea modificarilor aduse inregistrarii curente, dar nu se genereaza mesaje de eroare daca nu exista modificari de anulat. In consecinta, trimiterea a doua apasari de taste Esc ({Esc 2}) duce la un rezultat mai curat.

Microsoft Access pune la dispozitie mai multe actiuni pentru importatarea si exportarea obiectelor si datelor din Microsoft Access. Actiunea Output To (trimite informatii de iesire) exporta datele dintr-un obiect catre o foaie de calcul Excel, un fisier Text sau un fisier RTF (Rich Text Format-Format de text imbogatit), incarcand de asemenea (optional) aplicatia destinatie. Alte trei actiuni, TranferDatabase (transfera baza de date), TransferSpreadsheet(transfera foaia de calcul tabelar) si TransferText manipuleaza transferurile catre si de la tipurile lor speciale de fisiere. Actiunea TransferText manipuleaza atat formularul cu latime fixa cat si pe cel elimitat, precum si un export combinat special in Word pentru Windows.

Actiunea RunCode (ruleaza codul) permite unei comenzi macro sa ruleze o functie Visual Basic. Utilizand aceasta actiune, chiar si cele cateva situatii care impuneau folosirea unor comenzi macro pot trece controlul unei functii, in cadrul careia se poate realiza tratarea erorilor. De exemplu, intr-un mediu in care se realizeaza numai rularea unei aplicatii, nu si dezvoltarea acesteia sau intr-un mediu cu mai multi utilizatori, singurul rand din comanda macro AutoExec ar putea fi o actiune RunCode care apeleaza o functie pentru a initializa aplicatia.

Se pot adauga doua coloane suplimentare unei macrocomenzi prin intermediul meniului View:Macro Names (nume de comenzi macro) si Conditions (conditii). Aceste coloane permit crearea de subcomenzi macro (comenzi macro intr-un grup macro) si executa in mod conditionat actiunile macro.

Coloana Condition (coditie) permite executarea unei actiuni atunci cand conditia este indeplinita. Expresiile introduse in coloana Condition trebuie sa poata fi evaluate la True sau False. De exemplu, pentru a realiza o actiune numai daca valoarea campului Rank (Pozitie) este cinci sau mai mare, se introduce urmatoarea conditie: [Rank] >= 5.

Pentru a repeata aceeasi conditie pentru actiunea urmatoare, se introduc trei puncte in coloana Condition. Se repeata cele trei puncte pe randurile succesive pentru a obtine un efect asemanator cu cel al folosiri unui bloc If…EndIf intr-o secventa de cod.

Actiunea StopMacro (opriti macrocomanda) se utilizeaza pentru a evita repetarea inutila a conditiilor. De exemplu, daca se doreste actionarea numai atunci cand o conditie este adevarata (true), se foloseste o actiune StopMacro care sa testeze conditia False.

Exista anumite situatii cand trebuie sa se treaca peste un grup de actiuni pentru a testa o comanda macro. In acest caz se pune cate un zero in coloana Condition pe fiecare rand pe care vrem sa-l sarim; zero este echivalent cu valoarea fals (false) si astfel actiunile vor fi depasite.

Grupuri macro

Coloana Macro Names permite existenta mai multor comenzi macro intr-un singur grup macro. Daca se introduce nume in coloana Macro Name, o macrocomanda din grup poate fi executata utilizand numele grupului, urmat de un punct si de numele introdus. Comanda macro se opreste din executare imediat ce intalneste o alta intrare de date in coloana Macro Names.

Macrocomanda Autoexec este executata la fiecare deschidere a bazei de date (cu exceptia situatiei in care utilizatorul mentine apasata tasta Shift atunci cand deschide baza de date).

In versiunile anterioare de Microsoft Access, comanda macro Autoexec a fost folosita de obicei pentru a ascunde fereastra Database si a o inlocui cu formularul de tip panou de comutare (switchboard), care servea ca interfata pentru aplicatie. Acum aceste actiuni precum si alte cateva optiuni sunt gestionate prin intermediul optiunii StartUp (lansare) din meniul Tools, un sistem de lucru mult mai politicos, care previne aparitiile si disparitiile ferestrei Database, caracteristice versiunilor anterioare. Macrocomanda Autoexec poate fi inca utila pentru deschiderea unor formulare suplimentare sau pentru a trece controlul unei functii care urmeaza sa completeze initializarea: variabile publice, conexiuni la baze de date externe, restabilirea unei stari salvate anterior si asa mai departe.

Comanda macro AutoKeys permite definirea comenzi rapide de tastatura pentru o aplicatie. O comanda macro AutoKeys este creata la fel ca orice alt grup macro, dar in acest caz coloana Macro Names identifica apasarile de taste.

Evenimente

Evenimentele formularului

Formularul are mai multe evenimente decat oricare alt control.

Multe dintre evenimentele formularului ofera posibilitatea de administrare a intregii inregistrari:

la editarea unei inregistrari, au loc evenimentele BeforeUpdate si AfterUpdate;

la adaugarea unei inregistrari au loc evenimentele BeforeInsert (Inainte de inserare) si AfterInsert (Dupa inserare);

la stergerea unei inregistrari, au loc evenimentele Delete, BeforeDelConfirm (Confirmare inainte de stergere) si AfterDelConfirm (Confirmare dupa stergere);

cand o inregistrare oarecare este selectata si devine inregistrare curenta, are loc evenimetul Current.

Alte evenimente ale formularului sunt dedicate administrarii formularului insusi:

evenimentele Open (Deschide) si Load (Incarca) se petrec atunci cand este deschis un formular, iar evenimentele UnLoad (Descarca) si Close atunci cand acesta este inchis;

Activate si GoFocus au loc la activarea formularului; Deactivate si LostFocus se petrec la dezactivarea acestuia;

evenimentele Click, DblClick, MouseUp, MouseDown si MouseMove au loc atunci cand mouse-ul interactioneza cu formularul;

evenimentele KeyDown, KeyUp si KeyOccur se petrec la interactionarea tastaturii cu formularul;

de asemenea, mai exista evenimente pentru Resize (Redimensionare), Error, Timer, Filter si ApplyFilter.

BeforeUpdate este, indiscutabil, cel mai semnificativ eveniment al formularului. Acest eveniment se petrece dupa editarea unei inregistrari, dar inainte de scrierea ei in tabel. Este asemanator cu ceea ce se intampla atunci cand utilizatorul incearca sa treaca la alta inregistrare sau sa salveze inregistrarea curenta. Uzual, evenimentul este utilizat pentru validarea intregii inregistrari. Evenimentul BeforeUpdate se utilizeaza pentru:

a ne asigura ca un control nu este vid, chiar in cazul in care campul de baza nu este marcat Required(Necesar) in tabel;

a compara diferite controale;

a cauta un tabel pentru validarea intrarii (de exemplu pentru a ne asigura integritatea referentiala cu tabele din alta baza de date);

a cere confirmarea in cazul in care valoarea intodusa pare incorecta;

a scrie o tranzactie de potrivire (concordanta) pentru ca aceasta valoare introdusa sa poata fi acceptata numai dupa introducerea unei valori in alt camp;

a anula actualizarea daca inregistrarea nu este gasita satisfacatoare.

Pentru a raspunde noilor date acceptate, se foloseste evenimentul AfterUpdate in urmatoarele cazuri:

sincronizarea datelor in alt formular, tabel sau baza de date;

scrierea unui proces de tranzactie;

punerea noilor date in controale libere (de exemplu suma unui camp in care se aplica o conditie);

Evenimentul AfterUpdate nu poate fi anulat.

Evenimentul Current are loc de fiecare data cand o alta inregistrare devine curenta. Acest eveniment va permite sa raspundeti datelor din inregistrare prin sincronizarea cu alt formular, prin ascunderea/afisarea controalelor sau prin configurarea proprietatilor astfel incat sa evidentieze detaliile datelor.

Evenimentul BeforeInsert (Inainte de inserare) are loc atunci cand utilizatorul incepe sa adauge o inregistrare noua in formular. Metoda cea mai obisnuita este de a plasa date in controale. Cand este adaugata o noua inregistrare, controalele legate preiau valoarea prestabilita (DefaulValue), dar aceasta valoare trebuie configurata in timpul proiectarii. Evenimentul BeforeInsert ofera o metoda mult mai flexibila de definire a valorilor prestabilite in timpul executiei aplicatiei.

Valorile prestabilite sunt afisate ori de cate ori este vizibila o noua linie de inregistrare. Spre deosebire de ele, valorile pentru evenimentul BeforeInsert nu sunt plasate in controale pana cand nu incepe editarea noii inregistrari. Acesta este si motivul pentru care se lucreaza mai bine daca nu se incearca inserarea unei valori noi in prima caseta de text dintr-o inregistrare.

Evenimentul BeforeInsert poate fi interupt daca introducerea datelor nu corespunde cerintelor.

Evenimentul AfterInsert (Dupa inserare) se petrece dupa acceptarea unei inregistrari noi- deci dupa ce au loc evenimentele BeforeUpdate si AfterUpdate ale unei inregistrari nou inserate. Acest eveniment nu poate fi anulat.

Evenimentele Delete (Stergere), BeforeDelConfirm (Confirmare inainte de stergere) si AfterDelConfirm (Confirmare dupa stergere) au loc atunci cand utilizatorul selecteaza pentru stergere una sau mai multe inregistrari. Procesul de stergere propriu-zis poate fi anulat in cadrul evenimentelor Delete, BeforeDelConfirm, dar nu si in cadrul evenimentului AfterDelConfirm.

Daca sunt selectate mai multe inregistrari, evenimentul Delete are loc pentru fiecare in parte, in timp ce celelalte evenimente au loc o singura data pentru tot grupul de inregistrari selectat. In cadrul acestui eveniment utilizatorul are access la inregistrarea care este stearsa.

Daca evenimentul Delete este anulat, celelalte evenimente nu mai au loc. In caz contrar (in care evenimentul Delete nu este anulat), datele (care pot consta din mai multe inregistrari) sunt copiate intr-un buffer temporar.

Pe urma, are loc evenimentul Current. Semnificatia acestei operatii este ca in timpul evenimentului BeforeDelConfirm utilizatorul nu mai are acces la datele care sunt sterse.

Daca nu se executa nici o actiune in timpul evenimentului BeforeDelConfirm, va fi afisata caseta obisnuita de mesaje, in care utilizatorului i se va cere sa confirme sau sa anuleze operatia de stergere. .Se poate impiedica afisarea acestui mesaj in doua moduri:

sa se anuleze stergerea configurand Cancel la valoarea True;

sa se continue operatia de stergere si sa se stabileasca Response (Raspuns) la valoarea acDataErrContinue.

Evenimentul AfterDelConfirm se petrece chiar daca operatia de stergere a fost anulata in evenimentul BeforeDelConfirm. Argumentul Status (Stare) permite stabilirea a ceea ce s-a intamplat, dar in acest moment nu se mai poate modifica starea stergerii. Starea va fi una dintre urmatoarele constante:

acDeleteOK- operatia de stergere este confirmata;

acDeleteCancel- operatia de stergere a fost anulata in evenimentul BeforeDelConfirm;

acDeleteUserCancel- operatia de stergere a fost anulata de urilizator.

Evenimentul Open (Deschide) are loc atunci cand este deschis un formular. Evenimentul poate fi folosit pentru anularea operatiei de deschidere, daca nu sunt indeplinite conditiile necesare, pentru deschiderea altui formular de baza sau pentru culegerea de informatii suplimentare de la utilizator. Evenimentul Open nu are loc daca este executata actiunea OpenForm (Deschide formular) intr-un formular deja deschis.

Dupa aceasta, au loc evenimentele Current si Load (Incarca). Acest lucru inseamna ca, daca se face referire la continutul controalelor din formular, trebuie sa se foloseasca evenimentul Load si nu evenimentul Open. Evenimentul Load nu poate fi anulat.

Atunci cand un formular este inchis, are loc mai intai evenimentul UnLoad (Descaraca), apoi Close (Inchide). Evenimentul UnLoad, poate fi anulat, in schimb evenimentul Close, nu. Evenimentul Close este folosit in mod obisnuit pentru operatii de curatenie, cum ar fi, de exemplu, inchiderea formularelor de baza care au fost deschise in evenimentul Open. Datele sunt disponibile in ambele evenimente.

Microsoft Access incarca subformularele inainte de formularul principal. Evenimentul Load asociat formularului principal nu are loc pana cand subformularul nu este incarcat, deschis, iar primul sau control selectat. La inchidere, este descarcat si inchis intai formularul principal si apoi subormularul.

Evenimentul Resize (Redimensioneaza) are loc la deschiderea formularului (dupa Load) si la orice redimensionare a acestuia. Principala functie a acestui eveniment este de recalculare a dimensiunii controalelor, care depind de dimensiunea formularului.

Pentru a se realiza operatiile evenimentului, se ia in considerare dimensiunea componentelor formularului: margine, titlu, elementul de selectie a inregistrarii, barele de derulare si butoanele de navigare, antetul si subsolul formularului, precum si antetul si subsolul paginii.

Evenimentul GotFocus (Obtine cursorul de selectie) pentru un formular nu are loc daca exista cel putin un control care poate fi selectat, astfel incat, in mod normal, GotFocus se petrece numai daca undeva este o eroare. In mod similar, evenimentul LostFocus(Pierde cursorul de selectie) are loc numai daca toate controalele sunt dezactivate, iar formularul insusi a pierdut cursorul de selectie.

In mod clar, evenimentele GotFocus si LostFocus nu spune daca un formular este sau nu activ. Evenimentul Activate (Activeaza) are loc atunci cand un formular devine activ: la prima incarcare a formularului sau ori de cate ori utilizatorul comuta din nou pe acest formular. Evenimentul Deactivate (Dezactiveaza) se petrece atunci cand utilizatorul comuta pe alt formular sau cand formularul este inchis. Deactivate nu are loc daca utilizatorul comuta pe un alt program Windows. Desi bara de titlu a formularului indica starea inactiva, acesta este considerat inca formularul activ din aplicatia Access.

Evenimentele Click, DblClick, MouseDown, MouseUp si MouseMove sunt utilizate de formular, componentele sale si controlale. Totusi, la un moment dat, numai unul dintre ele este informat despre activitatea mouse-ului. Daca se executa clic pe un control, are loc evenimentul Click al controlului si nu cel al formularului. Daca se executa clic pe compononta Detail (Detaliu), nu are loc evenimentul Click al formularului, ci cel al componentei amintite. Aceasta inseamna ca activitatea mouse-ului nu are loc pentru formular, cu exceptia cazului in care inaltimea ferestrei este mai inalta decat cea a sectiunii sau a cazului in care evenimetul are loc peste elementul de selectie a inregistrarii (Record Selector).

Aceste evenimente nu sunt utilizate prea des. In unele ocazii, un dublu clic pe componenta Detail a formularului ar putea fi programat pentru a copia toate datele dintr-o inregistrare pentru a fi lipite la alta inregistrare.

Evenimentele apasari de taste (KeyDown, KeyUp si KeyPress) nu au loc pentru formular decat daca toate controalele sunt dezactivate sau daca proprietatea KeyPreview a formularului este stabilita la valoarea Yes. Daca exista aceasta configurare, evenimentele KeyDown, KeyUp si KeyPress ale formularului au loc inainte de aceleasi evenimente ale controlului care detine cursorul de selectie. Aceasta regula asigura un mecanism pentru filtrare si pentru a raspunde la apasarile de taste pe suprafata de baza a unui formular.

Evenimentul Timer (Cronometru) se petrece la intervale fixe de timp, ori de cate ori este deschis un formular. Frecventa evenimentului este determinata de TimerInterval(Intervalul de cronometrare), care se masoara in milisecunde.

Evenimentul Timer este folosit deseori pentru a afisa un ecran “patat” la deschiderea unei baze de date. Daca se stabileste TimerInterval la valoarea 3000 si daca evenimentul Timer inchide formularul, atunci secventa de deschidere trebuie deschida pur si simplu formularul, sa il initializeze, apoi formularul se inchide singur dupa trei secunde. Este posibil, de asemenea, ca utilizatorul sa poata crea elemente de animatie printr-o configurare a proprietatilor Left si Top ale unei imagini in cadrul evenimentului Timer.

Una dintre cele mai importante posibilitati de folosire a evenimentului Timer este de a limita timpul de blocare permis unei inregistrari intr-un mediu multiutilizator. Daca este folosita blocarea pesimista, inregistrarea este blocata de cand un utilizator incepe editarea si pana cand modificarile sunt salvate sau descarcate. Intr-un mediu aglomerat, acest mod de lucru ar face ravagii in randul celorlalti utilizatori.

Evenimentul Filter (Filtru) are loc atunci cand un utilizator proiecteaza un filtru pentru a limita numarul de inregistrari din formular la cele care indeplinesc un anumit criteriu. Evenimentul ApplyFilter (Aplica filtru) se petrece cand utilizatorul aplica filtru si introduce restrictii inregistrarilor.

Ca si controalele, formularele au metode care le permit sa execute o serie de actiuni. Metoda GoToPage a fost amintita in cadrul analizei controlului Page Break. Metoda SetFocus poate fi folosita pentru activarea unui formular.

Intr-un mediu multiutilizator, este posibil ca datele dintr-un formular sa nu mai fie cele curente. Microsoft Access improspateaza periodic informatiile memorate, pe baza configuratiei stabilite in Tools|Options|Advanced(InstrumenteOptiuni| Elemente avansate de configurare). Metoda Refresh (Improspateaza) executa o improspatare imediata a datelor.

Totusi, Refresh actualizeaza numai modificarile in inregistrarile care exista deja in setul de inregistrari al formularului. Noile inregistrari adaugate de alti utilizatori nu sunt adaugate la formular, stergerile nu sunt actualizate, iar schimbarile care afecteaza filtarea unei inregistrari nu sunt luate in calcul. Pentru a modifica aceste modificari, trebuie sa aplicati formularului metoda Requery (Reinterogheaza). Desi aceasta metoda este mai puternica decat Refresh, este mai lenta; ea anuleaza selectarea pentru inregistrarea curenta si invalideaza orice Bookmark (Semn de carte).

Metoda Recalc (Recalculeaza) actualizeaza pur si simplu toate controalele calculate din formular.

Cand Microsoft Access sau un alt program tin ocupata unitatea centrala de prelucrare (CPU), actualizarea ecranului este procesul cu cel mai scazut nivel de prioritate. Pentru fortarea redesenatii imediate a ecranului, se folosete metoda Repaint (Redeseeaza).

Evenimentele raportului

Rapoartele nu au chiar atat de multe evenimente cum au formularele, deoarece nu au nevoie de evenimente pentru trecerea de la o inregistrare la alta, pentru inserarea, stergerea sau modificarea datelor. Evenimentele raportului sunt dedicate organizarii datelor pentru tiparire.

Similar cu formularele, rapoartele au evenimentele Open, Close, Activate, Deactivate si Error. De asemenea, sunt introduse doua noi evenimente: NoData(Fara date), care este declansat daca sursa primara (Record Source) a raportului nu este completa si Page(Pagina), care este declansat ori de cate ori este creat un delimitator de pagina.

De asemenea, fiecare componenta a raportului are evenimente care permit actionarea asupra unei componente care este formatata sau tiparita: Format (Formatare), Print (Tipareste) si Retreat (Repeta formatarea).

Exista cateva metode ale raportului care pot fi aplicate in timpul evenimentelor Format si Page pentru a crea proceduri grafice de baza: Circle (Cerc), Line (Linie) si PSet. Alte metode ofera informatii despre spatiul necesar pentru tiparirea textului intr-un raport: TextWidth (Latimea textului) si TextHeight (Inaltimea textului). Metoda Scale (Scala) permite definirea propriilor unitati de scala pentru aceste masuratori.

Evenimentele raportului ofera control asupra a ceea ce se intampla la fiecare pas de la generarea raportului. Campurile pot fi ascunse sau formatate selectiv prin mijloace specifice. Aranjarea si spatierea inregistrarilor pot fi modificate chiar in timpul lucrului cu raportul propriu-zis. Delimitatorii de pagina pot fi alocati, iar totalurile de pagina pot fi adunate. Evenimentul raportului este singurul mecanism prin care puteti realiza procesele amintite.

Pentru a obtine o suma progresiva pentru un intreg raport sau pentru un intreg grup, nu este nevoie sa folosim evenimentele raportului; putem folosi o caseta de text careia sa ii configuram proprietatea RunningSum (Suma progresiva). De asemenea, nu este nevoie sa folosim evenimentele raportului pentru a elimina inregistrarile duplicate; putem cofigura proprietatea HideDuplicate (Ascunde dublura) a casetei de text.

Unele evenimente (cum ar fi, de exemplu Open si NoData) se petrec pentru raportul propriu-zis, in timp ce altele (cum ar fi, de exemplu Format si Print) sunt valabile pentru componentele raportului.

Evenimentele Open si Close au loc la deschiderea si inchiderea raportului si sunt similare cu evenimentele Open si Close ale formularului. Ambele evenimentepot fi anulate. In evenimentul Open, putem configura o caseta personalizata de instrumente sau putem verifica daca este deschis formularul suport (de baza).

Evenimentele Activate si Deactivate sunt identice cu cele ale formularului. Activate are loc la deschiderea raportului,dupa evenimentul Open, dar inainte de evenimentul pentru prima componenta a raportului. De asemenea, este declansat atunci cand utilizatorul revine in raport din alta fereastra de lucru.

Evenimentul Deactivate are loc atunci cand utilizatorul iese temporar din raport, trecand la alt obiect din baza de date si cand raportul este inchis (inainte de evenimentul Close).

In mod obisnuit, Activate si Deactivate sunt folosite pentru a afisa si pentru a ascunde o caseta de instrumente de lucru personalizata a raportului..

Evenimentul Page este declansat ori de cate ori Access creeaza un delimitator intre pagini. El are loc dupa evenimentele subsolului de pagina si nu poate fi anulat. Daca se face apel la numerele de pagina in cadrul acestui eveniment, Access afiseaza numarul ultimei pagini completate.

Metodele de desenare ale raportului pot fi folosite in cadrul evenimentului Page pentru a desena diferite obiecte in pagina (linii, dreptunghiuri, cercuri, arcuri de cerc, elipse, puncte).

Evenimentul Error pentru rapoarte este acelasi cu cel pentru formulare si este declansat de erorile care apar in accesarea datelor pentru raport. Acest lucru permite returnarea mesajelor de eroare particulare pentru anumite probleme, cum ar fi, de exemplu, un server care este inaccesibil.

Evenimentul NoData este declansat daca sursa primara (de baza) a raportului nu contine inregistrari.

Evenimentul Format se petrece nu pentru raportul propriu-zis, ci pentru fiecare dintre componentele lui, in timp ce este aranjata macheta componentei respective. Pentru sectiunea de detaliu, evenimentul Format are loc pentru fiecare inregistrare. De aceea putem folosi acest eveniment pentru a modifica selectiv formatul controalelor in functie de datele din inregistrare, in acelasi mod descris ca si pentru evenimentul Current al formularului.

Daca raportul include un delimitator de pagina (Page Break), proprietatea Visible a acestuia poate fi stabilita in evenimentul Format la valoarea True sau False pentru a crea delimitatori de pagina conditionati.

Evenimentul Format poate avea loc de mai multe ori pentru o componenta, de obicei daca nu mai exista suficient spatiu pe pagina curenta. Combinand optiunile Sorting si Grouping cu proprietatile KeepTogether (Tine impreuna) si ForceNewPage (Forteaza o pagina noua), calculele necesare programului Accesss pot determina formatarea sectiunii de cateva ori, pana la gasirea unei solutii acceptabile. Procedura evenimentului Format ofera un argument FormatCount (Numarator format), care poate fi verificat daca o actiune trebuie sa fie executata o singura data pentru inregistrarea respectiva.

Microsoft Access ofera trei proprietati pentru sectiuni valabile in momentul executiei, care ofera un larg control asupra modului in care va fi tiparit un raport. Toate cele trei proprietati au valori True/False si au valoarea prestabilita True.

Daca MoveLayout (Muta macheta) are valoarea False, inregistarea va fi supratiparita.

Daca NextRecord (Inregistrarea urmatoare) are valoarea False, aceeasi inregistare va fi tiparita din nou.

Daca PrintSection (Tipareste sectiunea) are valoarea False, sectiunea (componenta) va fi vida (fara date).

Prin combinarea acestor proprietati, pot fi realizate diferite efecte:

pentru a sari peste o inregistare fara sa se piarda nici un spatiu, se configureaza MoveLayout si PrintSection la valoarea False;

pentru a tipari o linie goala pe un raport fara sa se sara vreo inregistare, se configureaza si NextRecord, si PrintSection la valoarea False;

pentru a obtine spatiu suplimentar de tiparire pentru o inregistrare care nu se potriveste formularului initial, se configureaza NextRecord la valoarea False;

pentru a tipari ceva deasupra datelor deja tiparite, se configureaza MoveLayout si NextRecord la valoarea False.

Evenimentul Print are loc dupa ce sectiunea a fost formatata si cand programul Microsoft Access este pregatit pentru tiparirea ei. In cadrul evenimentului Print nu putem modifica dimensiunea sectiunii. Si in acest caz, evenimentul Print poate avea loc de mai multe ori, astfel ca exista un argument PrintCount (Numarator tiparire) pentru contorizarea numarului de evenimente.

In cazul unor machete de raportare complexe, Microsoft Access ar putea sa termine de formatat o sectiune si sa se mute la urmatoarea inainte de a constata ca nu exista suficient spatiu. Evenimentul Retreat (Repeta formatarea) are loc atunci cand procesul de formatare se intoarce pentru a repeta operatia de formatare pentru sectiunea precedenta. Aceste eveminente au loc impreuna cu evenimentul Format si nu cu Print, deoarece evenimentul Print nu se petrece inainte de trasarea solutiei de formatare a raportului.

Exista metode speciale ale raportului care adauga linii, dreptunghiuri, puncte, cercuri, elipse sau arcuri de cerc la un raport. Aceste metode pot fi foloiste numai in evenimentele Format si Print pentru sectiunile raportului sau in evenimentul Page pentru raport. Pentru a adauga o linie in timp ce programul este in curs de executie, se folosete metoda Line.

Color este o valoare optionala RGB pe 24 de biti. Grosimea liniei este data in pixeli de proprietatea DrawWidth (Latime de desenare). Stilul linie (gros, umbrit si asa mai departe) este dat de proprietatea DrawStyle (Stil de desenare), atunci cand DrawWidth are valoare 1. Proprietatea DrawMode (Mod de desenare) defineste ce se intampla cand liniile intersecteaza alte obiecte.

Pentru a desena un cerc pe un raport, se foloseste metoda Circle.

Controalele din mediul Access

Caseta de text

Caseta de text reprezinta cel mai utilizat control din Microsoft Access. Fereastra Properties contine cinci etichete, dupa cum urmeaza:

proprietatile Format (formatare): controleaza infatisarea casetei de text;

proprietatile Data (date): controleaza sursa de date si posibilitatile de editare ale casetei de text;

proprietatile Event (eveniment): controleaza ceea ce se intampla la efectuarea de modificari sau in situatiile in care controlul obtine sau pierde accesul la cursorul de selectie;

alte (Other) proprietati diverse: include si denumirea casetei de text;

toate (All) proprietatile: cuprinde o lista cu toate proprietatile anterioare, incepand cu cele mai uzuale si terminand cu proprietatile Event.

Proprietatile casetelor de text sunt desemnate de obicei in modul Design, fie prin intermediul barelor de instrumente, fie introducand valori in caseta Properties. Multe proprietati pot fi stabilite chiar in timpul utilizarii formularului; altele sunt disponibile numai in momentul rularii.

Proprietatea fundamentala pentru orice caseta de text este denumirea acesteia. Proprietatea Name identifica in mod unic un control in cadrul formularului sau al raportului. Daca proprietatea Name este modificata dupa desemnarea proprietatilor eveniment, elementele de tratare a evenimentelor nu vor mai fi asociate controlului respectiv. In consecinta , daca nu va place numele atribuit de un program wizard casetei dumneavoastra de text, redenumiti-o inainte de a trece la alte proprietati.

Proprietatile Data

Proprietatea ControlSource (sursa de control) defineste obiectul la care este legat controlul. Daca sursa de control este:

un camp, datele sunt citite din sau scrise in cadrul campului;

o expresie, elementul este protejat la scriere;

necompletata, intrarile de date sunt permise dar nu sunt salvate.

Proprietatea DecimalPlaces (pozitii zecimale) poate fi folosita in combinatie cu Format pentru a controla modul de afisare a valorilor numerice.

ValidationRule (regula de validare) defineste tipurile de date care sunt acceptate in control, iar ValidationText (textul de validare) reprezinta mesajul care va fi afisat atunci cand regula nu este indeplinita.

Proprietatea InputMask (masca de intrare) controleaza modul de introducere a informatiilor in caseta de text: caracterele acceptabile, caracterele solicitate, ordinea, folosirea literelor mici sau a majusculelor si asa mai departe. Input Mask Wizard (program wizard pentru configurarea mastii de intrare) poate fi util, in special pentru faptul ca tine evidenta modului de stabilire a elementelor specifice diverselor tari: numere de telefon, coduri postale, numerele din cadrul sistemului de asistenta sociala si asa mai departe.

Proprietatea DefaultValue (valoarea prestabilita) este inteleasa uneori in mod necorespunzator. Pentru o caseta de text nelegata, valoarea prestabilita reprezinta valoarea incarcata in acest control la deschiderea formularului. Pentru o caseta de text legata la un camp, valoarea prestabilita este valoarea incarcata in acest element atunci cand utilizatorul trece la o inregistrare noua. Aceasta proprietate nu este folosita pentru o inregistrare existenta in care campul respectiv nu contine date introduse.

Perechea Enabled (permis) si Locked (blocat) controleaza daca un anumit control poate accepta cursorul de selectie si daca modificarea continutului acestuia este permisa.

Casetele de text dintr-un raport au, de asemenea, o proprietate RunningSum (suma progresiva). Daca aceasta proprietate este stabilita la OverAll (global), caseta de text afiseaza un total progresiv pentru acest control luand in considerare tot raportul. De exemplu, daca valorile primelor trei inregistrari ar fi 5, 2 si 4, elementul ar afisa 5 pentru prima inregistrare, 7 pentru a doua si 11 pentru a treia. Daca proprietatea RunningSum este stabilita la OverGroup (pentru grup), totalul progresiv este reluat de la zero atunci cand incepe o grupare noua.

Proprietatile Format

In modul Design, majoritatea proprietatilor de formatare pot fi stabilite prin tragerea (cu mouse-ul) a controalelor, prin folosirea ferestrelor suport sau executand clic pe pictogramele barei de instrumente. Utilitarul Format Painter (pictorul de formate, pictograma care reprezinta o pensula) este un supliment binevenit in Microsoft Access. Daca se executa clic o singura data pe pictograma Format Painter, el va permite copierea proprietatilor de formatare la un alt control. In cazul unui dublu-clic, pictograma ramane activata, astfel permite pictarea a cat mai multor controale. Pentru a o dezactiva, se executa din nou clic pe pictograma.

Proprietatea numita Format controleaza modul de afisare a datelor in caseta de text. Ea poate fi stabilita la un format predefinit, cum ar fi Short Date (data calendaristica scurta) sau la un sir de formatare personalizat.

Proprietatea Visible accepta o valoare Yes/No care prezinta sau ascunde elementul de control. Un obiect poate fi ascuns in mod permanent pentru a stoca o valoare pentru programul utilizatorului sau proprietatea Visible poate fi activata sau dezactivata pentru a-l arata si a-l ascunde, ori de cate ori se doreste.

O planificare ingrijita, un fundal alb si proprietatea DisplayWhen (afiseaza cand) ar putea scuti de bataia de cap reprezentata de duplicarea unui formular sau a unui raport. Utilizati valoarea Always (intotdeauna) pentru casetele de text care trebuie sa apara atat pe ecran, cat si la tiparire, Screea Only (numai pe ecran) pentru butoanele de comanda si casetele lista pe care nu le vreti tiparite sau Print Only (numai tiparit) pentru controalele care furnizeaza informatie contextuala, cum ar fi data tiparirii.

Proprietatea ScrollBars (bare de derulare) este foarte utila pentru campurile memo, in care este inclusa o bara de derulare verticala ca optiune prestabilita.

In ceea ce priveste proprietatile CanGrow (se poate mari) si CanShrink (se poate micsora), acestea sunt utile pentru rapoarte. Daca un anumit control nu are nici un alt element alaturi sau suprapus partial peste el, o valoare Yes atribuita proprietatilor CanGrow si CanShrink va permite zonei utile a acestuia (in care se introduc datele) sa se extinda sau sa se micsoreze, in functie de volumul de date cuprins in elementul de control. Valorile acestor proprietati, care sunt de tipul Yes/No, nu pot fi stabilite in Visual Basic.

Exista un numar de patru proprietati care definesc dimensiunea si pozitia unei casete de text in cadrul subdiviziunii de formular sau de raport careia ii apartine . Proprietatile Top (sus) si Left (stanga) definesc distanta fata de coltul din stanga sus al subdiviziunii. Proprietatile Height (inaltime) si Width (latimea) definesc chiar inaltimea si latimea casetei de text. Atunci cand sunt stabilite aceste valori in caseta Properties, Microsoft Access presupune ca este folosita unitatea de masura definite in Regional Settings (Optiuni de configurare regionale) din Windows Control Panel. Totusi, in cazul in care aceste proprietati sunt stabilite cu o actiune SetValue (Stabileste valoarea) dintr-o comanda macro sau in cod Visual Basic, trebuie sa se precizeze valoarea in twipsi (1440 twipsi=1 inci=2,54 cm).

Proprietatile ForeColor (Culoare primplan) si BackColor (Culoare fundal) definesc culorile utilizate pentru text si pentru fundal. Pentru o selectie precisa de culori decat poate oferi bara de instrumente, se executa clic pe butonul puncte de suspensie (…) din caseta Properties pentru a afisa Windows Color Picker (Selectorul de culori din Windows).

Daca proprietatea BackStyle (Stilul fundalului) este stabilita la Transparent, valoarea stabilita pentru BackColor este ignorata si caseta de text va aparea in aceeasi culoare ca si sectiunea careia ii apartine. Marginea unei casete de text este afectata de trei optiuni de configurare BorderColor (Culoarea marginii) este o valoare de culoare RGB de 24 de biti. BorderWidth (Latimea marginii) este fie Hairline(Linie ca firul de par), fie o valoare cuprinsa intre 1 si 6 puncte. BorderStyle (Stilul marginii) este Transparent atunci cand vreti sa renuntati complet la margine, Solid pentru o margine normala sau una dintre combinatiile disponibile de linii si puncte. Pentru a stabili aceste valori in cod, se furnizeaza un numar care reprezinta ordinea optiunii alese in lista, 0 fiind alocat primei optiunii, 1 celei de-a doua si asa mai departe.

Casetele de text au, de asemenea, o proprietate denumita SpecialEffect (Efecte speciale); aceasta poate determina o caseta de text sa apara Flat (Plata), Raised (Inaltata), Sunken (Infundata), Etched (Gravata), Shadowed (Umbrita) sau Chiseled (Sculptata). Din nou, se pot folosi numere intregi incepand de la zero, pentru a furniza valorile proprietatii SpecialEffect in cod.

Detaliile referitoare la fonturi sunt definite cu cele cinci proprietati care urmeaza:

FontName (Denumirea fontului) poate fi stabilita la oricare dintre fonturile instalate.

FontSize (Dimensiunea fontului) reprezinta inaltimea fontului in puncte.

FontWeight (Grosimea fontului) reprezinta una dintre cele noua optiunii referitoare la grosimea liniilor fontului, de la Thim (Subtire) la Heavy (Gros).

FontItalic (Cursiv) este o optiune de tip Yes/No pentru caractere cursive.

FontUnderline (Sublinierea fontului) este o optiune de tip Yes/No pentru caractere subliniate.

Aceste proprietati nu pot fi aplicate doar unei parti dintr-un control (de exemplu, pentru a sublinia un cuvant dintr-un camp memo).

Modul de aliniere a textului in cadrul unui control este stabilit cu proprietatea TextAlign (Alinierea textului). Optiunea General aliniaza textul la stanga si numerele le dreapta; exista de asemenea posibilitatea sa se precizeze clar modul de aliniere: Left (Aliniere la stanga), Center (Aliniere cantrala) sau (Aliniere la dreapta).

Casetele de text dintr-un raport au de asemenea o proprietate HideDuplicates (Ascunde duplicate). Deoarece rapoartele sunt sortate adeseori, este ceva normal sa aveti aceeasi intrare de date repetata pe randul urmator. Proprietatea HideDuplicates elimina afisarea unei valori daca este identica cu cea din inregistrarea precedenta. De exemplu, o lista de studenti ar putea avea o sectiune cu detalii care sa cuprinda Anul (Grade), NumeleDeFamilie (Surname) si Prenumele (FirstName). In cazul in care campul Anul (Grade) are proprietatea HideDuplicates stabilita la True, valoarea sa va fi tiparita numai pentru primul student din lista fiecarui an.

Alte proprietati

Patru dintre proprietatile din categoria Other se refera la modul de a oferi asistenta utilizatorului:

StatusBarText (Textul de pe bara de stare) defineste textul care va fi afisat pe bara de stare de fiecare data cand cursorul de selectie se afla in cadrul controlului.

HelpContextID (Identificator sistem de asistenta soft contextual) defineste care dintre intrarile de date din fisierul HelpFile al formularului va fi afisata daca un utilizator apasa tasta F1 din cadrul acestui control.

ControlTipText (Textul sfatului elementului de control) este o proprietate noua care stabileste textul ce urmeaza sa fie afisat ca sfat atunci cand cursorul ramane deasupra controlului.

ShortcutMenuBar (Bara de meniu a comenzilor rapide) este o alta proprietate noua, utilizata pentru definirea meniului de comenzi rapide care va fi afisat.

Trei proprietati se refera la modul de deplasare a utilizatorilor intre elementele de control:

TabIndex (Indexul de tabelare)defineste ordinea de parcurgere pentru elementele dintr-un formular;valoarea introdusa trebuie sa fie un numar din secventa cuprinsa intre zero si numarul de controale minus unu;atunci cand se modifica un TabIndex in caseta Properties sau in cod, indexul de tabelare al celorlalte elemente este ajustat pentru a mentine o secventa; in modul de afisare Design, aceasta valoare este stabilita de obicei cu fereastra Tab Order (Ordinea de parcurgere) din cadrul meniului View.

daca proprietatea TabStop (Oprire in timpul parcurgerii ordonate a elementelor) este No, caseta de text va fi sarita atunci cand se trece de la un control la altul.

daca proprietatea AutoTab (Parcurgere automata) este Yes, cursorul de selectie se deplaseaza automat la controlul urmator dupa introducerea ultimului caracter al mastii de intrare a cotrolului.

Tasta Enter determina de asemenea deplasarea la elementul urmator, cu exceptia situatiei in care este modificata vaoarea prin intermediul meniului Tools|Options|Keyboard (Instrumente|Optiuni|Tastatura). Se poate ingloba un rand nou intr-un control cu combinatia da taste Ctrl+Enter. Pentru unele elemente cum ar fi campurile memo, ar fi mult mai convenabil daca tasta Enter ar crea un rand nou in cadrul campului. Proprietatea EnterKeyBehavior (Comportarea tastei Enter) poate fi stabilita la Default (Valoarea prestabilita) sau New Line in Filed (Rand nou in camp).

Proprietatea AllowAutoCorrect (Permite corectarea automata) este o valoare Yes/No, care determina daca in acest control ortografia este corectata in mod automat .pentru a modifica optiunile de configurare pentru toate elementele, se utilizeaza Tools|AutoCorrect.

Controlul Tag (Eticheta) nu afecteaza infatisarea sau comportarea acestuia, permitand in schimb stocarea pana la 2KB (Kiloocteti) de informatii suplimenatre despre acesta. Unii programatoi folosesc textul din cadrul controlului Tag ca si cum ar fi o lista de caracteristici personalizate, delimitate cu semnul punct si virgula, ca de exemplu ValueToRestore = MyOldValue ; PreferredOrder = 9; MyNewProperty = Something Else.

Proprietatile valabile in momentul rularii

Aceste proprietati nu apar in caseta Properties, deoarece ele nu au nici o valoare pana in momentul utilizarii formularului.

Trei dintre ele se refera la valoarea continuta in control. Daca nu a avut loc nici o operatie de editare din momentul incarcarii inregistrarii, cele trei valori sunt identice. Totusi, daca inregistrarea a fost editata, cele trei proprietati intorc valorile urmatoare:

Text: textul neverificat, asa cum este el afisat in control.

Value: valoarea care va fi restabilita daca anulati ceea ce ati introdus in acest camp.

OldValue (Valoarea veche): ultima valoare salvata, care va fi restabilita daca anulati toate intrarile de date din inregistrare.

Proprietatea OldValue este protejata la scriere. Celelalte doua proprietati pot fi stabilite conform necesitatilor, daca se doreste sa se creeze propriul sistem de anulare a comenzilor.

Alte trei proprietati se refera la textul selectat in cadrul controlului:

SelStart (Pozitia de inceput a textului selectat) este un numar care indica pozitia cursorului in cadrul elementului de control. Inceputul elementului este pozitia zero; daca sunt selectate mai multe caractere, SelStart indica locul in care incepe selectia.

SelLenght (Lungimea selectiei) este o valoare care indica numarul de caractere selectate.

SelText (Textul selectat) are o valoare egala chiar cu textul selectat. Daca nu exista text selectat, SelText are valoarea Null.

Aceste proprietati pot fi atat scrise cat si citite. De exemplu, stabilind SelStart la 0, se obtine deplasarea cursorului la inceputul campului. Stabilind aceeasi proprietate la o valoare numerica mai mare decat lungimea textului, cursorul se va deplasa la sfarsit. Daca se atribuie proprietatii SelLenght valoarea 8, vor fi selectate cele opt caractere care urmeaza (sau toate caracterele ramase daca sunt mai putine de opt).

Stabilirea proprietatii SelText la un sir de caractere determina inserarea sirului la pozitia cursorului. Daca SelText nu are valoarea Null atunci cand ati procedat asa, textul selectat anterior a fost inlocuit.

Mai exista inca trei proprietati protejate la scriere care ofera informatii despre control. EventProcPrefix (Prefixul procedurii eveniment) intoarce sirul de caractere utilizat ca prefix al procedurii eveniment (Event Procedure Prefix). Acesta este de obicei identic cu denumirea controlului.

Proprietatea Parent (Parinte) reprezinta o referire la formularul care cuprinde caseta de text

Proprietatea Section intoarce un numar care arata care dintre sectiunile formularului sau raportului contine controlul

Proprietatile prestabilite din modul Design

In modul de afisare Design, daca se executa clic pe pictograma TextBox de pe bara de instrumente, caseta Proprietati afiseaza proprietatile prestabilite ale tuturor casetelor de text noi pentru acest formular. Prin modificarea acestora, putem determina programul Microsoft Access sa creeze casete de text in conformitate cu dorintele noastre

Cinci proprietati noi apar printre optiunile prestabilite ale modului Design, pentru a defini relatia controlului cu eticheta sa:

AutoLabel (Etichetare automata): o valoare Yes/No, indicand daca acest control a fost creat cu o eticheta atasata.

AddColon (Adauga semnul doua puncte):o valoare Yes/No, indicand daca eticheta are semnul doua puncte la sfarsit.

LabelAlign (Alinierea etichetelor):alinierea textului din cadrul etichetei.

LabelX: distanta relativa dintre partea stanga a controlului si eticheta acestuia; extinderea etichetei la stanga sau la dreapta acestei pozitii depinde de valoarea stabilita a proprietatii LabelAlign.

LabelY: distanta relativa dintre partea de sus a controlului si partea de sus a etichetei acestuia.

Aceste valori prestabilite de proprietati se aplica numai formularului sau raportului impreuna cu care au fost salvate. Daca vreti sa stabiliti valorile prestabilite pentru toate formularele sau rapoartele noi, creati un formular sau raport care contine valorile pe care vreti sa le folositi, salvati-l si introduceti-i numele in Tools|Options|Forms|Reports.

Evenimentele casetei de text

Evenimentele constituie baza oricarei aplicatii Microsoft Access.

Primele programe pe calculatoarele personale au fost realizate pe baza modelului de programe procedurale. Programatorul scria un fragment de cod care incepea intr-un punct de intrare si urmarea apoi o ordine precisa. O procedura putea afisa un meniu de optiuni pentru a permite ramificarea in alta procedura, dar in orice moment se putea marca o linie a programului original si se putea spune :”Aceasta este linia care se executa acum”.

Microsoft Access nu lucreaza insa in acest mod. De fapt, in general, programele Windows nu lucreaza astfel. Windows administreaza toate intrarile, cum ar fi apasarile de taste sau apasarile pe butoanele mouse-ului, si decide la care program sa ajunga aceste informatii. Programul receptioneaza mesajul despre aparitia unui eveniment si actioneaza in consecinta, activandu-si raspunsul. Daca un program nu are evenimente pe care sa le manipuleze in mod curent, atunci el nu utilizeaza deloc unitatea centrala de procesare si in multe cazuri programatorul nu stie ce eveniment ar putea sa urmeze. Programul nu este alcatuit dintr-o serie de proceduri ramificate; el consta din nenumarate utilitare de tratare a evenimentelor nerelationate, fiecare dintre ele fiind pregatit sa-si execute secventa de instructiuni atunci cand are loc evenimentul specificat.

Evenimentele ofera posibilitatea de a: raspunde la editari, verifica intrarile, reflecta modificarile in alta parte a bazei de date, ascunde controalele irelevante, pastra valorile in spatele ecranelor, preveni introducerea datelor ilogice, cere informatii suplimentare, furniza un sistem de asistenta suplimentar, manipula problemele de blocare multiutilizator si a arhiva o inregistrare inainte de a o sterge.

Evenimentele descriese in acest lucrare au loc in timp ce un utilizator lucreaza cu controalele dintr-un formular. Daca doriti sa specificati un raspuns programat pentru un evenient, o veti face in campul Events (Evenimente) din caseta Properties (Proprietati). Valoarea introdusa poate fi oricare dintre urmatoarele:

numele unei comenzi macro care trebuie sa fie executata;

mumele unei functii Visual Basic, care trebuie sa fie executata. Valoarea introdusa trebuie sa inceapa cu un semn = si trebuie sa includa parantezele de functie(exemplu: =MyFunction());

[Event Procedure] (Procedura eveniment), pentru a ne referi la elementul de tratare al evenimentului memorat impreuna cu formularul.

Comenzile macro sunt utilizate in general de neprogramatori. Functiile independente sunt folositoare in cazul in care mai multe controale cer acelasi raspuns. Totusi, Event Procedure (Procedura Eveniment) este in general cea mai buna alegere .

Procedurile eveniment necesita o anumita familiarizare cu programul Visual Basic.

Evenimentul BeforeUpdate (Inainte de actualizare) are loc atunci cand utilizatorul incearca sa salveze inegistrarea sau cand paraseste controlul asupra caruia a efectuat modificari. Evenimentul este proiectat in principal pentru validarea intrarii. Daca valoarea introdusa nu este gasita corespunzatoare din punct de vedere logic, evenimentul poate fi interupt iar utilizatorul trebuie sa incerce din nou operatia.

Evenimentul AfterUpdate (Dupa actualizare) are loc dupa ce un conrol a fost editat si dupa ce modificarea a fost acceptata, dar inainte sa fie anulata selectarea controlului. Evenimentul AfterUpdate nu poate fi anulat deoarece actualizarea a fost deja acceptata. Evenimetul este dedicat pentru a raspunde noilor valori introduse.

Evenimntele BeforeUpdate si AfterUpdate se petrec numai cand utilizatorul salveaza inregistrarea sau se deplaseaza la alt control.

Evenimentul Change (Schimba) are loc la fiecare editare efectuata cu ajutorul tastaturii sau mouse-ului, in cazul in care aceasta operatie modifica respectivul control. Daca un utilizator apasa pe rand patru taste, evenimentul Change are loc de patru ori.

Acest eveniment nu este folosit prea des. Poate fi utilizat pentru a cauta intr-un tabel si a reveni cu rezultatul cel mai bun al cautarii, lucrand in mod similar functiei AutoExpand a unei formatii.

Feriti-va sa creati un lant de evenimente care declanseaza recursiv evenimentul Change. De exemplu, daca folositi evenimetul Change pentru modificarea continutului altei casete text si al doilea eveniment afecteaza continutul primei casete text, programul se va bloca afisand un mesaj Stack Overflow (Depasire de stiva).

Evenimentul Enter (Intrare) are loc de fiecare data cand cursorul se muta intr-un control in timp ce evenimentul Exit (Iesire) se petrece la iesirea din control. Aceste evenimente sunt folosite pentru a sincroniza formularele suport sau pentru a oferi ajutor suplimentar.

Evenimentele GotFocus (Obtine accesul la cursorul de selectie) si LostFocus (Pierde accesul la cursorul de selectie) sunt similare cu Enter si Exit. Ele se petrec la intare si la iesire, dar au loc, de asemenea, daca utilizatorul comuta la un alt formular sau la un alt raport.

Evenimentul Click (Executa clic) se petrece ori de cate ori este apasat un buton al mouse-ului pe un control. Evenimentul este folosit mai ales pentru butoanele de comanda decat pentru casetele de text.

Evenimentul DblClick (Executa dublu clic) are loc cand se executa dublu clic cu mouse-ul pe un control. In general, utilizatorii executa dublu clic pentru a selecta un cuvant intr-o caseta de text, astefel incat daca se doreste utilizarea evenimetului in alt scop trebuie sa se redefineasca o functie standard.

Procedurile eveniment MouseDown (Apasa buton mouse) si MouseUp (Elibereaza buton mouse) furnizeaza informatii precise despre butonul mouse-ului care a fost apasat, despre locul unde era mouse-ul cand a avut loc evenimentul si daca tastele Shift, Alt sau Ctrl au fost tinute apasate in acelasi timp.

Evenimentele MouseDown si MouseUp ofera informatii despre deplasamentul fata de coltul din stanga-sus al controlului unde a avut loc evenimentul. Pentru un obiect grafic, cum ar fi, de exemplu, o harta, aceasta metoda ar putea sa fie folosita pentru a detalia informatiile prezentate pe suprafata pe care s-a executat clic. Desi Access ofera evenimente pentru a controla operatia de tragere cu mouse-ul (dragging), evenimentele MouseDown si MouseUp pot fi folosite pentru simularea ei.

Evenimentul MouseMove (Muta mouse) se petrece la fiecare deplasare usoara a mouse-ului, in timp ce mouse-ul se gaseste peste un control. Evenimentul este folosit uzual in furnizarea informatiilor de ajutor intr-un balon sau intr-o linie de stare personalizata.

Evenimentul KeyDown (Tine tasta apasata) are loc de fiecare data cand este apasata o tasta intr-un control, iar KeyUp (Elibereaza tasta) are loc atunci cand tasta este eliberata. Deoarece procedurile evenimentului asigura informatii despre apasarea tastelor si despre starea tastelor shift, evenimentul poate fi folosit pentru blocarea apasarii tastelor incorecte, prin aceasta extinzandu-se functionalitatea oferita de InputMask (Masca de intrare).

Metodele casetei de text

In plus fata de proprietati si evenimente, in Microsoft Access obiectele poseda si metode. Casetele de text au numai doua metode: Requery(Reinterogare) si SetFocus (Configurare cursor de selectie).

Metoda Requery determina incarcarea unei casete de text cu date recente. Un control calculat legat cu informatii din alt formular necesita reinterogarea, asa cum a fost aratat anterior in evenimentul AfterUpdate.

Metoda SetFocus permite mutarea intr-un control specificat

Eticheta

Etichetele pot fi atasate la un alt control sau pot fi independente. Pentru a crea o eticheta independenta, se deschide un formular sau un raport in modul de vizualizare Design (Proiect) si se executa clic pe pictograma Label (Eticheta) din caseta cu instrumente(reprezentata de o majuscula A). Se executa clic pe formular in locul in care utilizatorul doreste sa apara eticheta si se introduce textul pe care il va contine. Pentru a atasa o eticheta la un control, se executa clic cu butonul drept al mouse-ului pe eticheta si se alege Cut (Taie) din meniul de comenzi rapide. Apoi se executa clic cu butonul drept al mouse-ului pe controlul la care doriti sa atasati eticheta si se alege Paste (Lipeste) din meniul de comenzi rapide.

Eticheta are proprietatea Caption (Titlu) care defineste textul afisat. Proprietatea Caption nu poate fi o expresie de genul =Date(). Aceasta proprietate poate fi schimbata cu o comanda macro sau cu o secventa de instructiuni in limbajul Visual Basic, desi, daca este modificata mai des, se observa ca se dispune de mai multa libertate de actiune folosind o caseta de text cu proprietatile Looked configurata pe Yes si Enabled configurata pe No.

Etichetele nu pot sa contina date. Ele nu au proprietati de tip data, cum ar fi ControlSource (Sursa controlului) sau DefaultValue (Valoare prestabilita). De asemenea, nu au evenimente, cum ar fi BeforeUpdate (Inainte de actualizare) sau KeyPress (Apasa tasta). Desi se poate executa clic cu mouse-ul pe etichete, ele nu au evenimente cum ar fi Click (Executa clic) sau MouseDown (Apasa buton mouse). Executand clic pe o eticheta se selecteaza practic toate datele din controlul asociat, astfel incat valoarea introdusa poate fi inlocuita usor. Acest mod de folosire este extins chiar la etichetele din interfata Access, cum ar fi etichetele proprietatilor din caseta Properties (Proprietati).

O eticheta are majoritatea proprietatilor de format pe care le au casetele de text. Proprietatea Format este absenta, deoarece nu trebuie sa controleze schimbarea datelor. Eticheta are o proprietate Visible (Vizibil) care poate trece eticheta din starea vizibila in stare ascunsa si invers, in timp ce formularul este in lucru. Totusi, daca ascundeti controlul asociat, eticheta se ascunde automat chiar daca proprietate sa Visible este configurata inca la valoarea True. Proprietatea DisplayWhen (Cand afiseaza) lucreza in mod similar:cand caseta de text asociata este configurata la valoarea Print Only (Numai tiparire), eticheta nu va fi afisata, chiar daca proprietatea DisplayWhen este configurata la valoarea Always (Intotdeauna). Etichetele au toate celelalte proprietati de format ale casetei de text, cu exceptia proprietatilor ScrollBars (Bare de derulare), CanGrow (Se poate mari) si CanShrink (Se oate strange)

Dintre proprietatile Others (Celelalte) ale etichetei, lipsesc proprietatile de tabulare si de editare. Proprietatile de asistenta (cu exceptia proprietatii StatusBarText (textul de pe bara de stare)) sunt inca prezente. Aceasta inseamna ca putem atribui intrari pentru texte reprezentand sfaturi si pentru fisiere de asistenta pentru o eticheta, care sunt diferite de cele ale controlului. De asemenea, putem evidentia doua meniuri diferite de comenzi rapide pentru un control prin atribuirea celui de al doilea la propria eticheta. Eticheta contine, de asemenea, o proprietate Tag (Marcheaza) pentru orice am dori sa pastram.

Proprietatea Caption (Titlu) poate fi folosita pentru atribuirea unei taste de accelerare la un control. Trebuie doar sa includem in titlu un semn ampersand; Access nu va afisa acest semn, dar va sublinia litera urmatoare. Utilizatorul poate apoi sa treaca la controlul asociat tinand apasata tasta Alt si introducand litera subliniata. De exemplu, pentru a sari la un control cu combinatia de taste Alt+H, configurati campul Caption la valoarea &Hourly Rate (in acest caz, Alt+H nu va mai accesa meniul de asistenta).

Fiecare control are o proprietate Parent (Parinte). Pentru cele mai multe dintre controale, parintele este o referinta la formularul care contine controlul si, versiunile anterioare ale programului Access, acest lucru era valabil si pentru etichete. Proprietatea Parent a unei etichete atasate este controlul la care este atasata. Proprietatea Parent a etichetelor neasociate este inca formularul. Aceasta modificare fata de versiunile anterioare se aplica, de asemenea, la controalele dintr-un grup de optiuni.

Caseta lista

Datele dintr-o caseta lista pot proveni din patru surse. Datele pot fi inregistrarile dintr-un table. Caseta lista poate contine o lista de valori introduse in momentul proiectarii. Poate fi, de asemenea, o lista de campuri, daca utilizatorul doreste sa aleaga numele unui camp. Sau poate fi numele unei functii special proiectate in Visual Basic care furnizeaza datele pentru caseta lista. Utilizatorul defineste continutul casetei lista cu doua proprietati, RowSourseType (Tipul de sursa a liniei) si RowSource (Sursa liniei):

daca RowSource este Table/Query (Table/Interogare), RowSource ar trebui sa fie numele tabelului sau al interogarii pentru a funiza datele sau o instructiune SQL;

daca RowSourceType este Value List (Lista de valori), RowSource ar trebui sa fie o lista de valori separate prin punct si virgula pentru coloanele casetei lista;

daca RowSourceType este Field List (Lista de campuri), RowSource ar trebui sa fie tabelul, interogarea sau instructiunea SQL care contine campurile;

daca RowSourceType este o functie definita de utilizator, RowSource ar trebui sa fie un camp gol.

Numarul de coloana pe care le contine lista este definit de proprietatea ColumnCount(Numar de coloana). Numele campului va fi afisat deasupra fiecarei coloana daca proprietatea ColumnHeads (Capete de coloane) este configurata la Yes.

Fiecare coloana a unei casete lista are o latime prestabilita de aproximativ 1 inci (2,54 cm). Proprietatea ColumnWidths (Latimila coloanelor) accepta pentru latimi o lista de valori separate prin semnul punct si virgula. Latimile pot fi schimbate in timp ce formularul este in lucru.

La fel ca in cazul casetei de text, latimea intregii casete lista este configurata cu proprietatea Width (Latime).

Cand se selecteaza o linie, caseta lista preia valoarea uneia dintre coloane si o salveaza in campul de care este legata. Proprietatea BoundColumn (Leaga coloana) determina coloana careia i se preia valoarea.

Daca valoarea proprietatii MultiSelect (Selectare multipla) este schimbata se pot selecta la un moment dat mai multe elemente din caseta lista executand clic pe ele cu mouse-ul sau folosind tastele sageti si Space. Daca aceasta proprietate este configurata la valoarea Extended (Extins), caseta lita se comporta ca programul Windows Explorer: cu tasta Shift se poate selecta o zona continua, iar cu tasta Ctrl se pot adauga la o selectie elemente izolate. Daca este folosita proprietatea MultiSelect pentru o caseta lista care este legata la un camp, selectarile multiple nu vor putea fi memorate intr-o singura inregistrare, astfel ca aceasta proprietate este utila numai pentru selectari temporare.

Casetele lista au o serie de proprietati- disponibile doar in modul executabil- pentru a pune la dispozitie informatii de genul, in ce coloana se afla anumite date si ce linii sunt selectate . Aceste proprietati sunt:

ListCount (Numar lista) este numarul de linii din lista.

ItemData (Row)- Date din element (Linie)- este valoarea coloanei legate in linia specificata.

Column(col [, row])- Colana() este valoarea din coloana specificata. Daca nu este specificata nici o linie, se ia in calcul linia selectata.

ListIndex (Index lista) este numarul liniei selectate sau –1 daca nu este selectata nici o linie.

Selected (Selectat) este un tablou True/False pentru fiecare linie din caseta lista.

ItemSelected (Elemente selectate) este o colectie care cuprinde valorile ListIndex (Index lista) pentru toate elementele selectate.

Un utilizator nu poate introduce valori noi intr-o caseta lista, astfel incat cateva dintre proprietatile casetei de text nu se aplica la caseta lista:

proprietatile de format: Format, ScrollBars, CanGrow, CanShrink, TextAlign.

proprietatile datelor: DecimalPlaces, InputMask, FilterLookup.

alte proprietati: EnterKetBehavior, AllowAutoCorrect, AutoTab;

proprietatile eveniment: Change.

proprietatile executabile: Text, SelStart, SelLength, SelText.

Caseta combinata

Caseta combinata este un control puternic, ce combina majoritatea proprietatilor casetei lista si ale casetei de text cu cateva proprietati noi proprii. Datorita versatilitatii sale, caseta combinata este utilizata mult mai frecvent decat caseta lista. O valoare de intrare poate fi selectata introducand doar numarul de caractere necesare pentru identificarea unica a elementului. Caseta combinata poate fi configurata pentru a accepta valori de intrare care nu se gasesc in lista- ceea ce este imposibil la o caseta lista. Caseta combinata are chiar un eveniment care permite adaugarea de noi intrari in lista pentru o folosire ulterioara.

Deoarece caseta combinata are linii si coloana ca si caseta lista, multe din proprietatile lor sunt comune. Datele sunt introduse prin RowSourceType si RowSource, iar valorile sunt definite prin BoundColumn. Numarul de coloana este dat de ColumnCount, iar pentru a defini latimile coloanelor se foloseste sirul ColumnWidths. ColumnHeader determina includerea sau nu a capetelor de coloana.

Spre deosebire de caseta lista, caseta combinata nu este capabila sa selecteze mai multe elemente, astfel incat nu are proprietatile MultiSelect, Selected si ItemSelected Toate proprietatile casetei de text sunt prezente cu exceptia urmatoarelor:

proprietatile de format: ScrollBars, CanGrow, CanShrink;

proprietatile datelor: FilterLookup;

alte proprietati: EnterKeyBehavior, AutoTab.

Deoarece caseta combinata arata uneori ca o caseta lista, iar alteori ca o caseta de text, detine cateva proprietati suplimentare pentru administrarea personalitatii ei divizate:

ListRows (Liniile listei) este numarul de linii care ar trebui afisate cand caseta combinata este derulata.

ListWidth (Latimea listei) este latimea listei cand caseta combinata este derulata.

AutoExpand (Extindere automata) este o valoare Yes/No care ne indica daca acest tip de control isi controleaza singur sursa primara (RowSource) si umple automat restul denumirii primei intrari care se potriveste cu textul introdus;.daca RowSource este un tabel cu mai multe sute de inregistrari, ar putea sa existe intarzieri datorate timpului de cautare al urmatorului element care sa se potriveasca, asa ca este mai bine sa fie configurata AutoExpand la No pentru a mari viteza de executare a operatiei.

LimitToList (Limitat la lista) este o valoare Yes/No, care indica daca utilizatorului i se permite sa introduca o valoare de intrare care nu exista in lista casetei.

NotInList (Nu este in lista) este un eveniment care este declansat cand utilizatorul introduce o intrare care nu exista in lista, in cazul in care LimitToList are valoarea Yes; evenimentul poate fi folosit pentru a bloca valoarea de intrare, altfel pentru a adauga noul element in lista.

In versiunile anterioare ale Microsoft Access, performantele casetei combinate scadeau daca sursa sa primara continea mai multe sute de inregistrari. Acum o caseta bine proiectata poate sa dea performante bune chiar daca include mai multe mii de inregistrari.

Butoanele de comanda (Command Buttons)

Utilizatorii recunosc dintr-o privire un buton de comanda si cunosc faptul ca apasarea lui genereaza o actiune. Actiunea este declansat de un eveniment- de obicei evenimentul Click si uneori MouseDown sau MouseUp. De cele mai multe ori un buton executa un process simplu cum ar fi, de exemplu, deschiderea altui formular sau raport, dar utilitarul de tratare al evenimentului ar putea apela o functie VBA extinsa ca, de exemplu, expedierea tranzactiilor financiare. Programul de tratare al evenimentului se specifica in proprietatile evenimentului din caseta Properties (Proprietati). La fel ca in cazul casetelor de text, valoarea de intrare poate fi o comanda macro, o functie VBA sau o procedura eveniment interna (Event Procedure).

Daca utilizatorul creaza un buton de comanda cu ajutorul casetei cu instrumente si daca optiunea Controls Wizard (program vrajitor pentru controale) este marcata, este invocat programul vrajitor pentru butoanele de comanda (Command Button Wizard). Acest program permite alegerea dintr-un set de mai mult de 30 dintre cele mai folosite butoane de comanda. Se creaza butonul, cu optiunea utilizatorului de titlu sau imagine, precum si codul de cerut pentru butonul ales.

Butoanele de comanda nu contin date. Ele nu au nici proprietati de date, exceptand proprietatea Enabled, astfel incat nu au nici evenimentele BeforeUpdate (Inainte de actualizare) sau AfterUpdate (Dupa actualizare). Proprietatile lor de format sunt limitate fara posibilitati de control pentru fundal sau contur. Textul de pe buton provine din proprietatea Caption (Titlu), care poate include si un semn amperdand pentru a oferi o tasta de accelerare a executiei comenzii. Acceleratorul nu apasa pe buton, ci doar face ca acesta sa fie selectat. Cand butonul este selectat, apasarea tastei Enter este echivalenta cu a executa clic pe el.

Butonul are, de asemenea, o proprietate Picture (Pictura) pentru afisarea sa ca pictograma. Microsoft Access include duzini de astfel de pictograme definite intern: pictogramele standard de stergere, anulare si de adaugare a unei inregistrari noi; in plus, pictograme fara nici o relatie, de la avioane pana la chei. Se pot incarca pictura si dintr-un fisier- ca imagine descrisa prin puncte (in format .bmp), ca imagine descrisa prin puncte independena de dispozitiv (in format .dib), ca pictograma (.ico), ca Windows metafiles (.wmf) si in alte formate pentru care sunt instalate filter.

Proprietatea ControlTipText (Textul asistent al controlului) permite ca orice utilizator nesigur sa poate afla scopul unui buton tinand pur si simplu mouse-ul deasupra acestuia.

Butonul are, de asemenea, o proprietate Transparent. Un buton transparent dispare complet impreuna cu proprietatile sale Caption si Picture, permitand ca altceva, care arata cu totul altfel decat un buton, sa se comporte ca un buton adevarat. Nu este acelasi lucru cu a confugura proprietatea Visible la valoarea No, ceea ce ar face ca butonul sa fie neoperational.

Trei dintre proprietatile listate in Other Properties (Alte proprietati) sunt unice pentru acest buton. Proprietatea AutoRepeat (Repetare automata) este o valoare Yes/No care indica daca evenimentele butonului trebuie sa fie repetate daca utilizatorul tine butonul apasat. Daca AutoRepeat este configurata la valoarea Yes, este definita o intarziere initiala de o jumatate de secunda inainte de prima repetare. Dupa aceasta, evenimentul se repeta de patru ori pe secunda.

Butonul mai are, de asemenea, proprietatile Default si Cancel. Daca Default are valoarea Yes, apasarea tastei Enter in orice control din formular declaseaza evenimentul Click al butonului. Daca proprietatea Cancel are valoarea Yes, apasarea tastei Esc oriunde in formular declanseaza aparitia evenimentului Click. Un buton poate avea configurate ambele proprietati Default si Cancel, astfel incat poate reactiona atat la apasarea tastei Enter, cat si a tastei Esc. Trebuie sa se aiba grija la configurarea acestor proprietati; in functie de context, utilizatorii se asteapta deseori ca la apasarea tastei Enter sa introduca o valoare intr-un control, iar la apasarea tastei Esc sa anuleze o valoare introdusa; astfel incat o apasare de tasta ar putea sa faca mai mult decat se asteapta de la ea. Daca proprietatea Default si Cancel sunt marcate, nu se foloseste instructiunea SendKeys pentru a trimite un cod {Esc} sau un cod {Enter} in evenimentul Click.

Casetele de validare (Checkboxes) si butoanele de comutare (Toggle Buttons)

Aspectul butoanelor de comutare este confuz pentru utilizatori. Ele arata ca si butoanele de comanda care au ramas apasate. Desigur , astea sunt butoana care reprezinta o valoare cu doua stari (True/False, On/Off, Yes/No).

Butonul de comutare are, ca si butonul de comanda, proprietatile Caption si Picture. Dar spre deosebire de butonul de comanda, poate fi legat la un camp Yes/No, cu proprietatile de date cum ar fi ControlSource si DefaultValue, impreuna cu BeforeUpdate (Inainte de actualizare) si AfterUpdate (Dupa actualizare).

Pentru a completa confuzia, butonul are si o proprietate Triplestate. Daca aceasta proprietate are valoarea True, butonul poate reprezenta valoarea Null. In aceasta stare, butoul nu arata nici apasat, nici ridicat.

Caseta de validare are aceeasi functie ca si butonul de comutare, fara a avea si aparenta de confuzie a acestuia. Acest control ofera o reprezentare clara a valorilor True/False, in special datorita faptului ca Windows 95 afiseaza continutul casetei de validare cu un semn de marcare diferit de X.

Caseta de validare are aceleasi proprieatati de date ca si butonul de comutare: ControlSource, DefaultValue, Enabled, Locked si asa mai departe. Proprietatea Triplestate este, de asemenea, acceptata, iar caseta de validare colorata in gri este o buna reprezentare a unei valori necunoscute.

Pentru un singur clic cu mouse-ul, caseta de validare nu duce lipsa de evenimente . Daca respectivul control nu a fost selectat inainte de a se executa clic cu mouse-ul deasupra lui, sunt declansate toate evenimentele urmatoare: Enter (Intrare), GorFocus, MouseDown, MouseUp, BeforeUpdate(Inainte de actualizare) ,AfterUpdate (Dupa actualizare) si Click, in aceasta ordine, cu interuperea intre ele a unor evenimente MouseMove. Similar, ar putea fi vorba de evenimentele KeyDown, KeyUp si KeyPress, daca trebuie sa distingeti un clic cu mouse-ul de o apasare de tasta.

Unele dintre proprietatile de format ale casetei de validare nu sunt foarte utile. Desi are proprietatea Height si Width, acestea nu schimba dimensiunea actuala a casetei de validare, iar controlul nu este suficient de mare pentru ca proprietatile de contur sa poata fi folosite.

Grupul de optiuni (Option Group) si butoanele de optiuni (Option Buttons)

Butoanele de optiuni (cunoscute si ca butoane cu interblocare) reprezinta, de asemenea, valori True/False si proprietatile lor sunt identice cu cele ale unei casete de validare. Din punctual de vedere al programatorului, nu este nici o diferenta intre cele doua controale. Totusi, exista o diferenta de folosire generala care ar trebui sa fie observata daca doriti sa faceti programul sa fie intuitiv.

Prin conventie, butonul de optiune este folosit intr-un grup in care selectarea oricarui obiect provoaca anularea selectarii celorlalte obiecte. Un grup de butoane de optiune care nu se deselecteaza unul pe celalalt poate crea confuzie. Pe de alta parte, caseta de validare ar trebui folosita doar pentru optiunile independente, care nu sunt afectate de optiunile din jur, astfel incat plasarea unei casete de validare intr-un grup de optiuni este tocmai buna pentru crearea confuziei. De asemenea, un numar de butoane de comutare independente situate in afara unui grup de optiuni poate crea confuzie; din punctual de vedere al utilizatorului ele nu pot fi deosebite de butoanele de comanda.

Pentru a crea un grup cu butoane de optiuni, primul pas este crearea grupului de optiuni. Se executa clic pe Option Group (Grup de optiuni) din caseta cu instrumente si apoi se executa clic sau este tras in formular. Apoi se executa clic pe Option Button (Buton de optiuni) in caseta cu instrumente. Cand se trece cu mouse-ul peste grupul de optiuni, culoarea se schimba, ceea ce indica faptul ca butonul va face parte din grup. Pentru alinierea butoanelor este foarte utila optiunea Snap to Grid (Salt la retea) din meniul Format.

Daca este apasata pictograma Wizard (Vrajitor) din caseta cu instrumente, atunci cand se creaza propriul grup de optiuni, programul Wizard este activat si permite selectarea tipului controlului care va fi folosit in acest grup, numele tuturor etichetelor, valorile fiecarei optiuni si valoarea prestabilita pentru grup.

Fiecare buton dintr-un grup de optiuni are proprietatea OptionValue (Valoarea de optiuni), care este valoarea returnata de butonul grupului in momentul selectarii. Valorile pot fi numai intregi. Aceasta inseamna ca grupul de optiuni legat are semnificatie numai pentru campurile numerice.

Valorile butoanelor dintr-un grup nu trebuie sa fie secventiale sau unice. De fapt, daca sunt adaugate butoane grupului selectand unul dintre ele si apoi alegand functia Duplicate (Dubleaza) din meniul Edit, se observa cateva butoane cu aceeasi valoare, astfel ca, atunci cand unul dintre ele este selectat, vor fi selectate toate. Pentru corectarea acestei probleme, se introduc valori noi pentru proprietatea Option Values (Valori de optiune).

Butoanele din interiorul unui grup de optiuni au mai putine proprietati decat butoanele independente. Intregul grup de optiuni reprezinta o singura valoare- valoarea butonului selectat. Din acest motiv, proprietatile datelor si evenimentele apartin grupului de optiuni, si nu butoanelor sale.

Obiectele si imaginile OLE (OLE Objects and Images)

Obiectele de tip OLE (Object Linking and Embedding- legarea si incapsularea obiectelor) sunt date create de alt program care pot fi pastrate in baza de date. Datele pot fi o imagine, un sunet, un clip video, un document tehnoredactat sau un domeniu dintr-o foaie de calcul. Access nu stie singur cum sa procedeze cu un obiect- daca sa il lanseze in executie cu ajutorul placii de sunet sau sa il modifice daca sunt picate linii cu o pensula peste el. Dar specificatiile OLE permit programului Access sa se interfeteze cu programul care poate sa lucreze cu obiectul respectiv. Pentru utilizatori, aceasta inseamna ca datele din orice alt program care accepta obiecte OLE pot fi memorate si prelucrate intr-o baza de date Access.

Datele OLE pot fi pastrate intr-un camp Ole dintr-un tabel. De exemplu, o scoala de muzica ar trebui sa posede un tabel de instrumente muzicale cu doua campuri OLE: primul pentru desenul (imaginea) instrumentului si al doilea pentru un exemplu de sunet al instrumentului. Pe masura ce studentii trec de la un instrument la altul in cadrul formularului, imaginea este afisata, iar sunetul poate fi ascultat. Controlul care permite plasarea acestor campuri intr-un formular este cadrul obiectului legat.

Pentru a crea acest control, se deschide formularul in modul de afisare Design, se apasa butonul Bound Object Frame (Incadreaza obiectul) din caseta cu instrumente si se trage campul OLE din Field List (Lista de campuri) in cadrul formularului. Cand formularul este deschis pentru lucru, se dauga datele pentru fiecare inregistrare selectand campul si alegand optiunea Object (Obiect) din meniul Insert. Putem crea un obiect nou de orice tip permis de Windows sau putem localiza pe hard-disc fisierul care contine obiectul. O alta metoda de inserare a informatiilor este copierea in Clipboard (Memoria temporara) in cadrul programului original si apoi lipirea ei in campul dedicat in Microsoft Access.

Pentru a edita datele intr-un camp OLE este necesar sa fie lansat in executie celalalt program. In mod normal, acest lucru este realizat pur si simplu printr-un dublu-clic pe obiect. Pentru bazele de date muzicale, daca se executa dublu clic pe pictograma de sunet din cadru, se va lansa in executie programul care “canta” exemplul de sunet. Daca se executa dublu clic pe o imagine descrisa prin puncte, se va incarca in memorie o copie a programului Windows Paint (sau a altui editor grafic) si puteti edita respective imagine cu ajutorul mouse-ului. Daca programul celalalt respecta specificatiile OLE2, fereastra de editare va fi afisata peste formularul din Microsoft Access. Programul respectiv va negocia cu Microsoft Access in privinta meniurilor si barelor cu instrumente care vor fi afisate. Cand cursorul de selectie revine din cadrul OLE, sunt restaurate meniurile si barele cu instrumente din starea normala a programului Access.

Pentru a pune la dispozitie date de tip OLE intr-un formular fara sa fie necesara memorarea lor intr-un tabel, se foloseste un cadru de obiect liber. Aflandu-ne cu formularul in modul de afisare Design, se apasa butonul Unbound Object Frame (Elimina cadrul obiectului) in caseta cu instrumente si se executa clic pe formular. Deoarece datele libere nu se schimba pentru fiecare inregistrare, acestea sunt specificate in timpul proiectarii. De asemenea, se poate crea un cadru de obiect liber completat cu date copiind informatia din Clipboard in cadrul programului original, executand clic cu butonul drept al mouse-ului pe formularul Microsoft Access si se alege optiunea Paste.

Obiectul liber poate inca sa fie editat executand dublu clic in modul de afisare Form. Daca informatia este o imagine statica, ca, de exemplu, sigla unei firme, se poate economisi memorie si se poate reduce timpul de incarcare folosind in schimb un control Image (Imagine) Avand formularul deschis in modul de afisare Design, se executa clic pe optiunea Image in caseta cu instrumente, apoi se executa clic pe formular si se selecteaza imaginea din caseta de dialog File Open (Deschide fisier).

O metoda de a depasi limitarea campurilor memo (care nu pot contine informatii incapsulate) este de a folosi un document Word sau WordPad intr-un cadru OLE. De exemplu, pentru a pastra corespondenta cu clientii, ar trebui sa se creeze tabelele tblClients si tblDocuments cu o relatie one-to-many (unul catre mai multi). Intregul document tehnoredactat este memorat apoi intr-o baza de date. Daca se executa dublu clic pe cadrul obiectului legat, se permite crearea sau editarea de documente intr-o fereastra locala in formularul Microsoft Access putand accesa totodata toate facilitatile procesorului de cuvinte Word. In afara de cerintele crescute de memorie, singurul inconvenient serios este faptul ca Microsoft Access nu este capabil sa caute in campul OLE pentru a gasi o litera a unei expresii particulare, deoarece nu cunoaste nimic despre structura datelor OLE.

Peste cativa ani, bazele de date OLE vor putea pune la dispozitie posibilitati de programate deosebite. Pe masura ce puterea procesorului si capacitatea de memorare devin tot mai disponibile, ideile care erau in trecut visuri vor deveni realitate.

Evenimentele asociate cu obiectele OLE sunt cele obisnuite pentru celelalte controale, cu un adaos. Evenimentul Update (Actualizat) are loc atunci cand obiectul insusi este actualizat, distinct de datele continute.

Linia (Line) si dreptunghiul (Rectangle)

Linia si dreptunghiul sunt controale grafice simple folosite pentru separarea vizuala sau pentru gruparea controalelor intr-un formular sau raport. Plasarea mai multor controale intr-un dreptunghi nu realizeaza gruparea lor logica, asa cum procedeaza optiunea de grupare.

Pentru a crea o linie sau un dreptunghi, se alege pictograma corespunzatoare din caseta cu instrumente si se trage cu mouse-ul peste formular sau raport. Liniile nu pot fi curbate. Liniile pot fi inclinate sub un anumit unghi, in timp ce dreptunghiurile nu accepta aceasta operatie. Pentru a pastra linia doar orizontala sau verticala se tine apasata tasta Shift in timp ce se deseneaza.

Un dreptunghi este afisat vidat(in fundal) daca proprietatea sa BackStyle (Stil de fundal) este configurata la valoarea Transparent; altfel, dreptunghiul este umplut cu BackColor (Culoare de fundal). Proprietatile BorderWidth (Latimea marginii), BorderStyle (Stilul marginii) si BorderColor (Culoarea marginii) definesc grosimea, stilul, si culoarea liniei de contur a dreptunghiului si se aplica similar si la linie.

Proprietatile Height (Inaltime) si Width (Latime) ale unui dreptunghi pot fi folosite in modul in care va asteptati. Pentru o linie, aceste proprietati reprezinta coordonatele relative la punctual de start. Daca Height este 0, linia este orizontala. Daca Width este 0, linia este verticala. Linia incepe in punctual definit ca (Left, Top) si se termina in punctual definit de (Left+Width, Top+Height). Problema care apare aici este ca nu sunt acceptate valori negative pentru Height si Width. De aceea, linia mai are o proprietate, LineSlant (Inclinare linie), care poate avea valoarea \ sau /. Daca LineSlant este / punctul de sfarsit este definit de (Left+Width, Top-Height). In Visual Basic, se foloseste False pentru \ si True pentru /. Logic, linia si dreptunghiul nu au proprietati de date. Linia nu are nici proprietati eveniment, insa dreptunghiul are evenimentele mouse-ului. MouseMove are loc atunci cand cursorul mouse-ului trece peste una din marginile dreptunghiului. Evenimentele Click, MouseDown si MouseUp au loc atunci cand se executa clic pe conturul dreptunghiului. Daca este nevoie de o linie care sa raspunda la actiunile mouse-ului, se foloseste un dreptunghi cu Height si Width configurate la 0.

Delimitatorul de pagina (Page Break)

Intru-un formular se poate folosi un control Page Break pentru:

divizarea formularelor care au prea multe controale pentru a putea fi afisate simultan;

cresterea vitezei de lucru cu formularele care contin imagini grafice OLE, prin trimiterea graficului intr-o pagina urmatoare;

crearea grupurilor logice, similare cu o caseta de dialog tabulara.

Pentru a naviga intre paginile unui formular se folosesc tastele PgUp si PgDn.

Delimitatoriide pagina pot fi adaugati unui raport, permitand specificarea, daca este necesar, a unui punct de intrerupere in mijlocul unei sectiuni, Daca o sectiune trebuie sa inceapa sau sa se termine intotdeauna cu un delimitator de pagina, configurati proprietatea ForceNewPage (Forteaza pagina noua) a sectiunii.

Desi delimitatorul de pagina are proprietatea Left, intotdeauna este situat in stanga formularului sau raportului. Din nefericire, delimitatorul de pagina nu are si o proprietate DisplayWhen, astfel incat formularele care sunt despartite in pagini sunt tiparite, de asemenea, pe mai multe pagini.

Controalele personalizate (Calendar)

Controalele de completare (adaugare) pot fi inregistrate pentru a fi folosite cu optiunea Custom Controls din meniul Tools. Controlul Calendar este inclus ca un exemplu. Alte controlale incluse in Kit-ul de dezvoltare Microsoft Access sunt Spinner, Data Outline (Linia de contur a datelor) si Common Dialog(Dialog obisnuit), dar exista si alte controale disponibile ca produse freeware, shareware sau comerciale. O data ce a fost inregistrat, un control personalizat poate fi plasat intr-un formular sau raport daca se executa clic pe Custom Controls in caseta cu instrumente si apoi se selecteaza controlul dorit.

Controlul Calendar are proprietatile de format si de date specifice, si, in plus, cateva proprietati din categoia Others, care sunt particulare. De exemplu, ShowDateSelector (Arata selectorul de data) este o valoare True/False care indica daca sunt afisate casetele derulante pentru luna si an. Proprietatile Year(An), Month (Luna) si Day (Zi) pot fi utilizate pentru a configura o data specifica.

De asemenea, calendarul are si metode pentru configurarea datelor: NextDay (Ziua urmatoare), NextWeek (Saptamana urmatoare), NextMonth (Luna urmatoare), NextYear (Anul urmator), PreviousDay (Ziua precedenta), PreviousWeek (Saptamana precedenta), PreviousMonth (Luna precedenta), PreviousYear (Anul precedent) si Today (Astazi).

Mai exista o metoda, AboutBox (Despre caseta), care afiseaza informatii despre dreptul de copiere.

Majoritatea evenimentelor caledarului sunt similare celorlalte controale: Enter, GotFocus, BeforeUpdate, AfterUpdate. Click, Edit si LostFocus. Ca si alte obiecte OLE controlul calendar are un eveniment Updated, care se petrece independent de BeforeUpdate si de AfterUpdate. Selectarea unei noi luni sau a unui nou an din casetele derulante din partea superioara a controlului provoaca afisarea unei noi luni (sau an) in control si declanseaza producerea eveminetului Updated. Totusi, valoarea controlului nu se schimba pana cand nu este marcata noua dat, astfel ca evenimentele BeforeUpdate si AfterUpdate nu se mai produc. Controlul mai are evenimentele NextMonth si NextYear care au fost proiectate pentru a fi declansate la schimbarea lunii sau a anului, desi aceste evenimente nu erau operationale in versiunea anteriaoara a programului.

Filtre

In timp ce se lucreaza cu inregistrari, adesea interesul utilizatorului se concentreaza pe un grup deosebit de inregistrari. Filtrele exclud temporar celelalte inregistrari din setul de inregistrari cu care se lucreaza.

Un filtru poate fi aplicat unui tabel, unei interogari, unui formular sau unui raport. Filtru este salvat impreuna cu fiecare obiect si poate fi activat sau nu, dupa nevoie. Fiecare obiect are, de asemenea, o proprietate OrderBy (Ordonat de) care defineste ordinea de sortare a inregistrarilor sale. Aceasta proprietate poate fi, de asemenea, activata sau dezactivata.

Pe baza acestei noi interfete extinse operatiile de filtrare si ordonare se reduc la patru proprietati:

Filter(Filtrare): o clauza Where (Unde) memorata impreuna cu obiectul.

FilterOn (Activare filtrare): o valoare de exceptie True/False care indica aplicarea sau nu a filtrului in sesiunea curenta de lucru.

OrderBy (Ordonat de): o clauza Order By memorata impreuna cu obiectul.

OrderOn (Activare ordonare): o valoare de exceptie True/False care indica aplicarea sau nu a sortarii in sesiunea curenta de lucru.

Filtrarea unui set mare de inregistrari ofera posibilitatea de a ne ocupa numai de inregistrarile care prezinta interes pentru utilizator. Un filtru este util pentru a :

localiza o inregistrare folosind doar informatiile cunoscute;

lucra cu un subset de inregistrari;

vizualiza datele intr-o anumita ordine;

selecta un numar de inregistari similare intr-o foaie de calcul.

Deschizand orice formular sau foaie de calcul in Microsoft Access, in bara cu instrumente vor fi afisate si cinci pictograme pentru filtrare si sortare. Cele doua pictogarme pentru sortare sunt Ascending si Descending. Executand clic pe oricare dintre cele doua pictograme, se sorteaza setul de inregistrari dupa campul sau campurile selectate. Alte doua pictograme- Filter By Selection (Filtreaza prin selectare) si Filter By Form (Filtreaza dupa formular)- definesc filtrul asa cum va fi descris in paginile urmatoare. Cealalata pictograma- Apply Filter (Aplica filtru;)- aplica sau elimina alternativ filtrul. Cele cinci pictograme au comenzi echivalente in meniul de comenzi rapide, care pot fi accesate executand clic cu butonul drept al mouse-ului pe campul dupa care se doreste sa se filtreze sau sa se sorteze.

Meniul Record (Inregistrare) ofera si alte optiune pe langa cele prezentate. Meniul in cascada Filter (filtru) include un al treilea tip de filtru, Advanced Filter/Sort (Elemente avansate de filtrare/sortare); sortarea poate fi exclusa folosind comanda de meniu Remove Filter/Sort (Exclude filtrare/sortare).

Filter By Selection

Este cea mai simpla- si cea mai puternica- optiune de filtrare. Filtrul are rolul de a gasi si alte inregistrari similare cu cea selectata, si poate fi eliminat prin eliberarea pictogramei Apply Filter.

Filter By Form

Daca se selecteaza aceasta optiune, Microsoft Access va transforma chiar formularul intr-un fitru. Apoi se pot introduce valori in orice numar de campuri si se executa clic pe pictograma Apply Filter din caseta cu instrumente pentru a vizualiza numai inregistrarile care se potrivesc cu valorile introduse de utilizator.

Filtrul poate accepta expresii in campurile numerice si de date.

Cand este creat un filtru in optiunea Filter By Form, fiecare camp este prezentat ca o caseta combinata. Daca intr-un camp putem avea un numar limitat de valori, putem selecta valoarea pentru filtru dintr-o lista derulanta. Totusi, daca sunt mii de valori diferite sau daca toate valorile trebuie sa fie citite din retea, caseta combinata va contine numai Is Null (Este necompletat) sau Is Not Null (Este completata). Pentru fiecare baza de date in parte, avem optiunea de a defini numarul de intrari din care Access poate sa citeasca in fiecare caseta. In meniul Tools|Options|Edit|Find, se gasesc trei casete de validare sub eticheta Filter By Form Defaults For This Database (Valori prestabilite ale filtrarii prin formular pentru aceasta baza de date). Casetele de validare pentru Local Indexed Fields (Campuri locale indexate) si Local Non-Indexed Fields (Campuri locale indexate) sunt selectate in mod normal, in timp ce optiunea Remote (La distanta) nu. Daca memoria sistemului de calcul este limitata si procesul de selectare al utilizatorului se desfasoara lent, anulati marcarea casetei de validare Local Non-Indexed Fields. Pentru a forta ca introducerea valorilor de intrare sa se face din retea, se selecteaza caseta de validare Remote.

In aceeasi optiune este o caseta de text cu numele Don’t’Display Lists Where More Than This Number Of Records Read (Nu afiseaza liste in care numarul de inregistrari citite este mai are decat acest numar), cu valoarea prestabilita 1000. Aceasta inseamna ca, la crearea filtrului, Microsoft Access renunta la citirea valorilor pentru caseta combinata si afiseaza doar valorile Is Null si Is Not Null daca gaseste mai mult de 1000 de valori. Acest numar este aplicat diferit pentru campurile indexate si neindexate.Pentru campurile indexate, valorile vor fi afisate numai daca sunt mai putin de 1000 de valori diferite in camp, iar pentru cele indexate, datele nu pot fi disponibile decat daca sunt mai putin de 1000 de valori diferite.

Optiunea Filter By Form nu permite filtrarea dupa cotroale libere sau calculate. Pentru a sterge toate filtrele, se comuta in fereastra Filter By Form si se executa clic pe pictograma Clear Grid (Delete)- Dezactiveaza retea (Sterge).

Advanced Filter

Pentru a folosi Advanced Filter se alege Record|Filter|Advanced. Acest filtru arata si se comporta ca o retea de interogare. De fapt, filtrele pot fi salvat ca interogari, iar interogarile salvate pot fi incarcate ca filter, cu conditia ca acestea sa fie interogari standard de tip SELECT care includ numai tabele in setul de inregistrari al formularului.

Desi exista trei moduri de abordare diferite ale filtrului,ele folosesc toate aceeasi proprietate Filter, astfel ca schimbarea valorilor de configurare in optiunea Advanced Filter afecteaza optiunea Filter By Form si invers. Acest lucru inseamna ca filtrul avansat pune intotdeauna la dispozitie un mijloc de afisare a valorilor definite pentru modul curent(selectat) de filtare si sortare, chiar in timpul utilizarii setului de inregistrari.

The Last Saved Filter (Ultimul filtru salvat)

Ultimul filtru salvat impreuna cu un tabel, o interogare, un formular sau un raport este pastrat cu ajutorul proprietatii sale Filter. Ultima configuratie de filtrare este salvata ca o proprietate Order By. Aceste valori pot fi editate manual. Daca proprietatea Filter nu este vida, ea poate fi echivalenta cu o caluza SQL WHERE. Daca proprietatea Order By nu este vida, ea poate fi echivalenta cu o clauza SQL Order By- o lista de campuri delimitate prin semne punct si virgula care definesc o cheie de sortare, avand pe prima pozitie campul cel mai semnificativ.

Filtrarea si sortarea nu sunt aplicate automat la deschiderea ulterioara a obiectului. Pentru a aplica una dintre operatii, se apasa pur si simplu pictograma Apply Filter din bara cu instrumente.

Daca se doreste sa se salveze mai mult de un filtru pentru un tabel sau pentu o interogare, atunci le salvam sub forma de comenzi macro. Comanda macro trebuie sa foloseasca actiunile OpenTable sau OpenQuery, urmate de o actiune ApplyFilter cu argumentul corespunzator Where Condition. Cand este inchis tabelul sau interogarea, vom fi intrebati daca dorim sa salvam modificarile efectuate; daca se raspunde Yes, noul filtru este salvat ca o proprietate Filter. ApplyFilter poate fi folosit si impreuna cu formulare si rapoarte, dar in cazul rapoartelor, numai in cadrul evenimentului Open.

La creare unui nou formular sau a unui nou raport, acesta mosteneste proprietatile Filter si Order By din tabel sau interogare. Daca tabelul/interogarea este deschis(a) in momentul crearii formularului, filtrul este aplicat automat numai prima data cand este deschis formularul; in celelalte cazuri, filtrul este aplicat numai cu pictograma Apply Filter. Proprietatea Order By pentru un formular sau raport este aplicata automat la deschiderea obiectului respectiv.

Prezentarea aplicatiei

Modelul isi propune gestionarea activitatilor dintr-un spital.

Un pacient se poate adresa unui spital cu scopul de a efectua unele analize medicale, care implica urmarea unui tratament dupa ce medicul stabileste diagnosticul final pentru pacientul respectiv. Tratamentul unui pacient poate cuprinde unul sau mai multe medicamente, iar un pacient este tratat de unul sau mai multi medici.

Un medic trateaza unul sau mai multi pacienti.

Un spital cuprinde mai multe sectii in functie de specificul acestuia. O sectie poate fi deservita de unul sau mai multe laboratoare, iar un medic trebuie sa apartina de o singura sectie.

Fiecare labotator executa una sau mai multe analize in functie de specificul fiecaruia.

Aceasta aplicatie are urmatoarele facilitati:

evidenta fiselor pacientilor;

urmarirea intregului circuit al pacientilor intr-un spital, de la momentul in care a fost intocmita fisa acestora si pana la parasirea spitalului, cu monitorizarea continua a pozitiei acestora in spital (salon, pat, etc.);

inregistrarea si monitorizarea diagnosticelor pacientilor, cererii si efectuarii analizelor de laborator, radiologie si explorari functionale.

Meniul acestei aplicatii este organizat astfel incat sa permita utilizatorilor acestei baze de date urmatoarele:

gestiunea pacientilor: internarea unui pacient in spital, externarea unui pacient din spital, vizitarea unui pacient care este internat in spital, afisarea datelor unui pacient internat in spital, modificarea datelor unui pacient si listarea pacientilor internati in spital;

gestiunea medicilor: angajarea unui nou medic in unitatea sanitara, demisionarea sau concedierea unui medic, afisarea pacientilor aflati in ingrijirea unui anumit medic, afisarea datelor despre un anumit medic si lista medicilor din spitalul respectiv;

gestiunea sectiilor: situatia unei anumite sectii din spital si listarea sectiilor din spital;

gestiunea laboratoarelor: situatia unui anumit laborator si listarea laboratoarelor din spital;

gestiunea analizelor: situatia analizelor efectuate in fiecare laborator.

gestiunea medicatiei: situatia medicamentelor pentru fiecare pacient, lista medicamentelor disponibile,modificarea datelor despre un anumit medicament

Diagrama entitate-relatie

M(1) M(1)

M(1)

M(1)

apartine_de

cantitate necesita

1 unitmas

M(1)

M(1)

deserveste

M(1)

1

executa

M(1)

Entitatea independenta MEDICI prezinta personalul medical care stabileste diagnosticul pacientului si se ocupa de tratarea acestuia pe timpul spitalizarii.

Cheia primara este CodMedic care identifica in mod unic fiecare medic din spital.

Atribute:

Nume- numele medicului.

Prenume- prenumele medicului.

Adresa- adresa medicului respectiv.

Specializare- specializarea pentru fiecare medic.

Grad- gradul de specializare al medicului.

Salariu- salariul obtinut de fiecare medic.

Entitatea independenta SECTII contine informatii cu privire la sectiile in care bolnavii primesc ingrijire medicala din partea personalului medical.

Cheia primara este CodSec care identifica in mod unic fiecare sectie.

Atribute:

Nume- numele sectiei respective.

Etaj- etajul la care se afla fiecare sectie.

NrPaturi- numarul total de paturi pe care le detine sectia respectiva.

Entitatea independenta LABORATOR descrie laboratoarele unde sunt facute analizele pacientilor de pe fiecare sectie.

Cheia primara este CodLab care idetifica in mod unic fiecare laborator.

Atribute:

Nume- numele laboratorului.

Etaj- etajul unde se afla laboratorul respectiv.

Entitatea dependenta ANALIZE descrie analizele care trebuiesc facute in fiecare laborator.

Cheia primara este formata din CodLab care identifica in mod unic fiecare laborator si CodAnaliza care identifica in mod unic fiecare analiza efectuata.

Atribute:

Nume- numele analizei.

ProdRec- produsul care trebuie recoltat pentru fiecare analiza.

Entitatea independenta PACIENTI contine informatii cu privire la pacienti internati in spital.

Cheia pimara este CodPac care identifica in mod unic fiecare pacient internat in spital.

Atribute:

Nume- numele pacientului.

Prenume- prenumele pacientului.

Adresa- adresa pacientului.

Sex –sexul pacientului.

DataNas- data nasterii pacientului.

DataInt- data la care pacientul este internat.

DataExt- data la care pacientul este externat.

NrSalon- salonul in care este internat pacientul.

NrPat- numarul patului din salonul respectiv.

Entitatea independenta MEDICAMENTE descrie tratamentul care trebuie urmat de fiecare pacient.

Cheie primara este CodMed care identificat in mod unic fiecare medicamente.

Atribute:

Denumire- numele medicamentului.

Categorie- categoria din care face parte medicamentul.

ModAdm- modul in care este administrat medicamentul.

Indicatii- indicatile terapeutice pentru fiecare medicament.

Relatia apartin_de leaga entitatile MEDICI-SECTII si descrie sectiile de care apartine personalul medical din unitatea sanitara.

Cardinalitatea este M(1)-1(1).

Relatia deserveste leaga entitatile SECTII-LABORATOR si descrie toate sectiile pe care le deserveste fiecare laborator.

Cardinalitate este M(1)-M(1).

Relatia executa leaga entitatile LABORATOR-ANALIZE si descrie analizele executate in laboratoare.

Cardinalitate este 1(1)-M(1).

Relatia trateaza leaga entitatile MEDICI-PACIENTI si descrie medicii care trateaza fiecare pacient.

Cardinalitate este M(1)-M(1).

Relatia necesita leaga entitatile PACIENTI-MEDICAMENTE si descrie tratamentul de care necesita fiecare pacient.

Cardinalitate este M(1)-M(1).

Cheia primara este formata din CodPac si CodMed.

Atribute:

Cantitate- cantitatea din fiecare medicament care trebuie luata de pacient, exprimata in mg;

UniMas- unitatea de masura pentru medicamente.

Schemele relationale

MEDICI (CodMedic#, nume, prenume, adresa, specializare, grad, salariu, CodSec)

SECTII (CodSec#, nume, etaj, nrpaturi)

DESERVESTE (CodSec#, CodLab#)

LABORATOR (CodLab#, nume, etaj)

ANALIZE (CodLab#, CodAnaliza#, nume, prodrec)

TRATEAZA(CodMedic#, CodPac#, diagnostic, tip_diagnostic)

PACIENTI (CodPac#, nume, prenume, adresa, datanas, sex, dataint, dataext, nrsalon, nrpat)

NECESITA (CodPac#, CodMed#, cantitate)

MEDICAMENTE (CodMed#, denumire, categorie, modadm, indicatii)

Diagrama conceptuala

X X

X

apartine_de X

X

X

X

executa

X

Bibliografie

Allen Browne, Alison Balter

Bazele Access

Editura Teora, Bucuresti, 2000

Gheorghe Popa, Florentina Berbec

Baze de date Access

Editura Cison, Bucuresti, 1997

Eugen Zaharescu

Sisteme informatice de gestiune economica: Microsoft Access 2000

Editura Teora, Bucuresti, 2000

Similar Posts