Sunteți pe pagina 1din 427

5

CUPRINS

Obiectivele cursului 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Ce sunt datele? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Concepte de baz| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Definiii: Ce este o baz| de date? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Tipuri de relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Regulile relaionale ale lui Codd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Scopul unei baze de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 De ce Microsoft Access? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ct "poate duce" Access-ul? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Evoluia Access-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compatibilitatea ntre versiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O introducere n Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducere n instrumentele Accessului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 28 28 29

Lansarea n execuie a Microsoft Access-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Fereastra principal| a Access-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

http://www.east.utcluj.ro/mb/mep/antal

Cuprins
Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

Obiectivele cursului 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Deschiderea unei baze de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Fereastra bazei de date Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 nchiderea unei baze de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Deschiderea unui tabel (Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Explorarea tabelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Vizualizarea tabelelor n mod proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Introducere n interog|ri (Queries) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Introducere n formulare (Forms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Tipuri de formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

0264-401667

sau suna la:

CUPRINS

Introducerea n rapoarte (Reports) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Obiectivele cursului 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Proiectarea bazei de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ce ntreb|ri ne punem? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clarificarea a ceea ce dorim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reguli generale de proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Determinarea relaiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Teoria proiect|rii bazelor de date relaionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabele, unicitate, chei i domenii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relaii unu la unu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relaii unu la muli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relaii muli la muli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Normalizarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prima Form| Normal| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Doua Form| Normal| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Treia Form| Normal| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subfoi de date (subdatasheets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reguli de integritate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reguli de integritate generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reguli de integritate specifice bazei de date . . . . . . . . . . . . . . . . . . . . . . . . . 46 46 46 46 48 48 48 49 49 50 50 50 50 51 51 52 53 54 54

Crearea unui tabel f|r| Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definirea tipurilor de cmpuri ale unui tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Propriet|ile cmpurilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proprietatea Masc| de Intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .................................................................. Stabilirea cheii primare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Salvarea unui Tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Ad|ugarea de nregistr|ri unui Tabel vizualizat n modul foaie de date . . . . . . . . . . . . . . . . 65 Utilizarea formatelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatarea pentru tipurile Text i Memo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatarea pentru tipurile Number i Currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatarea pentru tipurile Date/Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

0264-401667
59 61 62 64 64 64 66 66 66 67

NU COPIA !.

sau suna la:

Crearea unei baze de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Ad|ugarea de cmpuri folosind Generatorul de Tabele (Table Wizard) . . . . . . . . . . 56

http://www.east.utcluj.ro/mb/mep/antal

Deschiderea unui formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Vizualizarea n modul proiectare (Design View) . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 nchiderea unui formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

CUPRINS

Formatarea n cazul tipului Yes/No . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Utilizarea m|tilor de intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Validarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Obiectivele cursului 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Editarea nregistr|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectarea nregistr|rilor cu mouse-ul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectarea nregistr|rilor folosind tastatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectarea cmpurilor cu mouse-ul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectarea coloanelor cu mouse-ul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectarea cmpurilor i coloanelor de la tastatur| . . . . . . . . . . . . . . . . . . . . . . . . . . tergerea nregistr|rilor i a cmpurilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 73 73 73 73 74

Vizualizarea i setarea valorilor implicite pentru foile de date . . . . . . . . . . . . . . . . . . . . . . . 74 Redefinirea ordinii de afiare a coloanelor unui tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Reordonarea cmpurilor unui tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Modificarea l|imii (width) unei coloane i n|limii (height) unui rnd . . . . . . . . . . . . . . . 76 Ascunderea (hiding) i vizualizarea (un-hiding) coloanelor . . . . . . . . . . . . . . . . . . . . . . . . . 77 nghearea (freeze) coloanelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Formatarea celulelor din foaia de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

Manipularea obiectelor tabel din fereastra bazei de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Tip|rirea (Printing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Obiectivele cursului 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 C|utarea i nlocuirea informaiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 C|utarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Caractere generice (Wildcards) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 G|sirea unei valori specifice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 nlocuirea unor valori din cmpuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

sau suna la:

Copierea (copy), mutarea (move) cmpurilor i nregistr|rilor . . . . . . . . . . . . . . . . . . . . . . . 79

0264-401667

CUPRINS

Sortarea nregistr|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Ce este un filtru? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Filtrarea nregistr|rilor prin selecie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Filtrarea nregistr|rilor prin formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Scurt istoric al bazelor de date relaionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Deschiderea ferestrei cu relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Ad|ugarea tabelelor n fereastra relaiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Definirea relaiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Integritate Referenial| (Referential Integrity) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Obiectivele cursului 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Ce sunt interog|rile (Queries)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Tipuri de interog|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Posibilit|ile interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Ce sunt mulimile dinamice (dynaset)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Crearea unei interog|ri folosind Generatorul de Interog|ri Simple (Simple Query Wizard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Crearea unei interog|ri f|r| Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grila interog|rii (Query Grid) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatori logici pentru criterii de selecie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Folosirea textului n criteriul de selecie - caractere generice (Wildcards) . . . . . . . Criterii multiple i alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cmpuri calculate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interog|ri cu totale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Categoria Group By . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Categoria Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Categoria Total Field Record Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Categoria Aggregate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Interog|ri de actualizare (Update Queries) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

0264-401667
101 102 104 105 106 107 109 109 109 109 109

Deschiderea unei interog|ri (Query) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Pt. cumparare viziteaza:

Editarea relaiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Definirea relaiilor n Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

sau suna la:

CUPRINS

Interogarea de creare a unui tabel (Make-Table Query) . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Interog|ri cu mai multe tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipuri de asocieri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asocieri interne (inner joins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asocierea extern| la dreapta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asocierea extern| la stnga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Autoasocieri (self-joins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asocierea de tip produs cartezian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 118 119 119 120 120 120

Interog|ri cu parametri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Interog|ri ncruciate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Propriet|ile interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Interogri pentru ntreinerea bazelor de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Find Duplicate Query Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Find Unmatched Query Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Opiuni pentru proiectarea interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Obiectivele cursului 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

http://www.east.utcluj.ro/mb/mep/antal

Interog|ri de ad|ugare (Append Queries) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Aspectul vizual (Form Layout) al formularului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Crearea unui formular cu AutoForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Crearea unui formular cu Generatorul de Formulare (From Wizard) . . . . . . . . . . . . . . . . . 133 Moduri de vizualizare a formularelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Crearea unui formular f|r| Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Vizualizarea ferestrei n mod proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fereastra modului proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Afiarea sau ascunderea liniarului (Rulers) . . . . . . . . . . . . . . . . . . . . . . . . . Afiarea listei de propriet|i (Properties) a unui obiect de pe suprafaa formularului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 139 140 140

sau suna la:

Formulare (Forms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

0264-401667

NU COPIA !.

10

CUPRINS

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Tipuri de controale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Cutia cu instrumente (Toolbox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Propriet|ile de legate de afiarea controalelor Etichet| i Cutie Text . . . . . . . . . . . . . . . . 148

Tehnici de editare a datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Lista proprietilor unui formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Obiectivele cursului 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Crearea unei cutii combinate (Combo Box) folosind cutia cu instrumente (Toolbox) . . . . 162 Crearea unui formular cu o cutie combinat| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Modificarea propriet|ilor unui formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Crearea unui cmp calculat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Crearea unui formular cu subformular (Subform) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Implementarea regulilor de integritate specifice bazei de date sau controlul datelor stocate n

0264-401667

Navigarea ntre cmpurile formularului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

Pt. cumparare viziteaza:

Manipularea proiectului de formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rolul controalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editarea controalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a fixa poziia controalelor la punctele grilei . . . . . . . . . . . . . . . . . . . . . . . . . Pentru mutarea controalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru mutarea independent| a cutiei text sau etichet| . . . . . . . . . . . . . . . . . . . . . . Pentru a redimensiona un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a terge un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a multiplica un grup de controale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a muta sau copia controale folosind meniul Edit . . . . . . . . . . . . . . . . . . . . . Pentru selectarea a dou| controale adiacente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a selecta un grup de controale neadiacente . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru alinierea unui grup de controale ntre ele . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a modifica spaierea dintre controale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a salva un formular cu toate modific|rile f|cute asupra controalelor lui . . . Pentru a modifica dimensiunea unei seciuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a modifica l|imea unui formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pentru a modifica l|imea formularului i dimensiunea unei seciuni simultan . . .

http://www.east.utcluj.ro/mb/mep/antal

Afiarea listei cmpurilor (Field List) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Afiarea cutiei cu instrumente (Toolbox) . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Afiarea codului din spatele formularului . . . . . . . . . . . . . . . . . . . . . . . . . . 141 141 142 142 142 142 142 143 143 143 143 143 143 144 144 144 144 144 144

NU COPIA !.

sau suna la:

11

CUPRINS

baz| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Modificarea ordinii Tab-urilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Butoane de comand| (Command Buttons) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Ad|ugarea unui buton de comand| la un formular . . . . . . . . . . . . . . . . . . . . . . . . . 179 ntreruperi de pagin| (Page Break) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Obiectivele cursului 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Generalit|i despre Rapoarte (Reports) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Tip|rirea (Printing) rapoartelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Crearea unui raport folosind AutoReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Crearea unui Raport folosind Generatorul de Rapoarte (Report Wizard) . . . . . . . . . . . . . . 194 Generatorul de etichete (Label Wizard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Generatorul de Grafice (Chart Wizard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Rapoarte f|r| Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Crearea de controale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Setarea propriet|ilor raportului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Aplicaia 1 cu rapoarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Interog|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Rapoarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Aplicaia 2 cu rapoarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Obiectivele cursului 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Limbajul de programare Visual Basic for Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

0264-401667

Nivele de grupare (Grouping Levels) n rapoarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

Pt. cumparare viziteaza:

Deschiderea i vizualizarea unui raport existent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Aplicaie cu formulare i controale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Tabele i relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

sau suna la:

12

CUPRINS

Proceduri de tip Sub i Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedura de tip Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedura de tip Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proceduri private (Private) i publice (Public) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

Programarea orientat| pe evenimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Proceduri de evenimente (Event Procedures) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Proceduri definite de utilizator (General Procedures) . . . . . . . . . . . . . . . . . . . . . . . 232 233 233 234 235

Variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Declararea variabilelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Scop i durat| de existen| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Tipuri de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipul Variant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipuri numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipul ir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipul dat|/or| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipul Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipul parametru de procedur| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabloul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Declararea tablourilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tablouri cu mai multe dimensiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alocarea dinamic| a spaiului pentru stocarea tablourilor . . . . . . . . . . . . . . . . . . . . 237 237 237 238 239 239 239 239 240 240 240

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Constante simbolice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatori aritmetici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatori de comparaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatori de concatenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatori logici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlul execuiei programului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea Let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciuni pentru decizie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . If...Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . If...Then...Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select...Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciuni de ciclare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ciclul Do...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ciclul For...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ciclul For Each...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

0264-401667
241 242 242 242 243 244 244 244 245 245 245 246 246 247 247

Constante intrinseci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

13

CUPRINS

Ciclul While...Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Tipuri de date definite de utilizator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei modul clas| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definirea membrilor dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementarea propriet|ilor clasei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de lucru cu Property Get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de lucru cu Property Let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea metodelor clasei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definirea evenimentelor clasei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Evenimentul Initialize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Evenimentul Terminate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilizarea clasei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Colecii VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei colecii VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Propriet|ile i metodele obiectului colecie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ad|ugarea unui articol la colecie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Referirea unui obiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parcurgerea articolelor coleciei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tergerea obiectelor individuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tergerea tuturor obiectelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eliberarea spaului folosit pentru stocarea variabilei obiect . . . . . . . . . . . . . . . . . . Crearea unei clase pentru manipularea coleciilor . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de lucru cu Property Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaii VBA cu funcii i clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaii cu instruciunea If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaii cu instruciunea For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Realizarea unei clase pentru lucrul cu numere complexe . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

248 249 250 250 251 252 253 253 254 254 255 255 255 255 256 256 257 257 257 257 258 260 262 263 265 266

Pt. cumparare viziteaza:

Obiectivele cursului 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Ce este programarea orientat| pe obiecte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Obiecte i Colecii n VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Variabilele de tipul obiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Obiecte Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Obiecte pentru accesul la date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Determinarea tipului unui obiect de tipul Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

Unele propriet|i ale obiectelor folosite mai des . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Propriet|ile obiectului Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

0264-401667

NU COPIA !.

sau suna la:

14

CUPRINS

Propriet|i ale formularelor i rapoartelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Colecii implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Propriet|i ale obiectelor i coleciilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Obiectele Container i Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Evenimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Tipuri de evenimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Evenimente specifice formularelor i controalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Evenimente de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Evenimente implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Erori i proceduri de tratare a erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrumente pentru depanare (Debugging tools) . . . . . . . . . . . . . . . . . . . . . . . . . . . Execuia pas cu pas a procedurilor (Stepping) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fereastra pentru Depanare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Depanarea procedurilor de evenimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

290 290 292 292 293

Aplicaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Obiectivele cursului 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Tratarea erorilor n VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Folosirea evenimentului Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea On Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea On Error GoTo etichet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea On Error Resume Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea On Error GoTo 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea Resume Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiectul Err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ierarhii ale codului pentru tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Access SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cum se folosete Access SQL-ul? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sintaxa comenzilor SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clauza SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clauza FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clauza WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clauza ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asocierea tabelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 296 298 298 300 300 301 301 301 302 302 303 304 304 305 306 306 307

0264-401667

NU COPIA !.

sau suna la:

15

CUPRINS

Obiectivele cursului 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Lucrul cu mulimi de nregistr|ri (sets of records) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Obiectul mulime de nregistr|ri (recordset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei mulimi de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Consistena i inconsistena actualiz|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moduri de creare a mulimilore de nregistrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parcurgerea unei mulimi de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G|sirea num|rului de nregistr|ri din mulime . . . . . . . . . . . . . . . . . . . . . . Testarea limitelor mulimii de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . C|utarea unor nregistr|ri specifice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C|utarea n tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilizarea marcajelor (bookmark) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sortarea nregistr|rilor dintr-o mulime de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . Sortarea prin folosirea propriet|ii Index . . . . . . . . . . . . . . . . . . . . . . . . . . . Sortarea prin folosirea clauzei SQL ORDER BY . . . . . . . . . . . . . . . . . . . . Sortare folosind proprietatea Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtrarea mulimilor de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtrarea folosind clauza SQL WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtrarea prin proprietatea Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editarea datelor unei mulimi de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 326 328 328 330 331 331 332 332 333 334 335 335 336 337 337 338 338 339

Pt. cumparare viziteaza:

Definiia datelor cu SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea CREATE TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clauza CONSTRAINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea CREATE INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea DROP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interog|ri SQL Pass-Through . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Asociere multipl| (Multiple Joins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asociere non-equi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Predicatele ALL, DISTINCTROW i DISTINCT . . . . . . . . . . . . . . . . . . . . . . . . . . Agregarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interog|ri de agregare f|r| clauza GROUP BY . . . . . . . . . . . . . . . . . . . . . . Interog|ri de agregare cu clauza GROUP BY . . . . . . . . . . . . . . . . . . . . . . . Interog|ri de reuniune (UNION Queries) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compatibilitatea interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subinterog|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL cu parametri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Actualizarea datelor cu SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea INSERT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruciunea SELECT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

308 308 308 309 310 310 312 313 313 315 316 316 317 317 318 319 319 320 321 321 322 322

0264-401667

NU COPIA !.

sau suna la:

16

CUPRINS

Obiectivele cursului 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Ce aduce nou Access 2000? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VBA n Access 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulare i rapoarte n Access 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accesul la date n Access 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Facilit|ile internet i intranet ale lui Access 2000 . . . . . . . . . . . . . . . . . . . . . . . . . ADO sau DAO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specificarea referinelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Noua ierarhie de obiecte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipularea datelor prin ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definiia datelor i securitatea cu ADOX . . . . . . . . . . . . . . . . . . . . . . . . . . Replicarea cu JRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Definiia datelor cu DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea obiectelor bazelor de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unui tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabelul metodelor Create... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unui Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ataarea tabelelor din bazele de date externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ataarea unui tabel extern unei baze de date Access . . . . . . . . . . . . . . . . . . Reataarea tabelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

Modificarea unei nregistr|ri existente . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ad|ugarea unei nregistr|ri noi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tergerea unor nregistr|ri dintr-o mulime de nregistr|ri . . . . . . . . . . . . . Modificarea unui grup de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modificarea datelor prin tranzacii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

339 340 341 342 344 345 345 345 346 348 351 353 354 355

Pt. cumparare viziteaza:

359 359 359 359 360 360 361 361 362 363 363

Utilizarea variabilelor obiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Obiectul Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Enumerarea obiectelor unei colecii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Lucrul cu mulimile de nregistr|ri n Access 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Deschiderea unei mulimi de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea obiectelor mulime de nregistrare . . . . . . . . . . . . . . . . . . . . . . . . . Cursorul client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Navigarea printre nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C|utarea nregistr|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editarea datelor unei mulimi de nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modificarea unei nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ad|ugarea unei nregistr|ri noi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 371 371 372 373 376 376 377

0264-401667

NU COPIA !.

sau suna la:

17

CUPRINS

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Crearea unei aplicaii cu formulare, subformulare i cod n Access 2000 . . . . . . . . . . . . . . Sincronizarea a dou| subformulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sincronizarea a trei formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ad|ugarea, prin cod, de date n dou| tabele aflate n relaie one-to-many . . . . . . . Crearea interog|rilor aplicaiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea rapoartelor aplicaiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ce este tehnologia ActiveX Automation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Automation Server i Automation Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de lucru cu obiectele Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea i definirea unei referine la o alt| aplicaie. . . . . . . . . . . . . . . . . . . Modele de obiecte i navigatorul de obiecte . . . . . . . . . . . . . . . . . . . . . . . . Creare variabilelor de tipul obiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Legare n avans i legare trzie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciile CreateObject i GetObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Argumentele Clasa pentru aplicaiile din Microsoft Office . . . . . . . . . . . . Automation cu Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserarea datelor ntr-un document Word . . . . . . . . . . . . . . . . . . . . . . . . . . Inserarea datelor ntr-un document Word folosind bookmark-uri . . . . . . . . Automation cu Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Pt. cumparare viziteaza:

Definirea i nc|rcarea schemei bazelor de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei baze de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nc|rcarea informaiilor legate de schema bazei de date . . . . . . . . . . . . . . . . . . . . . Crearea tabelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unui tabel local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unui tabel legat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modific|ri aduse tabelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea i modificarea interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei interog|ri stocate n baza de date folosind colecia Views . . . Crearea unei interog|ri stocate n baza de date folosind colecia Procedures ..................................................... Modificarea instruciunii SQL a unei interog|ri . . . . . . . . . . . . . . . . . . . . . Crearea unui index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei relaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.east.utcluj.ro/mb/mep/antal

tergerea unei nregistr|ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Actualiz|ri n grup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Executarea interog|rilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Executarea unei interog|ri f|r| parametri stocate n baza de date . . . . . . . . Executarea unei interog|ri cu parametri stocate n baza de date . . . . . . . . .

378 379 380 380 381 385 385 385 386 387 389 390 392 392 392 393 393 395 396 397 402 406 414 415 420 420 420 420 422 424 424 426 430 430 431 435 440

Pagini pentru accesul la date (Data Access Pages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei PAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crearea unei PAD simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Folosirea generatoarelor pentru crearea de PAD . . . . . . . . . . . . . . . . . . . . . Create data access page in Design view . . . . . . . . . . . . . . . . . . . . . .

0264-401667
446 447 447 447 447

NU COPIA !.

sau suna la:

18

CUPRINS

ANEXA 1 - Lista principalelor instruciuni VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 ANEXA 2 - Lista principalelor funcii VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii de conversie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii pentru dat| i timp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii pentru tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii pentru manipularea fiierelor i directorilor . . . . . . . . . . . . . . . . . . . . . . . . Funcii financiare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii matematice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcii pentru prelucrarea irurilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alte funcii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 456 456 457 457 458 459 460 462

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

Pt. cumparare viziteaza:

Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

http://www.east.utcluj.ro/mb/mep/antal

Create data access page by using wizard . . . . . . . . . . . . . . . . . . . . . 448 Edit Web page that already exists . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

0264-401667

NU COPIA !.

sau suna la:

19

Introducere n Microsoft Access - cursul 1

Obiectivele cursului 1
Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

! ! ! ! ! !

concepte legate de: baze de date, tabele i relaii; care sunt regulile relaionale ale lui Codd;

termenul baz| de date relaional| (Relational Database); avantajele utiliz|rii bazelor de date;

elementele de baz| ale Access-ului: Tabele (Tables), Formulare (Forms), cum se lanseaz| n execuie Access-ul i obiectele care exist| pe fereastra

Rapoarte (Reports), Macro (Macros) i Module (Modules); principal| a aplicaiei Access.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

20

Introducere n Microsoft Access - cursul 1

Introducere

Datele sunt entit|i individuale formate din texte, numere, imagini sau sunete care pot fi stocate i prelucrate pe un calculator. Acestea se obin prin observarea i m|surarea lumii reale. Prin ele nsele, datele, nu au o semnificaie, aceasta rezultnd n urma interpret|rii (sau prelucr|rii) lor. Informaia este semnificaia pe care o primesc datele ca urmare a modului lor de interpretare. Pentru a nelege diferena, Antal, 33, 1250000 semnific| prea puin ca dat|. Dar dac| se interpreteaz| ca numele unui profesor, Antal, care are vrsta de 33 de ani i salariul lunar de 1.250.000 de lei, datele primesc semnificaie i pot fi numite informaii. Aceast| interpretare nu este unic|, putnd exista de multe ori alternative. Uneori buc|ica de informaie este parte a unui ablon informaional mai complex.

Definiii:

Concepte de baz|

Fiier (File): o colecie de nregistr|ri grupate pe baza subiectului comun, de exemplu: lista clienilor (stocata 7 n fiierul sau n baza de date Clienti); lista produselor (stocata 7 n fis - ierul sau n baza de date Produse); lista facturilor emise (stocata 7 n fiierul sau baza de date Facturi). nregistrare (Record): grup de informaii elementare despre un singur articol sau entitate, de exemplu: Clientul - Horea; Produsul - plac| de baz|; Factura - NR 0011. Cmp (Field): dat| individual| elementar| stocat| ntr-o nregistrare, de exemplu: n fiierul Clienti - Nume, Adresa, Telefon; n fiierul Produse - Cod produs, Descriere, Pret; n fiierul Facturi - Cod produs, Nume vanzator, Data, Ora.

Pt. cumparare viziteaza:

Este util ca s| privim datele ca materie prim| pentru o reet| care, realizat| din proporii diferite, conduce la rezultate diferite.

http://www.east.utcluj.ro/mb/mep/antal

Ce sunt datele?

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Cmpurile se definesc, precis, n termenii tipului datelor pe care pot s| le conin| s -i a dimensiunii maxime ce se poate stoca n acel cmp.

O baz| de date despre profesori (care este stocata 7 pe disc n fis - ierul Profi) este folosit| pentru a exemplifica noiunile deja prezentate. nregistr|rile corespund liniilor din tabel, iar cmpurile coloanelor. De exemplu, primele dou| nregistr|ri sunt liniile care ncep cu: 1. ACHIMAS 2. ANCAU

0264-401667

NU COPIA !.

sau suna la:

21

Introducere n Microsoft Access - cursul 1

O definit -ie simpla 7 pentru o baz| de date este: O colect -ie structurata 7 de date interconectate relat -ional prin unul sau mai multe subiecte.

Ce este o baz| de date?

http://www.east.utcluj.ro/mb/mep/antal

Fiecare nregistrare stocheaz| categorii de informaii elementare n urm|toarele cmpuri: NUME DIRECTOR; PRENUME DIRECTOR; AN NASTERE; TITLU DIDACTIC.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

Un sistem de gestiune a bazelor de date (SGBD) este un program care permite utilizatorului definirea, crearea, ntret -inerea si controlul accesului la o baza 7 de date, astfel: ! utilizatorii definesc baza de date cu ajutorul unui limbaj pentru definirea datelor (Data Definition Language); ! utilizatorii pot insera, actualiza, s - terge si extrage date din baza 7 folosind limbajul de manipulare a datelor (Data Management Language) deseori numit si limbaj de interogare (query language); ! asigura 7 servicii pentru controlul accesului la baza de date prin: < sistemul de securitate n vederea bloca 7 rii accesului persoanelor neautorizate la date; < sistemul de integritate a datelor pentru pa 7 strarea consistent -ei datelor stocate; < sistemul de accesul concurent la date, etc.

sau suna la:

-ie mai tehnica 7 ar fi: baza de date reprezinta 7 una sau mai multe mult -imi de date O definit persistente structurate, asociate de obicei cu un software pentru editarea si select -ia datelor.

0264-401667

22

Introducere n Microsoft Access - cursul 1

Un sistem de gestiune a bazelor de date relat -ionale (Relational Database Management System - RDBMS) este o un sistem de gestiune a bazelor de date care folosete modelul relaional dezvoltat de E. F. Codd n 1970.

Un model de date este un formalism matematic cu o notaii pentru descrierea structurilor de date - organizarea datelor - i a mult -imii de operat -ii folosite pentru manipularea datelor.

n modelul de date relaional, toate datele sunt organizate n tabele (termenul tehnic este cel de relat -ie), care sunt formate din rnduri (termenul tehnic este de tupla 7 ) i coloane (uneori numite i cmpuri sau atribute). Tabelul este o colecie de rnduri, iar fiecare rnd al unui tabel conine aceleai cmpuri. Fiecare tabel are un nume, iar n interiorul tabelului, fiecare coloan| are un nume. Nu se menine o ordine prestabilit| ntre rndurile unui tabel, ele pot fi extrase n orice ordine determinat| de valorile din cmpuri. Unele cmpuri pot fi desemnate drept chei, ceea ce nseamn| c| toate c|ut|rile ale unor valori specifice ale acelui cmp vor folosi indexarea pentru creterea vitezei. Rndurile unor tabele distincte pot fi legate dac| au

0264-401667

NU COPIA !.

sau suna la:

Pe baza celor spuse, n figura de mai sus se prezinta 7 , departamentele pentru vnza 7 rile de - i de contacte. Fiecare departament are propria ei aplicat -ie pentru accesarea bazei de produse s 7 rui departament, aplicat -ia de gestionare date prin intermediul SGBD. La nivelul fieca realizeaza 7 introducerea datelor, ntret -inerea datelor si generarea rapoartelor prin intermediul SGBD. Deseori, utilizatorii nu sunt interesat -i n a putea accesa ntreaga baza 7 de date n acest 7 mecanism de vedere (view mechanism), care permite ca sens, SGBD are o facilitate numita fiecare utilizator sa 7 aiba 7 o vedere proprie asupra bazei de date (o vedere este, n esent -a 7 , o parte a bazei de date).

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

23

Introducere n Microsoft Access - cursul 1

Pt. cumparare viziteaza:

Bazele de date comune se prezint| sub dou| forme: 1. baza de date simpla 7 (flat database) - se folosete pentru stocarea unor liste simple ce pot conine date redundante, asemenea unor pagini dintr-o agend| n care unele informaii se repet|; 2. baza de date relat -ionala 7 (relational database) - se folosete pentru stocarea datelor n fiiere cu referine ncruciate pentru eliminarea redundanei. Din acest motiv g|sirea, analiza, gestionarea i protecia datelor este mai simpl| pentru c| acestea apar o singur| dat| n baz|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

n viaa de toate zilele utiliz|m frecvent baze de date, f|r| a fi contieni ns|. Iat| cteva exemple: cartea de telefoane; orarul colii; agenda.

http://www.east.utcluj.ro/mb/mep/antal

aceeai valoare ntr-un cmp particular din fiecare tabel (se mai zice c| tabelele au o asociere). O caracteristic| a modelului relaional este c| toat| informaia din baza de date este reprezentat| prin valorile stocate n tabele. Datele pot fi manipulate prin algebra relaional|. Limbajul SQL (care va fi tratat ntr-un capitol urm|tor) este implementarea unei astfel de algebre. SGBD-ul trebuie s| urm|reasc| datele importante pentru gestionarea bazei de date. De exemplu, va cunoate numele tabelelor i numele fiec|rui cmp dintr-un tabel. Acest tip de informaie poart| numele de meta-date (date despre date). Asemenea oric|ror alte date i acestea se vor stoca n tabele. Tabelele care descriu structura bazei de date poart| denumirea de schema bazei de date. SGBDR-urile mari, au scheme multiple, acestea fiind grupate n cataloage.

S| presupunem c| ntr-o firm| se ine pe calculator evidena angajailor, clienilor i a produselor sau a serviciilor pe care acesta le comercializeaz|. Pentru a obine un produs sau un serviciu clientul trebuie s| fac| o comand|. Se contureaz| deja cinci subiecte distincte care corespund la cinci fiiere sau tabele: Angajat (tabelul Employess); Client (tabelul Customers); Produs (tabelul Products); Comand| (tabelul Orders); Detalii comand| (tabelul Order Details).

0264-401667

NU COPIA !.

sau suna la:

24

Introducere n Microsoft Access - cursul 1

Este probabil s| fie comenzi cu mai multe produse motiv pentru care avem nevoie de un tabel legat pentru Detalii comand|.

n relaia unu-la-muli dintre tabelele Clieni-Comenzi (Customers-Orders) cmpul de leg|tur| ntre tabele este CustomerID. n tabelul Clieni este i cheie primar|. Cheia primar| identific| unic fiecare nregistrare din tabel. n unele cazuri aceasta se poate realiza prin folosirea unui singur cmp (de exemplu CustomerID) alteori se folosete o combinaie de orice num|r de cmpuri (de exemplu OrderID + NrLinie poate identifica unic o nregistrare n tabelul Order Details). Pe baza datelor din tabele trebuie s| se g|seasc| o combinaie de cmpuri care s| asigure identificarea unic| a nregistr|rilor din tabel. n tabelul Orders cmpul CustomerID se numete cheie str|in| i asigur| leg|tura cu tabelul Customer n care este cheie primar|.

Pt. cumparare viziteaza:

Cnd un client emite o comand|, ea poate fi pentru unul sau mai multe produse, adic| pot fi mai multe produse pe o singur| comand|. O astfel de relaie se numete unu-la-muli (oneto-many). O relaie mai rar| este cea unu-la-unu (one-to-one). Un alt tip de relaie este muli-la-muli (many-to-many) care n Access nu este permis|. Ea se poate transforma n relaii unu-la-muli prin folosirea unui tabel intermediar de leg|tur|. n figura anterioar| 1 indic| partea de unu din relaie iar simbolul infinit 4 reprezint| partea de muli.

Tipuri de relaii

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Tabelele de mai sus se numesc legate ntre ele prin relaii (relationship): un angajat vinde mai multor clieni unei nregistr|ri din Angajai i corespund mai multe nregistr|ri din Clieni, conexiunea ntre acestea facndu-se prin Comand|; un client comand| unul sau mai multe produse unei nregistr|ri din Clieni i corespund mai multe nregistr|ri din Produse, conexiunea ntre acestea f|cndu-se prin Comenzi i Detalii comand|; ordinul de comand| conine un num|r de detalii specifice comenzii n cmpurile CustomerID, EmployeeID etc. i un cmp de conexiune, OrderID, cu Detalii comand| unde sunt detaliile fiec|rui produs vndut.

Codd a pus la punct un set de reguli care aveau ca scop asigurarea independenei ntre aplicaia de interfa| cu utilizatorul i modific|rile aduse modelului de date. Modelul relaional folosete un element comun, ca de exemplu CustomerID, pentru a lega rnduri ntre care exist| o relaie dar se afl| n tabele diferite. Exist| 13 reguli pe care un produs program trebuie s| le respecte pentru ca s| fie numit Sistem de Gestiune al Bazelor de Date Relaionale (SGBDR). Microsoft Access-ul se conformeaz| la toate cele 13 reguli enumerate de Codd. Tabelul care urmeaz| prezint| succint aceste reguli: Nr. Nume regula 7 Descriere Implementare Access

sau suna la:

Regulile relaionale ale lui Codd

0264-401667

NU COPIA !.

25

Introducere n Microsoft Access - cursul 1

Principul de baz|

Stocarea informaiei

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Toate datele unui SGBD relaional se reprezint| explicit ca valori n tabele. Datele nu pot fi stocate prin alte metode.

http://www.east.utcluj.ro/mb/mep/antal

Orice SGBD Relaional (SGBDR) trebuie s| gestioneze ntreaga baz| de date numai prin posibilit|ile modelului relaional. Dac| un SGBD este dependent de un instrument de manipulare al datelor la nivel de ntregistrare, nu este total relaional.

Access-ul a fost primul SGBD care rula sub Windows i respecta aceast| regul|. Access-ul nu folosete numere de nregistr|ri. Access-ul i stocheaz| datele n tabelele motorului bazei de date Microsoft Jet. Access-ul respect| aceast| regul| prin folosirea Cheii Primare (Primary Key). Access-ul suport| lucrul cu valori Null pentru descrierea informaiilor lips|. Catalogul rezid| n motorul bazei de date Microsoft Jet. Se poate folosi OpenSchema din ADO pentru interogarea catalogului de sistem. Limbajul DDL SQL al motorului bazei de date Microsoft Jet ofer| posibilitatea cre|rii tabelelor, cheilor etc.

Garantarea accesului

Fiecare element de dat| trebuie s| fie accesibil logic printr-o combinaie de forma: cheie primar|, nume de tabel i nume de cmp. Valorile vide (Null) trebuie s| fie suportate explicit. Null-urile reprezint| informaia lips| sau imposibil de aplicat.

Catalogul de sistem

Descrierea bazei de date sau catalogul trebuie s| se fac| la nivelul logic sub forma unor valori n tabele. Limbajul relaional (SQL) trebuie s| poat| aciona asupra proiectului bazei de date n acelai mod n care acioneaz| asupra datelor stocate n structur|.

Pt. cumparare viziteaza:

Lipsa informaiei

Limbaj cuprinz|tor

Un SGBD trebuie s| suporte un limbaj clar pentru manipularea datelor (SQL) care asigur| modalit|i cuprinz|toare pentru manipularea datelor, definirea datelor, definirea vederilor, constrngerile de integritate, limit|rile de tranzacii i de autorizare.

Access-ul, prin motorul Jet, asigur| SQL pentru manipularea datelor, crearea vederilor (Select Queries), constrngerile de intergritate (Relationships i CREATE CONSTRAINT). Access a fost primul SGBD pe PC-uri care a permis interog|ri de actualizare (Update Query).

Actualizarea vederilor

Toate vederile trebuie s| poat| fi actualizate de sistem. ntr-un SGBD total relaional majoritatea vederilor ar trebui s| se poat| actualiza.

0264-401667

NU COPIA !.

sau suna la:

26

Introducere n Microsoft Access - cursul 1

Independena fizic| a datelor

Independena logic| a datelor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Datele trebuie s| fie fizic independente de programul aplicaie. Programul aplicaie SGBDR trebuie s| fie n stare s| urm|reasc| modific|rile fizice la nivelul datelor pe "sub aplicaie". De exemplu, programul SGBDR nu se va modifica dac| un index se adaug| sau se terge dintr-un tabel. Pe ct este posibil, aplicaiile software trebuie s| fie independente de modific|rile f|cute n tabelele de baz|. De exemplu, nu trebuie s| se rescrie codul n cazul n care tabelele sunt combinate ntr-o vedere. Integritatea datelor trebuie s| se poat| defini ntr-un limbaj relaional i s| fie stocat| n catalog. Constrngeri de integritate a datelor trebuie s| poat| fi construite la nivel de aplicaie. Acest concept este oarecum str|in modelului relaional. n modelul relaional, integritatea trebuie s| fie inerent| proiectului bazei de date. Capacit|ile SGBDR nu au voie s| fie limitate datorit| distribuiei unor componente ale acestuia n baze de date separate.

http://www.east.utcluj.ro/mb/mep/antal

Actualiz|ri la nivel de mulime

Un SGBDR trebuie s| fac| mai mult dect simpla extragere a datelor. Trebuie s| aib| capacitatea de inserare, actualizare i tergere a datelor, privite ca o mulime relaional|

Access-ul suport| interog|ri de aciune (Action Query).

Access-ul permite modificarea obiectelor bazei de date f|r| alterarea celorlalte componete ale Accessului. Jet-ul are motor de stocare logic.

10

Independena integrit|ii datelor

Pt. cumparare viziteaza:

n Access, o interogare se poate lega la un formular sau la un raport la fel de simplu ca un tabel. Dei Microsoft-ul nu a documentat modul n care Jet-ul stocheaz| integrit|ile, se pot crea reguli de integritate via SQL. Jet-ul va stoca aceste informaii n proiectul bazei de date ca parte a catalogului.

11

Independena distribuiei

Pentru c| motorul Jet stocheaz| regulile de integritate la nivel de motor, alte componente ale motorului nu afecteaz| regulile de integritate.

0264-401667

NU COPIA !.

sau suna la:

27

Introducere n Microsoft Access - cursul 1

12

Inexistena submin|rilor

Pentru a r|spunde la aceast| ntrebare trebuie s| l|murim "clasa" sistemelor de gestionare a bazelor de date din care face parte Access-ul. Access-ul este un SGBD pentru calculatoare desktop, adic| calculatoare care "stau pe biroul cuiva", deci care deservesc un utilizator sau un

Ct "poate duce" Access-ul?

0264-401667

NU COPIA !.

sau suna la:

Microsoft Access-ul este un Sistem de Gestiune a Bazelor de Date Relaionale (SGBDR) scris de firma Microsoft care este i produc|toarea sistemului de operare Windows. Aceast| aplicaie vine integrat| n pachetul de programe numit Microsoft Office Professional mpreun| cu programele: Word, Excel, PowerPoint i Mail. asigur| facilit|i de stocare, sortare, manipulare i selecie avansate pentru date. este stabil n contextul sistemului de operare Windows pentru c| este dezvoltat de aceeai firm| care scrie sistemul de operare. este uor de nv|at, asigurnd dezvoltarea unor baze de date simple cu un efort minim (cel mai mic dintre toate bazele de date folosite mai des pe aici: FoxPro, Paradox, Oracle) dar n acelai timp aprofundat are resurse suficiente pentru a susine dezvoltarea unor proiecte serioase. este foarte direct n posibilit|ile de manipulare a cmpurilor i a tabelelor cu date. este foarte r|spndit, motiv din care are scrise o mulime de biblioteci de tot felul de firme tere.

De ce Microsoft Access?

Pt. cumparare viziteaza:

O baz| de date electronic| permite utilizatorului efectuarea acelorai operaii ca n cazul unei baze de date stocat| pe hrtie, n plus, datorit| suportului electronic ofer| avantajele: vitez| m|rit|, simplitate n folosire, posibilitatea stoc|rii unor cantit|i mari de date; permite introducerea i editarea comod| a datelor, sortarea uoar| a datelor i c|utarea simpl| a datelor; permite preg|tirea unor rapoarte precise ntr-o form| dorit| de utilizator despre informaiile stocate; asigur| partajarea datelor cu alte pachete software, n reele de calculatoare asigur| i partajarea informaiilor ntre utilizatori, sc|znd mult timpul pentru duplicarea datelor; asigur| securitatea datelor prin protecie mpotriva accidentelor software i hardware.

Scopul unei baze de date

http://www.east.utcluj.ro/mb/mep/antal

Dac| un SGBDR are un limbaj de manipulare "a unei singure nregistr|ri la un moment dat", acest limbaj nu va putea fi folosit la ocolirea regulilor de integritate sau a constrngerilor modelului relaional. Astfel nu numai c| SGBDR trebuie s| fie guvernat de reguli relaionale ci aceste reguli trebuie s| fie i primare.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Access-ul permite folosirea lui DAO i ADO pentru manipularea a cte unei singure nregistr|ri la un moment dat prin intermediu mulimilor de ntregistr|ri actualizabile (updateable recordsets). Nu se pot viola regulie de integritate prin aceste tehnologii de manipulare a datelor.

28

Introducere n Microsoft Access - cursul 1

Evoluia Access-ului

n 1992 Microsoft a lansat Access 1.0 care a fost rapid urmat de versiunea 1.1. Aplicaia iniial| a fost ieftin| (n jur de 100 USD) fiind competitiv| numai datorit| acestui pre, altfel avnd o mulime de limit|ri.

n septembrie 1995 apare Access 95 (alias versiune 7.0) scris| pentru sistemul de operare Windows 95. Din nefericire, a fost instabil i cu multe erori, Access 2.0 r|mnd preferatul programatorilor.

Ultima versiune este Access 2000 ap|rut| n iunie 1999. Despre acesta n-am s| spun dect c| este un produs program mult superior celorlalte versiuni de Access i altor SGBDR-uri din clasa Access-ului, att n concepie, ct i n implementare.

O introducere n Access

Access-ul utilizeaz| aceleai denumiri cu cele prezentate anterior cu o excepie ns| i anume

0264-401667

NU COPIA !.

sau suna la:

Versiunile de Access de pe pia| sunt practic produse distincte pentru c| nu asigur| compatibilitatea de la nou la vechi. O baz| de date scris| ntr-o versiune b|trn| se poate converti la una mai nou|, dar invers nu se poate. Erau dou| soluii pentru aceast| problem|: se p|stra o copie veche a bazei de date care va fi convertit| la versiunile noi sau se va deschide versiunea veche a bazei cu un Access nou, ns| numai n modul de citire (read only). La realizarea conversiei Access-ul ncearc| s| transforme ct mai bine posibil obiectele vechi n corespondentul lor nou, dar i aici apar des probleme.

Compatibilitatea ntre versiuni

Pt. cumparare viziteaza:

n noiembrie 1996 apare Access 97 (alias Access 8.0) cu multe mbun|t|iri fa| de Access 2.0 i mult mai stabil n contextul sistemului de operare Windows 95/98.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

n aprilie 1994 a ap|rut pe pia| Access 2.0 aceast| versiune eliminnd de pe pia| versiunile anterioare. Dup| scurt timp versiunea 2.0 a devenit principala baz| de date pe 16 bii.

http://www.east.utcluj.ro/mb/mep/antal

num|r mic de utilizatori. El nu poate concura cu Oracle, Informix, DB2 sau Microsoft SQL Server care sunt sisteme complexe de gestionare ale bazelor de date cu motoare superioare n termeni de vitez| i num|r de utilizatori care pot accesa simultan bazele de date. Totui, Access-ul poate fi folosit cu succes i n acest context pe post de interfa| (front-end package) dintre utilizator i aceste SGBD-uri complexe.

29

Introducere n Microsoft Access - cursul 1

Fiierul se numete Tabel. Aceasta este o alegere normal| din moment ce majoritatea informaiilor se prezint| n practic| sub form| tabelar|.

Ce sunt fomularele ? (Forms)

Formularele se folosesc pentru introducerea, editarea sau vizualizarea datelor la nivel de nregistrare.

Pt. cumparare viziteaza:

Lucrul cu o baz| de date implic| mai mult dect simpla stocare a datelor. Pentru a manipula, prelucra i vizualiza datele sub forma unor informaii este necesar un grup de obiecte. Acestea sunt stocate de c|tre Access ntr-un container al bazei de date (Database Container) i sunt: formulare, interog|ri, rapoarte, macro-uri, module i pagini.

Introducere n instrumentele Accessului

http://www.east.utcluj.ro/mb/mep/antal

Forma de prezentare vizual| care urmeaz| se numete Foaie de date (Datasheet) i este cea mai comun| pentru prezentarea datelor n Access. Cea mai simpl| baz| de date se prezint| sub o astfel de form| i poate include un num|r imens de date.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Datele se pot grupa pentru operaiile de mai sus dup| cum dorete utilizatorul. Uneori, formularele pot imita perfect documente aflate pe hrtie pentru a uura introducerea i interpretarea datelor. O interogare este o ntrebare despre date, de exemplu: cte pl|ci de baz| defecte au fost cump|rate? ci bani mai am n

Ce sunt interogarile ? (Query)

cont? La fiecare interogare din baza de date se extrag ultimele date (cele mai proaspete) legate de

0264-401667

NU COPIA !.

sau suna la:

30

Introducere n Microsoft Access - cursul 1

informaia cerut| de noi.


Ce sunt rapoartele ? (Reports)

Ce sunt macrourile? (Macros)

Ce sunt modulele? (Modules)

Acestea stocheaz| funciile sau programele scrise de utilizator. Tot ce se poate realiza cu un macro se poate realiza i cu un modul, dar f|r| interfaa de macro-uri care asigur| un dialog prietenos cu utilizatorul. Modulele sunt mult mai puternice i eseniale pentru scrierea unor aplicaii n regim multiuser (baze de date cu utilizatori multipli) pentru c| macro-urile nu pot trata erorile din regim de lucru. Majoritatea utilizatorilor ncep s| lucreze cu macro-urile pn| cnd realizeaz| limit|rile lor, n final, oprindu-se definitiv la module. Un tip de obiect nou apare numai din Access 2000. Paginile se folosesc pentru a introduce sau afia date prin Internet. Paginile sunt stocate sub forma unor fiiere HTML avnd datele citite sau scrise din baza de date.

Localizai simbolul Microsoft Access din meniul Start al Windows-ului sau Executai clic pe simbolul Microsoft Access de pe desktop (dac| acesta exist|).

Lansarea n execuie a Microsoft Access-ului

Adaugarea unei baze de date n directorul Favorites

Lansai n execuie Access-ul i afiai cutia de dialog Open. Localizai i selectai articolul care dorii s| fie ad|ugat n directorul Favorites. n

0264-401667

NU COPIA !.

Ce sunt paginile? (Pages)

Pt. cumparare viziteaza:

Un macro este un grup de comenzi Access care rezolv| o sarcin| concret|. De exemplu, pentru a crea un buton care deschide un raport se poate folosi un macro care se lanseaz| n aciunea "OpenReport". Macro-urile se pot folosi pentru a seta valoarea unui cmp pe baza valorii altui cmp (aciunea "SetValue"), pentru a verifica ndeplinirea anumitor condiii nainte de salvarea unei nregistr|ri (aciunea "CancelEvent"). Ecranul de macro-uri afieaz| detalii despre felul n care se poate aplica fiecare aciune.

http://www.east.utcluj.ro/mb/mep/antal

Rapoartele se folosesc la tip|rirea i afiarea imformaiilor din baza de date. Rapoartele permit producerea rezultatelor cu informaia ntr-o form| dorit| de utilizator i permit: gruparea i sortarea informaiilor; calculul de totale i medii.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

31

Introducere n Microsoft Access - cursul 1

exemplul care urmeaz| baza de date Northwind a fost selectat|;

efectuai clic pe butonul Add to Favorites Open);

vei vedea o list| de forma care permite ad|ugarea articolului selectat prin Add Selected Item to Favorites n directorul Favorites.
Deschiderea unei baze de date din directorul Favorites

pentru a deschide un fiier din Favorites, prima oar| afiai fereastra de dialog Open;

dac| efectuai clic pe simbolul Look in Favorites (afiat n interiorul cutiei de dialog Open) orice articol care l-ai ad|ugat va fi afiat n fereastra de dialog astfel:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

(afiat n interiorul cutiei de dialog

Pt. cumparare viziteaza:

efectuai clic pe articolul dorit, la noi Northwind.mdb i apoi efectuai clic pe butonul Open pentru a deschide fiierul.

0264-401667

NU COPIA !.

sau suna la:

32

Introducere n Microsoft Access - cursul 1

Fereastra principal| a Access-ului

Bara cu instrumentele Access

Bara cu instrumente conine butoane care permit selectarea direct| (pun la dispoziia utilizatorului scurt|turi) a unor comenzi din bara cu meniu aflate n submeniuri. Exist| mai multe bare cu instrumente care se pot activa - efectul activ|rii fiind afiarea lor pe ecran - prin selectarea lui View din Toolbars. Dac| nc| nu cunoatei semnificaia butonului pe care dorii s|-l ap|sai, inei mouse-ul pe buton un timp i un scurt mesaj de ajutor, n limba englez|, va fi afiat.

0264-401667

NU COPIA !.

sau suna la:

Minimizare (Minimize), Refacere (Restore) i nchidere (Close). Dedesubt este Bara cu Meniu (Menu Bar), iar mai jos sunt barele cu instrumente. La pornirea Access-ului n Meniu se v|d numai dou| submeniuri File (fiiere) i Help (ajutor), iar majoritatea butoanelor de pe bara de instrumente sunt de culoare gri, adic| invalidate (la ap|sarea lor nu se petrece nimic). Acestea apar din cauz| c| nu este dechis| o baz| de date.

http://www.east.utcluj.ro/mb/mep/antal

Fereastra principal| a aplicaiei Access urmeaz| caracteristicile oric|rei aplicaii Microsoft Windows. O Bar| cu Titlu (Title Bar) este afiat| n cea mai de sus poriune a ecranului cu un Meniu de Control (Control Menu) n partea stng|, iar n dreapta Butoanele de

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

33

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Obiectivele cursului 2
! ! ! ! ! ! ! ! ! !
cum se deschide o baz| de date la pornirea (lansarea n execuie) cum se deschide o baz| de date dup| ce Access-ul a fost pornit; cum se deschide o baz| de date scris| ntr-o versiune anterioar| de cum se nchide o baz| de date;

Acces-ului;

cum se deschide un tabel i modul de navigare n acesta; cum se vizualizeaz| un tabel n mod de proiectare (Design View); care sunt principiile de utilizare ale interog|rilor (Queries); cum se vizualizeaz| un formular n mod de proiectare; care sunt principiile de utilizare ale rapoartelor (Reports). cum se deschid formularele (Forms) i pentru ce se utilizeaz|;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Access;

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

34

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Deschiderea unei baze de date


Deschiderea unei baze de date 7 cu mpreuna pornirea Access-ului Deschiderea unei 7 baze de date dupa pornirea Access-ului

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Nota 7 : Bazele de date recente vor fi afiate ntr-o list|, n figura al|turat| este numai una singur| Northwind,
de unde pot fi deschise efectund clic pe numele lor. O alt| variant| este selectarea

Deschiderea unei baze de date 7 cu o creata versiune 7 de anterioara Access

Deschidei baza de date n mod obinuit, cu oricare din procedurile descrise mai sus, fereastra de dialog va cere din partea dumneavoastr| confirmarea conversiei bazei de date vechi n cea nou| - opiunea Convert Database - sau p|strarea formatului original i deschiderea bazei de date - opiunea Open database. Dac| baza de date este deschis| f|r| a fi convertit| n formatul lui Access 97 datele din ea se pot edita dar nu se pot modifica proiectele formularelor, tabelelor i rapoartelor. Toate datele salvate vor putea fi utilizate n versiunea anterioar| de Access sub care s-a proiectat baza de date. n cazul n care se realizeaz| conversia, obiectele din baza de date vor putea fi manipulate din Access97 dar nu vor mai fi recunoscute de versiunile anterioare de Access.

0264-401667

NU COPIA !.

sau suna la:

simbolului grafic Open database din bara de instrumente Standard. Cnd se deschide fereastra de dialog Open, selectai numele bazei de date din lista - n figura al|turat| s-a selectat Order Entry1 - i efectuai clic pe butonul Open.

Pt. cumparare viziteaza:

Din meniul File selectai Open Database. Observai c| n dreapta textului Open database este scris Ctrl+O. Aceasta este scurt|tura c|tre comanda din meniu. Ea se execut| prin inerea ap|sat| a tastei Ctrl i ap|sarea scurt| a tastei O, dup| care ambele taste se elibereaz| i are ca efect selectarea lui Open Database din meniul File mai scurt, numai prin ap|sarea unui grup de taste (trecerea prin meniu este ocolit|).

http://www.east.utcluj.ro/mb/mep/antal

Din cutia de dialog Open selectai o baz| de date deja existent| i apoi efectuai clic pe butonul Open.

35

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

ase ferestre permit accesul la tabele (Tables), interog|ri (Queries), formulare (Forms), rapoarte (Reports), macro-uri (Macros) i module (Modules). Fiecare dintre acestea va fi examinat| n detaliu n cursurile urm|toare. Selecia uneia se realizeaz| efectund clic pe butonul (numit tab n englez|) cu numele corepunz|tor. Aceleai obiecte se pot selecta i din meniul View.

Deschiderea unui tabel (Table)

n fereastra bazei de date Access efectuai clic pe butonul Tables; n lista tabelelor efectuai clic dublu pe numele tabelului care dorii s| fie deschis sau efectuai clic pe numele tabelului i apoi clic pe butonul Open; tabelul este vizualizat sub forma unei foi de date (Datasheet view) care este modul de vizualizare implicit pentru tabele n Access. La deschiderea tabelului Meniul i Bara cu Instrumente se schimb| automat pentru a include opiunile care sunt relevante pentru tabele.

Numele de coloane (column headings) devin vizibile n foaia de date acestea specificnd cmpurile tabelului. Fiecare rnd conine o nregistrare (record) separat|.

0264-401667

NU COPIA !.

sau suna la:

Pentru a nchide o baz| de date Access: selectai Close din meniul File sau efectuai clic n Meniul de Control al aplicaiei Access i selectai Close sau efectuai clic dublu pe butonul Meniului de Control sau ap|sai Ctrl+F4.

nchiderea unei baze de date

http://www.east.utcluj.ro/mb/mep/antal

Fereastra bazei de date Access apare n fereastra aplicaiei Access la deschiderea bazei de date. Ea asigur| o modalitate de acces elegant| i rapid| la obiectele bazei de date.

Fereastra bazei de date Access

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

36

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Este probabil ca tabelul s| aib| mai multe coloane dect cele care se pot afia n fereastr|, caz n care numai cele din stnga vor fi vizibile. Dreptunghiurile gri din dreapta nregistr|rilor se numesc selectori de nregistr|ri (record selectors). Un simbol s|geat| n selector indic| nregistrarea curent| (current record). Un asterisc (caracterul *) ocup| selectorul urm|toarei nregistr|ri vide - nc| necompletate- disponibile. n partea de jos a ferestrei (unde scrie Record:), imediat deasupra liniei de stare, o bar| pentru defilare (scroll bar) pune la dispoziia utilizatorului butoane de navigare i dreptunghiuri cu num|rul nregistr|rii curente, respectiv cu num|rul total de nregistr|ri. La deschiderea unui tabel, n mod normal, va fi indicat| prima nregistrare.

Pentru a ne deplasa pe un cmp

Se poziioneaz| cursorul mouse-ului (de obicei n form| de s|geat|) pe cmpul dorit i efectu|m clic pe butonul stng al mouse-ului. Cursorul i schimb| forma funcie de tipul cmpului.

Explorarea tabelelor

Apas| tasta (ele):

Pentru a te deplasa pe:

Tab

Cmpul urm|tor. Cmpul anterior.

Shift+Tab Home End

Primul cmp al nregistr|rii curente.

Ultimul cmp al nregistr|rii curente. nregistrarea urm|toare. nregistrarea anterioar|.

Ctrl+Home Ctrl+End

Primul cmp al primei ntregistr|ri. Ultimul cmp al ultimei nregistr|ri.

Page Up / Page Down

Pagina anterioar|/Pagina urm|toare.

0264-401667

Pentru a ne deplasa prin tabel folosind tastatura

Pentru a ne deplasa de la o nregistrare la alta, se poate folosi una din metodele:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

37 Pentru a ne deplasa folosind bara pentru defilare

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Pentru a ne deplasa pe o nregistrare folosind meniul Edit

Pentru a ne deplasa pe o nregistrare specifica folosind tastatura

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Selectai Go To din meniul Edit, apoi selectai First, Last, Next Previous sau New Record (vezi figura al|turat|).

; Ap|sai tasta Enter.

Vizualizarea tabelelor n mod proiectare

View). Pentru a modifica un tabel trebuie mai nti s| comutai pe vizualizarea n mod

0264-401667

NU COPIA !.

La deschiderea unui tabel acesta este vizualizat, implicit, ca o foaie de date (Datasheet View). La crearea unui tabel, implicit, acesta este vizualizat n mod proiectare (Design

Pt. cumparare viziteaza:

Ap|sai tasta F5 iar num|rul nregistr|rii se va selecta din bara de defilare; Introducei num|rul nregistr|rii pe care dorii s| v| plasai.

http://www.east.utcluj.ro/mb/mep/antal

sau suna la:

38

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

proiectare.

selectai Design View

http://www.east.utcluj.ro/mb/mep/antal

Pentru a comuta n modul de proiectare

din meniul View

sau efectuai clic pe simbolul grafic Design View de pe bara de instrumente . selectai Datasheet View din meniul View sau efectuai clic pe simbolul grafic Datasheet View din bara de instrumente.

Interog|rile pot fi vizualizate, la fel ca i tabelele, n mod foaie de date sau n cel de proiectare. interogare vizualizata 7 n mod foaie de date interogare vizualizat| n mod proiectare

Pt. cumparare viziteaza:

O interogare este o modalitate de a extrage informaii din baza de date. Se pot extrage date din tabele distincte i se pot combina mpreun|. Se pot specifica criterii pentru limitarea num|rului de nregistr|ri i se pot efectua calcule pentru a genera informaii care nu sunt stocate direct n tabele.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru a comuta n modul foaie de date

Introducere n interog|ri (Queries)

Ce este o interogare cu parametru?

Deschiderea unei interogari n mod proiectare

O interogare cu parametru (Parameter Query) este cea care cere introducerea unui criteriu din partea utilizatorului n mod interactiv. 7 de Cnd utilizatorul lanseaz| interogarea aceasta va afia o fereastra dialog sau mai multe pentru introducerea criteriilor necesare. Un exemplu simplu ar fi domeniul datelor pentru care se dorete aflarea vnz|rilor. deschidei fereastra bazei de date (Database Window); efectuai clic pe butonul Queries; efectuai clic pe butonul Design din fereastra bazei de date.

0264-401667

NU COPIA !.

sau suna la:

39

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Introducere n formulare (Forms)


Ce sunt formularele?

Un formular poate fi copia exact| a unui formular de pe hrtie, ca de exemplu o factur| sau un orar. O multitudine de tehnici de proiectare permit folosirea de stiluri i m|rimi diferite de caractere, imagini scanate, desene, butoane de comand| sau grafice, toate ntr-o palet| de culori variat|.

Pt. cumparare viziteaza:

Tipuri de formulare

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Formularele (Forms) asigur| o prezentare prietenoas| a datelor din baz|. Modurile de utilizare ale formularelor sunt multiple: ad|ugare, tergere sau modificare de date; afiarea datelor; controlul modului i a ordinii n care utilizatorul are acces la date; afiarea de mesaje; tip|rirea de informaii. De asemenea, formularele se pot folosi pentru alc|tuirea unui sistem de meniuri pentru ghidarea utilizatorului prin orice operaii dorite. Toate formularele se bazeaz| pe datele unuia sau mai multor tabele a c|ror structur| r|mne neafectat| de modalitatea de prezentarea vizual| a formularului.

http://www.east.utcluj.ro/mb/mep/antal

Schimbarea modului de vizualizare

din modul de vizualizare foaie de date (Datasheet View) efectuai clic pe simbolul grafic mod de proiectare (Design View) din bara de instrumente sau din modul de proiectare (Design View) efectuai clic pe simbolul foaie de date (Datasheet View) din bara de instrumente.

Microsoft Access pune la dispoziia utilizatorului Generatoare de Formulare (Form Wizard), cteva exemple, din baza de date NorthWind, rezultate prin folosirea acestor generatoare se prezint| n continuare:

0264-401667

NU COPIA !.

sau suna la:

40

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

sau suna la:

0264-401667

41

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru a deschide un formular

deschidei o baz| de date; selectai din Database Window butonul Forms; selectai formularul care va fi deschis - mai jos Customer; efectuai clic dublu pe numele formularului sau efectuai clic pe pe butonul Open din fereastra bazei de date (Database Window), iar formularul se va deschide - aceasta este reacia implicit| n Access - fiind afiat pe ecran n modul vizualizare (Form View).

Deschiderea unui formular

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Un formular poate s| fie format pe baza cmpurilor unui singur tabel sau pe baza cmpurilor din mai multe tabele. n ambele cazuri, toate sau numai o parte din cmpuri pot s| ocupe loc n spaiul formularului. Vizualizarea n modul foaie de date (Datasheet View) permite afiarea datelor stocate n tabel. Vizualizarea n modul proiectare (Design View) permite modificarea sau crearea obiectelor de pe suprafaa formularului. efectuai clic pe butonul Datasheet View din bara de instrumente standard (standard toolbar) sau selectai din meniul aplicaiei Access pe View, apoi DatasheetView.

Vizualizarea n modul proiectare (Design View)

Pentru a comuta pe vizualizarea n mod foaie de date

0264-401667

NU COPIA !.

sau suna la:

42

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

Pentru a comuta pe vizualizarea n mod proiectare

efectuai clic pe pictograma Design View din bara de instrumente standard sau selectai View din meniul aplicaiei Access, apoi Design View.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Pentru a comuta pe vizualizarea n mod formular

efectuai clic pe pictograma Form View din bara de instrumente standard sau selectai View din meniul aplicaiei Access, apoi Form View.

0264-401667

NU COPIA !.

sau suna la:

43

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

nchiderea unui formular


Pentru a nchide un formular

efectuai clic pe butonul Close (vezi figura anterioar|) al formularului sau selectai din meniul aplicaiei Access, File, apoi Close sau selectai Close (vezi figura anterioar|) din meniul de Control al formularului (n stnga sus) sau ap|sai Ctrl+F4.

n figurile care urmeaza 7 prezint cteva tipuri de rapoarte extrase din baza de date Nortwind.

0264-401667

NU COPIA !.

sau suna la:

Rapoartele sunt modul tradiional de vizualizare a rezultatelor din bazele de date. Dei se pot vizualiza i pe ecran, de regul| sunt create pentru a fi listate la imprimant|. Vizualizarea unui raport pe ecran, nainte de tip|rire este binevenit|, fiind posibil| ajustarea marginilor raportului pentru ca acesta s| intre n pagina hrtiei ct mai bine. Odat| cu evoluia tehnicilor de programare, rapoartele au trecut de faza n care plictisesc, acum fiind posibil ca un raport s| conin| sigla firmei sau alte desene, grafice sau imagini. Avantajul major al rapoartelor const| n posibilitatea grup|rii, sort|rii i realiz|rii de totale pentru oricare dintre cmpurile bazei rezultnd posibilitatea gestion|rii de cantit|i mari de date sub o form| de prezentare accesibil|. Dac| raportul are mai multe pagini exist| posibilitatea navig|rii printre pagini i m|ririi unor zone ale raportului, asta ns| numai n faza de vizualizare a lui. Atunci cnd nu 7 experint -a 7 n Access, dar suntem ct de ct obis - nuit -i cu editorul de texte avem prea multa Word, exista 7 posibilitatea exportului unui raport n editorul de texte al formei Microsoft sau n Excel. Aici, posibilita 7tile de aranjare n pagina 7s - i de mbuna 7 ta 7tire a imaginii documentului (raportul Access) sunt mult mai avansate si mai simplu de folosit dect n cazul rapoartelor Access. n general, rapoartele pot fi exportate s - i n alte tipuri de formate, cteva dintre acestea sunt: Ricth Text Format (RTF), HTML sau text obis - nuit.

Introducerea n rapoarte (Reports)

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

44

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal

Introducere n Microsoft Access: moduri de vizualizare - cursul 2

sau suna la:

0264-401667

45

Introducere n Microsoft Access: Tabele - cursul 3

Obiectivele cursului 3
! ! ! ! ! ! ! ! ! ! ! ! !
de ce este necesar| pornirea fazei de proiectare pe hrtie cu creionul; cum se creeaz| o baz| de date nou| folosind Generatorul de Tabele cum se adaug| cmpuri folosind Generatorul de Tabele; cum se creeaz| un tabel f|r| Generator; cum se adaug| cmpuri f|r| Generator; cum se descrie semnificaia cmpului;

(Table Wizard);

cum se definete tipul de date al cmpurilor; cum se salveaz| un tabel nou;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se redenumesc cmpuri folosind Generatorul de Tabele;

cum se folosete Generatorul M|tilor de Intrare (Input Mask Wizard); cum se editeaz| Masca de Intrare; cum se definete Cheia Primar| (Primary Key);

cum se adaug| nregistr|ri tabelului vizualizat n mod foaie de date.

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

46

Introducere n Microsoft Access: Tabele - cursul 3

n rezolvarea sarcinilor dificile legate de proiectarea bazelor de date exist| un grup de ntreb|ri care pe care proiectantul i le pune sau le pune utilizatorului bazei de date. Trebuie stabilit de ce se dorete baza de date i ce se ateapt| de la ea. Aici cel mai important este definirea rezultatelor, adic| a ieirilor pe care aceasta le produce. Problemele serioase apar pentru c| muli proiectani decid asupra coninutului bazei de date f|r| s| tie exact ceea ce trebuie s| fac| aceasta. Cunoscnd ceea ce se dorete se pot analiza datele disponibile pentru a Ce avem la decide asupra modului de structurare n termeni de tabele i -ie? dispozit cmpuri.
Ce se dores -te? Ce este de fa 7 cut?

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Ce ntreb|ri ne punem?

Aceast| ntrebare cere proiectantului s| g|seasc| toate prelucr|rile necesare pentru obinerea ieirilor dorite: c|ut|ri, sort|ri i calcule.

De exemplu, Vasile este patronul unei mici firme de calculatoare. El cump|r| produse de la furnizori. Are angajai. Magazinul este structurat pe categorii de produse (pl|ci de baz|, microprocesoare, memorii, discuri, imprimante etc.). Comenzile pentru clieni pot fi pentru unul sau mai multe produse. Firma fiind mic| nu ine marf| pe stoc, produsele fiind cump|rate de la furnizori numai pe baz| de comenzi.

Reguli generale de proiectare

Tabelele sunt formate din coloane (cmpuri), fiecare coninnd o informaie specific| (de exemplu: nume_client, pre) i rnduri (n unele c|ri numite i linii sau nregistr|ri) care colecteaz| toat| informaia particular| despre o persoan|, un loc sau despre ceva n general. Tentaia general| este aceea de a pune toate informaiile care descriu o problem| ntr-un

0264-401667

NU COPIA !.

sau suna la:

n aceast| faz|, pe hrtie desen|m figuri geometrice n care scriem denumirile obiectelor ce intervin n naraiunea subiectului de rezolvat, eventual putem ncerca s| schi|m pe hrtie fluxurile de date ntr-o form| foarte sintetic|. Dac| baza de date este proiectat| pentru altcineva, ar|tai aceste desene persoanelor n cauz| pentru ca s| fii convini c| ai neles corect problema de rezolvat.

Clarificarea a ceea ce dorim

http://www.east.utcluj.ro/mb/mep/antal

Metoda clasic| i sigur| de proiectare a unei baze de date pentru persoanele f|r| experien| este hrtia i creionul. Timpul petrecut n aceast| faz| se justific| pe m|sur| ce procesul de dezvoltare al bazei de date se aprofundeaz|. Trecerea direct| la lucrul pe calculator va duce de multe ori la greeli de concepie care vor fora reproiectarea bazei pornind de la nceput. Cmpurile din baz| trebuie documentate pentru ca n cazul unor dezvolt|ri ce se vor face dup| luni de zile s| nu "intuim" ceea ce am f|cut cndva. La nceput tim doar ceea ce dorim s| facem i ceea ce avem la dispoziie, apoi trecem la g|sirea c|ilor prin care se obine ceea ce dorim cu ceea ce avem.

Proiectarea bazei de date

Pt. cumparare viziteaza:

47

Introducere n Microsoft Access: Tabele - cursul 3

singur tabel, care ar avea un num|r mare de cmpuri din acest motiv. Un astfel de rnd (linie) este cel prezentat n continuare:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Acest mod de abordare are cteva deficiene: 1. conduce la dubluri de date: de cte ori acelai client face o nou| comand|, numele i adresa lui se vor repeta n baz|. Stocarea aceluiai nume i a aceleiai adrese n mod repetat (redundana datelor) va duce la risip| de spaiu i, n plus, se pot face uor greeli, de exemplu, numele sau adresa clientului pot fi reintroduse eronat din motive de neatenie; 2. nu exist| o metod| de predicie a num|rului de articole pe care le va comanda clientul, din acest motiv suntem tentai s| introducem un num|r mare de cmpuri Nume articol x, Cantitate x, Pret x i din nou apare risipa de spaiu; 3. se stocheaz| n baz| date care se pot calcula uor din celelalte date stocate n baz|, un astfel de cmp este Total. Pentru minimizarea num|rului acestor probleme se realizeaz| o etap| numit| normalizare care const| n organizarea cmpurilor n tabele i definirea relaiilor ntre tabele prin intermediul cmpurilor. Teoria matematic| a normaliz|rii este riguroas| i complicat|, dar testele care se pot aplica pentru a verifica dac| proiectarea bazei s-a f|cut corect sunt simple i se prezint| n continuare sub forma unor reguli.
Unicitatea 7 rilor ntregistra

Unicitatea cmpurilor

Dac| s-a repetat acelai tip de informaie ntr-un tabel, ea trebuie pus| ntr-un alt tabel. Este posibil ca ntr-un tabel s| avem, pe lng| alte cmpuri, cmpurile: Adresa1, Adresa2, Telefon1, Telefon2, Mobil. Se observ| c| tipul de informaie Adresa se repet| de 2 ori iar tipul de informaie Telefon de 3 ori. Aceste cmpuri vor fi separate din tabelul n cauz| i vor fi stocate n tabele diferite. Pentru exemplul prezentat n figura anterioar| astfel de cmpuri sunt Nume articol x, Cantitate x, Pret x. Fiecare cmp dintr-o nregistrare trebuie s| fac| parte din subiectul nregistr|rii. Dac| nu este aa atunci, fie este redundant, fie face parte dintr-un alt tabel.

Cmpurile trebuie 7 fie dependente sa -ional funct

0264-401667

NU COPIA !.

sau suna la:

Fiecare tabel ar trebui s| aib| o cheie primar|. O cheie primar| este un cmp sau o grupare de cmpuri care permite identificarea n mod unic a nregistr|rilor. Cheia primar| se definete de c|tre proiectant i asigur| unicitatea nregistr|rilor. Dac| l|sai Access-ul s| defineasc| cheia primar| el va introduce un cmp num|r|tor (numit Counter Field n Access 95 i AutoNumber de la Access 97 n sus) la nceputul fiec|rei nregistr|ri. Valoarea acestuia se va incrementa automat la introducerea unei nregistr|ri noi n tabel. Dei aceast| metod| garanteaz| unicitatea nregistr|rii, ea nu asigur| neap|rata distincie a dou| nregistr|ri, cu execepia valorii stocate n cmpul num|r|tor.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

48 Cmpurile trebuie 7 fie sa independente

Introducere n Microsoft Access: Tabele - cursul 3

Trebuie s| fie posibil| modificarea oric|rui cmp al unei nregistra 7 ri f|r| afectarea altor cmpuri.

Cmpurile nu pot -ine date cont derivate

Pentru exemplul anterior, cmpul Total nu trebuie calculat i stocat n baz|, el se poate calcula numai atunci cnd se tip|rete un raport sau se deschide un formular.

Dup| ce se cunosc tabelele bazei de date trebuie s| decidem asupra modului de alc|tuire a relaiilor dintre acestea. Desenul realizat anterior va ajuta n parcurgerea acestei etape. Exist| trei tipuri de relaii: unu-la-unu (one-to-one), unu-la-muli (one-to-many) i mulila-muli (many-to-many). n proiectul final ns|, relaiile muli-la-muli trebuie s| dispar| i s| fie nlocuite prin crearea unui tabel adiional rezultnd dou| tabele unu-la-muli. Analitii de sistem folosesc notaii diferite pentru descrierea relaiilor. n Microsoft Access se folosesc urm|toarele notaii: o linie indic| o relaie ntre dou| tabele; un 1 la cap|tul unei linii marcheaz| partea de unu din relaie; simbolul 4 la cap|tul unei linii marcheaz| partea de muli din relaie.

Pt. cumparare viziteaza:

Determinarea relaiilor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Datele sa 7 fie stocate sub forma 7 elementara 7 logica

Ar fi util ca, de exemplu, oraul, adresa i telefonul unui client s| fie stocate n cmpuri separate pentru ca s| se poat| realiza analize bazate pe coninutul lor. De exemplu, v| putei ntreba ci clieni din oraul Cluj au cump|rat pl|ci de baz|. Pentru acetia cmpul ora va conine valoarea Cluj. Dac| oraul, adresa i telefonul sunt puse la "gr|mad|" ntr-un singur cmp, analiza pe baza unei poriuni din valorile stocate ntr-un cmp devine dificil|.

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

Modalitatea prezentat| pentru proiectarea unei baze de date relaionale a fost laic| avnd intenia de a nu speria cititorul. Pentru c| n esen| tot ce urmeaz| depinde de aceast| etap| voi relua fazele proiect|rii ntr-o form| mai teoretic|. Din teoria relaional| dezvoltat| de Codd, ale c|rei reguli au fost prezentate n cursul 1, se pot identifica urm|toarele categorii de probleme: Tabele, unicitate, chei i domenii; Relaii; Normalizarea datelor; Reguli de integritate.

n modelul relaional, tabelele, sunt o reprezentare a unor entit|i din lumea real|. Fiecare tabel trebuie s| reprezinte o colecie de un singur tip de entitate. Entit|ile pot fi obiecte, procese sau evenimente din lumea real|. De exemplu, un astfel de obiect poate fi un client, o factur|, un produs etc. Dup| Regula nr. 1 toate datele trebuie stocate n tabele, iar dup| Regula nr. 2 tabelul trebuie s| fie constituit din rnduri i coloane unice. Modalitatea de garantare a unicit|ii fiec|rui rnd este cheia primar| (Primary Key) - o coloan| sau un grup

Tabele, unicitate, chei i domenii

sau suna la:

Teoria proiect|rii bazelor de date relaionale

0264-401667

49

Introducere n Microsoft Access: Tabele - cursul 3

S| presupunem c| dorim s| realiz|m o baz| de date prin care s| urm|rim contactele dintr-o firm|:

Cheia primar| devine important| atunci cnd dorim s| o folosim n alte tabele, dup| cum se observ| n figura al|turat|:

Pt. cumparare viziteaza:

Privind datele de mai sus chei candidate ar putea fi: Nume Contact, Telefon1 Contact sau E-mail Contact. O regul| de bun sim este ca cheia s| fie ct mai simpl|, ct mai unic| posibil i s| nu se modifice n timp. Numele unei persoane se poate modifica n caz de c|s|torie sau divor, modific|ri sunt posibile i pentru numerele de telefoane sau adresele de e-mail. n acest caz, Access-ul permite folosirea unui cmp de tipul AutoNumber pe post de cheie primar|. Acest tip de cmp genereaz| o valoare numeric| care se incrementeaz| automat la fiecare ad|ugare a unei nregistr|ri (rnd) noi.

http://www.east.utcluj.ro/mb/mep/antal

de coloane care conin valori unice pentru fiecare rnd din tabel. Access-ul permite setarea unui cmp ca i cheie primar| dac| tabelul este vizualizat n mod proiectare. Toate cmpurile cu valori unice din tabel se numesc chei candidat (candidate keys), dintre acestea va fi aleas| cheia primar|. O cheie simpl| (simple key) este format| dintr-o singur| coloan|, una compus| (composite key) din dou| sau mai multe coloane.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Se observ| c| se poate stoca cheia primar|, IDContact, a unui tabel, TContacte, ntr-un alt tabel, mai sus, TTipContact, pentru a reprezenta nregistrarea n acest tabel nou. Acest cmp introdus forat n noul tabel, se va numi cheie str|in| fiind baza pe care formeaz| relaiile ntre tabele. O cheie str|in| este deci o coloan| care refer|, prin valorile ei, cheia primar| dintr-un alt tabel. Este important ca cele dou| chei s| aib| aceeai semnificaie i s| derive din acelai domeniu. Domeniile reprezint| o mulime comun| de valori din care coloanele iau valori.

Relaii

Cnd definii cheile primare i cele str|ine, definii n realitate relaii. Dup| Regula nr. 4 relaiile trebuie s| fie intergrate la nivelul motorului bazei de date. Access-ul poate lucra cu urm|toarele tipuri de relaii: unu la unu (11); unu la muli (1M); muli la muli (MM).

0264-401667

NU COPIA !.

sau suna la:

50

Introducere n Microsoft Access: Tabele - cursul 3

Regulile enunate de Codd i prezentate anterior (Unicitatea nregistrarilor, Cmpurile trebuie sa fie dependente functional etc.) ntr-o form| ct mai accesibil| vor fi reluate n continuare sub o form| mai tehnic|. S-a spus c| acest proces de proiectare a bazei de date conform acestor reguli poart| denumirea de normalizare. Codd a enunat ase nivele de normalizare, n continuare se vor prezenta primele trei, acestea fiind cele care afecteaz| esenial deciziile de proiectare a bazei de date: Prima Form| Normal| (1NF); A Doua Form| Normal| (2NF); A Treia Form| Normal| (3NF).

Normalizarea datelor

Pt. cumparare viziteaza:

Relaii muli la muli Dou| tabele au o relaie muli la muli cnd pentru fiecare rnd din primul tabel pot fi mai multe rnduri n al doilea i pentru fiecare rnd n cel de al doilea tabel, pot fi mai multe rnduri n primul tabel. Majoritatea SGBDR nu permit modelarea direct| a relaiilor MM, aa este i Access-ul. Pentru a modela aceast| relaie ntre dou| tabele, este nevoie de un al treilea tabel, numit tabel de leg|tur|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Relaii unu la muli Este cea mai comun| relaie i apare cnd un tabel are zero, una sau mai multe rnduri corespunz|toare n cel|lalt tabel, dar pentru fiecare nregistrare din cel de al doilea tabel exist| exact un singur rnd n primul tabel. Aceste relaii mai sunt numite i copil-p|rinte.

http://www.east.utcluj.ro/mb/mep/antal

Relaii unu la unu Dou| tabele sunt n relaie unu la unu, dac| pentru fiecare rnd dintr-un tabel, exist| cel mult unul, n cel|lalt tabel al relaiei. n practic| relaiile unu la unu sunt rare, o astfel de relaie se va nate, n general, pentru a ocoli unele neajunsuri ale software-ului SGBDR i ca o necesitate a unei situaii din lumea real|. n Access, o relaie 11, se poate nate din motive de securitate ale unor cmpuri dintr-un tabel sau din cauz| c| num|rul de coloane este limitat la cel mult 255.

NU COPIA !.

Tabelul TContacte nu este n 1NF:

Tabelul TContacte1 este n 1NF, dar nu este n 2NF:

sau suna la:

Prima Form| Normal| 1NF spune c| toate coloanele unui tabel trebuie s| conin| valori atomice. Adic|, fiecare cmp poate conine numai o valoare de un singur tip, respectiv listele de valori i grupurile de date repetitive sunt interzise. Bazele de date "flat" stocheaz| datele ignornd aceast| regul| motiv pentru care c|utarea n ele poate deveni greoaie uneori.

0264-401667

51

Introducere n Microsoft Access: Tabele - cursul 3

Pt. cumparare viziteaza:

A Doua Form| Normal| Un tabel care este pus n 1NF se zice c| este n 2NF dac| toate cmpurile care nu sunt chei sunt total dependente de cheia primar|. Cu alte cuvinte tabelul trebuie s| stocheze date legate numai de o singur| entitate, iar acea entitate trebuie s| fie complet descris| de cheia ei primar|. Dac| consider|m o cheie primar| compus| din cmpurile: IDContact, IDInfoContact i Info Contact, se observ| c| Nume Contact nu este dependent| de cmpurile IDInfoContact i Info Contact ale cheii primare. Pentru c| este dependent| numai de cmpul IDContact din cheia primar|, tabelul nu este n 2NF. Pentru a-l pune n 2NF, se pune toat| informaia legat| de contact ntr-un tabel nou, TContacte1, i vom stabili o relaie de tipul 1M ntre cele dou| tabele. Cele dou| tabele puse n 2NF sunt prezentate n continuare.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

A Treia Form| Normal| Cele dou| tabele sunt n 2NF, dar nu i n 3NF. Un tabel este n 3NF dac| este n 2NF i toate cmpurile necheie sunt mutual independente. Un exemplu bun de astfel de dependen| este un cmp calculat. Dependene care nu rezult| n urma calculelor pot, de asemenea, s| existe ntre cmpurile unui tabel. n tabelul TContacte1 se stocheaz| cmpurile IDInfoContact i Tip

0264-401667

NU COPIA !.

sau suna la:

52

Introducere n Microsoft Access: Tabele - cursul 3

http://www.east.utcluj.ro/mb/mep/antal

Contact. Observai c| atunci cnd se cunoate valoarea lui IDInfoContact se cunoate automat i valoarea lui Tip Contact, din acest motiv tabelul nu este n 3NF. Pentru a ajunge la 3NF tabelul TContacte1 trebuie spart n dou| tabele, TContacte1 i TTipContact, ntre care din nou va exista o relaie 1M creat| pe baza cmpului IDInfoContact.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Uneori, cnd se realizeaz| vizualizarea datelor dintr-o foaie de date, dorim s| vedem nregistr|rile, din alte tabele, care sunt n relaie cu cele ale tabeului curent. ncepnd cu

Subfoi de date (subdatasheets)

0264-401667

NU COPIA !.

sau suna la:

53

Introducere n Microsoft Access: Tabele - cursul 3

Cnd se face clic pe semnul + al unui rnd, nregistr|rile asociate din subfoia de date sunt afiate.

http://www.east.utcluj.ro/mb/mep/antal

Access 2000, n modul foaie de date, exist| posibilitatea vizualiz|rii ierahice a datelor. Subfoile de date afiate pot fi selectate manual n momentul proiec|rii tabelului sau pot fi determinate automat n baza relaiilor create ntre tabele. n cazul n care exist| o relaie, ntre tabelul curent i un alt tabel din baza de date, Access va afia o coloan| n stnga foii de date cu un + pentru fiecare rnd.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Subfoaia de date care se afieaz| se definete n modul proiectare al tabelului, fiind o proprietate a tabelului. Pentru afiarea propriet|ilor n mod proiectare selectai din View pe Properties; propietatea care controleaz| afiarea foii de date este Subdatasheet Name. Implicit, aceasta are valoarea Auto caz n care numele subfoii de date afiate se face pe baza relaiilor create n baza de date. n locul lui Auto, dac| se face clic pe proprietate n dreapta apare o s|geat| n jos. Dac| se face clic pe aceasta poate selecta din list| un alt tabel care s| fie afiat la deschiderea subfoii de date. Implicit subfoile de date nu sunt expandate, proprietatea Subdatasheet Expanded avnd valoare No. Dac| aceasta este setat| la Yes, odat| cu deschiderea tabelului n modul foaie de date, vor fi deschise i subfoile de date. Proprietaile Link Child Fields, Link Master Child se folosesc pentru legarea tabelului principal (Master) cu cel al subfoii de date (Child) n vederea afi|rii ei atunci cnd Access nu poate deduce care sunt cmpurile celor dou| tabele pe baza c|rora se face leg|tura ntre ele. Probleme de acest fel apar cnd cmpuri pe baza c|roa Access face automat aceast| leg|tura sunt redenumite.

Reguli de integritate

Modelul relaional definete mai multe reguli, care nu sunt parte a formelor normale, dar sunt

0264-401667

NU COPIA !.

sau suna la:

54

Introducere n Microsoft Access: Tabele - cursul 3

necesare n orice baz| de date relaionale. Exist| dou| tipuri de reguli de integritate: generale i specifice bazei de date. Reguli de integritate generale Modelul relaional specific| dou| tipuri integrit|i generale - care se aplic| la toate bazele de date: integritate de entitate i integritate referenial|. Integritatea de entitate spune c| o cheie primar| nu poate conine valori Null (inexistente). Integritatea referenial| spune c| o baz| de date nu are voie s| conin| chei str|ine care nu au o cheie primar| corespondent|. Aceasta implic|: un rnd nu se poate ad|uga unui tabel cu o cheie str|in|, numai dac| valoarea referit| exist| n tabelul respectiv; dac| o valoare ntr-un tabel care este referit printr-o cheie str|in| se modific| sau ntreaga nregistrare este tears|, rndurile corespunz|toare din tabelul cu cheia str|in| nu trebuie s| r|mn| orfane. Pe baza definiiilor din modelul relaional, trei opiuni sunt disponibile cnd o cheie primar| i schimb| valoarea sau rndul care o conine este ters: Disallow: modificarea este strict interzis|; Cascade: pentru actualiz|ri, modificarea este propagat| n cascad| la toate tabelele dependente. La tergere, rndurile din toate tabelele dependente vor fi terse i ele; Nullify: pentru tergere, cheile str|ine dependente vor primi valoarea Null. Toate aceste opiuni se specific| n Access din fereastra de dialog Relationships, care se selecteaz| din meniul Relationships cu opiune Edit Relationship.... Opiunea devine activ| numai dac| dup| deschiderea ferestrei Relationships se va selecta o relaie prin clic pe linia ce leag| cele dou| chei.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Reguli de integritate specifice bazei de date Toate regulile de integritate care nu sunt de entitate sau refereniale se grupeaz| sub termenul specific bazei de date sau specific unei afaceri. Acest tip de regul| este specific| fiec|rei baze de date n parte i vine din regulile procesului care s-a modelat. Aceste reguli sunt la fel de

0264-401667

NU COPIA !.

sau suna la:

55

Introducere n Microsoft Access: Tabele - cursul 3

importante ca i cele discutate pn| acum, ele opresc stocarea unor date false n baz|.

Partea dificil| este proiectarea bazei de date, crearea fiind mult mai simpl|. Pentru unele aplicaii standard se poate folosi un Generator pentru a crea toate tabelele dup| care se poate trece la introducerea datelor n noile tabele. Uneori, dei aplicaia este standard dorim s| facem anumite modific|ri. Microsoft-ul a presupus c| toate |rile din lume folosesc aceleai compartiment|ri geografice, aceleai formate pentru telefoane, acelai sistem pentru codurile potale etc.

Pentru a crea o 7 de date baza

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Indiferent dac| aplicaia se creeaz| f|r| Generator sau cu ajutorul acestuia, trebuie nelese noiunile de tipuri de date, tabel i proprietate de cmp. De asemenea, trebuie st|pnite noiunile de cheie primar| i index. Acestea sunt probabil cele mai dificile aspecte legate de crearea i ntreinerea unei baze de date. din meniul File selectai New Database sau ap|sai Ctrl+N sau efectuai clic pe simbolul grafic New Database din bara de instrumente standard (Standard toolbar).

Pentru a crea o 7 de date baza folosind Generatorul

efectuai clic pe simbolul grafic New din fereastra aplicaiei Access, aceasta va duce la afiarea cutiei de dialog New de forma:

http://www.east.utcluj.ro/mb/mep/antal

Crearea unei baze de date

Pt. cumparare viziteaza:

selectai simbolul grafic Blank Database din interiorul cutiei General ; efectuai clic dublu pe simbolul Blank Database i cutia de dialog File New Database va fi afiat| sub forma:

0264-401667

NU COPIA !.

sau suna la:

56

Introducere n Microsoft Access: Tabele - cursul 3

Pt. cumparare viziteaza:

clic pe butonul OK.

clic pe unul din butoanele de opiuni n colul din stnga-jos al cutiei de dialog, putei selecta Business sau Personal;

Ad|ugarea de cmpuri folosind Generatorul de Tabele (Table Wizard)

0264-401667

introducei un nume de fiier (File name), iar dac| e cazul, comutai pe un alt director (Folder) pentru stocarea noii baze de date; apoi efectuai clic pe butonul Create, iar ecranul se va modifica ca n figura al|turat|, afind fereastra principal| a noii baze de date Access; numele de curs3, pe care l-am dat bazei de date se observ| n colul strnga sus; n fereastra bazei de date (Database Window) efectuai clic pe butonul Tables; apoi efectuai clic pe butonul New. n cutia de dialog New Table selectai opiunea Table Wizard din list|:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

sau suna la:

57

Introducere n Microsoft Access: Tabele - cursul 3

clic pe butonul de forma table;

pentru a ad|uga cmpul n lista Fields in my new

n figura care urmeaz| am selectat bazele de date cu caracter personal, prin butonul de opiune

Redenumirea unui cmp folosind Generatorul de Tabele

selectai cmpul pe care dorii s|-l redenumii din lista Fields in my new database; clic pe butonul Rename Field din cutia de dialog iar pe ecran se afieaz| cutia de dialog:

introducei noul nume n acest cmp apoi ap|sai butonul OK; dup| ce ai ad|ugat toate cmpurile (AddressID - AdreseID, FirstName Prenume, LastName - Nume, SpouseName - Nume sotie, Address Adresa, City - Oras, Postal Code - Cod postal, Country -Tara) efectuai clic pe butonul Next, atunci se va afia urm|toarea pagin| a Generatorului de

0264-401667

NU COPIA !.

Personal, iar din lista afiat|, baza de date Addresses, care, fiind prima, se va selecta automat. Apoi cmpul FirstName a fost ad|ugat. cnd se adaug| un cmp, articolul selectat din lista Sample Fields dispare automat i apare n lista Fields in my new database. Pentru a ad|uga noi articole putei s| efectuai clic dublu pe articolul dorit;

http://www.east.utcluj.ro/mb/mep/antal

selectai un tabel din lista Sample Tables; selectai un cmp pe care dorii s|-l ad|ugai prin clic pe numele cmpului n lista Sample Fields;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

58

Introducere n Microsoft Access: Tabele - cursul 3

Pt. cumparare viziteaza:

Dac| ai selectat opiunea implicit| pentru introducerea datelor direct n tabel, ecranul va fi de forma:

0264-401667

NU COPIA !.

sau suna la:

n condiii normale vei l|sa Generatorul s| selecteze o cheie primar|, dar dac| dorii putei s| o facei dumneavoastr|; clic pe butonul Next pentru a trece la urm|toarea pagin| a Generatorului; ultima pagin| a Generatorului este afiat|. aici se poate accepta opiunea implicit| pentru trecerea direct la introducrea datelor n tabelul tocmai creat sau exist| opiunea modific|rii proiectului de tabel (table design) sau se pot introduce date n tabel pe baza unui formular pe care Generatorul l va crea automat; dup| selectarea opiunii dorite se apas| butonul Finish.

http://www.east.utcluj.ro/mb/mep/antal

Tabele; n cutia de text (text box) What do you want to name your table? introducei numele sub care se va salva tabelul;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

59

Introducere n Microsoft Access: Tabele - cursul 3

Dac| ai fi optat pentru introducerea datelor n tabel prin formularul creat de Generator, ecranul ar fi fost ceva de genul:

Crearea unui tabel f|r| Generator


n Database Window clic pe butonul Table; clic pe butonul New; n cutia de dialog New Table, selectai Design View apoi clic pe butonul OK.

Pentru a crea un tabel fara Generator

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

tabelul va fi vizualizat n mod proiectare dup| cum urmeaz|;

introducei numele de cmp dorit n celula nc| vid| aflat| imediat sub Field Name;

0264-401667

NU COPIA !.

sau suna la:

60

Introducere n Microsoft Access: Tabele - cursul 3

n acest caz tipul selectat este Text. Dac|, de exemplu, n cmp dorii s| stocai valori numerice, tipul selectat ar fi fost Number; ap|sai tasta Tab pentru a trece la celula urm|toare;
Descrierea -iei semnificat cmpului

acesta este un cmp opional al c|rui coninut explic| funcia cmpului n baza de date i care va fi folosit mai trziu n tabelele bazei;

Ada 7 ugarea de noi cmpuri

ap|sai tasta Tab i vei putea ad|uga noi cmpuri, tipuri de date i descrieri n tabel; clic pe simbolul grafic Close n colul dreapta sus al ferestrei de proiectare al tabelului iar cnd vedei cutia de dialog care ntreb| dac| dorii s| salvai datele, clic pe butonul Yes;

Salvarea noului tabel

http://www.east.utcluj.ro/mb/mep/antal

de exemplu, ai putea introduce Nume, apoi ap|sai tasta Tab pentru a trece la urm|toarea celul|; Aceast| celul| se numete Tipul de Dat| (Data Type). Ea permite controlul tipului de dat| care va fi stocat n acest cmp. Clic pe s|geata n jos pentru a afia lista tuturor opiunilor posibile;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

acum trebuie s| specificai numele tabelului;

introducei numele dorit (Nume si virsta), apoi clic pe butonul OK; Access-ul i va oferi suportul pentru definirea unei chei primare;

0264-401667

NU COPIA !.

sau suna la:

61

Introducere n Microsoft Access: Tabele - cursul 3

Pt. cumparare viziteaza:

clic pe butonul Yes pentru a crea o cheie primar|; n acest caz Access-ul va ad|uga un nou cmp n tabel cu numele ID i de tipul AutoNumber care va aciona pe post de identificator unic al unei nregistr|ri din tabel. Acest cmp poate fi folositor, dar este mai normal ca noi s| decidem care cmp sau combinaie va identifica unic o nregistrare din tabel i s| l facem cheie primar| nainte de salvarea tabelului; n acest moment vei vedea tabelul stocat ca un articol din lista Tables al bazei de date (vezi figura urm|toare).

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Exist| multe tipuri de date. La vizualizarea cmpurilor din baza de date n mod proiectare se pot vedea sub forma unei liste toate tipurile de date disponibile. Text permite stocarea caracterelor alfanumerice sau a oric|ror alte caractere;

Definirea tipurilor de cmpuri ale unui tabel

Memo

la fel, permite stocarea de caractere alfanumerice, ns| spre deosebire de tipul Text unde lungimea este fixat|, aici lungimea cmpului este variabil| de la o nregistrare la alta. n practic| acest tip de dat| se folosete pentru comentarii, note sau explicaii ale c|ror lungime este nedeterminat|; cmpurile de acest tip pot stoca numai valori numerice care pot fi ntregi sau reale. Diferitele tipuri de numere sunt detaliate n tabelul care urmeaz|:

Number

0264-401667

NU COPIA !.

sau suna la:

62

Introducere n Microsoft Access: Tabele - cursul 3

Denumire tip
Byte Integer Long Integer valori reale Single Double

Domeniu de valori
[0, 255] [-32768, 32767]

Precizie n zecimale

Spaiu de stocare
1 octet 2 octei 4 octei 4 octei 8 octei

http://www.east.utcluj.ro/mb/mep/antal

valori ntregi

fa 7 ra 7 fa 7 ra 7 fa 7 ra 7 7 15

[-2147483648, 21474836647] [-3.4x1038, 3.4x1038 ]

Date/Time

tip folosit pentru stocarea de date sau ore. Exist| o varietate de formate ale datei i timpului n care valorile de acest tip pot fi specificate; tip folosit pentru dolari, lire, lei etc.;

Currency

Yes/No

un tip de dat| logic. Se folosete pentru stocarea de valori Adev|rat/Fals, Da/Nu, Activ/Inactiv etc.;

OLE Object OLE nseamn| Object Linking and Embeeding. Aceste obiecte sunt desene, grafice, sunete etc. create cu alte aplicaii i care sunt stocate n cmpurile unui tabel Access. Cnd un cmp legat (linked field) este remprosp|tat din interiorul Access-ului sau al aplicaiei originale, modific|rile sunt valabile n ambele aplicaii, dac| obiectul este numai inclus (embeed) remprosp|tarea se face numai n aplicaia n care s-au f|cut modific|rile;

Pt. cumparare viziteaza:

AutoNumber o valoare numeric| ce pleac| de la 1 i este incrementat| automat pentru fiecare nregistrare nou|. Se folosete deseori ca tip pentru cheile primare;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

[-1787x10308, 1787x10308,]

NU COPIA !.

HyperLink

tip pentru stocarea de hiperleg|turii URL (adrese Internet);

LookUp Wizard

permite crearea unui cmp prin care utilizatorul poate selecta o valoare dintr-un tabel diferit sau dintr-o list| de valori.

Dup| ce ai decis asupra tipului de dat| pentru fiecare cmp, trebuie parcurse i propriet|ile asociate tipului. Num|rul i natura lor este dependent| de tip, iar n unele cazuri, efectund clic n partea din dreapta proprietaii va ap|rea o s|geat| n jos sau un Constructor de Expresii (Expression Builder). Clic pe s|geata n jos din dreapta va duce la afiarea unei liste de posibilit|i. Field Size Definete lungimea cmpului de text. Pentru un cmp numeric exist| 5 posibilit|i. n partea dreapt| se va afia un mesaj de ajutor cu privire la proprietatea curent|. Pentru cazul n care cmpul va fi asociat (joined) cu unul de tipul contor (AutoNumber) ntr-o relaie de tipul unu-la-muli este obligatorie selectarea tipului Long Integer;

Propriet|ile cmpurilor

0264-401667

sau suna la:

63

Introducere n Microsoft Access: Tabele - cursul 3

Format

controleaz| forma de afiare a datelor i numerelor. Exist| un set de formate predefinite care se pot selecta dintr-o list|;

Input Mask asigur| un ablon - o masc| - pentru introducerea datelor. Pentru anumite tipuri de date se poate folosi un Generator de M|ti de Intrare (Input Mask Wizard); Caption text care va fi afiat ca denumire a cmpului n capetele de tabele, etichete de pe formulare sau n antetele de rapoarte; o valoare ce se insereaz| automat n cmp la crearea nregistr|rii; pentru tipurile numerice este setat| automat la 0. Utilizatorul poate introduce oricnd o alt| valoare n locul acesteia;

Default Value

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Validation Rule

o expresie care controleaz| modul n care noile date sunt introduse n tabel; un text care se afieaz| dac| regula de validare (Validation Rule) a datelor este nc|lcat|;

Validation Text

Required

dac| are valoarea Yes o dat| trebuie obligatoriu introdus| n acest cmp;

Allow Zero Length se aplic| numai pentru cmpurile de tipul Text, Memo i Hyperlink. Permite stocarea valorii de ir cu lungimea zero (zero-length string) n cmp (valoarea se scrie n limbajul de programare al Access-ului ca o secven| de dou| ghilimele""). Aceasta este diferit| de valoarea Null pe care un cmp "o are" dac| nu s-a introdus nimic nc| n el; Indexed ajut| la creterea vitezei n c|ut|ri. Dac| credei c| vei efectua c|ut|ri repetate pe baza unui cmp trebuie s|-l indexai. Valorile sunt Nu (No), Da (Yes -

0264-401667

NU COPIA !.

sau suna la:

64

Introducere n Microsoft Access: Tabele - cursul 3

Proprietatea Masc| de Intrare

Lansarea Generatorului 7s -tilor de Intrare Ma

n modul proiectare al tabelului, selectai cmpul pentru care dorii s| definii o masc| de intrare. Din propriet|i selectai Input Mask apoi clic pe butonul cu cele 3 puncte de la cap|tul liniei m|tii de intrare; Clic aici

aceasta va afia Generatorul M|tilor de Intrare (vezi figura ala 7 turata 7 );

Editarea Ma 7s -tii de Intrare

pentru editarea m|tii afiate de Generatorul M|tilor de Intrare selectai masca dorit| apoi clic pe Edit List. Realizai modific|rile dorite (eventual utiliznd sistemul de ajutor interactiv "on-line help") apoi activai i salvai modific|rile f|cute; clic pe meniul Help al Access-ului; selectai Contents and Index; selectai butonul Index; tastai InputMask Property; clic pe butonul Display.

Pentru detalii ale codurilor din 7 masca

Stabilirea cheii primare

Cheia primar| identific| unic fiecare nregistrare din tabel i asigur| urm|toarele avantaje: un index este creat automat pentru cheia primar|. Aceasta crete viteza n citirea i sortarea datelor. Deseori cheia primar| este folosit| n stabilirea relaiilor;

0264-401667

selectai formatul dorit apoi clic pe Next, parcurgei intruciunile ecranelor intermediare, iar cnd ajungei la cel final clic pe Finish;

Pt. cumparare viziteaza:

Dup| cum am mai spus asigur| un ablon pentru introducerea datelor. Este posibil ca Generatorul M|tilor de Intrare (Input Mask Wizard) s| nu fie instalat !

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Duplicates OK) i Da (Yes - No Duplicates). Cheile primare sunt automat indexate i cu proprietatea Indexed setat| pe No Duplicates. Un index este o secvent -a 7 de perechi (cheie, poantor), stocat| ntr-un fiier intern special, n care fiecare poantor poanteaza 7 o nregistrare din baza de date care cont -ine valoarea cheii stocata 7 ntr-un cmp particular. Indexul este sortat pe baza valorilor din 7 utarea rapida 7 a unei valori particulare de cheie (de cheie pentru a permite ca exemplu, folosind algoritmul de ca 7 utarea binara 7 ). Index-ul este folosit "inversat" n sensul ca 7 valoarea cheii este utilizat| pentru ga 7 sirea nregistra 7 rii n loc sa fie invers. Pentru bazele de date n care nregistra 7 rile pot fi sortate pe baza a mai multor cmpuri se pot crea indexuri multiple care snt sortate pe -ine goluri pentru a permite baza valorilor acelor chei. Un index poate cont ada 7 ugarea de noi intra 7 ri pentru sortarea corecta 7 fa 7 ra 7 a realiza deplasarea intra 7 rilor care nu snt n pozit -ia corecta 7 . Fereastra de indexuri se poate vizualiza, individual, pentru fiecare tabel n modul proiectare din View, Indexes.

NU COPIA !.

sau suna la:

65

Introducere n Microsoft Access: Tabele - cursul 3

Setarea unui cmp -i Cheie ca s Primara

vizualiznd Tabelul n mod proiectare (Table Design View), selectai cmpul care va fi f|cut cheie primar|. Efectuai fie clic undeva pe cmp fie pe selectorul din stnga numelui de cmp; selectai Primary Key din meniul Edit sau clic pe simbolul grafic Primary Key din bara de instrumente

standard.
Setarea mai multor cmpuri ca -i Cheie Primara s

vizualiznd Tabelul n mod proiectare (Table Design View), selectai primul cmp prin selectorul din stnga lui. inei ap|sat| tasta Ctrl i clic pe fiecare selector al cmpurilor dorite; selectai Primary Key din meniul Edit sau clic pe pictograma Primary Key din bara de instrumente

standard.

Salvarea unui Tabel

Pentru salvarea unui tabel

selectai Save din meniul File; dac| salvai tabelul pentru prima oar|, tastai un nume n cutia Table Name, apoi ap|sai Enter i clic pe OK. Access-ul d| automat un nume tabelului la prima lui salvare. Deoarece acest nume nu descrie semnificativ tabelul, el trebuie ntotdeauna schimbat ntr-unul mai sugestiv.

Dac| nc| tabelul nu este salvat, Access va ntreba dac| dorii s|-l salvai. Toate foile de date i formularele au o ultim| nregistrare vid| indicat| de un asterisc (*) pe coloana selectorului de nregistr|ri (n stnga primului cmp). n cazul unui tabel nou aceasta este singura nregistrare. poziionai cursorul n primul cmp al nregistr|rii vide; introducei o valoare apoi ap|sai Tab pentru trecerea la cmpul urm|tor, repetai procedura

Pentru ada 7 ugarea 7 ri de nregistra unui tabel n mod foaie de date

pentru toate cmpurile; cnd ai ajuns la ultimul cmp, ap|sarea tastei Tab mut| cursorul pe primul cmp al unei noi nregistr|ri vide. Access va

0264-401667

NU COPIA !.

sau suna la:

Dup| ce ai terminat etapa de proiectare a tabelului se pot ad|uga nregistr|ri n acesta prin comutarea pe vizualizarea n modul foaie de date (Datasheet View).

Ad|ugarea de nregistr|ri unui Tabel vizualizat n modul foaie de date

http://www.east.utcluj.ro/mb/mep/antal

nregistr|rile ntr-un formular sau foaie de date (Datasheet) sunt afiate n ordinea valorilor cheii primare; nu este posibil| dublarea unor nregistr|ri fiind garantat| unicitatea lor. O cheie primar| se formeaz| din unul sau mai multe cmpuri.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

66

Introducere n Microsoft Access: Tabele - cursul 3

salva nregistrarea curent| numai la deplasarea pe urm|toarea nregistrare, care acum este din nou una vid|.

Utilizarea formatelor
Proprietatea Format, dupa 7 cum am mai spus, permite afis - area datelor sub o forma 7 diferita 7 de secvent -a originala 7 de caractere folosita 7 la introducerea datelor. Formatele variaza 7 n funct -ie de tipurile de date folosite. Unele tipuri de date au formate predefinite, altele, nu au si trebuie definite de utilizator, iar n unele cazuri sunt posibile ambele situat -ii. Formatele nu act -ioneaza 7 asupra modului de stocare a datelor n tabele ci influent -eaza 7 numai modul de afis - are al lor.

Simbolurile din tabelul urma 7 tor sunt folosite de Access pentru la formatarea datelor stocate n cpuri de tipurile Text s - i Memo. Simbol @ & < >

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Formatarea pentru tipurile Text si Memo

-ie Semnificat

Caracter sau spat -iu care trebuie specificat.

Fort -eaza 7 afis - area tuturor caracterelor cu litere mici. Fort -eaza 7 afis - area tuturor caracterelor cu litere mari.

Formatarea pentru tipurile Number s - i Currency

Pentru tipurile Number s - i Currency exista 7 mai multe formate predefinite si o mult -ime de simboluri care pot fi folosite pentru crearea unor formate definite de utilizator. Tabelul care urmeaza 7 prezinta 7 cteva dintre formatele predefinite: Tip format

7 r introdus Numa

Numa 7 r afis - at

Definit -ia formatului

General Currency

123456.789 123456.789

123456.7 $123,456.78

######.# $###,##0.00

0264-401667

NU COPIA !.

sau suna la:

Simbolurile @, & act -ioneaza 7 la nivel de caracter, n timp ce simbolurile <, > act -ioneaza 7 asupra ntregului s - ir de caractere ale cmpului. Daca 7 vret -i sa 7 fit -i siguri ca 7 un nume va fi ntotdeauna afis - at cu majuscule introducet -i n proprietatea Format simbolul >. Daca 7 dorit -i sa 7 stocat -i un numa 7 r de telefon, folosind un cmp de tipul Text, fa 7 ra 7 sa 7 introducet -i liniut -e pentru gruparea cifrelor din numa 7 r, n proprietatea Format vet -i scrie @@-@@-@@. Daca 7 de la 7 vet -i introduce 123456, cnd va 7 pozit -ionat -i pe o alta 7 nregistrare, valoarea se va afis -a taststura sub forma 12-34-56. O problema 7 ar putea fi numerele de telefoane care nu au fost introduse n 7 sect -iuni separate prin ;. Prima se foloses - te baza de date. Proprietatea Format poate avea doua pentru formatarea cmpului cnd acesta cont -ine text, a doua este formatul n cazul n care nu s-a introdus o valoare n cmp (lipsa valorii se poate reprezenta printr-un sir de lungime zero sau printr-o valoarea speciala 7 null). Daca 7 pentru proprietatea Format folosim pe @@-@@-@@[Blue];"neintrodus"[Red], atunci cnd introducem o valoare un cmp ea va fi - ata 7 cu liniut -e n culoarea albastra 7 , iar daca 7 valoarea lipses - te se va scrie n locul ei afis neintrodus n ros - u.

Pt. cumparare viziteaza:

Caracter ca nu este obligatoriu de specificat.

http://www.east.utcluj.ro/mb/mep/antal

67

Introducere n Microsoft Access: Tabele - cursul 3

Fixed Standard Percent Scientific

123456.789 123456.789 123456.789 123456.789

123456.78

######.## ###,###.## ###.##% ###E+00

78.9%

1.22%+05

Toate formatele de mai sus sunt implicite si bazate pe setarea proprieta 7tii Decimal place pe Auto.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

-iuni: (1) pentru valori pozitive; (2) Formatele numerice personalizate pot avea patru sect pentru valori negative; (3) pentru valori zero; (4) pentru valori nespecificate. De asemenea, se poate specifica o culoare care sa 7 ajute la observarea unori valori critice. Daca 7 scriem un formatul #.##0.00[Green]; (-3,330.00)[Red];"zero";"neintrodus", valorile pozitive se vor afis -a n verde, cele negative n ros - u, cele 0 se vor afis - a ca si zero, iar cele nespecificate ca si neintrodus. Cteva dintre simbolurile care pot fi utilizate ntr-un cmp personalizat sunt: punctul (.), virgula (,), 0 (cifra 7 care va fi afis - ata 7 ca si 0 ntotdeauna, daca 7 nu cumva are o alta 7 valoare), $ (pentru afis - area semnului $), % (pentru afis - area semnului %).
Posibilit|ile de formatare ale tipurilor Date/Time sunt cele mai multe existnd apte opiuni predefinite: ! General Date: (Implicit) Valoarea afiat| depinde de cea introdus|; introducerea numai a unei date duce la afiarea numai a datei, la fel i n cazul unei ore; formatul standard pentru dat| i timp este: 2/17/01 10:19 PM; ! Long Date: Afiarea se face conform set|rilor din Windows Regional Settings, Seciunea Long Date; un exemplu ar fi: Wednesday, February 10, 2001; ! Mediu Date: 17-Feb-01; ! Short date: Conform set|rilor din Windows Regional Settings, Seciunea Short Date; 2/17/01; ! Long Time: Conform set|rilor din Windows Regional Settings, Seciunea Time; 10:19:17 PM; ! Medium Time: 10:19 PM; ! Short Time: 22:19. De asemenea, exist| o multitudine de set|ri ale formatelor de dat| i timp care pot fi f|cute de utilizator, cteva dintre acestea fiind: : separator de timp (luat din Windows Regional Settings, Seciunea Separator); / separator de dat|; c la fel cu formatul General Date; d, dd ziua din lun| - unul sau dou| cifrea (1-31); ddd primele trei litere ale s|pt|mnii (Sun-Sat); dddd numele complet al zilei (Sunday - Saturday); ddddd la fel cu Short Date; dddddd la fel cu Long Date; w ziua din s|pt|mn| (1-7); ww s|pt|mna din an (1-53); m, mm luna anului - una sau dou| cifre (1-12);

Formatarea pentru tipurile Date/Time

http://www.east.utcluj.ro/mb/mep/antal

123,456.78

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

68

Introducere n Microsoft Access: Tabele - cursul 3

Formatarea n cazul tipului Yes/No

Access stocheaz| datele de tipul Yes/No ntr-un fel mai puin ateptat. Valoarea Yes este stocat| ca i -1, iar cea No ca i 0. n lipsa unor set|ri de formatare acestea sunt valorile care trebuie introduse i afiate. Cu ajutorul formatelor valorile de tipul Yes/No pot fi aduse la o form| mai uor de recunoscut i de manipulat. Cele trei formate predefinite sunt: ! Yes/No: (Implicit) afieaz| -1 pentru Yes i 0 pentru No; ! True/False: stocheaz| -1 pentru True i 0 pentru False; ! On/Off: stocheaz| -1 pentru On i 0 pentru Off.

Masca de intrare permite creterea controlului cu privire la caracterele introduse ntr-un cmp. Ea permite definirea unui ablon care va fi folosit pentru introducerea datelor n cmp. ablonul va fi afiat pe ecran nainte ca utilizatorul s| introduc| datele n cmp. Coninutul ablonului nu se salveaz| n baza de date mpreun| cu datele introduse. De exemplu, dac| s-a definit o proprietate masc| de intrare de forma 999-(9)99-000.000 parantezele rotunde i linia se afieaz| pe poziiile corespunz|toare la introducerea datelor, iar caracterul underscore,

Utilizarea m|tilor de intrare

0264-401667

NU COPIA !.

sau suna la:

Formatele definite de utilizator n cazul tipului Yes/No pot conine pn| la trei seciuni. Prima nu are efect asupra datelor i trebuie s| fie obligatoriu caracterul ;. Cea de a doua se folosete pentru afiarea valorii On sau True (stocat| n baz| ca i -1). Seciunea a treia se folsete pentru specificarea afi|rii lui Off sau False (stocat| n baz| ca i 0). De exemplu, dac| dorin s| afiam Da n verde i Nu n rou vom folosi formatul definit astfel: ;"Da"[Green]; "Nu"[Red]. Exist| cteva probleme n acest caz cu afiarea datelor pe baza formatului definit mai sus. n primul rnd, dac| se definete un format, pentru acest tip, de c|tre utilizator trebuie modificat| i proprietatea Display Control din Lookup de la Check Box la Text Box pentru a vedea datele conform noului format. n al doilea rnd, dei datele vor fi afiate conform formatului, atunci cnd datele vor fi introduse de la tastatur| trebuie folosite valorile 1 i 0.

Pt. cumparare viziteaza:

Dei utilizatorul poate specifica i alte formate pentru tipurile Date/Time, acestea vor fi afiate pe baza set|rilor din fereastra de dialog Regional Setting Properties din Windows Control Panel. Alte caractere pot fi ad|ugat formatelor, dar acestea trebuie incluse ntre ghilimele, de exemplu, formatul mmm dd","yyyy va afia, February 07, 2001 dac| se introduce data 02/07/01.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

mmm mmmm q y yy yyyy h, hh n, nn s, ss ttttt AM/PM sau A/P am/pm sau a/p AMPM

primele trei caractere ale lunii (Jan-dec); numele complet al lunii (January-December); data afiat| din 4 trimestre (1-4); num|rul zilei din an (1-365); ultimele dou| cifre ale anului (01-99); anul complet (0100-9999); ora - una sau dou| cifre (0-23); minutul - una sau dou| cifre (0-59); secunda - una sau dou| cifre (0-59); la fel cu Long Time; ora se afieaz| cu 12 ore urmat| de AM/PM; ora se afieaz| cu 12 ore urmat| de am/pm; ora se afieaz| cu 12 ore urmat| de specificaiile din Windows Regional Settings, Seciunea forenoon/afternoon.

69

Introducere n Microsoft Access: Tabele - cursul 3

0 9 # L ? A a & C > <

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Caracter

Efect

Cifr| ntre 0 i 9 obligatoriu de introdus; nu se pot folosi semnele - i + Cifr| sau spaiu opional|; nu se pot folosi semnele - i +

Cifr| sau spaiu opional|; caracterele neintroduse sunt comverite n spaii; se pot folosi semnele - i +

Liter| ntre A i Z opional|

Cifr| sau liter| obligatoriu de introdus Cifr| sau liter| opional|

Orice caracter sau spaiu obligatoriu de introdus

Orice caracter sau spaiu opional

Convertete toate literele care urmeaz| la majuscule

Convertete toate literele care urmeaz| n litere mici

NU COPIA !.

Afieaz| caracterul care urmeaz| f|r| a-l interpreta, ci doar ca i un caracter obinuit specificator de poziie, separator de mii, dat| i timp determinai de set|rile din seciunea Regional Setting a lui Control Panel

.,:;-/

Validarea datelor const| n limitarea valorilor care pot fi introduse de la tastatur| ntr-un cmp. Ea poate fi automat|, de exemplu, se poate verifica dac| ntr-un cmp numeric a fost introdus un text sau dac| data introdus| este valid| sau poate fi definit| de utilizator pe baza unei expresii care se evalueaz| pentru fiecare dat| nou| care se introduce n cmp. Expresia care este testat| pentru acceptarea valorii introduse se scrie n Validation Rule, iar mesajul de eroare care va fi afiat dac| regula de validare este nc|lcat| se scrie n Validation Text. De exemplu, dac| tipul cmpului este Date/Time i dorim ca data care se introduce s| fie n domeniul 1/1/1998 i 1/1/2000, regula de validare va fi scris| sub forma between #1/1/98#

Validarea datelor

0264-401667

sau suna la:

Foreaz| completarea m|tii de intrare de la dreapta la stnga cnd caracterele din partea stng| sunt opionale; implicit completarea se face de la stnga la dreapta

Pt. cumparare viziteaza:

Liter| ntre A i Z obligatoriu de introdus

http://www.east.utcluj.ro/mb/mep/antal

adic| _, va fi afiat n locul fiec|rui 9 sau 0. Access va ad|uga automat cte un caracter \ n faa specificatorilor de poziie (placeholders ) irul format devenind 999"-("9\)99\-000.000. Masca de intrare poate conine cel mult trei seciuni separate prin caracterul ;. Prima definiete masca n sine. Cea de a doua spune lui Access dac| s| stocheze (dac| ia valoarea 0) sau nu (dac| ia valoarea 1 sau este vid) i masca mpreun| cu datele n baza de date. Cea de a treia seciune specific| caracterul pe care Access l folosete pentru afiarea spaiilor n masca de intrare. Implicit, acesta este caracterul underscore. Dac| dorii s| folosii spaiul acesta trebuie curpins ntre ghilimele. Cteva dintre caracterele care se pot folosi n masca de intrare sunt descrise n continuare:

70

Introducere n Microsoft Access: Tabele - cursul 3

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

n expresia care se scrie pentru a testa valoarea introdusa 7 poate sa 7 participe s - i numele cmpului care se testeaza 7 , simplu, sau ca s - i paramtru al unei funct -ii, dar nu pot sa 7 participe nume ale altor cmpuri din tabel. De exemplu, n cazul unui cmp de tipul Date/Time, cu numele DataNast, este corect sa 7 scrie o expresie pentru validare de forma Year([DataNast]) < 1977. Aceasta va permite introducerea unor date de nas - tere care au anul mai mic dect 1977.

http://www.east.utcluj.ro/mb/mep/antal

and #1/1/00#. Dac| se dorete limitarea datei la cea crent| se va scrie expresia <Date( ). Dac| avem un cmp numeric, un exemplu de regul| de validare ar fi <100, caz n care vor fi acceptate numai valori numerice mai mici ca 100. Expresia de validare poate conine orice funcii scrise de noi sau dintre cele ale limbajului VBA. De exemplu, dac| avem un cmp cu numele Sex de tipul Text n care dorim s| stoc|m sexul folosind iniialele: B - b|rb|tesc, F femeiesc, N - nespecificat, regula de validare va fi InStr("BFN",[Sex])>0

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

71

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Obiectivele cursului 4

! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

cum se editeaz| (Edit) nregistr|rile unui tabel;

cum se selecteaz| (Select) nregistr|rile dintr-un tabel; cum se selecteaz| o nregistrare folosind selectorul de nregistr|ri (Record cum se selecteaz| un grup de nregistr|ri adiacente; cum se selecteaz| toate nregistr|rile dintr-o foaie de date; cum se va selecta o coloan|; cum se selecteaz| coloane adiacente; cum se terge (Delete) o nregistrare; cum se terge coninutul unui cmp;

Selector);

cum se nlocuiete (Replace) coninutul unui cmp; cum se vizualizeaz| i selecteaz| opiunile unei foi de date (Datashheet); cum se redefinete ordinea coloanelor n tabele; cum se nghea| (Freeze) coloanele; cum se ascunde (Hide) sau se vizualizeaz| (Un-hide) o coloan|; cum se mut| (Move) sau copiaz| (Copy) cmpurile sau nregistr|rile; cum se previzualizeaz| (Preview) o foaie de date.

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

72

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Majoritatea operaiilor de editare necesit| selectarea datelor n prealabil. Pentru a nlocui ntreg coninutul unui cmp, acesta trebuie selectat, apoi se introduce de la tastatur| noul coninut. Poriunea gri din stnga fiec|rei nregistr|ri, ntr-o foaie de date, se numete selector de nregistrare (record selector). Urm|toarele simboluri specific| starea unei nregistr|ri: nregistrarea curent|; nregistrarea este selectat|; nregistrarea se editeaz|;

Selectarea nregistr|rilor cu mouse-ul


Pentru a selecta o nregistare folosind selectorul 7 ri de nregistra

clic pe selectorul de nregistrare; nregistarea selectat| mai jos

are culoarea de fond neagr|.

Pt. cumparare viziteaza:

ultima nregistrare (este vid|).

http://www.east.utcluj.ro/mb/mep/antal

Exist| o varietate mare de posibilit|i de editare a nregistr|rilor att pentru formulare (Form) ct i pentru foi de date (Datasheet).

Editarea nregistr|rilor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru a selecta un grup de 7 ri nregistra adiacente

nregistrare care dorim s| fac| parte din grup sau clic pe selectorul primei nregistr|ri din grup i n timp ce se ine ap|sat| tasta Shift, clic pe ultima nregistrare din grup. clic pe selectorul de nregistr|ri aflat la intersecia dintre selectorii de nregistr|ri i coloane;

Pentru a selecta 7 rile toate nregistra unui tabel

sau suna la:

clic pe selectorul primei nregistr|ri, se ine ap|sat butonul stng al mouse-ului i se deplaseaz| cursorul pn| pe ultima

0264-401667

NU COPIA !.

73

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Selectarea nregistr|rilor folosind tastatura


Pentru select -ia 7 ri unei nregistra

Pentru select -ia tuturor 7 rilor nregistra

ap|sai Ctrl+A sau din meniul Edit (Alt+E) selectai Select All Records (A).

Selectarea cmpurilor cu mouse-ul


Selectarea unui cmp prin tragere (dragging)

clic la un cap|t al cmpului i cu butonul stng al mouse-ului ap|sat se deplaseaz| cursorul pn| pe cel|lat cap|t; deplasarea mouse-ului cu butonul ap|sat va fi numit| n continuare tragere (dragging). se plaseaz| mouse-ul la nceputul cmpului. Cursorul i va modifica forma ntr-un semn plus "+"; clic pe butonul stng al mouse-ului. se va selecta un prim cmp cu ajutorul mouse-ului; innd tasta Shift ap|sat| ne folosim de tastele pentru deplasarea cursorului (6, 7, 8, 9) pentru a selecta cmpuri n sensul indicat de respectivele taste.

Selectarea unui cmp prin cursor

Selectarea unor cmpuri adiacente

Selectarea coloanelor cu mouse-ul


Pentru a selecta o 7 cu coloana mouse-ul

deplasai cursorul mouse-ului pe selectorul de coloan|. Forma

http://www.east.utcluj.ro/mb/mep/antal

poziionai-v| folosind tastele 6, 7 pe nregistrarea dorit|; selectai din meniul Edit (Alt+E); selectai Select Record (L).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

cursorului se va schimba ntr-o s|geat| neagr| care arat| n jos; clic pe butonul din stnga.

Pentru a selecta coloane adiacente

clic pe selectorul de coloan| apoi cursorul se trage peste selectorii coloanelor adiacente sau clic pe selectorul de coloan| i innd ap|sat| tasta Shift, clic pe ultima coloan| care va fi selectat|.

0264-401667

NU COPIA !.

sau suna la:

74

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Selectarea cmpurilor i coloanelor de la tastatur|

Pentru a selecta un cmp cu F2

clic undeva n cmp apoi ap|sai F2.

Pentru a deselecta un cmp

ap|sai F2.

Pentru a selecta un cmp folosind tastele "cu 7" sageata

selecteaz| un cmp cu F2; inei ap|sat| tasta Shift; ap|sarea uneia dintre cel 4 taste "cu s|gei" va produce selectarea cmpului adiacent aflat n sensul s|geii.

tergerea nregistr|rilor i a cmpurilor

Pentru a s -terge o nregistrare

Pentru a s -terge -inutul unui cont cmp

selectai cmpul apoi ap|sai tasta Delete.

Pentru a nlocui -inutul unui cont cmp

selectai coninutul cmpului apoi introducei noul coninut.

Vizualizarea i setarea valorilor implicite pentru foile de date

La crearea unui tabel dimensiunile coloanelor i liniilor corespund unor set|ri implicite. De

0264-401667

NU COPIA !.

sau suna la:

selectai nregistrarea; ap|sai tasta Delete; dac| dorii efectuarea tergerii clic pe butonul Yes, pentru anularea tergerii lansate clic pe No.

http://www.east.utcluj.ro/mb/mep/antal

Selectarea unui cmp cu tasta Tab

ap|sai tasta Tab pentru a selecta cmpul din dreapta sau Shift+Tab pentru a selecta cmpul din stnga celui curent.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

75

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

exemplu, este o l|ime implicit| pentru coloane i o n|lime standard a rndurilor.


Pentru a vizualiza 7 rile curente seta

Uneori este de dorit modificarea ordinii n care Access-ul afieaz| coloanele unui tabel.

Redefinirea ordinii de afiare a coloanelor unui tabel

Mutarea unor coloane

selectai coloana i eliberai butonul stng al mouse-ului; clic pe selectorul de cmp i tragei coloana pe noua poziie. Pe m|sur| ce deplasai coloana, o bar| mai groas| vertical| indic| poziia curent| a coloanei care este n curs de mutare; eliberai butonul stng al mouse-ului.

Avnd dat un tabel uneori se dorete reordonarea modului n care cmpurile sunt aranjate. comutai pe vizualizarea n mod proiectare (Design View) i Pentru a reordona i cmpul care dorii s| fie repoziionat prin clic pe selectorul de selecta cmpurile din cmp (butonul din stnga numelui de cmp); tabel tragei i l|sai cmpul pe noua lui poziie; o bar| orizontal| groas| va ar|ta poziia curent| a cmpului care se mut|;

Reordonarea cmpurilor unui tabel

0264-401667

validai f|cnd clic pe butonul OK.

http://www.east.utcluj.ro/mb/mep/antal

clic pe meniul Tools, selectai Options apoi Datasheet i urm|toarea fereastr| de dialog va fi afiat|: modificai oricare dintre aceste opiuni implicite apoi

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

76

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

cnd eliberai butonul stng al mouse-ului, cmpul se g|sete n noua lui poziie; salvai tabelul pentru a face modific|rile permanente.

Modificarea l|imii (width) unei coloane i n|limii (height) unui rnd


Unele din metodele pe care le prezint sunt precise, altele sunt f|cute pentru lucrul "dup| ochi" dar mai rapide n cazul cnd dorim numai s| vedem pentru cteva momente ceva ce nu ncape de tot n cmp datorit| l|imii prea mici.

Modificarea la 7t -imii 7 coloanei la "ocupa tot" (best fit)

plasai cursorul mouse-ului peste linia din drepta selectorului ;

de cmp, cursorul va lua forma

clic dublu pe butonul din stnga mouse-ului i automat l|imea coloanei se va modifica astfel nct toate datele din ea s| fie complet selectai coloanele; clic pe butonul din dreapta al mouse-ului avnd cursorul de

vizibile

mouse poziionat pe oricare din cmpurile selectate i selectai Column Width; pe ecran apare fereastra de dialog: clic pe Best Fit.

Modificarea 7 lt -imii (height) na rndului

plasai cursorul de mouse peste linia de separaie dintre doi selectori de rnd; tragei linia pe noua poziie, n|limile tuturor rndurilor se vor modifica automat la cea specificat| sau

0264-401667

NU COPIA !.

sau suna la:

Modificarea la 7t -imii unui grup de coloane adiacente 7 tot" la "ocupa

Pt. cumparare viziteaza:

Modificarea la 7t -imii unui grup de coloane adiacente

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Modificarea la 7t -imii (width) unei coloane

plasai cursorul mouse-ului pe linia din dreapta numelui cmpului; cursorul va lua forma unei bare verticale scurte intersectat| de o s|geat| cu dou| capete; tragei marginea coloanei, n stnga sau dreapta, la dimensiunea pe care o dorii.

selectai coloanele; tragei marginea coloanei celei mai din dreapta n noua poziie sau clic pe butonul din drepta al mouse-ului, selectai Column Width din lista ap|rut| i introducei noua l|ime.

http://www.east.utcluj.ro/mb/mep/antal

77

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

clic pe butonul drept al mouse-ului, selectai Row Height din lista ap|rut| i apoi introducei noua n|lime pentru toate rndurile.

Este posibil| ascunderea unor coloane din tabel n cazul n care acestea nu prezint| interes pentru o anumit| vizualizare particular| de date ale foii de date.
Pentru ascunderea unei coloane

Ascunderea (hiding) i vizualizarea (un-hiding) coloanelor


selectai coloana pe care dorii s| o ascundei; clic pe Format din meniul Access-ului apoi selectai Hide Columns; coloana va disp|rea din vizualizare f|r| ns| ca datele din aceasta s| fie afectate.

Pentru a vizualiza 7 o coloana

clic pe Format din meniul aplicaiei Access selectai UnHide Columns i urm|toarea fereastr| de dialog va ap|rea pe ecran: n fereastra de mai sus cmpul cu numele Category Name este ascuns. Pentru a deveni din nou vizibil activai cutia de selectare (check box) din dreapta numelui cmpului apoi clic pe Close.

Pentru nghet -area (freeze) unei coloane

selectai coloana sau coloanele; selectai Freeze Columns din Format sau clic pe butonul drept al mouse-ului ntr-o coloan| i selectai Freeze Column. selectai Unfreeze All Columns din Format.

Pentru -area dezghet (unfreeze) unei coloane

Formatarea celulelor din foaia de date

sau suna la:

n mod frecvent tabelele au un num|r mai mare de cmpuri dect cele care se pot afia pe ecran. n acest caz cmpurile din stnga se pierd din vedere la deplasarea spre dreapta prin cmpurile tabelului. nghearea coloanelor cauzeaz| p|strarea pe ecran ale acestora n timp ce ne deplas|m prin celelalte coloane de tabel.

0264-401667

NU COPIA !.

nghearea (freeze) coloanelor

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

78

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Efectele format|rii cuprind liniile pentru delimitarea celulelor (grid lines) pe vertical| i pe orizontal|, culoarea lor i a fondului pe care se scrie, efecte de prezentare ale celulelor de

tipul: plat (Flat), ieit (Raisen) i ngropat (Sunken), stilul de caractere folosit la afiarea datelor. din Format selectai Cell. Pe ecran se va afia fereastra de dialog Cell Effects; n seciunea Gridlines Shown a cutiei de dialog selectai, pentru afiare sau deselectai, pentru ascunderea liniilor, pe Horizontal sau Vertical. n seciunea Gridline Color clic pe s|geata n jos i selectai din list| culoarea dorit|.

Pentru setarea 7 rilor unei formata celule

Pentru afis -area (display) sau ascunderea (hide) liniilor (gridlines)

Pentru a selecta unul dintre efectele: Flat, Raisen sau Sunken

n seciunea Cell Effect a cutie de dialog Cell Effects selectai unul din cuvintele Flat, Raisen sau Sunken.

Pentru a modifica culoarea fondului (background)

n seciunea Background Color clic pe s|geata n jos apoi selectai din list| culoarea dorit|.

0264-401667

Pentru modificarea culorilor (Color) liniilor

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

79

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

foii de date

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Deja trebuie s| fii familiarizai cu procedura selecteaz| apoi manipuleaz|. Datele care se doresc copiate (copy), mutate (move) sau terse (cut) n fereastra de lucru temporar| (Clipboard) se vor selecta n prealabil, apoi de aici se pot dirija c|tre noua destinaie. La fel ca n cazurile anterioare, att tastatura ct i mouse-ul pot fi folosite n acest scop. Denumire n romn| T|iere Din meniu Edit Din Toolbar De la tastatur| Ctrl+X Aciune

Copierea (copy), mutarea (move) cmpurilor i nregistr|rilor

Cut

Copiere

Copy

Ctrl+C

Inserare

Paste

Ctrl+V

Pentru a copia date dintr-un cmp n Clipboard

selectai datele care urmeaz| a fi copiate sau mutate; selectai Copy din meniul Edit sau clic pe simbolul grafic Copy din Toolbar sau ap|sai Ctrl+C. selectai datele care vor fi mutate; selectai Cut din Edit sau clic pe simbolul grafic Cut din Toolbar sau ap|sai Ctrl+X.

Pentru a ta 7 ia date din cmp n Clipboard Pentru a insera -inutul din cont Clipboard ntr-un cmp

clic n cmpul destinaie unde dorii ca datele s| fie inserate; selectai Paste din meniul Edit sau clic pe simbolul grafic Paste din Toolbar sau

0264-401667

NU COPIA !.

sau suna la:

La copierea sau mutarea ntregistr|rilor ntr-o foaie de date, Access-ul insereaz| datele n noile cmpuri n ordinea de apariie a coloanelor n foaia de date f|r| a ine cont de numele cmpurilor. n cazul formularelor, pentru aceleai operaii, Access-ul va ine cont de numele de cmpuri ordinea de aranjare a cmpurilor fiind nesemnificativ|.

http://www.east.utcluj.ro/mb/mep/antal

din Format selectai Fonts, fereastra de dialog cu numele Fonts se va afia; selectai tipul (Font), stilul (Font style), m|rimea (Size) Pentru modificarea caracterelor dorite din listele corespunz|toare; tipului de ap|sai butonul OK. caractere (Fonts) a

Mut| datele selectate n Clipboard.

Pt. cumparare viziteaza:

Copiaz| datele selectate n Clipboard. Insereaz| datele din Clipboard n noua zon| selectat| ncepnd din poziia curent| a cursorului.

80

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Operaiile de editare descrise pn| acum se pot aplica i pentru obiectele bazei de date. Fie lista obiectelor de tipul tabel selectat| (procedurile care urmeaz| se pot aplica pentru toate

Manipularea obiectelor tabel din fereastra bazei de date

obiectele bazei de date dei vor fi exemplificate, pentru nceput, folosind obiecte de tipul tabel).
Pentru a copia un tabel

Toate obiectele bazei (Tabele, Formulare, Interog|ri, Rapoarte, Macrouri, Module) de date pot fi copiate, redenumite sau terse. selectai obiectul care va fi redenumit; selectai Rename din Edit; introducei un nou nume pentru obiect (acesta se scrie peste numele celui existent); ap|sai tasta Enter.

Pentru a redenumi un obiect

0264-401667

NU COPIA !.

sau suna la:

selectai tabelul care va fi copiat; selectai Copy din meniul Edit sau clic pe simbolul grafic Copy din Toolbar; selectai Paste din meniul Edit sau clic pe simbolul grafic Paste din Toolbar; n fereastra de dialog introducei numele noului tabel; selectai una din opiunile de inserare. Structure Only pentru a prelua numai structura tabelului f|r| date, Structure and Data pentru a prelua structura i datele din tabelul original, Append Data to Existing Table pentru a ad|uga datele unui tabel deja existent.

http://www.east.utcluj.ro/mb/mep/antal

ap|sai Ctrl+V. Este posibil| copierea coninutului a mai multor cmpuri sau coloane prin Clipboard aplicnd aceleai operaii care au fost descrise deja; ceea ce difer| este numai selecia.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

81 Pentru a s -terge un obiect

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

Tot ceea ce se realizeaz| n Access se poate tip|ri la imprimant|. n continuare se prezint| numai previzualizarea (preview) i tip|rirea (print) foilor de date pentru tabele, interog|ri, formulare i ale definiiilor de obiecte. Cele care urmeaz| presupun c| obiectul n cauz| este fie deschis, fie este selectat din fereastra bazei de date (Database Window).
Vizualizarea unui formular sau foi de date

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

7 : Dac| ncercai tergerea unui tabel care particip| ntr-o relaie cu alte tabele, Access-ul Nota va afia un mesaj de eroare iar ergerea nu se va realiza.

Tip|rirea (Printing)

selectai Print Preview din meniul File sau clic pe simbolul grafic Print Preview din Toolbar.

paginile urm|toare.
Pentru a vedea o -iune marita 7a sect foii de date

Prima pagin| a foii de date sau a formularului se va afia pe ecran. Folosii butoanele de navigaie din colul stnga jos pentru a trece la

Not|: Se poate folosi butonul Zoom din bara de instrumente Zoom pentru a m|ri sau micora zone din ecran. dac| se dorete tip|rire parial|, selectai nregistr|rile

Pentru tipa 7 rirea unui formular sau foi de date

care se vor tip|ri;

0264-401667

NU COPIA !.

sau suna la:

deschidei foaia de date din Print Preview; poziionai cursorul de mouse pe suprafaa foii de date. Acesta va lua forma unei lupe; clic pe butonul stng al mouse-ului. Access-ul va m|ri zona selectat|; clic pe butonul mouse-ului pentru a vedea din nou ntreaga pagin|.

http://www.east.utcluj.ro/mb/mep/antal

selectai obiectul care va fi ters; selectai Delete din meniul Edit. Fereastra de dialog care apare pe ecran se prezint| n continuare: clic pe Yes pentru a terge obiectul sau pe No pentru abandonarea tergerii.

Pt. cumparare viziteaza:

82

Introducere n Microsoft Access: Operatii cu nregistrari - cursul 4

http://www.east.utcluj.ro/mb/mep/antal

selectai Print din meniul File sau clic pe simbolul grafic Print, acesta va afia fereastra de dialog Print: selectai domeniul paginilor (Print Range) i num|rul de copii (Copies). Dac| dorii s| tip|rii numai anumite pagini consecutive selectai Pages From i introducei num|rul primei i ultimei pagini ale domeniului; clic pe OK.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

83

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Obiectivele cursului 5

! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

cum se ncepe o c|utare; cum se g|sete o valoare specific|; cum se nlocuiete o valoare specific|;

cum se caut| folosind caractere generice (Wildcard);

cum se sorteaz| nregistr|rile prin formulare; cum se terge filtrul; cum se deschide fereastra relaiilor;

cum se filtreaz| nregistr|rile unui tabel vizualizat ca foaie de date; nelege conceptele care stau n spatele relaiilor (Relationships); cum se adaug| tabele n fereastra relaiilor; cum se creeaz| o relaie ntre dou| tabele;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se ordoneaz| nregistr|rile unui tabel;

ce este conceptul de Integritate Referenial| (Referential Integrity); cum se vizualizeaz| toate relaiile din baz|; cum se vizualizeaz| o relaie particular|; cum se terg relaiile;

cum se terge un tabel din fereastra relaiilor.

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

84

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

nceperea ca 7 uta 7 rii

clic n cmpul pe baza c|ruia dorii s| facei c|utarea; selectai Find din meniul Edit sau

clic pe pictograma Find din bara de instrumente standard sau clic Ctrl+F, pe ecran va apare fereastra de dialog Find in field: 'numele cmpului';

introducei valoarea pe care dorii s| o g|sii n cutia cu numele Find What:. Exist| un num|r de opiuni care se pot folosi pentru a rafina c|utarea dup| cum urmeaz|:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

G|sirea informaiilor ntr-un tabel mic nu este o problem|, dar ce facem cnd tabelul vizualizat n mod foaie de date trece cu mult de dimensiunea ecranului. Access-ul are cteva instrumente care simplific| aceast| sarcin|. Dou| dintre acestea sunt Caut| (Find) i nlocuiete (Replace). n cursurile care urmeaz| vei avea o metod| mult mai puternic| de c|utare i nlocuire a datelor numit| interogare (query). Dac| operaia pe care dorii s| o realizai se repet| i este complicat|, probabil vei dori s| scriei o interogare. G|sirea informaiilor este mai rapid| dac| cmpul pe baza c|ruia se caut| este cheia primar| sau are un index. Se poate folosi meniul Edit, bara cu instrumente sau tastele "scurt|tur|" pentru g|sirea informaiilor. nainte de aceasta trebuie s| facei clic n cmpul pe baza c|ruia dorii s| facei c|utarea.

C|utarea

C|utarea i nlocuirea informaiei

Pt. cumparare viziteaza:

NU COPIA !.

Denumire opiune Match

Semnificaie

Implicit este selectat| Match Whole Field, adic| ntregul coninut al cmpului trebuie s| fie identic cu valoarea pentru a fi g|sit. Celelalte opiuni sunt: Any Part of Field - orice parte din cmp i Start of Field - nceputul cmpului.

Search

Permite selectarea sensului de c|utare n raport cu poziia curent| a cursorului: Up - n sus, Down - n jos, All - peste tot. Dac| este activat| se ine cont de literele mari i mici.

Match Case

Search Fields as Formated

Se va selecta dac| dorii s| c|utai informaia dup| cum este formatat| i nu dup| cum este stocat| n tabel.

Search Only Current Field

Dac| nu suntei siguri de cmpul n care se afl| informaia sau dac| valoarea poate s| apar| n mai multe cmpuri inactivai aceast| opiune.

0264-401667

sau suna la:

85

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Denumire Semn de ntrebare

Scriere ?

Orice caracter aflat pe aceeai poziie cu ?. De exemplu, pentru ma?a se va g|si: mama, mana

Asterisc

Orice grup de caractere pe aceeai poziie cu *. De exemplu, pentru m*a se va g|si: mama, mana, maneta, mecanica etc. Se folosete pentru o singur| cifr| de pe aceeai poziie

Hash

Paranteze drepte

[]

Cuprind unul sau mai multe caractere cnd dorim ca n c|utare s|-l includem pe unul dintre acestea. De exemplu, pentru I[oa]n se va g|si Ion, Ian Se folosete pentru specificarea unui domeniu de caractere, domeniul trebuie specificat n ordinea cresc|toare De exemplu, pentru I[a-o]n se va g|si Ian, Ien, ..., Ion.

Minus

De exemplu, pentru I[!oa]n se vor g|si Ien etc. dar nu se vor g|si Ion, Ian

Caracterele generice sunt f|cute pentru lucrul cu cmpuri de tipul Text, uneori pot fi folosite cu succes i pentru c|utarea n cmpuri de tip Date dar asta numai dac| nu ai f|cut modific|ri n set|rile de regiune (Reginal Settings) pentru tipul respectiv.

G|sirea unei valori specifice

Ga 7 sirea unei valori specifice

tastai valoarea de g|sit n cutia Find What;

Nota 7 : la ad|ugarea unei nregistr|ri ntr-un tabel, dac| ntr-un cmp nu s-a introdus nimic, Access-ul va stoca valoarea null n cmp. Dac| s-a introdus un spaiu sau "", Access-ul consider| data introdus| un ir de lungime zero. Dac| dorii g|sirea unei valori null introducei textul Null, dac| dorii g|sirea unui ir de lungime zero introducei "".

0264-401667

NU COPIA !.

sau suna la:

Semn de exclamare

Specific| toate caracterele cu excepia celor din paranteze.

Pt. cumparare viziteaza:

De exemplu, 19#7 corespunde numerelor ntregi 1907, 1917, 1927, 1937, ... 1997.

http://www.east.utcluj.ro/mb/mep/antal

Dac| nu suntei siguri asupra tuturor caracterelor din valoarea pe care dorii s| o c|utai - ceea ce introducei n cutia Find What - putei folosi n locul acestora caractere generice dup| cum urmeaz|: Semnificaie

Caractere generice (Wildcards)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

86

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

clic pe butonul Find First sau ap|sai tasta Enter;

Dac| valoarea exist| Access-ul o va g|si i se va poziiona pe prima apariie a ei afind-o distinct. clic pe butonul Replace;

Dac| nregistrarea nu este cea dorit|, clic pe Find Next pentru a g|si urm|toarea apariie. clic pe Close pentru a nchide fereastra de dialog "Replace in field: ...:". clic n cmpul pentru care se face c|utarea; selectai Replace din meniul Edit sau ap|sai Ctrl+H; n cutia Find What tastai textul care va fi nlocuit; n cutia Replace With tastai noul text; clic pe butonul Replace All.

Pentru a ga 7 si s -i nlocui toate -iile ale unei aparit valori

0264-401667

NU COPIA !.

sau suna la:

n cutia Find What tastai valoarea care se va nlocui, mai sus Metasoft; n cutia Replace With introducei noua valoare, mai sus Metasoft SRL; modificai opiunile dup| cum este cazul apoi clic pe butonul Find Next;

Pt. cumparare viziteaza:

Ga 7 sirea s -i nlocuirea unei valori

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Ga 7 sirea 7 toarei aparit -ii urma -i valoare de aceeas dupa nchiderea cutiei de dialog

clic pe Find Next pentru a g|si urm|toarea apariie cu aceeai valoare sau clic pe Close pentru a termina c|utarea; ap|sai Shift+F4 sau clic pe pictograma Find Next (dac| este disponibil) din bara de instrumente standard.

nlocuirea unor valori din cmpuri


clic pe cmpul pentru care se face c|utarea; selectai Replace din meniul Edit sau ap|sai Ctrl+H, pe ecran apare fereastra de dialog:

http://www.east.utcluj.ro/mb/mep/antal

Access-ul se mut| pe prima nregistrare al c|rei cmp are valoarea c|utat| i afieaz| cmpul distinct (fondul devine negru, caracterele albe pentru a scoate n eviden| prima soluia a c|ut|rii);

87

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Nota 7 : dac| nu este activat| opiunea Match Whole Field aciunea poate deveni periculoas|!

Dac| dorii ca nregistr|rile s| fie afiate ntr-o ordine diferit| selectai Quick Sort. De exemplu, este posibil ca angajaii s| fie afiai n ordinea descresc|toare a salariilor i la un moment dat s| dorii s|-i afiai n ordinea alfabetic|. ntr-un tabel vizualizat ca foaie de date, sortarea se poate realiza pe baza mai multor cmpuri adiacente, ntr-un formular ns| suntem limitai la sortarea pe baza unui singur cmp. Dac| ai selectat mai multe cmpuri, cel mai din stnga este cmpul primar de sortare. Din acest motiv uneori este necesar| rearanjarea ordinii coloanelor nainte de sortare.
Sortarea nregistrarilor unui tabel n modul de vizualizare foaie de date

selectai coloana sau coloanele pe baza c|rora dorii s| sortai nregistr|rile; selectai Sort din meniul Records apoi selectai Sort Ascending sau Sort Descending din submeniu dup| cum dorii sortarea cresc|toare sau descresc|toare sau clic pe simbolurile grafice Sort Ascending sau Sort

Descending

din bara de instrumente standard.

Nota 7 : la sortarea cresc|toare nregistr|rile sunt aranjate ncepnd cu valoarea cea mai mic|, de exemplu, cifre de la 0 la 9 i litere de la A la Z. La sortarea descresc|toare este invers.
Sortarea nregistrarilor pe baza mai multor cmpuri

selectai cmpurile pe baza c|rora se va face sortarea; clic pe unul dintre simbolurile grafice Sort Ascending sau Sort Descending din bara de instrumente standard.

http://www.east.utcluj.ro/mb/mep/antal

Sortarea nregistr|rilor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

tabelul iniial

sau suna la:

coloanele selectate

rezultate

Filtrele sunt interog|ri simple care se aplic| numai tabelelor sau formularelor deschise. Se utilizeaz| pentru alterarea temporar| a modului de vizualizare a datelor dintr-un tabel pentru:

Ce este un filtru?

0264-401667

NU COPIA !.

88

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Filtrarea nregistr|rilor prin selecie


Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

deschidei tabelul; clic n celula care conine articolul pe baza c|ruia se va face filtrarea; - aici m-am poziionat pe o celul| a cmpului Company Name care conine valoarea Alfreds Futterkiste

clic pe pictograma Filter by Selection

din bara de instrumente. - au fost afiate numai nregistr|rile care conin valoarea Alfreds Futterkiste n cmpul Company Name

clic pe pictograma Remove Filter

clic pe pictograma Filter by Form

, tabelul va lua o form| nou|:

sau suna la:

deschidei un tabel al bazei de date, iniial tabelul va fi de forma:

0264-401667

NU COPIA !.

Filtrarea nregistr|rilor prin formulare

http://www.east.utcluj.ro/mb/mep/antal

filtrarea nregistr|rilor nedorite; ngustarea grupului de date asupra c|rora ne focaliz|m, de exemplu, dintr-o perioad| de ani putem p|stra numai unul singur; vizualizarea nregistr|rilor care ndeplinesc criterii complexe; sortarea nregistr|rilor pe baza coninutului ctorva cmpuri; sortarea cmpurilor n sensuri diferite (unul ascendent, altul descendent).

Pt. cumparare viziteaza:

89

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Observai s|geata n jos din cmpul Company Name.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dei exemplul prezentat de mine este simplu, acest mod de filtrare poate produce rezultate mult mai complexe. De ce? Observai n figura care urmeaz|, n colul din dreapta jos, cteva butoane care conin cuvintele Or.

Dup| ce ai completat o valoare de filtrare apare un Or nou. Se vor filtra valori care satisfac prima condiie sau (Or) a doua i aa mai departe. ntre valorile de cmpuri ale aceleiai linii de filtrare se face i logic. Astfel, prima condiie se poate citi astfel: selecteaz| acele rnduri din tabel care au n cmpul Company Name valoarea "Alfreds Futterkiste" i (And) n cmpul Contact Name valoarea "Ofelia Chiorean". La clic pe noul Or valorile setate se terg automat i se poate defini o nou| configuraie de valori de cmpuri pentru care se face filtrarea.

http://www.east.utcluj.ro/mb/mep/antal

clic pe s|geat| n jos i o list| se va desf|ura, de aici putei selecta o singur| valoare pentru filtrare; n exemplul prezentat eu am selectat Alfreds Futterkiste; clic pe pictograma Apply Filter i numai nregistr|rile care au cmpul Company Name identic cu Alfreds Futterkiste vor fi afiate; clic pe pictograma Remove Filter .

Pt. cumparare viziteaza:

Cu aceste configuraii definite valorile afiate sunt:

nainte de 1970, bazele de date erau un domeniu n care utilizatorii navigau urm|rind poantori (pointers) de la o nregistrare la alta pe nite drumuri fixate, eventual prin plasarea unor "indicatori de stare curent|", care erau folosii n cazul cnd navigatorul se pierdea, n vederea reg|sirii drumului fixat de la care deviase. n 1970, E.F. Codd a propus o paradigm| total

Scurt istoric al bazelor de date relaionale

0264-401667

NU COPIA !.

sau suna la:

90

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Cum am spus n capitolul de proiectare a bazei de date, trebuie determinate tabelele i relaiile dintre acestea mpreun| cu tipul relaiilor care se vor folosi. Dup| ce tabelele au fost create prin procedurile descrise deja, trebuie create relaiile dintre acestea. Pentru aceasta trebuie prima oar| deschis| fereastra relaiilor (Relationship window). Dac| baza de date este proiectat| corect este garantat| unicitatea nregistr|rilor prin cheile primare (primary keys) din tabele. Apoi, aceste chei primare se vor folosi drept chei str|ine (foreign keys) n alte tabele pentru stabilirea relaiilor. Cnd se creeaz| o relaie ntre dou| tabele, tabelul cu cheia primar| se numete tabel primar (primary table) iar tabelul cu cheia str|in| se numete tabel asociat (related table). Tabelul asociat poate avea la rndul lui o cheie primar| care se poate folosi ntr-o alt| relaie n care tabelul va fi primar.

Definirea relaiilor n Access

Pt. cumparare viziteaza:

Proiectele numite System R i Ingres au implementat prototipuri care ar|tau c| modelul relaional se putea folosi pentru manipularea unor cantit|i enorme de date. n loc s| implementeze algebra sau calculul relaional, proiectanii lui System R, au dezvoltat un nou limbaj al bazelor de date, care iniial s-a numit Structured English Query Language sau SEQUEL iar azi, din motive de politic| comercial|, se numete Structured Query Language, adic| SQL. Diferent -a esent -iala 7 dintre SQL s - i alte limbaje consta 7 n faptul ca 7 n SQL instruct -iunile specifica 7 ce operat -ii se vor face cu datele si nu modul cum se realizeaza 7 acestea. Dei SQL-ul a fost dezvoltat de IBM, primul produs comercial bazat pe SQL a fost produs de o companie mic| numit| Relational Software, Inc., n 1979. Produsul s-a numit Oracle, iar numele a fost ulterior adoptat i de companie, care azi a devenit un gigant.

http://www.east.utcluj.ro/mb/mep/antal

nou| de abordare a datelor, unde toate relaiile semnificative dintre date se reprezentau prin valorile datelor i nu prin poantori ascuni sau prin conexiuni. Viziunea lui Codd a permis exprimarea interog|rilor ntr-un format neprocedural adic| independent de structura i algoritmii folosii la implementarea bazei de date - un concept pe care Codd l-a numit independena datelor. Articolul original al lui Codd spunea c| interog|rile despre datele stocate n formatul relaional se puteau exprima fie prin calculul predicatelor de ordinul unu fie prin utilizarea unei colecii de operatori relaionali cum sunt asocierea (join) i proiecia (projection). n articole ulterioare, a dezvoltat aceste dou| abord|ri sub forma a dou| limbaje de acces la bazele de date care au devenit cunoscute sub denumirile calcul relaional i algebra relaional|. Majoritatea muncii din acea perioad| s-a focalizat asupra operatorilor din algebra relaional|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Definiiile relaionale ntre tabelele din baz| vor asigura proiectarea ct mai facil| a obiectelor din baz|. De multe ori rapoartele, formularele sau interog|rile lucreaz| cu date din mai multe tabele. n acest scop Access-ul trebuie s| cunoasc| cum sunt legate tabelele care particip| n aceste obiecte.

Pentru a deschide fereastra relaiilor (Relationship window), deschidei fereastra bazei de din bara de instrumente standard.

Deschiderea ferestrei cu relaii

date (Database window), apoi clic pe pictograma relaiilor

Dac| s-au creat sau modificat deja relaiile din baz|, fereastra se va afia la fel cu ultima ei afiare, astfel se va afia i fereastra de dialog Show Table peste aceasta.

0264-401667

NU COPIA !.

sau suna la:

91

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Ad|ugarea tabelelor n fereastra relaiilor


Ada 7 ugarea folosind fereastra de dialog Show Table

deschidei fereastra relaiilor;

Pt. cumparare viziteaza:

dac| fereastra de dialog Show Table nu este deschis| clic pe pictograma Show Table din bara de instrumente Relationships;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

selectai tabelul care dorii s| fie ad|ugat din lista Table. Folosii tasta Ctrl pentru ad|ugarea mai multor tabele neconsecutive sau tasta Shift pentru ad|ugarea unui grup de tabele consecutive; clic pe butonul Add;

0264-401667

NU COPIA !.

sau suna la:

92

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

clic pe butonul Close.

Pentru a crea o -ie ntre doua 7 relat tabele

tragei numele cmpului din primul tabel peste numele cmpului din al doilea. Dac| unul dintre cmpurile tabelelor este cheie primar| va fi afiat ngroat (bold), vei trage cheia primar| pe cheia secundar| corespunz|toare din al doilea tabel. Tabelul din care se trage cheia se numete tabel primar (primary table); tabelul peste care se plaseaz| cheia se numete tabel asociat (related tabel). Fereastra de dialog a relaiei se va afia sub forma:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Definirea relaiilor

http://www.east.utcluj.ro/mb/mep/antal

Pentru acest exemplu am folosit 3 tabele cu numele: Persoana, Adrese, Telefoane. Cmpurile IDAdresa din Adrese si IDPersoana din Persoana sunt de tipul AutoNumber, IDPersoana din Adrese s - i IDAdresa din Telefoane sunt de tipul Long Integer, Remarci din Adrese este de tipul Memo, celelalte cmpuri sunt de tipul Text. Cheile primare sunt afiate ngroat (IDPersoana n tabelul Persoana s - i IDAdresa n tabelul Adrese) n figur|. Tabelul Telefoane nu are cheie primar|.

Pt. cumparare viziteaza:

clic pe butonul Create. Relaia va fi afiat| sub forma:

0264-401667

NU COPIA !.

sau suna la:

93

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

1. Pentru ad|ugarea unei nregistr|ri n tabelul asociat, tabelul cheii primare trebuie s| conin| o nregistrare a c|rei cheie primar| s| fie identic| cu cheia str|in| corespondent| din tabelul asociat pentru noua nregistrare. De exemplu, pentru ad|ugarea unei nregistr|ri n tabelul Adrese, trebuie s| avem prima oar| n tabelul Persoana o nregistrare a c|rei cheie primar| (IDPersoana) s| fie aceeai cu cheia stra 7 ina 7 din tabelul Adrese (IDPersoana); 2. Nu se poate terge o nregistrare din tabelul primar dac| exist| nregistr|ri corespondente n tabelul asociat. De exemplu, nu se poate terge un nume de persoan| din tabelul Persoana dac| are nregistr|ri stocate n tabelul Adrese, adic| exist| cel puin o nregistrare avnd valoarea stocat| n cmpul IDPersoana aceeai cu una a lui IDPersoana din tabelul Persoana.

http://www.east.utcluj.ro/mb/mep/antal

Dac| o cheie primar| i o cheie str|in| se folosesc pentru legarea a dou| tabele se zice c| lega 7 tura se bucur| de integritate referenial|. Adic| urm|toarele condiii sunt forate:

Integritate Referenial| (Referential Integrity)

Pt. cumparare viziteaza:

n majoritatea cazurilor forarea integrit|ii refereniale este de dorit. Pentru exemplul prezentat, activarea integrit|ii refereniale va shimba forma de afiare a relaiei dup| cum se observ| n figura anterioara 7. Selectarea opiunii "actualizarea cascadat| a cmpurilor legate" (Cascade Update Related Fields) nseamn| c| modificarea cheii primare n una din nregistr|rile tabelului primar va fi remprosp|tat| automat de Access n toate cmpurile legate corespondente.

Actualizarea 7a cascadata cmpurilor legate

S , tergerea 7a cascadata nregistrarilor legate

Selectarea opiunii "tergerea cascadat| a nregistr|rilor legate" (Cascade Delete Related Records) nseamn| c| tergerea nregistr|rii care are cheia primar| duce la tergerea automat| a nregistr|rilor legate corespondente din toate tabelele legate.

0264-401667

NU COPIA !.

sau suna la:

94

Introducere n Microsoft Access: Ca 7 utare, sortare n tabele si intergritatea referent -iala 7 - cursul 5

Ambele opiuni afecteaz| integritatea referenial|, motiv pentru care se vor utiliza cu precauie. Pentru exemplul prezentat, relat -iile finale vor fi cele prezentate n figura care urmeaza 7:

Pt. cumparare viziteaza:

Vizualizarea -iilor tuturor relat

deschidei fereastra relaiilor; selectai Show All din meniul relaiilor sau clic pe pictograma Show All Relationships

Editarea relaiilor

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

din bara de

instrumente Relationships.

Vizualizarea -iilor unui relat singur tabel

deschidei fereastra relaiilor; clic pe Show Direct Relationships din bara de instrumente Relationships sau selectai Show Direct din meniul relaiilor. deschidei fereastra relaiilor; clic pe linia relaiei care leag| cele dou| tabele; ap|sai tasta Delete. deschidei fereastra relaiilor; clic pe tabelul care va fi scos; ap|sai tasta Delete.

S , tergerea unei -ii relat

S , teregerea unui tabel din fereastra -iilor relat

0264-401667

NU COPIA !.

sau suna la:

95

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Obiectivele cursului 6

! ! ! ! ! ! ! ! ! ! ! !

conceptele care stau la baza interog|rilor (Queries); cum se deschide o interogare (Query); cum se creeaz| interog|ri folosind Generatorul de Interog|ri (Query cum se selecteaz| cmpurile care vor participa ntr-o interogare; cum se construiete o interogare n mod proiectare (Design View); cum se construiete o interogare avnd calcule de totale; cum se adaug| nregistr|ri la un tabel folosind o interogare; cum se actualizeaz| datele folosind o interogare; cum se creeaz| un tabel nou pe baza rezultatelor de ieire ale unei

Wizard);

interog|ri;

ce sunt asocierile (join);

ce sunt interoga 7 rile cu parametri s - i cele ncrucis - ate (crosstab); care sunt cele mai importante proprieta 7ti ale interoga 7 rilor.

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

96

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

n principal, interog|rile din Access pot fi grupate n urm|toarele categorii de baz|: ! Select -ie: sunt cele mai populare; permit selectarea de informaii din unul sau mai multe tabele pe baza unor criterii, crearea unei mulimi dinamice pentru afiarea rezultatelor ntr-o foaie de date n scopul vizualiz|rii i analizei; datele din rezultatele afiate pot fi modificate, aceste modific|ri afectnd datele din tabelele originale; ! Totale: sunt o versiune special| de interog|ri de selecie; au posibilitatea de a realiza sume sau de a genera totale (de exemplu, pot num|ra toate nregistr|rile care ndeplinesc un anumit criteriu) ntr-o interogare de selecie; la selectarea acestui tip de interogare Access adaug| un rnd numit Total n fereastra QBE; ! Act -iune: permit crearea unor noi tabele (Make Tables) sau modificarea unor date (delete, update i apend) din tabelele existente. n cazul interog|rilor de selecie toate modific|rile aduse datelor se fac, individual, la nivelul fiec|rei nregistr|ri, n cazul interog|rilor de aciune mai multe nregistr|ri pot fi modificate n timpul unei aciuni individuale; ! ncrucis - ate: genereaz| informaii de sintez|, sub forma unui tabel avnd rndurile i capetele de coloan| bazate pe cmpurile tabelului. Prin definiie, celulele individuale ale mulimii dinamice rezultate sunt de tipul tabelar, adic| se extrag sau se calculeaz|; ! SQL: aceste interog|ri se scriu n limbajul SQL avnd tipurile: Union, Pass-Through i Data Definition; se folosesc pentru manipularea bazelor de date

Tipuri de interog|ri

Pt. cumparare viziteaza:

S| presupunem c| dorii s| tii cum stau angajaii departamentului de vnzare la capitolul de vnz|ri, pentru o anumit| perioad| particular|. Probabil, informaia va trebui extras| din trei tabele: Angajati, Comenzi i Detalii Comenzi. Tabelul Angajai va fi necesar pentru numele vnz|torilor; tabelul Comenzi va conine datele la care s-au efectuat vnz|rile; tabelul Detalii Comenzi va conine sumele ncasate din vnz|ri. Angajai i Comenzi se vor lega prin num|rul de identificare al angajatului; Comenzi i Detalii Comenzi se vor lega pe baza num|rului de comand|. Vom dori delimitarea nregistr|rilor din Comenzi i Detalii Comenzi pentru o perioad| dat|. De asemenea, suntem interesai numai de rezultatele personalului de la vnz|ri care a fost angajat n aceeai perioad|. Ideal ar fi ca rezultatele s| fie puse sub forma unui raport sau, mai sugestiv, sub forma unui grafic. Pna 7 a ajunge la acestea ns|, trebuie ca datele s| fie extrase din tabelele corespunz|toare, respectnd limit|rile impuse. Pentru aceasta se va folosi o interogare.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Interog|rile au mai multe forme i tipuri. Se pot salva n baz|, asemenea unui tabel sau pot fi executate numai n memorie. Pot fi create folosind instruciuni ale limbajului SQL (Structured Query Language) sau prin folosirea unei interfee grafice numit| grila (grid) QBE (Query by Example). O interogare poate prezenta direct datele unui tabel sau poate realiza anumite grup|ri sau calcule cu datele, nainte de afiarea rezultatelor.

http://www.east.utcluj.ro/mb/mep/antal

Un Sistem de Gestiune a Bazelor de Date (SGBD) este folosit, n principal, pentru stocarea i reg|sirea informaiilor. Modelul relaional stocheaz| datele n mai multe tabele distincte - n loc de unul singur uria - dar legate ntre ele, pentru creterea eficienei i evitarea duplic|rii datelor. De multe ori este necesar| g|sirea unor informaii care sunt submulimi ale mulimilor de date stocate n tabele. Ele se prezint|, fie sub forma unei submulimi de cmpuri dintr-un tabel, fie sub forma unei submulimi de nregistr|ri, fie combinat.

Ce sunt interog|rile (Queries)?

0264-401667

NU COPIA !.

sau suna la:

97

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Toate interog|rile au una sau mai multe surse de date, acestea pot fi tabele sau interog|ri. nregistr|rile care rezult| dintr-o interogare sunt afiate ntr-o foaie de date ale c|rei nregistr|ri se numesc dynaset (mulime dinamic| de date). Acestea au acelai aspect cu un tabel deschis n modul foaie de date. Aceast| mulime este dinamic| (uneori, se mai numete virtual|) i nu se stocheaz| n baza de date. La nchiderea interog|rii mulimea dinamic| nceteaz| s| mai existe. Dei mulimea dinamic| nu mai exist|, datele pe baz| c|reia s-a generat r|mn n continuare n tabele. La execuia interog|rii, Access plaseaz| datele rezultate n mulimea dinamic|. La salvarea interog|rii, informaiile nu se salveaz|; numai structura interog|rii este salvat| (sursele de date, cmpurile, ordinea de sortare, limit|rile etc.). Avantajele acestui mod de lucru sunt: # un spaiu mai mic este folosit pentru stocare; # interogarea folosete cea mai actual| variant| a datelor de la ultima ei execuie. La fiecare execuie, interogarea citete datele din sursele de date i recreaz| mulimea dinamic|. ntruct mulimea nu se stocheaz|, o interogare reflect| automat orice modificare

Ce sunt mulimile dinamice (dynaset)?

0264-401667

NU COPIA !.

sau suna la:

Interog|rile ofer| posibilitatea de a vizualiza datele, virtual, n orice mod dorit de utilizator. Majoritatea SGBD-urilor evolueaz| continuu dezvoltnd noi i tot mai puternice instrumente n acest scop. Cteva dintre posibilit|ile oferite de interog|ri Access sunt: ! Selectarea tabelelor: informaiile pot fi obinute dintr-un singur tabel sau din mai multe tabele care sunt legate prin date comune; n ambele cazuri rezultatele sunt prezentate de Access sub forma unei singure foi de date; ! Selectarea cmpurilor: pot fi specificate care cmpuri ale fiec|rui tabel s| fie prezente n mulimea de date dinamic| rezultat|; ! Selectarea nregistra 7 rilor: nregistr|rile care vor fi afiate n mulimea dinamic| pot fi selectate pe baza unor criterii; ! Sortarea nregistra 7 rilor: informaiile afiate n mulimea dinamic| de date pot fi afiate ntr-o ordine specific| (cresc|toare sau descrec|toare); ! Realizarea de calcule: interog|rile pot fi folosite pentru realizarea unor calcule pe baza datelor afiate cum sunt: valoare medie, suma, minim etc.; ! Crearea de tabele: se pot crea noi tabele pe baza datelor dintr-o nregistrar; n acest caz pe baza mulimii dinamice, se va crea un nou tabel; ! Crearea de formulare si rapoarte pe baza unei interoga 7 ri: mulimea dinamic| rezultat| poate fi necesar| pentru realizarea unui formular sau a unui raport; n acest caz, la afiare sau tip|rire informaiile fiind extrase printr-o interogare vor fi actualizate cu datele existente n momentul curent n baza de date; ! Crearea de grafice pe baza unei interoga 7 ri: se poate realiza reprezentarea grafic| a datelor dintr-o interogare care s| fie inclus| ntr-un formular sau raport; ! Folosirea unei interoga 7 ri ca si sursa 7 de date pentru o alta 7 interogare: se pot crea noi interog|ri pe baza unor interog|ri deja existente; ! Modificarea unor tabele: interog|rile Access pot avea ca i surse de date baze de date dBASE, Paradox, Btrieve i Microsoft SQL Server.

Posibilit|ile interog|rilor

http://www.east.utcluj.ro/mb/mep/antal

SQL client/server; ! Topp(n): este un limitator care se poate folosi numai n conjuncie cu celelalte tipuri de interog|ri prezentate; permite specificarea unui procent din num|rul maxim al al nregist|rilor care vor fi afiate de o interogare.

98

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

adus| datelor de la ultima ei execuie n timp real ntr-un mediu multi-utilizator.

deschidei baza de date (pentru exemplul care urmeaz| Northwind); din fereastra bazei de date (Database Window) selectai butonul Query; clic dublu pe interogarea care dorii s| fie deschis|.

Deschiderea unei interog|ri (Query)

Crearea unei interog|ri folosind Generatorul de Interog|ri Simple (Simple Query Wizard)
n fereastra bazei de date, clic pe butonul Queries; clic pe butonul New pentru afiarea cutiei de dialog New Query;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

selectai opiunea Simple Query Wizard, apoi clic pe butonul OK pentru a trece la pagina urm|toare a Generatorului; fereastra de dialog care se va afia va fi de forma:

0264-401667

NU COPIA !.

sau suna la:

99

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

clic pe s|geata n jos a cutiei de tip list| (list box) numit| Tables/Queries pentru a vizualiza toate tabelele i interog|rile ale c|ror cmpuri ar putea fi selectate pentru a participa la interogare; n figura care urmeaz| am selectat tabelul Orders; pentru ad|ugarea unui cmp n interogare selectai din cutia tip list| Available Fileds numele cmpului care va fi ad|ugat, apoi efectuai clic pe s|geata la dreapta ; numele dispare din list| i apare n lista Selected Fields;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

dup| ce ai terminat ad|ugarea tuturor cmpurilor facei clic pe butonul Next i urm|toarea fereastra 7 de dialog va fi afiat|:

0264-401667

NU COPIA !.

sau suna la:

100

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

clic pe butonul Finish pentru terminarea proiectului interog|rii. Rezultatele se vor afia ca n figura urm|toare. Nota 7 : n exemplul prezentat au fost selectate cmpuri dintr-un singur tabel. Prezentarea a avut un rol didactic, dorind s| descriu un principiu prin ea. Dac| dorii, putei selecta cmpuri i din mai multe tabele sau interog|ri, dup| cum dicteaz| necesit|ile pentru extragerea informaiilor dorite.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Access-ul are un num|r mare de Generatoare care ajut| la definirea interog|rilor. Totui, n marea majoritate a cazurilor aceste Generatoare sunt inadecvate pentru interog|ri complexe.

Crearea unei interog|ri f|r| Generator

0264-401667

NU COPIA !.

sau suna la:

101

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Crearea interoga 7 rii "cu mna"

din fereastra obiectelor bazei de date clic pe butonul Queries; clic pe butonul New pentru afiarea listei posibilit|ilor de creare ale unei interog|ri, de aici selectai Design View; clic pe butonul OK;

Pe ecran apare grila interog|rii (Query Grid) peste ea fiind suprapus| fereastra de dialog Show Table care conine lista tabelelor din baz| ce pot participa ntr-o interogare.

http://www.east.utcluj.ro/mb/mep/antal

n acest caz interogarea trebuie creat| "cu mna" folosind vizualizarea n modul proiectare. Acest mod de vizualizare permite specificarea cmpurilor care vor participa la interogare i a criteriilor de selecie specifice acesteia.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

din list| selectai tabelul Customers apoi ap|sai butonul Add; clic pe butonul Close pentru a nchide fereastra de dialog.

Grila interog|rii (Query Grid)

Interogarea poate avea ca i sursa 7 de date unul sau mai multe tabele. Acestea sunt afiate dac| n fereastra de dialog Show Table este selectat butonul Tables. Dac| este necesar, interog|ri deja existente pot s| formeze surse de date pentru interog|rii care se creeaz|. Ele sunt afiate n fereastra de dialog Show Table dac| este selectat butonul Queries. Se pot crea i

0264-401667

NU COPIA !.

sau suna la:

102

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Din zona tabelelor i interog|rilor un cmp se poate selecta prin tragerea lui pe gril|, clic dublu pe numele lui sau prin clic pe numele lui n lista care se afieaz| la ap|sarea s|geii n jos din Field. Se vor afia numai acele cmpuri care au selectat| linia Show din gril|. nregistr|rile afiate pot fi restricionate prin specificarea unor criterii sau filtre specifice unor cmpuri din nregistrare. Datele afiate de interogare se pot sorta pe baza unuia sau a mai multor cmpuri folosind Sort. Dac| efectuai clic pe linia Sort se vor afia opiunile de sortare cresc|toare (Ascending) i descresc|toare (Descending). Sortarea se face de la stnga la dreapta dac| sunt mai multe coloane specificate. Dac| dorii s| revenii la starea iniial|, n care nu se face sortare, selectai not sorted.

http://www.east.utcluj.ro/mb/mep/antal

combinaii de tabele cu interog|ri, afiarea lor simultan| n list| se face prin selectarea butonului Both. Toate tabelele sau interog|rile vor fi afiate n panoul de sus al ferestrei. Ele apar sub forma unor ferestre mici n care sunt afiate cmpurile corespunz|toare lor.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Uneori dorii s| includei cmpuri n interogare dar nu i n r|spunsul care va fi afiat. Asta n cazul n care dorii s| selectai sau s| sortai nregistr|ri pe baza unui cmp ale c|rui date nu dorii s| apar| ca o coloan| de date n r|spuns. n Show vizualizarea coloanei este automat activat| la selectarea cmpului, iar pentru inactivare efectuai clic pe dreptunghi i semnul U va disp|rea. Dac| dorii reafiarea coloanei, clic pe acelai dreptunghi i semnul U va ap|rea din nou, indicnd afiarea coloanei n cadrul rezultatelor.

Modificarea sursei de date a 7 rilor interoga

Observai c| n figura care urmeaz| sursa de date a interog|rii s-a modificat de la tabelul Customers la tabelul Employees. Etapele parcurse pentru aceast| modificare sunt: realizai clic, n panoul de sus, pe tabelul Customer; ap|sai tasta Delete, toate cmpurile tabelului Customers, din panoul de jos, i tabelul Customers, din panoul de sus, vor disp|rea; din meniul Query, folosind opt -iunea Show Tables, deschidet -i fereastra Show

sau suna la:

Ordinea de afiare a coloanelor se poate modifica prin selectarea coloanelor i tragerea lor n noua poziie.

0264-401667

NU COPIA !.

103

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Table; realizat -i clic dublu pe tabelul cu numele Employees.


Lansarea n -ie a execut 7 rilor interoga

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dup| ce ai terminat crearea interog|rii, lansarea n execuie se face selectnd din meniul Query pe Run. Pentru definiia interog|rii care se prezint| n figura urm|toare, din tabelul Employees al bazei de date Northwind au fost selectate cmpurile EmployeeID, LastName, FirstName, Title i BirthDate. Toate cmpurile vor fi afiate n r|spuns, cu excepia ultimului, pentru c| toate dreptunghiurile corespunz|toare din linia Show sunt bifate (U), mai puin ultimul. Sortarea se va face cresc|tor (Ascending) pe baza coninutului cmpurilor LastName i FirstName.

Rezultatele sunt afiate sub forma:

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Operatorii logici permit construirea unor criterii complexe de selecie ale nregistr|rilor din tabele. Semnificaia lor este uor de neles, mai problematic| este ns| modul lor de utilizare n Access.

Operatori logici pentru criterii de selecie

0264-401667

NU COPIA !.

sau suna la:

104

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Semnifcaie egal

Scriere =

Exemplu 7 sau =7

Cmp la care se aplic|

Semnificaie Selecteaz| nregistr|rile care au angajaii cu ID (EmployeeID) egal cu 7. Selecteaz| nregistr|rile care au angajaii cu ID mai mic cu 7. Selecteaz| nregistr|rile care au angajaii cu ID mai mare cu 7. Selecteaz| nregistr|rile care au angajaii cu ID mai mic sau egal cu 7. Selecteaz| nregistr|rile care au angajaii cu ID mai mare sau egal cu 7. Selecteaz| nregistr|rile care au angajaii cu ID diferit de 7. Selecteaz| nregistr|rile cu angajaii care au n cmpul LastName stocat King sau Peacock . Selecteaz| nregistr|rile care au angajaii n cmpul LastName cu numele ncepnd cu 'D'. Selecteaz| nregistr|rile care au angajai cu date de natere (BirthDate) n domeniul [1/1/40, 31/12/99].

EmployeeID

mai mic

<

<7

EmployeeID

mai mic sau egal mai mare sau egal diferit

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

mai mare

>

>7

EmployeeID

<=

<=7

EmployeeID

>=

>=7

EmployeeID

<>

<>7

EmployeeID

sau

or

"King" or "Peacock"

LastName

asemenea

like

Like "D*"

LastName

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

ntre, i

between, and

Between 1/1/40 and 31/12/99

BirthDate

Folosirea textului n criteriul de selecie - caractere generice (Wildcards)


Dac| nu suntei siguri asupra caracterelor din irul c|utat (la fel ca n cazul cutiei de c|utare Find What) se pot folosi caracterele generice cu urm|toarele semnificaii:

Ca 7 utarea folosind caracterele generice

0264-401667

NU COPIA !.

sau suna la:

105

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Semnificaie semn de ntrebare asterisc semnul hash

Scriere ? * #

Se folosete pentru

Exemplu Pentru ma? se g|sesc mai, mat, mac . Pentru m*ie se g|sesc martie, mamaie, migraie. Pentru 196# se vor g|si toi anii n domeniul [1960-1969].

Orice grup de caractere pe aceeai poziie cu *. O singur| cifr| n aceeai poziie cu semnul #.

Grila interog|rii permite specificarea unor criterii complexe de selecie. n exemplele care urmeaz| se va folosi n continuare baza de date Northwind cu tabelul Products (produse). Se poate introduce un criteriu mai lung de un singur cmp de exemplu, se poate s| dorii selecia tuturor produselor ale c|ror nume ncep cu litera P i sunt ntr-un num|r mai mare de 10 buc|i pe stoc. Combinaia acestor criterii va fi folosit| pentru definirea interog|rii. Num|rul

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Criterii multiple i alternative

http://www.east.utcluj.ro/mb/mep/antal

Orice caracter pe aceeai poziie cu ?.

Pt. cumparare viziteaza:

de criterii poate s| fie orict de mare. Uneori, este nevoie, n plus, de specificarea unor criterii alternative. De exemplu, se poate s| dorii selectarea tuturor produselor care ncep cu litera C sau P. Num|rul criteriilor alternative este i el nelimitat. Rezultatele seleciei sunt:

0264-401667

NU COPIA !.

sau suna la:

106 Combinarea criteriilor

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Rezultatele seleciei sunt:

http://www.east.utcluj.ro/mb/mep/antal

Se pot forma combinaii de criterii multiple i de criterii alternative. De exemplu, dorim selectarea tuturor produselor care ncep cu litera P i sunt pe stoc ntr-un num|r mai mare de 10 sau ncep cu litera C indiferent de buc|ile existente pe stoc. Observai c| Or-ul (sau-ul) se aplic| ntregii interog|ri i nu unei singure coloane. De exemplu, dac| dorii s| selectai toate produsele care ncep cu litera P i sunt pe stoc n num|r mai mare de 100 sau (Or) ncep cu litera C i sunt pe stoc n num|r mai mare de 10 atunci, trebuie repetat criteriul >10 n UnitsInStoc n linia Or.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Uneori este necesar s| efectu|m calcule pe baza datelor selectate n rndurile unei interog|ri. De exemplu, dorim s| cunoatem preul ce include TVA-ul pentru fiecare produs. Tabelul produselor (numit Products) va conine numai preul net deci va fi necesar| ad|ugarea unui cmp al c|rui coninut va fi calculat pe baza unei expresii aritmetice.

Cmpuri calculate

Definirea unui cmp calculat

clic n primul cmp liber al liniei Field - cmpul urm|tor lui QuantityPerPrice; introducei expresia aritmetic| dorit|; pentru calculul preului cu TVA se nmulete preul f|r| TVA cu 1.19 (consider|m TVA-ul

0264-401667

NU COPIA !.

sau suna la:

107

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Sintaxa complet| pentru cmpurile calculate este: Expri: expresie

unde Expri este numele coloanei iar expresie este o expresie aritmetic| cu urm|toarele componente: Component| Semnificaie

[nume_de_cmp] * / + ()

Un nume de cmp al unuia dintre tabelele care iau parte la interogare, cuprins ntre paranteze dreptunghiulare.

Operatorul de nmulire.

Operatorul de mp|rire.

Operatorul de adunare. Operatorul de sc|dere.

Paranteze rotunde pentru a indica ordinea de efectuare a operaiilor ntr-o expresie complex|.

http://www.east.utcluj.ro/mb/mep/antal

de 19%); la ap|sarea tastei Enter sau la clic pe urm|torul cmp liber, expresia este automat prefixat| de Access cu eticheta Expr1. Aceast| etichet| va fi numele cmpului calculat i se va afia n rezultatele interog|rii. Pentru exemplul nostru, vom da numele de PretcuTVA.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

De asemenea, este posibil| folosirea unor constante numerice sau a funciilor din biblioteca Access-ului (de exemplu, funcia Format pentru formatarea datelor afiate n cmpuri sub o form| special| sau pentru o anumit| ordine de specificare a zilelor, lunilor i a anilor unei date). Expresii care au fost calculate n interogarea prezentat| sunt: PretUnitatecuTVA: [UnitPrice]*1.19

0264-401667

NU COPIA !.

sau suna la:

108

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

PretStoccuTVA: [UnitsInStock]*[PretUnitatecuTVA] StocRamas: [UnitsInStock]-[UnitsOnOrder]

Cmpurile calculate conin calcule care opereaz| n cadrul unei nregistr|ri. Ar fi util| posibilitatea realiz|rii unor calcule care opereaz| cu un grup de nregistr|ri sau chiar cu toate nregistr|rile. Aceste tipuri de interog|ri care asigur| posibilitatea centraliz|rii (termenul tehnic este cel de agregare) folosind anumite criterii se numesc interog|ri cu totale. Se pot folosi pentru a calcula suma valorilor stocate ntr-o coloan| particular| sau pentru a calcula subtotale pentru o coloan| dependent| de valorile altei coloane, de exemplu, subtotalul vnz|rilor n fiecare s|pt|mn|. Din meniul View activai opiunea Totals. O linie nou|, cu numele de Totals, se va ad|uga n seciunea de gril| a interog|rii. Termenul de agregare se foloses - te pentru a desemna operat -ii cu un grup de obiecte, astfel o funct -ie de agregare act -ioneaza 7 asupra unui grup de nregistra 7 ri -ie matematica 7 cu ntregul grup. Aceast| linie va fi folosit| pentru a realiznd o oarecare operat 7 pe realiza calcule de mai multe categorii la nivel de coloan| a interog|rii. Unele se realizeaza baza unor opt -iuni multiple cum sunt, funct -iile de agregare (cteva dintre acestea fiind: suma (sum), media (average), maximul (maximum) etc.) altele, cum sunt, Group By, Expression, -iuni fiind unice. Total Field Record Limit nu au opt Categoria Group By Aceasta 7 categorie are o singura 7 opt -iune, pe cea Group By. Ea se foloses - te cnd dorim sa 7 specifica 7 m ca 7 un anumit cmp al ferestrei QBE va fi folosit pentru grupare. Ea este opt -iunea implicita 7 pentru Total. Aceste grupuri de nregistra 7 ri vor fi folosite pentru a realiza calcule de agregare ntr-un alt cmp al interoga 7 rii. Categoria Expression 7 opt -iune, pe Expression. Se foloses - te pentru a crea cmpuri calculate prin Are o singura folosirea funct -iilor de agregare.

Pt. cumparare viziteaza:

Interog|ri cu totale

http://www.east.utcluj.ro/mb/mep/antal

Rezultatele se afieaz| sub forma:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Categoria Total Field Record Limit Aceasta are o singura 7 opt -iune, pe Where. Ea permite specificarea unui criteriu de limitare pentru un cmp agregat. Limitarea se realizeaza 7 nainte de executarea opt -iunii de agregare.

0264-401667

NU COPIA !.

sau suna la:

109

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Nota 7 : Interog|rile cu totale lucreaz| diferit de cele clasice. Ele nu afieaz| toate nregistr|rile care satisfac criteriile de selecie impuse ci numai totalul acestora. n plus, cmpurile care se includ n nregistrare trebuie s| fie numai cele necesare, de exemplu, numai cmpurile pe baza c|rora se vor face calculele i cmpurile pe baza c|rora se vor face sort|ri. Includerea altor cmpuri vor produce confuzie n cazul calculelor.
Crearea unei 7 ri cu totale interoga

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Modalitatea cre|rii unei interog|ri cu totale este simpl|: selectai cmpurile i criteriile asemenea ca la interog|rile normale, apoi specificai ce se va petrece n linia Totals pentru fiecare cmp. n condiii normale vei selecta prima oar| pe Group By pentru un cmp - acesta formnd grupul pentru care se vor realiza calculele - apoi vei specifica un calcul pentru cmp. n exemplul urm|tor, din baza de date Northwind, am folosit tabelul Products. Gruparea s-a realizat pe baza cmpului SupplierID i coninutul tuturor cmpurilor UnitPrice pentru nregistr|rile cu acelai SupplierID au fost nsumate prin folosirea funct -iei de agregare Sum n linia Totals.

http://www.east.utcluj.ro/mb/mep/antal

Categoria Aggregate Aceasta are noua 7 opt -iuni, cteva dintre ele sunt: Sum, Avg, Min, Max etc. Fiecare dintre aceste opt -iuni realizeaza 7 un anumit calcul cu datele si ntorc noi date ntr-o celula 7 a mult -imii dinamice rezultate.

Pentru exemplificare, prezint n continuare efectul interog|rii cu total i tabelul pe baza c|ruia s-a realizat interogarea. Observai c| n tabelul Products, furnizorul (Supplier) Exotic Liquids apare de 3 ori cu urm|toarele preuri pe unitate (UnitPrice) n dolari: 18.00, 19.00 i 10.00. Gruparea pe baza numelui de furnizori i totalizarea preurilor pe unitate (SumOfUnitPrice) face ca n interogare s| apar| o singur| linie cu Exotic Liquids avnd totalizate cele trei valori din tabel (18.00 + 19.00 + 10.00 = 47.00) n cmpul SumOfUnitPrice.

0264-401667

NU COPIA !.

sau suna la:

110

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Calcule multiple de agregare

Se pot efectua orice num|r de calcule ntr-o interogare cu total. Se poate, de exemplu, realiza gruparea pe furnizori (SupplierID) i calcula suma pe baza cmpului UnitPrice i valoarea medie pe baza cmpului UnitsInStoc (unit|i pe stoc).

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Se poate folosi orice num|r de coloane pentru grupare: se poate realiza gruparea pe |ri i pe nume de furnizori. Dac| se realizeaz| gruparea pe baza mai multor coloane, Access lucreaz| de la stnga la dreapta pentru a determina precedena grup|rilor.

Totale de expresii

n tabelul Orders a bazei de date Northwind nu exista 7 un cmp care sa 7 afis - eze valoarea totala 7 a unei comenzi. Interogarea va avea ca si sursa 7 de date doua 7 tabele, pe Orders s - i pe Order Details, iar valoarea totala 7a

0264-401667

NU COPIA !.

sau suna la:

111

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

unei comenzi va fi calculata 7 pe baza expresiei care urmeaza 7.

Cantiate comandata: Sum([Quantity]*[UnitPrice]*(1-[Discount]))


Totale limitate

Sa 7 presupunem ca 7 dorim sa 7 acelas - i grup de calcule ca si nainte, dar 7 , de exemplu pentru anul 1997. pentru o perioada de timp limitata Limitarea se va pune pe cmpul Order Date, folosind pe Where n Total, iar cont -inutul acestuia nu se va mai afis - a n rezultatele obt -inute.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Interog|rile de actualizare permit modificarea rapid| a unui num|r de nregistr|ri dintr-un tabel. nregistr|rile actualizate depind de criterii specificate de utilizator. S| presupunem c| n baza de date Northwind dorim s| modific|m preul pe unitate (Unit Price) pentru categoria de produse care au CategoryID cuprins n domeniul [1,7] din tabelul Products. Modificarea se va face numai pentru furnizorii a c|ror SupplierID are valoarea mai mic|

Interog|ri de actualizare (Update Queries)

0264-401667

NU COPIA !.

sau suna la:

112

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

sau egal| cu 6. Toate aceste restricii vor fi specificate n linia de criterii.

selectai din meniul Query opiunea Update Query ; n zona grilei interog|rii apare o nou| linie numit| Update To. Specificai regulile pentru actualizarea unei coloane sau l|sai libere cmpurile corespunz|toare coloanelor unde nu dorii modific|ri. Uneori este util| includerea unor coloane n interogare, pentru care se vor specifica criteriile de selecie f|r| a dori ca aceste coloane s| fie actualizate de interogare. n practic|, este mai s|n|tos ca prima dat| s| definii toate criteriile de selecie i s| lansai n execuie interogarea. R|spunsul afiat pe ecran const| n acele rnduri care se vor modifica dac| interogarea normal| se transform| n una de actualizare. Dac| criteriile de selecie sunt:

http://www.east.utcluj.ro/mb/mep/antal

Crearea unei 7 ri de interoga actualizare

realizai o interogare de selecie (Select Query sunt interog|rile 'normale', cele utilizate pn| acum) de forma:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

r|spunsurile afiate vor fi:

0264-401667

NU COPIA !.

sau suna la:

113

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

acum, dup| procedura descris| anterior, transform|m interogarea normal| n una de actualizare. Fereastra QBE specific| este prezentat| n figura urm|toare. Aici n linia Update To a cmpului UnitPrice s-a introdus formula 1.1*[UnitPrice]. Ea definete noile valori ale cmpului dup| execuia interog|rii de actualizare. Lansarea n execuie se face la fel ca n cazul interog|rilor normale prin selectarea lui Run din meniul Query. nainte de execuia interog|rii de actualizare Access-ul deruleaz| un dialog cu utilizatorul n care l avertizeaz| asupra num|rului de nregistr|ri care se vor modifica; dac| totul este n ordine selectai butonul OK al cutiei de dialog. Dac| dorii abandonarea interog|rii de actualizare selectai No i nregistr|rile nu vor fi modificate.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

114

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

noile valori afiate n cazul unei interog|ri de select -ie vor fi:

Interog|rile de ad|ugare copiaz| rezultatele unei interog|ri ntr-un tabel. Tabelul destinaie trebuie s| aib| aceleai cmpuri cu cele incluse n interogare.

Interog|ri de ad|ugare (Append Queries)

Crearea unei interogari de adaugare

Pentru crearea unei interog|ri de ad|ugare selectai pe din meniul Query. Se poate specifica tabelul la care se face ad|ugarea mpreun| cu localizarea lui care poate fi n baza de date curent| sau ntr-o alt| baz| de date. Dup| setarea cmpurilor i criteriilor, interogarea se lanseaz| n executie normal, prin selectarea lui Run din meniul Query. Access va afia un mesaj referitor la num|rul de nregistr|ri care vor fi ad|ugate, fiind necesar| confirmarea ad|ug|rii pentru ca aceasta s| aib| loc efectiv.

Nota 7 : Dac| realizai o interogare de ad|ugare pe o submulime de nregistr|ri a unui tabel, din punct de vedere practic, este o procedur| s|n|toas| s| specificai criteriile prima oar| ntr-o interogare de select -ie. Verificai r|spunsurile afiate i numai apoi modificai tipul interog|rii, de la cea de selecie la cea de ad|ugare, n urma c|reia linia Append To va fi afiat|.

0264-401667

NU COPIA !.

Expresia scris| n UpdateTo este format| din componentele standard discutate deja la "Definirea unui cmp calculat". La nevoie, pot participa inclusiv constante sau funcii definite n bibliotecile Access.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

115

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Crearea unei interogari de creare a unui tabel

7 : O interogare de creare a unui tabel poate avea ca surs| de date o submulime a Nota nregistr|rilor unui tabel deja existent. i n acest caz procedura de lucru s|n|toas| presupune vizualizarea nregistr|rilor selectate printr-o interogare de select -ie, apoi transformarea ei n una de tipul Make-Table.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru realizarea unei interog|ri de creare a unui tabel din meniul Query selectai . Noul nume de tabel poate fi stocat n baza de date curent| sau n una extern|. Specificarea cmpurilor i a criteriilor se face normal. Dup| specificarea lor selectai Run ( ) din meniul Query pentru lansarea n execuie a interog|rii. Access va afia un mesaj prin care ne spune cte nregistr|ri va copia n noul tabel. i aici este necesar| confirmarea pentru executarea interog|rii.

Majoritatea bazelor de date ajung s| fie organizate, ca urmare a procesului de normalizare, sub forma a mai multor tabele. Relaiile ntre aceste tabele sunt stabilite pe baza cheilor primare i str|ine folosind comanda Relationships din Tools n fereastra bazei de date. Dup| crearea tabelelor i a relaiilor ntre acestea se poate trece la crearea unor interog|ri care s| aib| ca surs| de date mai multe tabele. Prin ad|ugarea de mai multe tabele unei interog|ri se pot vizualiza informaiile acelor tabele ca i cnd ar fi stocate ntr-un singur tabel.
Crearea unei 7 ri cu doua 7 interoga tabele

realizat -i clic dublu pe urma 7 toarele cmpuri: CompanyName, OrderID,

0264-401667

NU COPIA !.

sau suna la:

deschidet -i baza de date Northwind.mbd; n fereastra bazei de date facet -i clic pe Queries; clic pe New pentru a crea o interogare noua 7 , iar din fereastra -i Design View; New Query selectat din fereastra de dialog Show Table realizat -i clic dublu pe tabelele Customers s - i Orders, apoi nchidet -i fereastra; Access creeaza 7 automat o linie ntre cele doua 7 tabele (vezi figura urma 7 toare) pe baza relat -iei corespunza 7 toare din fereatra Relationships; aceasta 7 linie poarta 7 denumirea de asociere si reprezinta 7 o relat -ie ntre cele 7 tabele; doua

Pt. cumparare viziteaza:

Interog|ri cu mai multe tabele

http://www.east.utcluj.ro/mb/mep/antal

Interogarea de creare a unui tabel creeaz| un tabel nou i copiaz| rezultatele interog|rii n el. Acest tip de interogare lucreaz| la fel cu interogarea de ad|ugare.

Interogarea de creare a unui tabel (Make-Table Query)

116

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

OrderDate pentru a vizualiza fiecare comanda 7 fa 7 cuta 7 de un anumit client, apoi lansat -i n -ie interogarea prin clic asupra lui n bara cu instrumente Query Design; execut

rezultatele interoga 7 rii se afis - eaza 7 sub forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Implicit, Access afis - eaza 7 rezultatele interoga 7 rii pe baza indexului tabelului cu cheia primara 7. 7 , de exemplu, dorit -i sa 7 sortat -i cresca 7 tor rezultatele pe baza lui Order Date : Daca trecet -i n mod proiectare (Design View); pozit -ionat -i cursorul pe rndul Sort al coloanei Order Date din grila QBE s -i apa 7 sat -i tasta F4 pentru a deschide lista derulanta 7; din lista 7 selectat -i Ascending; pentru afis - area cresca 7 toare a rezultatelor; lansat -i n execut -ie interogarea.

Relat -iile ntre doua 7 tabele sunt reguli cu privire la tipul lega 7 turilor stabilite ntre tabele si nu cu privire la modalitatea de vizualizare a datelor din tabele. Pentru a vizualiza date din mai multe tabele acestea trebuie sa 7 fie legate printr-un cmp comun (sau printr-un un grup de cmpuri comune). Metoda de legare a tabelelor se numes - te asociere (join). ntr-o interogare, tabelele care au stabilite deja relat -ii sunt asociate, automat. La nivelul interoga 7 rii se pot crea noi asocieri sau se pot modifica cele existente. La fel cum exista 7 mai multe tipuri de relat -ii

Tipuri de asocieri

0264-401667

NU COPIA !.

sau suna la:

117

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Pt. cumparare viziteaza:

Crearea unei asocieri ntre tabele defines - te o mult -ime de proprieta 7ti. Acestea sunt reguli folosite la afis - area nregistra 7 rilor s - i spun lui Access cum sa 7 interpreteze orice except -ie (sau o eventuala 7 eroare) ntre doua 7 tabele. De exemplu, cum sa 7 realizeze afis - area n cazul n care sunt nregistra 7 ri necorespunza 7 toare. Access poate lucra cu mai multe tipuri de asocieri, fiecare avnd un comportament specific. Modificarea tipului unei asocieri se realizeaza 7 prin modificarea proprieta 7tilor acesteia. Pentru aceasta realizat -i clic dublu pe linia care leaga 7 cele doua 7 tabele, pe ecran se va afis - a fereastra proprieta 7tilor asocierii (Join Properties).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Asocieri interne (inner joins) Asocierea implicita 7 n Access este cea interna 7 (inner join), denumita 7 uneori si asociere echivalenta 7 (equi-join). Ea spune lui Access sa 7 selecteze toate nregistra 7 rile celor doua 7 tabele care au aceeas - i valoare n cmpurile prin care se face asocierea. Daca 7 sunt ga 7 site nregistra 7 ri care nu au valori comune ale cmpurilor folosite la asociere acestea sunt excluse din mult -imea dinamica 7 nefiind afis - ate n foaia de date. Aceste nregistra 7 ri excluse pot fi ga 7 site selectnd din generatorul de interoga 7 ri tipul "Find Unmatched Query".

http://www.east.utcluj.ro/mb/mep/antal

exista 7s - i mai multe tipuri de asocieri, cteva dintre acestea sunt: ! asocieri interne (inner joins); ! asocieri externe (outer joins); ! autoasocieri (self-joins); ! asocieri de tip produs cartezian (cartesian joins).

Ea are doua 7 regiuni, prima are patru liste desfa 7s - urabile (Left Table Name, Right Table -iuni. Name, Left Column Name, Right Column Name), iar a doua trei butoane cu opt Butoanele cu opt -iuni controleaza 7 proprieta 7tile asocierii dupa 7 cum urmeaza 7: 7 rile care au n cmpurile de asociere valori egale; 1. Include nregistra 2. Include TOATE nregistra 7 rile din tabelul Customers s - i numai pe acelea din Orders care au n cmpul de asociere valori egale; 3. Include TOATE nregistra 7 rile din Orders s - i numai pe acelea din Customers care au n cmpul de asociere valori egale.

Prima opt -iune este cunoscuta 7 sub numele de asociere interna 7 (inner join), urma 7 toarele sunt cunoscute sub denumirea de asocieri externe (outer join). Asocierea extern| la dreapta Asocierile externe sunt folosite pentru afiarea tuturor nregistr|rilor unui tabel i numai a celor comune din cel|lalt. Cnd se creeaz| o asociere extern|, lina de asociere va avea la un

0264-401667

NU COPIA !.

sau suna la:

118

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

i se realizeaz| afiarea rezultatelor f|r| activarea opiunilor de sortare se obin 832 de nregistr|ri, existnd dou| nregist|ri care nu au corespondent n tabelul Orders (una dintre acestea se observ| n figura care urmeaz|).

http://www.east.utcluj.ro/mb/mep/antal

cap|t o s|geat| care va marca tabelul din care sunt extrase numai nregistr|rile care au valori comune. De exemplu, dac| n interogarea care afieaz| comenzile unui client se face modificarea:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Asocierea extern| la stnga Aceast| asocierea corespunde opiunii 3 din fereastra de dialog Join Properties. Ea permite afiarea nregistr|rilor orfane. Acest tip de nregistr|ri sunt cele care nu permit activarea integrit|ii refereniale. n exemplul prezentat, din forma s|geii care leag| cele dou| tabele, se observ| c| integritatea referenial| este activat|, deci folosirea acestei asocieri nu va genera rezultate noi fa| de opiunea 1.

Autoasocieri (self-joins) Autoasocierile se realizeaza 7 ntre cmpurile aceluiai tabel. Din acest motiv tabelul va fi ad|ugat de dou| ori pe postul de surs| de date. Va exista un tabel original i o copie a lui. Asocierile se creeaz| ntre original i copie. De exemplu, dac| ntr-un tabel stocai cerinele personalului ntr-un cmp Cerinte i aprob|rile cerinelor de c|tre conducere n cmpul Aprobari, atunci se va realiza o asociere ntre aceste dou| cmpuri ale aceluiai tabel pentru a g|si care cerine au fost acceptate. Asocierea de tip produs cartezian Dac| se adaug| cele dou| tabele Customers i Orders ntr-o interogare, dar nu se specific| o

0264-401667

NU COPIA !.

sau suna la:

119

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

- i aceasta 7 asociere este bine de evitat, voi prezenta n continuare un exemplu n care ea se Des poate folosi cu succes.
Fie tabelul Angajati din figura urma 7 toare. El are patru cmpuri, Nume, Prenume si Sectie 7 rii sunt de tipul Text, iar Salar este de tipul Number, Double. Se pune problema totaliza salariilor pe sect -ii (Sectie) s - i afis - area, n procente, a salarului totalizat pe fiecare sect -ie, raportat la totalul salariilor. Prima metoda 7 de rezolvare a problemei necesita 7 realizarea a doua 7 interoga 7 ri cu numele Query Suma pe Sectii s - i Query Suma Totala prezentate n figurile care urmeaza 7:

http://www.east.utcluj.ro/mb/mep/antal

asociere ntre tabele, Access va combina toate nregistr|rile lui Customers cu toate nregistr|rile lui Orders. Uneori aceast| operaie va dura secunde, alteori chiar minute. Combinarea fiec|rei nregistr|ri dintr-un tabel, cu fiecare nregistrare a celuilalt, va conduce la produsul cartezian al tabelelor.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

120

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Pentru calculul procentelor din valoarea totala 7 a salariilor se creeaza 7 o noua 7 interogare cu numele Procente. Aceasta se prezinta 7 n figura urma 7 toare si care are cmpurile: Sectie; Suma pe sectii: Sum Of Salar; Suma totala: Sum Of Salar; Procent pe sectie: [Query Suma pe Sectii].[Sum of salar]/[Query Suma Totala].[Sum of salar]

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Pentru ca la afis - are valorile sa 7 fie formatate n procente, proprietatea Format a cmpului cu numele Procent pe sectie este setata 7 la #.##%

Aceasta 7 introgare este de tipul produs cartezian. Vet -i observa nsa 7 ca 7 valorile sunt afis - ate repede ntruct unul dintre tabele cont -ine numai o singura 7 ntregistrare (suma tutror salariilor). O alta 7 metoda 7 de rezolvare a problemei ar fi scrierea unei interoga 7 ri de forma:

0264-401667

NU COPIA !.

sau suna la:

121

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Aici cmpul, Procent pe sectie, este calculat folosind formula: [Sum of salar]/DSum("[Salar]","Angajati") Funct -ia DSum() permite calcularea sumei valorilor unui cmp dintr-un tabel. Mai sus [Salar] este cmpul al ca 7 rui valori vor fi nsumate, iar Angajati este tabelul care cont -ine cmpul n cauza 7 . Observat -i ca 7 argumentele funct -iei sunt siruri motiv pentru care ele trebuie scrie ntre apostroafe. Funct -ia mai are un argument, opt -ional, prin care se poate -ile sunt de specifica un criteriu pentru selectarea valorilor de nsumat. Criteriile de select forma "[Nume de cmp] = ' <valoare>' ".
Crearea unei asocieri 7 multicoloana

Dou| tabele pot avea mai multe asocieri. De exemplu, dac| dorim s| afl|m clienii care au adresa firmei i cea la care se face expedierea aceeai, se poate crea o interogare de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

S| presupunem c| dorim s| scriem o interogare care s| fac| totalul vnz|rilor de produse

Interog|ri cu parametri

0264-401667

NU COPIA !.

sau suna la:

122

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

pentru anul 1996.

Dac| expresia Like "*/*/1996" din figura de mai sus se nlocuiete cu cea prezentat| n fereastra Zoom urma 7 toarea 7 ( Like "*/*/" + [Introduceti anul]), se obine o interogare cu parametru. Parametrul este [Introduceti anul], iar atunci cnd interogarea se executa 7 , pe ecran se afis - eaza 7 textul Introduceti anul s - i se as - teapta 7 pna 7 cnd se introduce o valoare numerica 7 . Uneori pot sa 7 apara 7 probleme la formatul cmpurilor de tipul Data/Time. Observat -i ca 7 separatorul n 7 este caracterul "/". expresia de tipul data Pentru ca datele sa 7 fie formatate folosind acest caracter si nu cel din Regional Settings al lui Windows realizat -i clic pe numele cmpului OrderDate, apoi realizat -i clic pe butonul din dreapta si selectat -i Properties. n ferestra Field Properties setat -i valoarea proprieta 7tii Format la mm/dd/yyyy.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Verificarea corectitudinii tipului valorii introduse pentru parametru se poate face, de c|tre Access, dac| pentru parametrul cu numele Introduceti anul este specificat tipul

0264-401667

NU COPIA !.

sau suna la:

123

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Integer din Query, Parameters as - a cum vede n figura urma 7 toare.

Like "*/*/"+Trim(Str([Introduceti anul]))

0264-401667

NU COPIA !.

sau suna la:

Utilizarea acestor interog|ri impune o singur| restricie: nu se poate ordona tabelul rezultat dup| valorile coloanelor calculate. De exemplu, nu se poate crea o interogare care s| afiaze produsele dup| volumul vnz|rilor. Coloanele pot avea valori care duc la conflicte, dar se poate realiza ordonarea cresc|toare, descresc|toare sau lipsa ordon|rii pentru valorile numelor de rnduri din prima coloan|. Access are un generatorul Crosstab Query Wizard pentru crearea interog|rilor ncruciate, dar el poate lucra numai cu un singur tabel. Realizai interogarea ncruciat| din figura care urmeaz|. La nceput creai o interogare de selecie care s| conin| tabelele de mai jos, apoi folosii Crosstab din Query pentru ca linia Crosstab s|

Pt. cumparare viziteaza:

Interog|rile ncruciate asigur| crearea unor totale permind n acelai timp i stabilirea exact| a modului n care informaiile sunt afiate pe ecran. Rezultatele sunt afiate sub forma unui tabel n care rndurile (prin Row Heading), coloanele (prin Coulmn Heading) i valorile (prin Value) plasate la intersecia acestora trebuie specificate explicit. Ele au urm|toarele avantaje: ! permit afiarea ntr-o form| compact| a unor cantit|i mari de date centralizate asem|n|tor cu Excel; ! datele sunt prezentate ntr-o form| mai potrivit| pentru crearea de grafice sau de diagrame cu ajutorul lui Access GraphWizard; ! se pot crea date centralizate n ordine cresc|toare pentru coloane identice, dar cu mai puine rnduri.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Funct -ia Str() transforma 7 numa 7 rul ntreg introdus de la tastatura 7 ntr-un sir de caractere, iar funct -ia Trim() elimina 7 spat -iile care intercaleaza 7s - irul.

Interog|ri ncruciate

http://www.east.utcluj.ro/mb/mep/antal

Implicit, Access consider| parametrii interog|rilor de tipul Text. n urm| modific|rii acestuia la Integer valorile pe care Access le va accepta vor fi numai de tipul ntreg. Pentru ca aceast| valoare ntreag| s| fie convertit| la un ir de caractere care s| poate fi ad|ugat la irul "*/*/" trebuie folosite urm|toarele funcii de conversie:

124

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

fie afiat|. Specificai n continuare cele trei componente (rnd, coloan| i valoare) ale interog|rii ncruciate. Rezultatele interog|rii sunt afiate ntr-un tabel de forma:

Cmpul Expr1 se calculeaz| pe baza expresiei: Expr1: Format([OrderDate],"mmm")

Cmpul Vinzari se calculeaz| prin formula: Vinzari: Sum([Order Details].[Quantity]* [Order Details].[UnitPrice])

Expr1, pe baza formulei de mai sus, va primi numele lunii, format| din trei caractere, n care s-a f|cut comanda, iar funcia Sum() va realiza suma valorilor cmpului corespunz|toare aceluiai produs ntr-o lun|. Dac| dorii ca valorile s| fie afiate ordonate, cresc|tor, dup| numele produsului, pentru coloana ProductName, selectai din Sort pe Ascending.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

La crearea unei interog|ri, propriet|ile ei pot fi setate din View, Properties. Acestea depind de tipul interoga 7 rii care se creeaza 7s - i de tabelul sau cmpul cu care se lucreeaza 7 . Cteva dintre proprieta 7tile mai importante sunt prezentate n tabelul care urmeaz|: Proprietate Descrierea Q u e r y S e l e c t C r o s s t a b U p d a t e D e l e t e M a k e T a b l e A p p e n d

Description

Text care descrie interogarea

sau suna la:

Propriet|ile interog|rilor

X X X X X X

0264-401667

NU COPIA !.

125

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Output All Fields Top Values Unique Values Unique Records Run Permissions Source database Source Connect Str Record Locks

Afiarea tuturor cmpurilor din tabelul care este sursa de date n interogare Num|rul de valori "maxime" sau "minime" care vor fi ntoarse ntoarce numai valori unice n cmpurile mulimii dinamice

X X X X X X

X X X X X X X

ntoarce numai nregistr|ri unice n cmpurile mulimii dinamice Stabilete drepturile utilizatorului specificat

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

X X X X X X X X X X X X

Numele bazei de date externe pentru toate tabelele/interog|rile

Numele aplicaiei folosite pentru conectarea la X X X X X X baza de date extern|

ODBC Time-out Filter Order By MaxRecords SubDatasheet name Link Child Fields Link Master Fields Subdatasheet Height

Num|rul de secunde nainte de a raporta eroare la deschiderea bazei de date

Pt. cumparare viziteaza:

Blocarea nregistr|rilor cnd interogarea se execut| (de obicei pentru cele de aciune)

X X X X X X X X X X X X X X X X X X X X X X X

Filtrul se ncarc| automat mpreun| cu interogarea

Ordinea de sortare se ncarc| automat cu interogarea

Num|rul maxim de nregistr|ri ntors de baza de date ODBC Numele subfoii de date

Numele cmpurilor din subinterogare

X X X

Numele cmpurilor din tabelul principal n|limea maxim| a subfoii de date

X X X

X X X

X X X X

Subdatasheet Expanded

nregistr|rile sunt iniial afiate expandat?

X X X X

RecordSet Type Destination Table

Tipul mulimii de nregistr|ri, specific| dac| tabelele pot fi editate Numele tabelului destinaie

X X

0264-401667

NU COPIA !.

sau suna la:

126

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

Destination DB Dest Connect Str

Numele bazei de date destinaie

X X

Find Duplicate Query Wizard acioneaz| asupra unui singur tabel, iar Find Unmatched Query Wizard compar| nregistr|rile unui table cu cele ale unui alt tabel. Aceste generatoare sunt afiate n lista generatoarelor disponibile atunci cnd se ncepe o nou| interogare.

0264-401667

NU COPIA !.

sau suna la:

Generatorul permite crearea unor interog|ri pentru afiarea nregist|rilor va 7 duve i orfane ntre dou| tabele. O nregistrate este orfan| dac| n tabelul din partea de "muli" nu are corespondent n tabelul din partea de "unu". O nregistrare este v|duv| dac| n partea de "unu" a unei relaii "unu la muli" nu exist| nregistrarea corespondent| n cel|lat tabel. Access cere 7 tabele de comparat, cmpul de lega 7 tura 7 ntre ele si cmpurile tabelului numele celor doua "unu" care vor fi afis - ate. Daca 7 se creeaza 7 relat -ii ntre tabele si se ncearca 7 setarea integrita 7tii -iale, acest tip de interogare va raporta nregistra 7 rile care violeaza 7 intergritatea. referent

Find Unmatched Query Wizard

Pt. cumparare viziteaza:

Generatorul permite crearea unei interog|ri care raporteaz| nregist|rile unui tabel care oprezint| dubluri pentru unul sau mai multe cmpuri ale tabelului. Access va cere care sunt cmpurile de verificat, apoi mai cere un grup de alte cmpuri care vor fi afiate de interogare. Pe baza rezultatelor, se pot determina viola 7 rile de chei datorit| duplic|rii valorilor. Atunci cnd avem un tabel "primit", pentru care trebuie s| cre|m o cheie, iar aceast| interogare afieaz| nregist|ri, avem siguri valori Null sau nregistr|ri duplicate.

Find Duplicate Query Wizard

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Access are dou| generatoare pentru ntreinerea bazelor de date: ! Find Duplicate Query Wizard: afieaz| nregistr|rile duplicate, ntr-un singur tabel, pe baza unui cmp al tabelului; ! Find Unmatched Query Wizard: afieaz| toate nregistr|rile care nu au nregistr|ri corespondente ntr-un alt tabel.

Interoga 7 ri pentru ntreinerea bazelor de date

http://www.east.utcluj.ro/mb/mep/antal

irul pentru conectare la baza de date

X X

127

Introducere n Microsoft Access: Interoga 7 ri - cursul 6

selectarea lui Tables/Queries. Tabelul care urmeaza 7 descrie opt -inile implicite de proiectare a interoga 7 rilor prezentate n figura de mai sus. Opt -iune Descriere

Show Table Names Output All Fields Enable AutoJoin

- eaza 7 rndul Table n QBE pentru Yes Afis


Afis - eaza 7 toate cmpurile surselor de date sau numai cmpurile din panoul QBE

Run Permissions

Restrict -ioneaza 7 vizualizarea rezultatelor interoga 7 rii ntr-un mediu multi-utilizator. Pentru Owner rezultate pot fi va 7 zute 7 rii numai de creatorul interoga

SQL Server Compatible

Validata 7 , opt -iunea genereaza interoga 7 ri care respecta 7 sintaxa ANSI-92 SQL

0264-401667

NU COPIA !.

sau suna la:

Foloses - te numele comune de cmpuri pentru crearea automata 7 de asocieri ntre doua 7 tabele care nu au relat -ii. Tipul cmpurilor 7 fie identic trebuie sa

http://www.east.utcluj.ro/mb/mep/antal

Exista 7 mai multe opt -iuni de proiectare implicite care pot fi specificate la proiectarea unei interoga 7 ri. Acestea se vizualizeaza 7 prin selectarea din Tools a lui Options, apoi prin

Opiuni pentru proiectarea interog|rilor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

128

Introducere n Microsoft Access: Formulare - cursul 7

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:


! ! ! !

conceptele de baz| legate de aspectul vizual al formularelor (Form cum se creeaz| un formular cu aplicaia AutoForm;

Layout Types);

Wizard);

cum se utilizeaz| vizualiz|rile n modurile de proiectare (Design View),

de formular (Form View) i de vizualizare nainte de tip|rire (Print Preview) ale formularelor;

! ! ! ! ! ! !

cum se utilizeaz| vizualizarea n mod proiectare a formularelor; cum se deschide un formular existent n mod proiectare; cum se afieaz| lista propriet|ilor (Property List); cum se afieaz| lista cmpurilor (Field List); cum se afieaz| cutia cu instrumente (Toolbox);

cum se afieaz| codul din spatele formularului (Code Behind the Form); cum se selecteaz| i manipuleaz| controalele (Control) i etichetele cum se modific| dimensiunea unei seciuni (Section); cum se modific| l|imea (width) unui formular;

! ! !

ce sunt controalele nelegate (Unbound), legate (Bound) i calculate

(Calculated);

cum se deschide cutia cu instrumente i care sunt instrumentele de baz|

folosite n formulare;

sau suna la:

0264-401667

(Label);

Pt. cumparare viziteaza:

cum se creeaz| un formular f|r| Generator;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se creeaz| un formular cu Generatorul de Formulare (Form

http://www.east.utcluj.ro/mb/mep/antal

Obiectivele cursului 7

NU COPIA !.

129

Introducere n Microsoft Access: Formulare - cursul 7

Formulare (Forms)
Formularele furnizeaz| o metod| prietenoas| de vizualizare a datelor, acestea pot fi afiate folosind diferite tipuri de caractere i culori, n afara acestora mai pot conine i imagini sau desene; Formularele se folosesc pentru afiarea i tip|rirea datelor; Formularele se folosesc pentru ad|ugarea, modificarea i tergerea ntegistr|rilor din baza de date.

n faza de proiectare a formularelor, o varietate de tehnici cum sunt texte adiionale, m|rimi i stilul de caractere, culori, imagini scanate, desene, grafice, butoane de comand| care pot fi folosite pentru a deschide noi formulare sau a nchide formulare deschise sau pentru a lansa interog|ri sau pentru a derula alte operaii, sunt folosite pentru a da o nou| imagine procesului de manipulare a datelor. Formularele sunt folosite ntr-o multitudine de scopuri: afiarea datelor; introducerea datelor n baza de date; editarea (modificarea i tergerea) datelor; tip|rirea datelor la imprimant|; formarea unui sistem de meniuri pentru utilizatorul bazei de date.

Ce aduc n plus formularele?

Toate datele unui formular au ca surs| unul sau mai multe tabele din baza de date. Structura tabelelor nu este afectat| de proiectul formularului, dar datele din tabel pot fi modificate prin aciuni lansate n cadrul formularului.

0264-401667

Tabelele furnizeaz| o modalitate convenabil| pentru stocarea datelor, iar interog|rile permit extragerea unor date care satisfac nevoi particulare.Vizualiz|rile n mod foaie de date (Datasheet View) a tabelelor i interog|rilor furnizeaz| modalit|i pentru afiarea i introducerea datelor. Formularele dau utilizatorului mai mult| putere n controlul datelor din baz|, furniznd n acelai tip i o interfa| vizual| mai atractiv|.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

130

Introducere n Microsoft Access: Formulare - cursul 7

Proiectarea formularelor este mult uurat| de generatoarele de formulare (Form Wizards).

Exist| o varietate de moduri de prezentare ale aspectului unui formular. Generatorul de formulare ofer| patru tipuri de aspecte. Fiecare poate fi modificat, ntre anumite limite ns|, pentru a satisface ct mai bine un aspect particular.

Pt. cumparare viziteaza:

Coloan| (Columnar)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Aspectul vizual (Form Layout) al formularului

Tipuri de aspecte ale formularelor


Tabel (Tabular)

http://www.east.utcluj.ro/mb/mep/antal

Vizualizat n modul proiectare, formularul pune la dispozit -ia programatorului mai multe sect -iuni pe suprafat -a ca 7 rora pot fi plasate obiecte de control, denumite, pe scurt, controale. Sect -iunile cele mai folosite sunt: antetul formularului (form header): se afis - eaza 7 la nceputul ferestrei; sect -iunea detaliu (detail section): cont -ine controale pentru manipularea valorilor stocate n sursa de date (tabel sau interogare) - este o sect -iune obligatorie; sfrs - itul formularului (form footer): este zona din subsolul formularului.

Foaie de date (Datasheet)

Aliniat (Justified)

Crearea unui formular cu AutoForm


AutoForm creeaz| un formular pe care se vor afia toate cmpurile i nregistr|rile tabelului sau interog|rii selectate. Fiecare cmp apare pe o linie separat| cu o etichet| n stnga lui.

0264-401667

NU COPIA !.

sau suna la:

131

Introducere n Microsoft Access: Formulare - cursul 7

Dup| ce formularul a fost creat, este deschis automat n modul de vizualizare al datelor (Form View) i este gata pentru introducerea sau modificarea datelor din tabel. Dac| n baza de date Northwind.mdb vei selecta tabelul Categories, vei obine formularul urm|tor:

Dac| dorii s| nchidei formularul, Access-ul va lansa un dialog pentru confirmarea salv|rii lui n baza de date.

Pentru a crea un formular cu Form Wizard

n fereastra bazei de date (Database Window) clic pe

butonul Forms; ap|sai butonul New i cutia de dialog New Form va fi afiat|: selectai Form Wizard; selectai un tabel sau o interogare care va fi sursa de date pentru formularul care urmeaz| s| fie creat - eu am selectat tabelul Employees

sau suna la:

Este posibil| crearea unui formular cu ajutorul Generatorului de Formulare (Form Wizard). Metoda este direct| i destul de simplu de utilizat. Proiectul formularului obinut se va putea modifica ulterior.

0264-401667

NU COPIA !.

Crearea unui formular cu Generatorul de Formulare (From Wizard)

http://www.east.utcluj.ro/mb/mep/antal

n fereastra bazei de date (Database window) clic pe butonul Tables sau Queries; clic pe numele tabelului sau interog|rii pe baza c|ruia se va construi formularul sau deschidei tabelul sau interogarea n orice mod de vizualizare; clic pe AutoForms ( ) din meniul Insert.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

132

Introducere n Microsoft Access: Formulare - cursul 7

din baza de date Northwind.mdb; clic pe butonul OK pentru afiarea paginii urm|toare din Generator;

clic pe cmpul care dorii s| apar| pe formular, apoi clic pe s|geata la dreapta (>) pentru ca s| fie ad|ugat n seciune cmpurilor selectate (Selected Fields); repetai procedura de mai sus pentru fiecare cmp care dorii s| apar| pe formular; Dac| este cazul, putei folosi s|geata n jos din seciune Tables/Queries a cutiei de dialog pentru a selecta o surs| de dat| diferit| care va conine alte cmpuri; eu am selectat cmpurile conform figurii urm|toare:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

cnd toate cmpurile dorite au fost ad|ugate ap|sai butonul Next;

0264-401667

NU COPIA !.

sau suna la:

133

Introducere n Microsoft Access: Formulare - cursul 7

urm|toarea pagin| permite selecia aspectului (layout) formularului;

selectai opiunea dorit| apoi clic pe butonul Next; urm|toarea pagin| va afia o list| cu stilurile predefinite de formulare:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

selectai una dintre opiuni, apoi clic pe Next; urm|toarea pagin| permite specificarea numelui formularului care va fi creat i opiunile finale pentru utilizarea formularului;

0264-401667

NU COPIA !.

sau suna la:

134

Introducere n Microsoft Access: Formulare - cursul 7

clic pe butonul Finish pentru crearea formularului; dac| ai p|strat opiunea "Open the form to view or enter information", atunci formularul va fi afiat pe ecran astfel:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Moduri de vizualizare a formularelor

Vizualizarea n modul proiectare (Design View)

Modul de vizualizare proiectare (Design View) sau, mai pe scurt, modul proiectare permite ad|ugarea, modificarea i tergerea obiectelor de pe suprafaa formularului. Formularul creat anterior este prezentat n modul proiectare n figura al|turat|. pentru vizualizarea formularului n mod proiectare (Design View), clic pe meniul View ( ) n timp ce

0264-401667

NU COPIA !.

sau suna la:

135

Introducere n Microsoft Access: Formulare - cursul 7

formularul este afiat n fereastra bazei de date.

Pentru vizualizarea formularului n mod "formular" (Form View)

pentru a trece n modul formular, din meniul View, selectai Form View ( ).

Vizulalizare nainte de tip|rire (Print Preview) permite afiarea pe ecran a formei n care se va tip|ri la imprimant| coninutul unui formular.
Vizualizarea nainte de tiparire (Print Preview)

clic pe Print Preview (

http://www.east.utcluj.ro/mb/mep/antal

Modul de vizualizare formular sau, mai pe scurt, modul formular este cel pentru care s-a creat formularul. n acest mod se pot introduce sau modifica datele din tabelele i interog|rile care sunt sursele de date ale formularului.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

) din meniul File.

Pt. cumparare viziteaza:

Pe ecran se va afia o pagin| de imprimant| cu un coninut de forma:

Este posibil s| nu folosim Generatorul pentru crearea ntregului formular, ci s| construim numai un schelet de baz|. Exist| cazuri cnd formularul pe care l dorim difer| foarte mult de tipurile pe care Generatorul le poate crea, n acest caz vei construi formularul de la "zero". n fereastra bazei de date, clic pe butonul Forms; Pentru a crea un clic pe butonul New, acesta va duce la afiarea ferestrei New formular fara Form; Generator

Crearea unui formular f|r| Generator

0264-401667

NU COPIA !.

sau suna la:

136

Introducere n Microsoft Access: Formulare - cursul 7

n exemplul care urmeaz| voi folosi tabelul Employees din baza de date Northwind.mdb

Pt. cumparare viziteaza:

din list| selectai vizualizarea n mod proiectare (Design View), apoi clic pe s|geata n jos i selectai tabelul sau interogarea care va fi sursa de date pentru formular; clic pe butonul OK i proiectul formularului va fi vizualizat pe ecran.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Vizualizarea ferestrei n mod proiectare

Deschiderea unui formular existent n modul proiectare

deschidei o baz| de date astfel nct s| fie afiat| fereastra bazei de date (Database Window); clic pe butonul Form; deschidei formularul pe care dorii s|-l vizualizai; clic pe meniul View, de aici selectai Design View.

n exemplul care urmeaz| am folosit formularul Orders din baza de date Nortwind.mdb. n

0264-401667

NU COPIA !.

sau suna la:

137

Introducere n Microsoft Access: Formulare - cursul 7

figura urm|toare acesta este vizualizat n modul formular.

Acelai formular, vizualizat n mod proiectare arat| astfel:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Fereastra modului proiectare

Fereastra modului proiectare conine un num|r de elemente vizuale cu care trebuie s| fii familiarizai. Afiarea sau ascunderea liniarului (Rulers)

0264-401667

NU COPIA !.

sau suna la:

138

Introducere n Microsoft Access: Formulare - cursul 7

La deschiderea unui formular, obiectul selectat este chiar formularul, lista propriet|ilor lui se prezint| sub forma:

Pt. cumparare viziteaza:

Lista cmpurilor pentru formularul Orders, care are ca surs| de date interogarea cu numele Orders Qry, se prezint| sub forma:

Afiarea cutiei cu instrumente (Toolbox) Bara cu instrumente grupeaz| obiectele standard, numite i controale (controls) care pot fi aezate pe suprafaa unui formular. pentru afiarea barei cu instrumente clic pe Toolbox din meniul View sau din bara de instrumente Form Design, clic pe ;

0264-401667

NU COPIA !.

Afiarea listei cmpurilor (Field List) Sursa de date a formularului este fie un tabel, fie o interogare. Ar fi incomod dac| utilizatorul ar trebui s| memoreze numele cmpurilor de date ale sursei. Afiarea listei de cmpuri ale sursei de date rezolv| aceast| problem|. Dac| dorii ca unul din cmpurile listei s| apar| pe suprafaa formularului este suficient s|-l tragei din list| pe suprafaa formularului. pentru afiarea listei cmpurilor, clic din meniul View pe Field List sau din bara de instrumente Form Design, clic pe .

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Afiarea listei de propriet|i (Properties) a unui obiect de pe suprafaa formularului Fiecare obiect de pe suprafaa formularului are un set de caracteristici denumite propriet|i. Acestea sunt afiate de Access ntr-o fereastr| special| sub forma unei liste. Unele propriet|i pot fi modificate de utilizator arbitrar, altele pot lua numai valori particulare care se pot selecta din liste speciale. pentru afiarea listei de propriet|i clic pe Properties din meniul View sau din bara de instrumente Form Design, clic pe .

http://www.east.utcluj.ro/mb/mep/antal

dac| liniarul nu este afiat, din meniul View, clic pe comanda Ruler. Dac| liniarul este afiat, un clic pe aceeai comand| va duce la ascunderea lui. Un articol de meniu care are dou| st|ri distincte i stabile, ntre care comut| la selectare, se numete articol bistabil.

sau suna la:

139

Introducere n Microsoft Access: Formulare - cursul 7

bara de instrumente se va afia sub forma:

Afiarea codului din spatele formularului Obiectele bazei de date i cele ale unui formular pot fi manipulate prin intermediul limbajului de programare Visual Basic for Applications (VBA). Instruciunile corespunz|toare obiectelor unui formular pot fi vizualizate astfel: clic pe Code din meniul View sau

Pentru formularul Orders, codul din spatele lui este de forma:

Pt. cumparare viziteaza:

din bara de instrumente Form Design, clic pe

http://www.east.utcluj.ro/mb/mep/antal
.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dup| ce ai creat un formular cu Generatorul, putei muta, ad|uga sau terge unele cmpuri. Principiul de lucru este acelai cu cel uzitat n toate aplicaiile Microsoft: selecteaz|, apoi manipuleaz|.

Manipularea proiectului de formular

0264-401667

NU COPIA !.

sau suna la:

140

Introducere n Microsoft Access: Formulare - cursul 7

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Editarea controalelor

Poziionarea i redimensionarea unui control este mai uoar| dac| se folosete grila (Grid).
Selectarea unui control cu mouse-ul

Poziionarea de pe un control pe altul se face prin ap|sarea tastei Tab.

Pentru a fixa poziia controalelor la punctele grilei

selectai Format din meniu; selectai articolul de meniu Snap to Grid. Dac| aceast| opiune este activat| sub forma toate controalele care se vor crea vor fi fixate n punctele grilei.

Pentru mutarea controalelor

avnd selectate un grup de controale, plasai cursorul pe latura controlului. Forma cursorului se va schimba ntr-o mn| deschis|; tragei controlul n noua poziie, apoi eliberai butonul mouse-ului.

Pentru mutarea independent| a cutiei text sau etichet|

avnd selectat un control sau un grup de controale, plasai cursorul peste dreptunghiul din stnga sus (move handle) al unui control. Cursorul i va schimba forma ntr-o mn| care

0264-401667

NU COPIA !.

sau suna la:

Clic undeva pe suprafaa controlului. Dac| ai f|cut clic pe o etichet|, vei observa opt puncte de form| dreptunghiular| n colurile cutiei etichet| (Label box) i la mijloacele laturilor cutiei care permite modificarea dimensiunilor cutiei (sizing handles). n colul din stnga sus se observ| un punct mai mare (move handle), el apare att la etichet| ct i la cutia text. Dac| facei clic pe suprafaa cutiei text vei observa cele opt dreptunghiuri n aceleai poziii caracteristice, de data aceasta pe chenarul cutiei de text i unul singur n colul stnga sus al cutiei etichet|. Acest punct mai mare n colurile din stnga sus permite deplasarea individual| sau n grup a celor dou| cutii.

Pt. cumparare viziteaza:

Controalele se folosesc pentru introducerea si afis - area datelor, de asemenea, se mai folosesc pentru afis - area informat -iilor statice. Fromularele si rapoartele lucreaza 7 cu aceles - i controale. n cele ce urmeaza 7 vor fi discutate controalele pentru formulare. Controalele sunt n realitate ferestre, asemenea tuturor celorlate elemente ale unei aplicat -ii Windows. Le fel ca si orice alta 7 ferestra 7 , controlul, poate primi date de la utilizator numai daca 7 este activ (are focalizarea). De exemplu, pentru ca utilizatorul sa 7 poata 7 introduce date ntr-o Cutie Text, aceasta trebuie sa 7 fi fost selectata 7 n prealabil de utilizator sau printr-o secvent -a 7 de program. Unele controale pot lua valori specificate n timpul proiecta 7 rii de ca 7 tre utilizator sau n timpul execut -iei aplicat -iei prin anumite secvent -e de program. Valoarea controlului este cea afis - ata 7 de acesta, de exemplu, o Cutie Text este valoarea afiata 7 n interiorul cutiei. Toate controalele au 7ti pe care aplicat -ia le poate citi si modifica. proprieta

Rolul controalelor

http://www.east.utcluj.ro/mb/mep/antal

Controalele pe care Access-ul le pune pe suprafaa unui formular, n urma folosirii Generatorului, se numesc controale legate. Aceasta nseamn| c| ele sunt legate de cmpurile tabelelor sau interog|rilor care au fost selectate drept surs| de date. Un control legat este compus dintr-o etichet| (Label) i o cutie text (Text box). Eticheta este titlul cmpului afiat pe suprafaa formularului i se g|sete stocat| n proprietatea titlu (Caption) din lista de propriet|i ale etichetei. Cutia text va stoca datele dintr-un tabel.

141

Introducere n Microsoft Access: Formulare - cursul 7

arat|. tragei cutia pe noua poziie, apoi eliberai butonul mouse-ului.

7 : Dac|, atunci cnd facei clic pe un control, meninei ap|sat butonul din stnga, Nota cursorul va lua forma minii deschise i controlul va putea fi mutat imediat.
selectai un control, poziionai cursorul pe unul dintre punctele de redimensionare (sizing handles). Forma cursorului se va modifica ntr-o linie cu s|gei la ambele capete indicnd sensurile n care se poate efectua tragerea; clic pe butonul stng al mouse-ului i tragei de punct, redimesionnd obiectul la o dimensiune mai mare sau mai mic|.

Pentru a redimensiona un control

Pentru a terge un control


clic undeva pe control; ap|sai tasta Delete.

Pentru a multiplica un grup de controale

selectai controlul sau controalele; selectai Duplicate din meniul Edit. O copie a controalelor va ap|rea imediat dedesubtul controalelor originale.

7 : Dac| repoziionai controlul duplicat i selectai din nou Duplicate, Access-ul va crea Nota un al treilea control care va fi poziionat aa nct cele trei controale s| fie egal distanate.

Pentru a muta sau copia controale folosind meniul Edit

Pentru selectarea a dou| controale adiacente

clic ntr-un punct n afara grupului i tragei cursorul peste controalele de selectat. Pe m|sur| ce mutai cursorul el va desena un dreptunghi n jurul grupului selectat. Toate controalele care sunt cuprinse n interiorul dreptunghiului sau sunt intersectate de laturile lui, vor fi selectate.

Pentru a selecta un grup de controale neadiacente

inei ap|sat| tasta Shift pe m|sur| ce selectai fiecare control. Dac| din eroare ai selectat un control nedorit selectai-l din nou, efectul va fi deselectarea lui.

Pentru alinierea unui grup de controale ntre ele


selectai controalele de aliniat;

0264-401667

NU COPIA !.

sau suna la:

selectai controlul; selectai Cut sau Copy din meniul Edit pentru a plasa controlul n Clipboard; selectai Paste din Edit. Controlul va fi plasat n colul din stnga sus al seciunii de detalii a formularului; mutai controlul n poziia dorit|;

Pt. cumparare viziteaza:

Nota 7 : Dac| ai selectat o etichet| i ap|sai Delete, se va terge numai eticheta. Dac| ai selectat o cutie text, la ap|sarea lui Delete se va terge att cutia ct i eticheta corespunz|toare ei.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

142

Introducere n Microsoft Access: Formulare - cursul 7

selectai alinierea (Align) din meniul Format, apoi selectai opiunea de aliniere dorit| din submeniul: .

selectai Save din meniul File; introducei numele formularului; ap|sai Enter, apoi clic pe OK.

Dac| modificai poziia controalelor sau ad|ugai noi controale formularului este posibil s| dorii modificarea dimensiunilor unei seciuni de formular. poziionai cursorul peste marginea de jos a seciunii. Forma cursorului se va modifica la o linie vertical| cu dou| s|gei la capete suprapus| peste o linie oriozontal| mai groas|; tragei marginea seciunii pn| cnd ajunge la dimensiunea dorit|.

Pentru a modifica dimensiunea unei seciuni

poziionai cursorul peste colul din dreapta jos a seciunii. Cursorul va lua forma unui plus cu s|gei la fiecare extremitate; tragei colul seciunii i formularului pn| la dimensiunea dorit|.

Pentru a modifica l|imea formularului i dimensiunea unei seciuni simultan

Controale legate (Bound controls)

Controlul legat afieaz| date dintr-un tabel sau interogare. Se folosesc pentru afiarea, modificarea i ad|ugarea datelor din tabele. Cel mai frecvent folosit control legat este Cutia Text (Text box). Controalele legate motenesc propriet|i ale tabelului de care sunt legate. Propriet|ile controlului pot fi modificate n formular f|r| afectarea

Tipuri de controale

sau suna la:

poziionai cursorul peste marginea din dreapta a oric|rei seciuni din formular. Cursorul va lua forma unei linii orizontale cu dou| s|gei la capete suprapus| peste o linie mai groas| vertical|; tragei marginea seciunii pn| ce ajungei la dimensiunea dorit|.

0264-401667

NU COPIA !.

Pentru a modifica l|imea unui formular

Pt. cumparare viziteaza:

Pentru a salva un formular cu toate modific|rile f|cute asupra controalelor lui

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

selectai controalele care dorii s| fie spaiate; selectai spaiere orizontal| (Horizontal Spacing) sau spaiere vertical| (Vertical Spacing) din meniul Format; selectai m|rete (Increase), micoreaz| (Decrease) sau f|-le egale (Make Equal) din submeniul: .

Pentru a modifica spaierea dintre controale

http://www.east.utcluj.ro/mb/mep/antal

143

Introducere n Microsoft Access: Formulare - cursul 7

propriet|ilor originale ale tabelului.

Controale calculate (Calculated controls)

Controlul calculat are datele derivate dintr-o expresie.

Cutia cu instrumente (Toolbox)


dac| cutia cu instrumente nu este afiat|, din View selectai Toolbox; acesta va fi afiat| sub forma: ; poziionai i redimensionai cutia dup| preferine.

Controalele care pot fi plasate pe formulare sunt grupate n cutia cu instrumente.


Pentru a deschide cutia cu instrumente (Toolbox)

7 a instrumentelor este prezentata 7 n tabelu care urmeaza 7: Descrierea sumara


Nume instrument Pictogram| Descriere

http://www.east.utcluj.ro/mb/mep/antal

Controale nelegate (Unbound controls)

Controlul nelegat este f|r| surs| de date. El poate afia informaii de tipul text, linie, dreptunghi sau imagine. De asemenea, poate accepta date care nu sunt ns| introduse direct ntr-un tabel.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Generatoare de Controale (Control Wizards)

Generatoarele de Controale permit crearea simpl| ale urm|toarelor tipuri de controale: Cutie List| (List Box); Cutie Combinat| (Combo Box); Grup de Opiuni (Option Group); Buton de Comad| (Command Button).

Etichet| (Label)

Pictograma se folosete la crearea unui text care nu se modific|. Majoritatea controalelor au ataate automat, la creare, o etichet|. Sunt utile la afiarea unui text undeva pe suprafaa formularului.

sau suna la:

Selecie de Obiecte (Select Objects)

Cnd simbolul este selectat, permite selectarea, mutarea i redimensionarea controalelor

0264-401667

NU COPIA !.

144

Introducere n Microsoft Access: Formulare - cursul 7

Cutie Text (Text Box)

Grup de Opiuni (Option Group)

Controlul d| posibilitatea seleciei unei singure opiuni dintr-un grup. Selecia unei opiuni din grup le exclude automat pe celelalte. Controlul permite, selectarea sau deselectarea unei opiuni. Att text, ct i desene pot fi folosite pentru a specifica semnificaia lui. Acest control permite, fie selectarea, fie deselectarea unei opiuni. Un punct negru este afiat dac| opiunea este selectat|.

Buton de Opiune (Option Button)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Buton Bistabil (Toggle Button)

Buton de Selecie (Check Box)

Acest control permite, fie selectarea, fie neselectarea unei opiuni. Semnul "bifat" U este afiat n caz de selecie. Butoanele de Selecie nu sunt mutual exclusive n selecie, adic| se poate s| fie simultan selectate mai multe. Controlul va afia o list| de opiuni disponibile. Putei vedea opiunile efectund clic pe s|geat| n jos din dreapta cutiei. Alternativ, putei introduce, la fel ca n Cutia Text, o opiune care nu apare n list|, Access-ul modificnd elementul de list| afiat la cel mai apropiat de textul introdus. Dac| nu ai activat proprietatea Limit To List la crearea Cutiei Combinate, noua valoare introdus| va fi salvat| n tabel.

Cutie Combinat| (Combo Box)

http://www.east.utcluj.ro/mb/mep/antal

Este cel mai utilizat control pe formulare. Se folosete pentru afiarea coninutului unui cmp i permite introducrea de la tastatur| de date noi n cmp.

Pt. cumparare viziteaza:

Buton List| (List Box)

Permite afiarea unor variante de opiuni sub forma unei liste prin care se poate defila. Numai valorile din list| pot fi selectate. Se folosete pentru lansarea unei aciuni. Aciunea este efectuat| pentru c| butonul este legat de o serie de comenzi denumite "Macro"uri sau Subprograme. Permite inserarea unei imagini n formular.

Buton de Comand| (Command Button)

Imagine (Image)

0264-401667

NU COPIA !.

sau suna la:

145

Introducere n Microsoft Access: Formulare - cursul 7

Chenar de Obiect Legat (Bound Object Frame)

Se folosete cnd dorii s| afiai un obiect OLE sau o imagine ataat| unei nregistr|ri. Permite ad|ugarea sau editarea imaginii sau obiectului, nregistrare cu nregistrare. Controlul definete: aciuni la ap|sarea tastelor Page Up/Page Down; definete linia de sus a paginii noi la tip|rirea formularului. Permite definirea unui control organizat pe pagini de forma:

Control Tab

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Terminator de Pagin| (Page Break)

Subformular/Subraport (Subform/Subreport)

Pentru afiarea unei relaii unu-la-muli se insereaz| un Subformular n formular. De obicei, unu este n formularul principal, iar muli n subformular. Permite ad|ugarea de linii cu scopul de a face formularul mai atractiv i mai bine organizat.

Linie (Line)

0264-401667

Dreptunghi (Rectangle)

NU COPIA !.

sau suna la:

Permite ad|ugarea unor dreptunghiuri cu scopul de a face formularul mai atractiv i mai bine organizat.

http://www.east.utcluj.ro/mb/mep/antal

Chenar de Obiect Nelegat (Unbound Object Frame)

Se folosete cnd dorii s| afiai un obiect OLE sau o imagine ca parte a unui proiect de formular. Obiectul va r|mne acelai, el nu se va modifica la deplasarea pe o alt| nregistrare.

Pt. cumparare viziteaza:

146

Introducere n Microsoft Access: Formulare - cursul 7

Alte Controale

Propriet|ile de legate de afiarea controalelor Etichet| i Cutie Text


Dei, n principal, propriet|ile prezentate n continuare sunt specifice acestor dou| controale i celelalte controale au, o parte dintre, aceste propriet|i. Proprietate Format Opiune Descriere

Formate numerice, dat| i time Auto, 1-15

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Decimal Places Visible

Determin| num|rul de zecimale afiate

Yes/No

Pentru Yes controlul este afiat; pentru No este invizibil

Display when Scrollbars Can Grow

Always, Print Only, Screen Only

Determin| cnd anume se afieaz| controlul Specific| afiarea barelor pentru deplasare

None, Vertical, Horizontal, Both

Yes/No

Permite creterea cutiei dac| mai multe linii de text sunt introduse

0264-401667

NU COPIA !.

Determin| modul de afi|re al valorii

sau suna la:

147

Introducere n Microsoft Access: Formulare - cursul 7

Can Shrink

Yes/No

Left Top

Poziia colului stng a controlului n sistemul de unit|i curent Poziia colului de sus a controlului n sistemul de unit|i curent

http://www.east.utcluj.ro/mb/mep/antal

Permite micorarea cutiei dac| num|rul de linii este mai mic dect dimensiunea iniial| a Cutiei Specific| poziia controlului pe axa orizontal| Specific| poziia controlului pe axa vertical|

Width Height Back Style

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

L|imea controlului n sistemul de unit|i curent n|limea controlului n sistemul de unit|i curent

Transparent , Normal

Back Color

Orice culoare disponibil|

Pt. cumparare viziteaza:

Determin| dac| fondul controlului este transparent sau opac (normal) Specific| culoarea pentru interiorul controlului sau a seciunii Determin| modul de afiare a seciunii sau controlului Determin| afiarea transparent| sau opaca a marginilor unui control

Special Effect Border Style

Flat, Raisen, Sunken, Shadowed, Etched, Chiseled

Transparent, Solid, Dashed, Dots

Border Width Fore Color

Hairline, 1 pt - 6 pt

Specific| grosimea marginilor controlului

Orice selecie din fereastra afiat|

Specific| culoarea textului din control sau pe cea folsit| la tip|rire Numele tipul de caractere folosit pentru afiarea valorilor controlului

Font Name

Orice tip de caracter disponibil (depinde de instalare)

Font Size

Orice m|rime disponibil|

M|rimea caractelelor foloste pentru afiarea valorilor controlului L|imea liniei folosit| de Windows pentru afiarea i tip|rirea caracterelor

Font Weight

Extra Light, Light, Normal, Medium, Semi-Bold, Bold, Extra Bold, Heavy

0264-401667

Border Color

Orice culoare disponibil|

NU COPIA !.

Culoarea marginii controlului

sau suna la:

148

Introducere n Microsoft Access: Formulare - cursul 7

Font Italic Font Underline Text Align Reading Order Keyboard Language

Yes/No Yes/No

Caractere nclinate n control

http://www.east.utcluj.ro/mb/mep/antal

Caractere subliniate n control Seteaz| alinierea pentru textul din control Determin| ordinea de citire a caracterelor pe baza limbii Determin| limbajul de la tasatatur| pentru introducerea de date n control Barele pentru defilare pot fi aezate n stnga sau drepta controlului n funcie de limb| Forma numerelor pentru limbile arab| i hindi Marginea stng| a controlului n inchi Marginea dreapt| a controlului n inchi Marginea de sus a controlului n inch

General (implicit), Left, Center, Right

Context, Left-to-Right, Right-toLeft System, English

Scroll Bar Align

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

System, Right, Left

Numeral Shapes Left Margin Right Margin Top Margin

System, Arabic, National, Context

Line Spacing Is Hyperlink

Spaierea, n inchi, ntre liniile de tetxt

Yes/No

Specific| dac| un control este sau nu hiperleg|tur| (pentru Yes textul este ablastru i subliniat i la clic duce la conectarea la Internet)

n figura ce urmeaz| se prezint| un formular care conine mai multe controale Etichet|. Proprietatea Caption conine textul pe care controlul l afieaz| pe ecran. ncercai s| creai formularul aa nct s| fie, n mod formular, vizualizat ntocmai ca i n figur|. La sfritul capitolului sunt prezentate toate propriet|ile specifice unui formular, o parte trebuie dintre ele modificate pentru ca aspectul formularului nou s| fie acelai cu cel din exemplu. Propriet|ile formularului vor fi vizibile dac| n modul proiectare se face clic n afara seciunilor

0264-401667

NU COPIA !.

Bottom Margin

Pt. cumparare viziteaza:

sau suna la:

Marginea de jos a controlului n inchi

149

Introducere n Microsoft Access: Formulare - cursul 7

formularului, apoi clic pe butonul din dreapta i din list| selectai Properties.

Navigarea ntr-un formular este aproape identica 7 cu cea dintr-o foaie de date. n mod formular, cel mai simplu mod de pozit -ionare n vederea modifica 7 rii unor date este clicul pe - ate numai attea cmpuri cte ncap pe ecran, mai multe cmpul dorit. ntruct pot fi afis tehhnici de navigare pot fi folosit pentru deplasarea n cadrul formularului sau ntre nregistra 7 ri, cteva dintre acestea sunt prezentate n tabelul urma 7 tor. Daca 7 formularul se ntinde pe mai multe pagini, se va afis - a o bara 7 de defilare pe verticala 7 (vertical scroolbar).

Navigarea ntre cmpurile formularului

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

7 tor Cmpul urma


Cmpul anterior

Tab,

6,9 sau Enter 7,8

Shift+Tab,

Primul cmp al nregistra 7 rii curente Ultimul cmp al nregistra 7 rii curente

Home sau Ctrl+Home End sau Ctrl+End

7 toare Pagina urma


Pagina anterioara 7

PgDown sau Next Record PgUp sau Previous Record

Tehnicile de editare a datelor se prezinta 7 n tabelul urma 7 tor:

Tehnici de editare a datelor

sau suna la:

Efect

Combinat -ie de taste

0264-401667

NU COPIA !.

150

Introducere n Microsoft Access: Formulare - cursul 7

Tehnica de editare Deplasarea punctului de inserare ntrun cmp Inserarea unei valori ntr-un cmp Selectarea ntregului cmp nlocuirea unei valori existente cu una noua 7

Combinat -ie de taste

Deplasat -i punctul de inserare, tastat -i noua data 7 F2 sau clic dublu

Selectat -i ntregul cmp, apoi introducet -i valoarea noua 7 Cltr+' (apostrof)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

nlocuirea valorii curente, cu cea 7 , introdusa 7 ntr-un cmp precedenta nlocuirea valorii curente cu cea implicita 7 Inserarea datei curente n cmp Inserarea orei curente n cmp

Ctrl+Alt+Spat -iu Ctrl+; Ctrl+:

Inserarea unei ntreruperi de linie n cmpurile de tipul Text sau Memo Inserarea unei nregistra 7 ri noi

Ctrl+Enter

Ctrl++ (plus)

S - tergerea nregistra 7 rii curente

Ctrl+- (minus)

7 rii curente Salvarea nregistra

Shift+Enter sau deplasarea pe o alta 7 nregistrare

7 rii fa 7 cute n Anularea modifica nregistrarea curenta 7

Esc sau butonul Undo

NU COPIA !.

Proprietate

Descriere si opt -iuni

Caption

Text afis - at n bara cu titlul formularului

sau suna la:

Proprieta 7tile formularului afecteaza 7 modul de afis - are a ntregului formular. Cele mai importante proprieta 7ti sunt prezentate n tabelul urma 7 tor:

Descriere opt -iune

0264-401667

Lista proprieta 7t -ilor unui formular

http://www.east.utcluj.ro/mb/mep/antal

7 sarea lui Apa

7 sau a lui 6

Pt. cumparare viziteaza:

151

Introducere n Microsoft Access: Formulare - cursul 7

Default View

http://www.east.utcluj.ro/mb/mep/antal

Determina 7 modul de vizualizare al formularului n execut -ie Continuous Form Datasheet

7 O nregistrare pe pagina
Maxim nregistra 7 ri pe pagina 7 (Implicit)

PivotTable

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

- eaza 7 valorile cmpului Afis orizontal sau vertical, apoi 7 suma pe coloana 7 calculeaza sau rnd
Analiza grafica 7 a datelor

PivotChart

Allow Form View

Allow Datasheet View

Validarea vizualiza 7 rii n mod foaie de date (Yes/No)

Allow Pivot Table View Allow Pivot Chart View Scroll Bars

Validarea vizualiza 7 rii n mod tabel pivot (Yes/No)

Validarea vizualiza 7 rii n mod grafic pivot (Yes/No)

Determina 7 afis - area barelor pentru defilare Neither

Pt. cumparare viziteaza:

7 rii n Validarea vizualiza mod formular (Yes/No)

Horizontal Only

Se afis - eaza 7 numai cea orizontala 7 Se afis - eaza 7 numai cea orizontala 7

Vertical Only

Both

Ambele bare sunt afis - ate

Record Selectors

Determina 7 afis - area selectorilor verticali de nregistra 7 ri (Yes/No)

Navigation Buttons

Determina 7 afis - area butoanelor de navigare (Yes/No)

0264-401667

NU COPIA !.

Nu se afis - eaza 7

sau suna la:

152

Introducere n Microsoft Access: Formulare - cursul 7

Dividing Lines

Auto Resize

Formularul se deschide - area completa 7a pentru afis nregistra 7 rii (Yes.No) Centreaza 7 formularul la deschidere (Yes/No)

Auto Center Border Size

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

7 stilul marginii Determina formularului


None

http://www.east.utcluj.ro/mb/mep/antal

Determina 7 afis - area de linii ntre sect -iunile vizibile ale formularului

Fara 7 margine sau elemente de margine (bare de defilare sau navigare) Margine subt -ire, nu se poate redimensiona

Thin

Pt. cumparare viziteaza:

Sizable Dialog

7 ri normale de formular Seta


Margine groasa 7 , cu bara de titlu; nu se poate redimensiona; se foloses - te pentru ferestre de dialog

Control Box

Determina 7 afis - area meniului de control (Restore, Move Size) (Yes/No)

Min Enabled

Se afis - eaza 7 butonul de minimizare

Max Enabled

- eaza 7 butonul de Se afis maxbimizare

Both Enabled

Se afis - eaza 7 butoanele de minimizare si maximizare

Close Button

7 afis - area Determina butonului Close n colt -ul dreapta-sus n meniul de control (Yes/No)

0264-401667

NU COPIA !.

Min Max Buttons

None

sau suna la:

Nu se afis - eaza 7 butoane n -ul dreapta-sus al colt formularului

153

Introducere n Microsoft Access: Formulare - cursul 7

What's This Button

Width

Afis - eaza 7 la 7timea formularului; se poate introduce sau Access o calculeaza 7 pe ma 7 sura 7 ce se creeza 7 formularul

Picture

Picture Type

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Numele fis - ierului imagine bitmap pentru fondul formularului

7 daca 7 imagimea Determina este inclusa 7 sau legata 7


Embedded

http://www.east.utcluj.ro/mb/mep/antal

Determina 7 afis - area, la apa 7 sa 7 rea lui Shift+F1, a Screen Tips

Pt. cumparare viziteaza:

Imaginea este inclusa 7 n formular si devine parte a bazei de date Imaginea este doar legata 7. Access stocheaza 7 locat -ia 7 la imaginii si o ncarca fiecare deschidere a formularului

Linked

Picture Size Mode

Determina 7 modul de afis - are a imaginii Clip

Afis - eaza 7 imaginea cu dimensiunile ei actuale

Zoom

7 dimensiunile Actualizeaza imaginii ca sa 7 ncapa 7 n formular proport -ional; poate rezulta o imagine care nu ocupta 7 ntreaga lungime sau la 7time din formular

sau suna la:

Stretch

Modifica 7 dimensiunile -ional) ca imaginii (neproport sa 7 ncapa 7 n formular

0264-401667

NU COPIA !.

154

Introducere n Microsoft Access: Formulare - cursul 7

Picture Alignemet

Determina 7 alinierea imaginii

http://www.east.utcluj.ro/mb/mep/antal

Top Left

Imaginea se afis - eaza 7 n colt -ul stnga-sus a formularului, raportului sau a controlului de tip imagine Imaginea se afis - eaza 7 n colt -ul dreapta-sus a formularului, raportului sau a controlului de tip imagine

Top Right

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Center

7 n Imaginea este centrata formular, raport sau n controlul de tip imagine (implicit)
Imaginea se afis - eaza 7 n -ul stnga-jos a colt formularului, raportului sau a controlului de tip imagine Imaginea se afis - eaza 7 n colt -ul dreapta-jos a formularului, raportului sau a controlului de tip imagine Imaginea formularului este 7 orizontal, n raport centrata cu la 7timea si vertical, n 7 lt -imea raport cu na formularului

Bottom Left

Bottom Right

Form Center

Pt. cumparare viziteaza:

Picture Tiling

Se foloses - te pentru afis - area 7 turata 7 a unor imagini mici ala (Yes/No) Numa 7 rul de puncte pe inch la afis - area grilei pe X Numa 7 rul de puncte pe inch la afis - area grilei pe Y

Grid X

Grid Y

0264-401667

NU COPIA !.

sau suna la:

155

Introducere n Microsoft Access: Formulare - cursul 7

Layout for Print

http://www.east.utcluj.ro/mb/mep/antal

Determina 7 daca 7 formularul foloses - te caractere de ecran sau de imprimanta 7 Yes No

Caractere de imprimanta 7 Caractere de ecran

Subdatasheet Height Subdatasheet Expanded

Determina 7 na 7 lt -imea subfoii de date expandate

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Determina 7 starea salvata 7a tuturor foilor de date dintr-un table sau interogare

Yes - Starea salvata 7a subfoilor de date este 7 expandara No - Starea salvata 7a subfoilor de date este nchisa 7

Orientation

Determina 7 orientarea vederii

Pt. cumparare viziteaza:

Right to Left

Afis - area si funct -ionarea se face de la dreapta la stnga Afis - area si funct -ionarea se face de la stnga la dreapta

Let to Right

Movable

Determina 7 daca 7 formularul poate fi mutat (Yes/No)

Record Source

Filter

Se foloses - te pentru a - area unei specifica afis submult -imi de nregistra 7 ri cnd se aplica 7 un filtru formularului Permite specificarea unui cmp pentru ordonarea datelor afis - are Permite ca utilizatorul sa 7 poata 7 afis - a date filtrate (Yes/No)

Order By

Allow Filters

0264-401667

NU COPIA !.

sau suna la:

Determina 7 locul n care se afla 7 datele afis - ate de formular sau unde vor fi stocate noile date. Poate fi un formular sau o interogare

156

Introducere n Microsoft Access: Formulare - cursul 7

Allow Edits

Allow Deletions Allow Additions

Permite sau opres - te s - tergere 7 rilor (Yes/No) nregistra

Data Entry

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Permite sau opres - te ada 7 ugarea de noi nregistra 7 ri (Yes/No)

Se foloses - te pentru afis - area nregista 7 rilor salvate Yes/No

http://www.east.utcluj.ro/mb/mep/antal

Permite sau opres - te editarea datelor facnd formularul read-only pentru nregistra 7 rile deja salvate (Yes/No)

Numai nregistra 7 rile noi sunt - ate/Toate nregistra 7 rile afis sunt afis - ate

Recordset Type

Permite actualizarea formularelor multi-tabel Dynaset

Pt. cumparare viziteaza:

Numai cmpurile tabelului implicit pot fi ediate Cmpurile tuturor tabelel pot fi editate Nu se poate edita nici un cmp

Dynaset (Inconsistent)

Snapshot

No Locks

nregistrarea se blocheaza 7 numai n timpul salva 7 rii

All Records

Toate nregistra 7 rile formularului sunt blocate n timpul folosirii lui Blocheaza 7 numai nregistrarea n curs de editare

Edited Record

0264-401667

NU COPIA !.

Record Locks

sau suna la:

Specifica 7 metoda de blocare 7 rilor n regim a nregistra multi-utilizator

157

Introducere n Microsoft Access: Formulare - cursul 7

Modal

Cycle

Determina 7 efectul lui Tab n ultimul cmp al nregistra 7 rii All Records

http://www.east.utcluj.ro/mb/mep/antal

Se foloses - te atunci cnd formularul trebuie nchis nainte de a face operat -ii cu alte formulare; inactiveaza 7 celelalte ferestre; pentru valoarea Yes, Modal inactiveaza 7 meniurile si barele cu instrumente 7 de genernd o fereastra dialog (Yes/No)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Tab permite trecerea la urma 7 toarea ntegistrare Tab face revenirea pe primul cmp al nregistra 7 rii curente Tab face deplasarea de pe ultimul cmp al nregistra 7 rii pe primul cmp al paginii curente

Current Record

Current Page

Menu Bar

- te pentru Se foloses specificarea unui meniu alternativ

Shortcut Menu

Permite activarea scurta 7 turilor de meniu

Shortcut Menu Bar

Permite specificarea unui meniu cu scurta 7 turi alternativ

Help File

- ierului de ajutor Numele fis (help), compilat, atribuit formularului

0264-401667

Toolbar

NU COPIA !.

sau suna la:

- te pentru Se foloses specificarea unei bare cu instrumente. Se poate crea o 7 cu instrumente prin bara selectarea opt -iunii Customize din comanda Toolbar a meniului View.

Pt. cumparare viziteaza:

158

Introducere n Microsoft Access: Formulare - cursul 7

Help Context Id

Tag Allow Design Changes

-ii despre Extra informat formular

Determina 7 cnd se pot face modifica 7 ri de proiectare Design View

http://www.east.utcluj.ro/mb/mep/antal

ID-ul punctului de intrare contextual din fis - ierul de ajutor

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

7 ri se pot face doar Modifica n modul proiectare


Modifica 7 ri se pot face n toate modurile vizualizare

All Views

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

159

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Obiectivele cursului 8

cum se creeaz| un control de tipul cutie combinat| (Combo Box) folosind cum se utilizeaz| Constructorul de Expresii (Expression Builder) pentru

cutia cu instrumente (Toolbox);

! ! ! ! ! ! ! ! !

crearea unui cmp calculat;

cum se seteaz| valoarea implicit| (Default Value) a unui control; cum se seteaz| regula de validare (Validation Rule) i textul de validare cum se definete o masc| de intrare (Input Mask); conceptele de Macro-uri (Macros) i Evenimente (Events); cum se folosete un buton de comand| (Command Button) ntr-un cum se adaug| un buton de comand| la un formular.

(Validation Text) pentru un control; cum se modific| ordinea Tab-urilor;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se introduce un subformular (Subform) ntr-un formular;

formular;

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

160

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Crearea controalelor este mult simplificat| prin utilizarea cutiei cu instrumente. Pentru a ilustra principiul vom crea un tip de control relativ complex, numit cutie combinat|. Acest tip de control permite, fie s| se introduc| o valoare de la tastatur|, fie s| se efectueze clic pe o s|geat| n jos, care va duce la desf|urarea unei liste de valori predefinite din care se poate selecta valoarea dorit|. Denumirea de cutie combinat| se datorete faptului c| acest control unific| comportamentul a dou| controale distincte: controlul cutie de text (Text Box) i controlul cutie de list| (List Box).

n exemplul care urmeaz|, se va folosi baza de date Northwind n care se va crea un formular nou pentru ilustrarea procedurii de creare a controalelor.
Crearea unui formular nou

Pe ecran va ap|rea un formular gol de forma:

Pt. cumparare viziteaza:

proiectare (Design View); clic pe butonul OK;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Crearea unui formular cu o cutie combinat|

deschidei baza de date Northwind; clic pe butonul Forms; clic pe butonul New; asigurai-v| c| din list| este selectat| vizualizarea n mod

http://www.east.utcluj.ro/mb/mep/antal

Crearea unei cutii combinate (Combo Box) folosind cutia cu instrumente (Toolbox)

Dac| cutia cu instrumente (Toolbox) nu este afiat| automat, efectuai clic pictograma

din bara de instrumente (Toolbar).

Crearea cutiei combinate (Combo Box)

clic pe pictograma cutiei combinate (Combo Box) cutia cu instrumente; poziionai cursorul n zona de centru a formularului;

0264-401667
din

NU COPIA !.

sau suna la:

161

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe butonul Next pentru a continua. Opiunea selectat| mai sus (I want the combo box to look up the values in a table or query.) va permite nc|rcarea listei de valori predefinite ale cutiei dintr-un tabel sau o interogare; urm|toarea fereastr| de dialog afiat| permite definirea sursei pentru datele pe care cutia le va afia;

http://www.east.utcluj.ro/mb/mep/antal

ap|sai butonul stng al mouse-ului i inndu-l ap|sat deplasai cursorul spre stnga jos. Vei defini astfel un dreptunghi care reprezint| dimensiunea controlului pe suprafaa formularului; eliberai butonul stng al mouse-ului i urm|toarea fereastr| de dialog va fi afiat|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

pentru acest exemplu, asigurai-v| c| tabelul Categories este selectat nainte de ap|sarea butonului Next; fereastra de dialog care va fi afiat| permite selectarea unui cmp care va fi sursa

0264-401667

NU COPIA !.

sau suna la:

162

Introducere n Microsoft Access: Crearea controalelor - cursul 8

datelor ce vor fi afiate n cutia combinat|;

pentru acest exemplu selectai CategoryName, apoi clic pe s|geata la dreapta pentru ad|ugarea acestui cmp n lista Selected Fields; clic pe Next pentru continuare; Urm|toarea fereastr| de dialog care va fi afiat| permite controlul l|imii (width) cutiei combinate.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

n acest caz, cutia trebuie s| fie suficient de lat| ca s| asigure afiarea complet| a tuturor valorilor din list|. Dac| aceast| condiie nu este ndeplinit|, poziionai cursorul pe marginea din dreapta a coloanei CategoryName i tragei marginea spre dreapta pn| ce vei obine l|imea dorit|;

0264-401667

NU COPIA !.

sau suna la:

163

Introducere n Microsoft Access: Crearea controalelor - cursul 8

pentru acest exemplu, pe locul lui CategoryName introducei textul Numele

Categoriei;

clic pe butonul Finish pentru p|r|sirea Generatorului cu generarea controlului cutie combinat|. Formularul complet va ar|ta vizualizat n mod proiectare, astfel:

http://www.east.utcluj.ro/mb/mep/antal

clic pe butonul Next pentru a continua; urm|toarea fereastr| de dialog permite ca Access-ul s| stocheze valoarea selectat| din cutia combinat| pentru ca ulterior s| fie refolosit|. Pentru exemplul nostru clic pe Next; ultima fereastr| de dialog permite definirea etichetei asociate cutiei combinate;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

164

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Pentru a vizualiza formularul aa cum l vede un utilizator, clic pe pictograma View bara de instrumente principal| i selectai Form View .

din

Pentru a folosi nou creata cutie combinat| clic pe s|geata n jos, iar lista valorilor predefinite va fi afiat| sub forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

nchidei formularul i salvai-l sub numele de F1-TEST.

0264-401667

NU COPIA !.

sau suna la:

165

Introducere n Microsoft Access: Crearea controalelor - cursul 8

http://www.east.utcluj.ro/mb/mep/antal

Un formular are mai multe seciuni, att formularul, seciunile, ct i controalele care sunt poziionate n diferite seciuni au propriet|i individuale. Unele propriet|i sunt predefinite, altele apar pe m|sur| ce noi controale sunt ad|ugate unor seciuni. Indiferent de felul acestora, propriet|ile pot fi modificate de cel care dezvolt| formularul. n continuare voi prezenta o parte din propriet|ile unui formular, pentru a nv|a mai multe despre acestea folosii sistemul de ajutor interactiv (on-line help). Deschidei orice formular, apoi vizualizai formularul n mod proiectare. Pentru exemplul care urmeaz|, din baza de date Northwind, voi folosi formularul Employees.

Modificarea propriet|ilor unui formular

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Pe ecran va ap|rea fereastra propriet|ilor

sub forma listei ala 7 turate.

0264-401667

NU COPIA !.

sau suna la:

166 Pentru a modifica 7t -ile unui proprieta formular

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

La proiectarea tabelelor am precizat c| este de evitat crearea unor cmpuri care stocheaz| date derivate sau calculate din alte date. De obicei, metoda eficient| este calcularea valorii dorite pe baza unor expresii aritmetice. Access-ul are o component| numit| Constructor de Expresii (Expression Builder) care asigur| scrierea corect| a expresiilor pe care nu le tii introduce corect, de exemplu din motive sintactice. Constructorul de Expresii poate fi folosit att n cazul formularelor, ct i n cazul interog|rilor i rapoartelor. Exemplul care urmeaz| folosete tabelul Order Details din baza de date Northwind. Din cmpurile Unit Price, Quantity i Discount se va calcula un cmp nou, numit Total = [Unit Price] * [Quantity] * [Discount]. Folosind Generatorul de Formulare (Form Wizard) se va crea un formular nou pe baza tabelului Order Details care va conine urm|toarele cmpuri: ProductID, Unit Price, Quantity i Discount.

Crearea unui cmp calculat

http://www.east.utcluj.ro/mb/mep/antal

plasai cursorul de mouse oriunde n zona gri din afara unui formular sau deasupra liniarului (Ruler), dac| acesta este vizualizat; clic dublu pe butonul stng al mouse-ului sau clic pe butonul din dreapta o singur| dat|, apoi selectai Properties din list|; modificai proprietatea dorit| f|cnd clic n regiunea din dreapta, pe linia propriet|ii de modificat, unde vei introduce noua valoare dorit|.

Dup| ap|sarea lui Next, la forma formularului se va selecta Tabular, iar numele sub care se salveaz| va fi FOrder Details. Dup| ap|sarea lui Finish, formularul va fi afiat pe ecran astfel:

0264-401667

NU COPIA !.

sau suna la:

167

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Se trece la vizualizarea n mod proiectare (View Design View), cnd formularul se va afia astfel:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

crete automat i n seciunea detaliilor (Detail) apare un nou control care are scris n el

sau suna la:

Din bara cu instrumente (Toolbox) selectai controlul Text Box apoi poziionai cursorul de mouse undeva n dreapta formularului, n afara spaiului lui, pe o linie cu colul din dreapta sus al controlului Discount i ap|sai butonul stng al mouse-ului. L|imea formularului va

0264-401667

168

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Pe ecran se va afia o fereastr| de forma:

http://www.east.utcluj.ro/mb/mep/antal

Unbound. El are asociat| i o etichet|, aceasta nefiind necesar| va fi tears| (n figura anterioar|, eticheta este pus| peste controlul Quantity; este suficient s| ne poziion|m cu mouse-ul pe ea, clic pe butonul stng apoi ap|sai tasta Delete pentru tergerea ei). Afi|m lista propriet|ilor noului control i n locul lui Text10, scriem Total. Prin aceasta proprietatea Name primete valoarea Total. Ap|s|m tasta Tab, apoi facem clic pe butonul din dreapta cmpului gol pentru lansarea Constructorului de Expresii.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Crearea unui cmp calculat folosind Constructorul de Expresii

din prima list| selectai obiectul care conine controalele sau cmpurile care vor participa n expresie. Pentru exemplul actual, Access-ul selecteaz| automat formularul curent - FOrder Details -

0264-401667

NU COPIA !.

sau suna la:

169

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe operatorul *. Procednd conform celor descrise construii expresia: [UnitPrice] * [Quantity] * [Discount]; clic pe butonul OK. Coninutul propriet|ii Control Source (Sursa Controlului) va deveni =[UnitPrice] * [Quantity] * [Discount]. Aceasta nseamn| c| valoarea acestui control nu se va lua dintr-un tabel sau interogare ci se va calcula pe baza expresie anterioare. Pentru ca formularul s| afieze o etichet| deasupra coloanei controlului Total, din seciunea Form Header, copiai controlul Detail i modificai proprietatea Caption a noului control etichet| la Total. Apoi aliniai-l pe vertical| la controlul cutie de text Total i pe orizontal| la controalele etichet| din seciunea Form Header. Vizualizat n mod formular, formularul FOrder Details va deveni:

http://www.east.utcluj.ro/mb/mep/antal

vizualizat n mod proiectare; din cea de a doua list| selectai UnitPrice, iar din cea de a treia Value; clic pe butonul Paste, iar expresia va fi afiat| astfel:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Crearea unui formular cu subformular (Subform)


n exemplul care urmeaz| vom folosi baza de date Northwind i vom crea un formular nou care va conine un control de tipul subformular.

0264-401667

NU COPIA !.

sau suna la:

170

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe butonul OK; ad|ugai cmpurile conform figurii de mai jos:

http://www.east.utcluj.ro/mb/mep/antal

Crearea formularului nou

deschidei baza de date Northwind; clic pe butonul Form; clic pe butonul New; selectai Generatorul de Formulare (Form Wizard); selectai tabelul Products ca surs| de date pentru formular dup| cum se vede mai jos:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe butonul Next pentru a continua; n continuare folosii forma implicit| - Columnar - de pe pagina urm|toare a Generatorului;

0264-401667

NU COPIA !.

sau suna la:

171

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Noul formular va fi afiat sub forma prezentat| n figura urm|toare:

Crearea unui subformular

comutai vizualizarea n mod proiectare (Design View) prin clic pe pictograma View (de pe Toolbar). Formularul va fi afiat dup| cum urmeaz|:

http://www.east.utcluj.ro/mb/mep/antal

clic pe butonul Next; selectai stilul Stone de pe aceast| pagin|, apoi clic pe Next; n pagina actual| dai numele de Formular cu Subformular formularului, apoi clic pe Finish.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

prima oar| vei crea un spaiu pe formular n care s| fie pus subformularul; mutai cursorul de mouse n colul din drepta jos a ferestrei formularului i tragei de margine pentru a face fereastra mai mare; mutai cursorul de mouse pe marginea de sus a barei Form Footer i tragei bara n jos pentru a face spaiu suficient pentru subformular. Ecranul va avea o form| asem|n|toare cu cea din figura care urmeaz|:

0264-401667

NU COPIA !.

sau suna la:

172

Introducere n Microsoft Access: Crearea controalelor - cursul 8

0264-401667

NU COPIA !.

sau suna la:

acum suntem gata pentru inserarea subformularului. Dac| cutia cu instrumente nu este deja afiat|, clic pe pictograma Toolbox pentru afiare; clic pe pictograma Subform/Subreport din cutia cu instrumente; folosii tehnica tragerii pentru a crea un dreptunghi pe suprafaa formularului pe locul unde dorii s| fie poziionat subformularul; n momentul n care eliberai butonul mouse-ului, Generatorul de Subformulare i va

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

173

Introducere n Microsoft Access: Crearea controalelor - cursul 8

n cazul exemplului nostru acceptai opiunea implicit|, apoi clic pe Next; n final, trebuie s| dai un nume subformularului, acceptai numele implicit de Orders Subform i clic pe butonul Next pentru a trece la urm|toarea pagin| a Generatorului; formularul va fi vizualizat n mod proiectare dup| cum urmeaz|:

http://www.east.utcluj.ro/mb/mep/antal

afia prima pagin|; selectai opiunea Forms; folosii s|geata n jos pentru a selecta din list| formularul care va fi folosit ca subformular. Pentru exemplul nostru vei selecta un formular existent Orders Subform; clic pe butonul Next pentru a continua, urm|toarea pagin| va fi afiat| dup| cum urmeaz|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe pictograma View de pe bara de instrumente standard i selectai Form View.

0264-401667

NU COPIA !.

sau suna la:

174

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Formularul mpreun| cu subformularul vor fi afiate astfel:

La proiectarea formularelor, acestea trebuie s| permit| introducerea ct mai simpl| a datelor, de asemenea este tot sarcina noastr| s| facem ct mai grea introducerea unor date incorecte. Exist| o limit| a controlului care poate fi exercitat asupra datelor culese, dar exist| multe posibilit|i pentru verificarea corectitudinii datelor introduse. De exemplu, dac| dorii s| citii un num|r, putei face imposibil| introducerea unor caractere str|ine. Cnd cmpul corespunz|tor din tabel este o dat|, putei asigura neacceptarea unor date invalide, de exemplu 31/11/00 (noiembrie are 30 de zile). Propriet|ile controalelor care permit aceste verific|ri sunt:

Implementarea regulilor de integritate specifice bazei de date sau controlul datelor stocate n baz|

0264-401667

NU COPIA !.

sau suna la:

- area ntr-o singura 7 fereastra 7 a cont -inutului tabelelor Subformularele sunt folosite pentru afis aflate n relat -ie 1 M. ntre tabele Products s - i Order Details exista 7 o relat -ie 1 M prin intermediul cmpului ProductID. Tabelul n care se afla 7 cheia primara 7 va fi sursa de date 7 cheia stra 7 ina 7 va fi sursa de date pentru subformular. pentru formular, iar tabelul n care se afla Cnd se navigheaza 7 printre nregistra 7 rile formularului, nregistra 7 rile afis - ate n subformular se 7 continuu fiind afis - ate numai acelea care corespund valorilor curente din cmpul de modifica lega 7 tura 7 . Mai sus, pentru prima nregistrare din formular ProducID ia valoarea 1, n subformular vor fi afis - ate numai acele nregistra 7 ri care au n ProducID s - i ele egale cu 1.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

175

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Nume Default Value

Semnificaie

Validation Rule

O expresie care limiteaz| domeniul de valori care poate fi introdus. De exemplu, n cazul unui Salar poate fi >0 and < 1000000. Orice valoare n afara acestui domeniu nu va fi acceptat|. Un mesaj care va fi afiat dac| regula de validare este nc|lcat|.

Validation Text

Aceste propriet|i pot fi setate i la momentul proiect|rii tabelului. De asemenea, este posibil ca regulile de validare s| fie diferite dect cele din controalele formularului.
Setarea lui Default Value

Setarea lui Validation Rule

vizualizai lista propriet|ilor (Property Sheet) controlului; selectai de sus butonul Data; clic pe Validation Rule - Regula de Validare; tastai o expresie sau clic pe butonul Constructorului de Expresii (Expression Builder). vizualizai lista propriet|ilor (Property Sheet) controlului; selectai de sus butonul Data; clic pe Validation Text - Text de Validare i introducei mesajul dorit.

Setarea lui Validation Text

Pt. cumparare viziteaza:

vizualizai lista propriet|ilor (Property Sheet) controlului; selectai de sus butonul Data; clic pe Default Value - Valoare Implicit|; tastai o expresie sau clic pe butonul Constructorului de Expresii (Expression Builder).

http://www.east.utcluj.ro/mb/mep/antal

Aceast| valoare este automat inserat| n fiecare nregistrare nou|. Utilizatorul poate introduce pe locul acesteia o alt| valoare dac| este cazul.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Setarea lui Input Mask

Nota 7 : Generatorul M|tilor de Intrare se poate folosi numai cu controale de tipul dat| sau text.

Modificarea ordinii Tab-urilor

Ordinea Tab-urilor specific| modul n care ne putem deplasa ntre controalele unui formular. Ea specific| plasarea pe urm|torul control cnd de exemplu, un cmp este plin sau am ap|sat una din tastele Tab sau Enter. La crearea unui formular, Access-ul stocheaz| ordinea Tab-urilor n ordinea ad|ug|rii controalelor pe formular. Dac| dorii s| modificai aceast| ordine, n special pentru a permite utilizatorului s| se plimbe ntr-o ordine ct mai natural| ntre controale, Access-ul ofer| o astfel de facilitate.

sau suna la:

vizualizai lista propriet|ilor (Property Sheet) controlului; selectai de sus butonul Data; clic pe Input Mask - Masca de Intrare; tastai o Masca de Intrare sau clic pe butonul Generatorului M|tilor de Intrare (Input Mask Wizard).

0264-401667

NU COPIA !.

176 Modificarea ordinii Tab-urilor

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe butonul Auto Order pentru a defini ordinea de la stnga la drepta sau de sus n jos. Dac| aceste variante nu sunt suficiente, folosind tehnica tragerii, se poate prinde un nume de cmp i trage pe poziia dorit| n list|.

Butoanele de comand| sunt folosite pentru iniierea unui grup de aciuni. Grupul de aciuni poate fi de dou| feluri: macro sau procedur| de eveniment (Event Procedure).
Ce este un macro?

Butoane de comand| (Command Buttons)

Ce este procedura de eveniment?

Procedura de eveniment este un subprogram de tip subrutin| scris n limbajul de programare Visual Basic, care realizeaz| o operaie particular|, de exemplu g|sirea nregistr|rii urm|toare.

0264-401667

NU COPIA !.

sau suna la:

Macro-ul este o secvent -a de aciuni grupate mpreuna 7 prin nregistare (recorded) ntr-o secven| particular|, pentru a fi lansate n execuie la orice moment ulterior nregistr|rii.

http://www.east.utcluj.ro/mb/mep/antal

deschidei formularul n mod proiectare; selectai Tab Order din meniul View; vei vedea o fereastr| de dialog care va conine numele controalelor de pe formular n ordinea Tab;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

177

Introducere n Microsoft Access: Crearea controalelor - cursul 8

n exemplul care urmeaz| vom ad|uga un buton de comand| unui formular din baza de date Northwind: deschidei baza de date Northwind, clic pe butonul Forms, apoi selectai i deschidei formularul Categories. Formularul este prezentat mai jos.

Ad|ugarea unui buton de comand| la un formular

comutai n mod proiectare (Design View) prin clic pe pictograma View din bara de instrumente standard i selectai Design View; dac| cutia cu instrumente nu este afiat|, afiai cutia cu instrumete Toolbox prin clic pe pictograma Toolbox; clic pe pictograma Command Button din cutia cu instrumente Toolbox; folosii tehnica de tragere cunoscut| deja pentru a desena un dreptunghi mic sub eticheta Description a formularului; cnd eliberai butonul mouse-ului, vei vedea prima fereastr| din Generatorul Butoanelor de Comand| (Command Button Wizard); exist| un num|r de categorii (Categories), fiecare categorie avnd un num|r disponibil de aciuni (Actions). Fiecare aciune are definit| cte o pictogram| care poate fi folosit| pentru butonul nou creat; pentru cazul exemplului nostru selectai categoria Form Operations - Operaii cu Formulare; din categoria Form Operations, selectai aciunea Close Form - nchide Formular. Pagina din Generator este afiat| n figura care urmeaz|;

http://www.east.utcluj.ro/mb/mep/antal

Pentru a exemplifica utilizarea butoanelor de comand|, din baza de date Northwind, deschidei formularul Customer Phone List. Pentru a vedea detaliile clienilor care ncep cu litera T, clic pe butonul de comand| T, pentru a vedea toate numerele de telefon, clic pe butonul de comad| All.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

178

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe butonul Next pentru a continua; urm|toarea pagin| a Generatorului va fi afiat|. Ea permite ad|ugarea unui text sau a unei pictograme pe butonul de comand|;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

acceptai opiunea implicit| i facei clic pe Next; ultima pagin| a formularului va fi afiat|. Aceasta permite definirea numelui butonului de comand|. n cazul nostru acest nume va fi CIesire;

0264-401667

NU COPIA !.

sau suna la:

179

Introducere n Microsoft Access: Crearea controalelor - cursul 8

clic pe butonul Finish pentru ca Generatorul s| creeze butonul de comand|; formularul, coninnd proasp|tul buton de comand| va fi vizualizat n mod proiectare. pentru a vedea cum arat| formularul n mod formular (Form View), clic pe View din meniu, apoi selectai Form View;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe buton i formularul va fi nchis. Se va cere confirmarea salv|rii modific|rilor aduse formularului. Selectarea lui Yes va duce la ad|ugarea permanent| a butonului de comand| n formular.

Dac| un formular se ntinde pe o suprafa| mai mare dect n|limea ecranului, se poate utiliza ntreruperea de pagin| pentru a realiza afiarea coninutului formularului pe pagini. Utilizatorul va ap|sa tastele Page Up sau Page Down pentru a se deplasa pe pagina urm|toare

ntreruperi de pagin| (Page Break)

0264-401667

NU COPIA !.

sau suna la:

180

Introducere n Microsoft Access: Crearea controalelor - cursul 8

cnd aceasta este vizualizat| n mod formular. Pentru a folosi ntreruperile de pagin| trebuie s| setai proprietatea DefaultView a formularului la valoarea Single Form.
Ada 7 ugarea unei ntreruperi de 7 pagina

clic pe instrumentul Page Break din cutia cu instrumente (Toolbox); clic n formular pe poziia n care dorii s| punei ntreruperea de pagin|, atenie s| nu t|iai prin ntrerupere un control; un rnd de 6 puncte va fi afiat pe marginea din stnga pentru a indica ntreruperea de pagin|.

Exemplul urm|tor are ca suport modelul relaional obt -inut ca urmare a normaliz|rii prezentate n cursul 3.

Tabele i relaii
Nume tabel TContacte

Numele tabelelor i cmpurilor care vor fi create se prezint| n continuare: Nume cmp Tip/Proprieta 7 i

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Aplicaie cu formulare i controale

IDContact

Data Type AutoNumber PrimaryKey Data Type: Text Field Size: 100

Nume Contact IDContact

TContacte1

Data Type: Number Field Size: Long Integer Data Type: Number Field Size: Long Integer

IDInfoContact Info Contact IDTipContact Tip Contact

TTipContact

Data Type: AutoNumber PrimaryKey Data Type: Text

Fereastra relaiilor este:

Pentru tabelele TContacte i TContacte1 relaia este definit| astfel:

0264-401667

NU COPIA !.

Data Type: Text Field Size: 255

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

181

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Pentru tabelele TTipContact i TContacte1 relaia este definit| astfel:

Formulare

Primul formular care va fi creat va avea ca surs| de date tabelul TTipContact i se va salva sub numele de FTTipContact.

Etapele de parcurs sunt: din fereastra bazei de date selectai butonul Forms, apoi clic pe New; n ferestra New Form facei seleciile din figura al|turat|; noul formular va fi afiat, iar n continuare introducei datele conform figurii care urmeaz|: nchidei formularul al|turat, iar

0264-401667

NU COPIA !.

sau suna la:

Observai c| opiunea Cascade Delete Related Record este invalidat| pentru c| nu dorim s| se terg| nregistr|rile asociate din TContacte1, dac| cumva se terge un tip de contact din TTipContact.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

182

Introducere n Microsoft Access: Crearea controalelor - cursul 8

n continuare vom crea pe baza tabelului TContacte un formular nou cu numele FTContacte. Figura ala 7 turata 7 prezint| seleciile care se fac pentru aceasta.

n pagina urm|toare, ambele cmpuri - are n vor fi selecate pentru afis formular. n varianta finala 7 , cmpul Nume Contact va fi afiat n formular, iar cmpul IDContact va 7 cut invizibil prin setarea fi fa proprieta 7tii Visible la No. n ultima pagin| a generatorului, acolo unde se cere numele formularului, specificai numele FTContacte. Noul formular va fi afiat pe ecran gata pentru introducerea datelor. Comutai pe vizualizarea n mod proiectare i facei loc pe suprafaa formularului pentru a insera un control de tipul Subform care va avea ca surs| de date tabelul cu numele TContacte1. Access va crea un subformular care va avea ca surs| de date interogarea de mai sus. Atunci cnd Access va cere numele sub care s| salveze interogarea acceptai numele implicit de TContacte1 subform. Realizai oriunde pe suprafaa subformularului clic dublu, Access va deschide automat, n mod proiectare, subformularul salvat. Vei avea trei controale Text Box pe suprafaa acestuia cu numele: IDContact, IDInfoContact i Info Contact. Selectai controlul Text Box cu numele IDInfoContact, apoi facei clic pe butonul din drepta. Din meniul Change To selectai Combo Box. Observai c| Text Box s-a transformat ntr-un control Combo Box. Vizualizai lista propriet|ilor controlului IDInfoContact. Acesta poate stoca o valoare numeric| n tabelul TContacte1 care are ntotdeauna un corespondent n tabelul TTipContact. Pentru noi ar fi mai simplu ca pe

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cnd vei fi ntrebat dac| dorii s| salvai modific|rile n noul formular (Do you want to save changes to the design of form 'Form1') selectai butonul Yes, apoi n noua fereastr|, la Form Name introducei FTTipContact i facei clic pe pe OK. Observat -i ca 7 n colt -ul din stnga sus este afis - at implicit numele sursei de date. Modificarea proprieta 7tii Caption a formularului permite afis - area unui alt text n locul celui implicit.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

183

Introducere n Microsoft Access: Crearea controalelor - cursul 8

Nume proprietate Row Source Column Count

Valoare TTipContact

Sursa de date pentru valorile pe care controlul Combo Box le va afia n list| Num|rul de coloane care vor fi afiate n control L|imea celor dou| coloane. L|imea pentru prima coloan| este 0, adic| ea nu se vede.

Column Widths

Introducei numele de contact Vasile Aioanei i informaiile de contact conform figurii care urmeaz|. Observat -i ca 7 , n figura 7 ,controlul IDContact nu este vizibil n subformular ntruct

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

0";3"

http://www.east.utcluj.ro/mb/mep/antal

lng| valorile numerice corespunz|toare tipului de contact s| se afieze i numele acestora. Controlul Combo Box va afia lista tuturor tipurilor de contacte i va introduce n controlul IDInfoContact valoarea numeric| corespunz|toare unui anumit tip de contact selectat din lista afiat| n Combo Box. Tabelul care urmeaz| prezint| lista propriet|ilor i semnificaia lor necesare pentru a face cele descrise mai sus. Semnificaie

Pt. cumparare viziteaza:

7 clic pe numele cmpului pentru a selecta coloana, apoi clic pe el a fost ascuns (se realizeaza butonul din dreapta, din lista 7 selectat -i Hide Columns). Totul ar fi n ordine dac| nu va fi necesar s| folosim cndva un tip de contact care nu este introdus n tabelul TTipContact. Rezolvarea acestei situaii se face ad|ugnd n seciunea Form Footer a formularului un buton de comand| care dac| este ap|sat va deschide primul formular (FTTipContact) creat pentru a permite introducerea unui nou tip de contact. i n acest caz putem fi asistai de un generator, este suficient s| facem clic pe pictograma Command Button din Toolbox i s| poziion|m mouse-ul undeva sub bara pe care scrie Form Footer i care marcheaz| nceputul acestei zone. Generatorul va scrie automat codul corespunz|tor deschiderii unui formular dac| la categorii (Categories) selectai operaii cu formulare (From Operations), iar la aciuni (Actions) Open Form (deschide un formular).
La ap|sarea butonului Next vei selecta dintr-o list| numele formularului care va fi descris, adic| pe FTTipContact, apoi folosii Next pn| cnd ajungei la pagina din figura care

0264-401667

NU COPIA !.

sau suna la:

184

Introducere n Microsoft Access: Crearea controalelor - cursul 8

urmeaz|.

Aici putei stabili dac| butonul va avea o imagine sau va conine un text ce specific| aciunea lui. Pentru exemplul nostru am ales varianta cu text, iar textul afiat de buton este: &Adauga tip contact. La ap|sarea lui Next va fi afiat| ultima pagin| a generatorului, aici vom introduce textul CAdauga pentru numele Command Button-ului, apoi vom ap|sa Finish.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Ca exerciiu, vom mai ad|uga un buton de comand| care corespunde aciunii de nchidere a formularului curent (Close Form). n final formularul, dup| un pic de cosmetic|, va ar|ta ca s - i n figura anterioara 7.

Cunoatei deja c| un formular poate avea n spatele lui linii de program. Observai c| n cazul cnd introducei tipuri noi de contacte prin butonul Adauga tip contact, acestea nu vor

0264-401667

NU COPIA !.

sau suna la:

185

Introducere n Microsoft Access: Crearea controalelor - cursul 8

On Error Resume Next Forms!FTContacte![TContacte1 subform].Form!IDInfoContact.Requery

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

nchidei fereastra de cod cu liniile de mai sus i acceptat -i salvarea lor. Acestea spun lui Access s| remprosp|teze informaiile afiate n controlul IDInfoContact a subformularului [TContacte1 subform] din formularul FTContacte n momentul cnd acesta este nchis. nchidei fereastra de modul apoi, formularul i r|spundei cu Yes, cnd se cere salvarea modific|rilor pe care le-ai f|cut.

http://www.east.utcluj.ro/mb/mep/antal

fi afiate imediat n lista tipurilor de contacte din formularul FTContacte dect dac| l nchidei i l redeschidei. Pentru evitarea acestei proceduri trebuie scrise cteva linii de program n formularul FTipContacte. Deschidei formularul n mod proiectare, afiai lista propriet|ilor formularului i pentru proprietarea On Close selectai din list| [EventProcedure], apoi clic pe butonul din dreapta i introducei liniile de program:

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

186

Introducere n Microsoft Access: Rapoarte - cursul 9

Obiectivele cursului 9

! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

cum se deschid i se vizualizeaz| rapoarte existente; cum se navigheaz| ntr-un raport; cum se tip|resc rapoarte; cum se vizualizeaz| ntreaga pagin| de raport;

cum se creeaz| un raport organizat pe coloane folosind AutoReport; cum se creeaz| rapoarte folosind Generatorul de Rapoarte (Report cum se adaug| nivelele de grupare (Grouping Levels) ntr-un raport; cum se specific| forma (layout) raportului; cum se specific| stilul raportului;

Wizard);

cum se folosete Generatorul de Etichete (Label Wizard); cum se folosete Generatorul de Grafice (Chart Wizard); cum se creeaz| un raport f|r| Generator; cum se creeaz| o cutie de text; cum se creeaz| o etichet|;

0264-401667

cum se seteaz| propriet|ile rapoartelor.

Pt. cumparare viziteaza:

cum se sorteaz| nregistr|rile unui raport;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se creeaz| rapoarte folosind AutoReports;

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

NU COPIA !.

sau suna la:

187

Introducere n Microsoft Access: Rapoarte - cursul 9

Pt. cumparare viziteaza:

Cel mai simplu mod de creare al unui raport este folosirea Generatoarelor din Access. Exist| mai multe variante de rapoarte. Metoda cea mai direct| de creare este AutoReport care genereaz| un raport din cmpurile unui tabel sau a unei interog|ri la simpla ap|sare a unui buton. Dintre variantele mai complexe sunt rapoartele de forma unei coloane (Single Column), rapoarte cu grupuri i totale (Groups/Totals) i rapoartele de form| tabelar| (Tabular Reports).

Gruparea permite identificarea i organizarea datelor pe grupe logice i calcularea de totale locale sau globale pe baza unor valori comune. Sunt permise cel mult 10 nivele de grupare. De asemenea, este posibil| includerea unor subrapoarte ca parte a unui raport.

nainte de a ncepe s| creai rapoarte singuri, ar fi util s| explorai rapoartele din baza de date Northwind. Le putei vizualiza n mod previzualizare i proiectare pentru a v| forma o idee

0264-401667

NU COPIA !.

sau suna la:

Un raport are mai multe sect -iuni. Acestea se elaboreaza 7 , n faza de proiectare a raportului, prin pozit -ionarea pe suprafat -a sect -iunii de controale. Unele sect -iuni ale rapoartelor sunt opt -ionale, altele obligatorii. Cteva dintre tipurile de sect -iuni mai folosite sunt: antetul raportului (report header): apare o singura 7 data 7 , la nceputul raportului. Cont -ine, de obicei, elemente constante, valori de cmpuri care se vor afis -a numai pe prima pagina 7 a raportului. sfrs - itul raportului (report footer): apare o singura 7 data 7 , la sfrs - itul raportului. -ine elemente constante, funct -ii aplicate asupra tuturor cmpurilor sau valori de Va cont cmpuri care sunt concluzii trase pe marginea datelor din raport. sect -iunea detaliu (detail): apare pentru fiecare nregistrare din sursa de date (tabel sau interogare). Va cont -ine detaliile raportului si este cel mai des formata 7 din cmpuri si funct -ii. sect -iunea de grupuri (group header & footer): cnd mai multe nregistra 7 ri au aceeas - i valoare ntr-un cmp se poate realiza gruparea lor pe baza cont -inutului 7 ri consecutive. Din acest cmpului. Gruparea se poate realiza numai pentru nregistra motiv nregistra 7 rile trebuie sa 7 fie sortate pe baza valorilor cmpurilor folosite la 7 n Access). Fiecare grup grupare (sortarea si gruparea din rapoarte nu pot fi separata are o sect -iunile de antet (header) s - i sfrs - it (footer). Antetul este folosit folosit pentru - area valorilor pentru care se face gruparea, iar sfrs - itul este folosit pentru afis - area afis unor concluzii specifice respectivului grup de nregistra 7 ri. sect -iunea pagina 7 (page): fiecare pagina 7 scoasa 7 la imprimanta 7 are un antet si un sfrs - it. De exemplu, n sfrs - itul de pagina se poate afis - a numa 7 rul pagini de raport.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Exist| o multitudine de cazuri pentru folosirea rapoartelor, cteva mai comune ar fi: totale periodice ale vnz|rilor, liste de stocuri, liste de restanieri la plat|, facturi.

http://www.east.utcluj.ro/mb/mep/antal

Dup| cum am discutat n primele cursuri, proiectarea unei baze de date ncepe cu ce anume dorim de la aceasta, de exemplu, cum s| fie afiate rezultatele. Informaiile pot fi afiate pe ecran sau pot fi tip|rite la imprimant|. Pe ecran se vor afia de obicei foile de date i formularele, coninutul acestora fiind r|spunsul la o interogare sau o comand|. Formularele pot fi i ele tip|rite, dar pentru majoritatea cazurilor, tip|rirea rapoartelor asigur| metoda optim| de prezentare a informaiilor. Aceasta este adev|rat mai ales n cazul informaiilor care se prezint| sub forma mai multor nregistr|ri i n special pentru cazul cnd se doresc totale calculate pe baza datelor din nregistr|ri particulare.

Generalit|i despre Rapoarte (Reports)

188

Introducere n Microsoft Access: Rapoarte - cursul 9

general| despre modul n care sunt construite.

deschidei baza de date Northwind i clic pe butonul Reports, dup| cum se vede n figura care urmeaz|:

clic dublu pe raporul care dorii s| fie vizualizat, pentru exemplul nostru am selectat raportul Catalog;

http://www.east.utcluj.ro/mb/mep/antal

Deschiderea i vizualizarea unui raport existent

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

189 Pentru deplasare n pagina 7 vizualizata

Introducere n Microsoft Access: Rapoarte - cursul 9

folosii barele de defilare (scroll bars) din dreapta i partea de jos a ferestrei pentru a v| poziiona pe diferite poriuni ale paginii.

Pentru vizualizarea ntregii pagini

Pentru deplasarea 7 pe o pagina noua

nainte de prima tip|rire a raportului este posibil s| dorii modificarea marginilor paginii sau a orient|rii acesteia. Orientarea portret (Portrait) este cea normal|, dup| cum i numele sugereaz|, un format A4 apare cu latura mai lung| pe vertical|. Varianta alternativ| de orientare peisaj (Landscape) are latura mai lung| pe orizontal|. Odat| ce orientarea paginii a fost fixat|, aceasta va fi salvat| n raport. Dup| aceast| setare raportul poate fi tip|rit la imprimant| sau poate fi nchis i tip|rit ulterior, f|r| ca setarea s| se piard|.

Tip|rirea (Printing) rapoartelor

NU COPIA !.

sau suna la:

Pentru a modifica marginile paginii

0264-401667

clic pe meniul File i selectai Page Setup. selectai butonul Margins; fixai marginile dorite modificnd valorile numerice din Top (sus), Bottom (jos), Left (stnga) i Right (dreapta) i apoi clic pe butonul OK.

Pt. cumparare viziteaza:

folosii butoanele de navigare (navigation buttons) din colul stnga-jos al raportului pentru vizualizarea altor pagini ale raportului: ; clic pe s|geat| la dreapta pentru a trece la pagina urm|toare; clic pe s|geata la dreapta urmat| de o bar| vertical| pentru a s|ri la ultima pagin|; clic pe s|geata la stnga pentru a trece la pagina anterioar|; clic pe bara vertical| urmat| de s|geata la stnga pentru salt la prima pagin|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

poziionai cursorul de mouse oriunde pe suprafaa raportului. Acesta va lua forma unei lupe; clic pe butonul stng al mouse-ului. Afiarea raportului se va modifica aa nct toat| pagina s| ncap| n ferestra de vizualizare a raportului; clic din nou pe butonul stng pentru reafiarea raportului n forma iniial| cnd numai o poriune este vizualizat| din raport. Poziia cursorului de mouse determin| zona din pagin| care va fi vizualizat|.

http://www.east.utcluj.ro/mb/mep/antal

190 Setarea opt -iunilor 7 rire a de tipa paginilor

Introducere n Microsoft Access: Rapoarte - cursul 9

apoi clic pe OK.

Setarea opt -iunilor 7 rire pe de tipa coloane

clic pe meniul File i selectai Page Setup; selectai butonul Columns; modificai opiunile Number of Colums (num|rul coloanelor), Row Spacing (spaierea dintre rnduri) etc. apoi clic pe OK. Pentru activarea tip|ririi de rapoarte sau etichete pe coloane trebuie ca valoarea setat| n Number of Colums s| fie mai mare dect 1.

Crearea unui raport folosind AutoReport


Crearea unui raport de tip 7 cu coloana AutoWizard

deschidei baza de date Northwind i efectuai clic pe butonul Reports; clic pe butonul New;

http://www.east.utcluj.ro/mb/mep/antal

clic pe meniul File i selectai Page Setup; selectai butonul Page; fixai opiunile dorite

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

selectai tabelul sau interogarea care va fi sursa de obiecte i de date. Pentru exemplul prezentat am selectat tabelul Orders; selectai AutoReport: Columnar; clic pe butonul OK i raportul formatat pe coloane va fi generat i afiat pe ecran.

0264-401667

NU COPIA !.

sau suna la:

191

Introducere n Microsoft Access: Rapoarte - cursul 9

Crearea unui raport de tip tabelar cu AutoWizard

deschidei baza de date Northwind i efectuai clic pe butonul Reports; clic pe butonul New. selectai tabelul sau interogarea care va fi sursa de obiecte i de date. Pentru exemplul prezentat am selectat tabelul Orders; selectai AutoReport: Tabular;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe butonul OK i raportul sub form| de tabel va fi generat i afiat pe ecran.

0264-401667

NU COPIA !.

sau suna la:

192

Introducere n Microsoft Access: Rapoarte - cursul 9

Crearea unui Raport folosind Generatorul de Rapoarte (Report Wizard)


Crearea unui raport folosind Generatorul de Rapoarte

deschidei baza de date Northwind; clic pe butonul Reports din fereastra bazei de date; clic pe butonul New i se va afia fereastra de dialog New Report;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

selectai tabelul sau interogarea care va fi sursa de date a raportului; clic pe Report Wizard; clic pe butonul OK; urm|toarea pagin| a Generatorului va fi afiat|;

0264-401667

NU COPIA !.

sau suna la:

193

Introducere n Microsoft Access: Rapoarte - cursul 9

Selectarea cmpurilor care vor fi incluse n raport

clic pe cmpul care dorii s| fie inclus n raport, apoi clic pe s|geata la dreapta pentru ad|ugarea cmpului n seciunea Selected Fields a ferestrei de dialog; repetai procedura de mai sus pentru toate cmpurile care dorii s| apar| n raport, n figura de mai sus am inclus cmpurile, CompanyName, ContactName, Address i City. clic pe butonul Next pentru a continua; nivelele de grupare vor fi discutate mai trziu n cadrul acestui

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

Adaugarea nivelelor de grupare (grouping levels)

0264-401667

194

Introducere n Microsoft Access: Rapoarte - cursul 9

capitol, pentru moment facei clic pe Next pentru a trece de la pagina afiat| mai sus la cea de selectare a cmpurilor de sortare;
Sortarea nregistrarilor unui raport

pagina care urmeaz| permite selectarea criteriilor de sortarea cresc|toare sau descresc|toare a nregistr|rilor din rapoarte; pentru exemplul prezentat, am selectat sortarea cresc|toare,

prima oar| pe baza cmpului CompanyName i apoi pe baza cmpului ContactName; urm|toarea pagin| a Generatorului permite specificarea formei de afiare a raportului;
Determinarea -are a formei de afis raportului

0264-401667

putei selecta dintre formele de afiare: coloan| (Columnar), tabel (Tabular) i aliniat (Justified);

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

195

Introducere n Microsoft Access: Rapoarte - cursul 9

Pentru definirea stilului raport

pagina care urmeaz| permite selecia unui stil de afiarea a cmpurilor din raport, pentru exemplul prezentat selectai Compact;

dup| ce ai selectat stilul, clic pe butonul Next pentru a continua; urm|toarea pagin| este i ultima ea permind denumirea raportului;

http://www.east.utcluj.ro/mb/mep/antal

se poate seta i orientarea paginii la portret (Portrait) sau peisaj (Landscape); la 7 imea cmpurilor se poate ajusta automat nct raportul s| ncap| pe pagin|; dup| ce ai selectat opiunile dorite clic pe Next pentru a trece la pagina urm|toare a Generatorului;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

introducei la numele raportului RClieni; implicit este selectat| opiunea previzualizare raport (Preview the report); clic pe butonul Finish pentru a genera i previzualiza raportul.

0264-401667

NU COPIA !.

sau suna la:

196

Introducere n Microsoft Access: Rapoarte - cursul 9

Deseori bazele de date conin liste cu adresele firmelor i indivizilor care particip| n diferite tranzacii. Unul dintre rapoartele care pot fi create pe baza acestor date specifice sunt etichetele cu adrese.

Generatorul de etichete (Label Wizard)

0264-401667

NU COPIA !.

sau suna la:

Crearea unei liste de etichete

deschidei baza de date Northwind; din fereastra bazei de date selectai butonul Reports; clic pe butonul New i se va afia fereastra de dialog New Report; selectai tabelul sau interograrea care va fi sursa de obiecte pentru raport;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

197

Introducere n Microsoft Access: Rapoarte - cursul 9

selectai Label Wizard; clic pe butonul OK pentru a continua; urm|toarea pagin| permite definirea dimensiunilor etichetelor i a hrtiei: de tip pagin| (Sheet feed) sau cu tractor (Continuous). Se pot modifica unit|ile de m|sur| folosite la afiarea dimensiunilor etichetei i din Customize se pot defini noi dimensiuni;

Definirea -i a dimensiunii s tipului etichetei

dup| ce ai selectat opiunile dorite clic pe butonul Next pentru a continua; pagina care urmeaz| permite definirea tipurilor de caractere:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

selectai opiunile dorite i facei clic pe butonul Next pentru a continua;

Definirea -iilor care informat vor fi incluse n 7 eticheta

urm|toarea pagin| permite definirea cmpurilor care vor fi incluse n etichet|;

0264-401667

NU COPIA !.

sau suna la:

198

Introducere n Microsoft Access: Rapoarte - cursul 9

Sortarea cmpurilor din etichete

aceast| pagin| permite sortarea etichetelor pe baza a unui cmp sau a mai multora;

Pt. cumparare viziteaza:

clic pe un cmp din Available fields, apoi pe s|geata la dreapta pentru ad|ugarea cmpului n etichet|; repetai procedura de cte ori este nevoie; clic pe Next pentru a continua;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

selectai cmpurile pe baza c|rora se face sortarea, apoi clic pe Next pentru a continua; ultima pagin| din Generatror va fi afiat|, ea permite definirea numelui de raport;

0264-401667

NU COPIA !.

sau suna la:

199

Introducere n Microsoft Access: Rapoarte - cursul 9

clic pe butonul Finish pentru generarea raportului i previzualizarea rezultatelor.

Uneori este de dorit ca rapoartele s| conin| reprezent|ri grafice ale unor mulimi de date stocate n baza de date. Access-ul pune la dispoziia utilizatorului generatoare de grafice care pot fi inserate n rapoarte sau formulare.
Crearea unui raport cu grafic

Generatorul de Grafice (Chart Wizard)

dechidei baza de date Northwind i din fereastra bazei de date selectai butonul Reports; clic pe butonul New i ferestra de dialog New Report va fi afiat|; selectai tabelul sau interogarea care va fi sursa de date a obiectelor care vor fi reprezentate grafic. n exemplul urm|tor am selectat Sales by Year;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe butonul OK;

0264-401667

NU COPIA !.

sau suna la:

200 Adaugarea de cmpuri graficului

Introducere n Microsoft Access: Rapoarte - cursul 9

ap|sai butonul Next pentru a trece la urm|toarea pagin| a Generatorului; aici se afieaz| toate tipurile de grafice pe care le poate crea Generatorul, de unde utilizatorul trebuie s| selecteze unul dintre tipuri;

http://www.east.utcluj.ro/mb/mep/antal

pe baza procedurii cunoscute deja, ad|ugai toate cmpurile din lista Available Fields: n Fields for Chart. Pentru c| este vorba de toate cmpurile acest efect se poate obine i printr-o singur| ap|sare a butonului ;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

clic pe butonul tipului de grafic pe care dorii s|-l realizai, apoi clic pe butonul Next; n pagina care urmeaz|, trebuie s| decidei asupra modului de aranjare a datelor n grafic;

0264-401667

NU COPIA !.

sau suna la:

201

Introducere n Microsoft Access: Rapoarte - cursul 9

putei folosi tehnica de tragere (drag and drop) cu butoanele din dreapta pentru modificarea cmpurilor din grafic; putei efectua clic dublu pe un buton al graficului pentru a modifica modul de nsumare sau grupare a datelor; de exemplu, dac| facei clic pe butonul SumOfSubtotal din stnga sus, pe ecran se va afia o fereastr| de dialog de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

dup| ce ai fixat modul de prezentare a datelor, clic pe butonul Next; ultima pagin| va fi afiat|, aici dai nume raportului, pentru exemplul nostru acesta va fi Vnzari pe luni;

0264-401667

NU COPIA !.

sau suna la:

202

Introducere n Microsoft Access: Rapoarte - cursul 9

ntruct interogarea, Sales by Year, care este sursa de date a graficului are doi parametri de tipul dat|, la afiarea raportului cu grafic valorile celor doi parametri sunt cerui prin dou| ferestre de dialog. Pentru prima dat| introducei valoarea astfel:

Dup| ap|sarea butonului OK, pe ecran se va afia un raport cu grafic de forma (menionez c| rezultatele prezentate n continuare sunt generate folosind baza de date Northwind.mdb care vine cu Access 97 - n versiunile mai noi de Access, perioada pentru care se face reprezentarea, va trebui schimbat|):

0264-401667

NU COPIA !.

iar pentru cea de a dou| sub forma:

Pt. cumparare viziteaza:

putei, de asemenea, s| decidei asupra afi|rii sau neafi|rii legendei graficului; clic pe butonul Finish pentru ca Generatorul s| creeze raportul;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

203

Introducere n Microsoft Access: Rapoarte - cursul 9

Cea mai simpl| metod| de grupare a informaiilor n rapoarte este folosirea Generatorului de

Nivele de grupare (Grouping Levels) n rapoarte

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Rapoarte. Pentru prezentarea unor detalii este util ca nregistr|rile unui raport s| fie grupate pe baza valorilor stocate n unele cmpuri ale raportului. Pot fi definite cel mult 10 nivele de grupare ntr-un raport, dac| dorii este posibil ca datele s| i fie sortate n cadrul grupului.

0264-401667

NU COPIA !.

sau suna la:

204

Introducere n Microsoft Access: Rapoarte - cursul 9

Grupul permite tratarea unitar| a nregistr|rilor fiind posibil| efectuarea de operaii de nsumare, mediere sau num|rare a elementelor unui grup. n Access, la nivelul rapoartelor, gruparea si sortarea nu pot fi despa 7 rt -ite. Sortarea ne permite sa 7 vizualiza 7 m nregistra 7 rile ntr-o ordine diferita 7 de cea de introducere a datelor. Des - i datele afis - ate de raport ar putea fi sortate folosind o interogare, este mai avantajoasa 7 sortarea directa 7 din raport. Daca 7 , dintr-un oarecare motiv, interogarea ar trebui modificata 7 , raportul va 7 afis - eze datele n ordinea corecta 7 . Ala 7 turi de sortare, numai n rapoarte, apare continua sa posibilitatea grupa 7 rii nregistra 7 rilor pe baza valorilor comune din cmpuri. Gruparea permite crearea a unei perechi antet (header), sfrs - it (footer) de grup.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

nainte de crearea unor grupuri trebuie definita 7 ordinea de sortare, pentru cel put -in un cmp al raportului, folosind fereastra de dialog Sorting and Grouping. Ea se afis - eaza 7 , n modul proiectare a raportului, selectnd din meniul View pe Sorting and Grouping.

Definirea ordinii de sortare

Crearea unui antet de grup

- ata 7; afis clic pe sa 7 geata n jos din dreapta, o lista 7 de valori posibile va fi afis - ata 7; selectat -i Yes din lista 7 , sect -iunea de antet (header section) va fi afis - ata 7 n raport.

7 permita 7 sorytarea s -i Pentru crearea unui antet de grup care sa gruparea pe baza lui Nume Contact: afis - at -i fereastra de dialog Sorting and Grouping; clic pe Nume Contact din coloana Field/Expression; clic pe proprietatea Group Header din partea de jos a ferestrei; sa 7 geata n jos va fi

0264-401667

NU COPIA !.

sau suna la:

afis - ati fereastra de dialog Sorting and Grouping; clic n primul rnd al coloanei cu numele Field/Expresssion, sa 7 geata n jos va fi afis - ata 7; clic pe sa 7 geata 7 pentru afis - area listei de cmpuri din sursa de -i date a raportului (n fereastra de mai sus au fost selectatate cmpurile Nume Contact s IDInfoContact). Aceste nume exista 7 , deci pot fi selecate, numai daca 7 fac parte din sursa de date a raportului n lipsa unei surse de date, lista pentru select -ia cmpurilor de sortare s -i 7; grupare va fi vida selectat -i din lista 7 cmpul dorit; pentru cmpul selectat, din coloana Sort Order, aleget -i Ascending, pentru sortarea cresca 7 toare sau Descending pentru sortarea descresca 7 toare.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

205

Introducere n Microsoft Access: Rapoarte - cursul 9

Raport init -ial

Raport cu antetul Nume Contact

7 toarele proprieta 7ti: n fereastra Group Properties sunt vizibile urma Group Header: valoarea Yes creeaza 7 antetul grupului, iar valoarea No sterge antetul; Group Footer: valoarea Yes creeaza 7 sfrs - itul grupului, iar valoarea No s - terge sfrs - itul; Group On: specifica 7 modul de grupare a valorilor. Opt -iunile afis - ate depind de tipul de data 7 a cmpului folosit pentru grupare. La gruparea pe baza unei expresii sunt afis - ate toate opt -iunile, altfel: - pentru tipuri de date Text: ! Each Value: gruparea se face pentru aceeas - i valoare n cmp sau n expresie; ! Prefix Character: gruparea se face pentru primele n caractere ale cmpului. - pentru tipuri de date Date/Time: ! Each Value: gruparea se face pentru aceeas - i valoare n cmp sau expresie; ! Year: gruparea se face pentru datele aceluias - i an calendaristic; ! Qtr: gruparea se face pentru pa 7 trimile aceluias - i an calendaristic; ! Month: gruparea se face pentru datele aceleias - i luni; ! Week: gruparea se face pentru datele din aceeas - i sa 7 pta 7 mna 7; ! Day: gruparea se face pentru datele din aceeas - i zi; ! Hour: gruparea pentru aceleas - i ore; ! Minute: grupare pentru aceleas - i minute. - pentru tipurile AutoNumber, Currency s - i Number: ! Each Value: gruparea se face pentru aceeas - i valoare n cmp sau expresie; ! Interval: gruparea se face pentru valorile din intervalul specificat; ! Group Interval: defines - te un interval valid pentru valorile cmpului sau expresiei folosite la grupare; ! Keep Together: aceasta 7 opt -iune face ca sect -iune de antet sa 7 nu fie afis - ata 7 la sfrs - itul de pagina 7 respectiv sect -iunea de sfrs - it sa 7 nu fie afis - ata 7 la nceputul unei pagini noi; ! Whole Group: tipa 7 res - te atetul si sfrs - itul de grup pe o singura 7 pagina 7; ! With First Detail: opres - te tipa 7 rirea cont -inutului

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

206

Introducere n Microsoft Access: Rapoarte - cursul 9

antetului de grup daca 7 sect -iunea detaliilor nu are nregistra 7 ri; - No: nu se face grupare.
Operat -ii elementare cu -iuni sect

7 ra 7a Access permite modificarea ordinii de sortare si grupare fa modifica controalele individuale corespunza 7 toare din atetele si - iturile asociate unei pagini. Pentru aceasta: sfrs clic pe bara de select -ie a a cmpului sau a expresiei care dorit -i sa 7 fie muata 7 n fereastra Sorting and Grouping; clic din nou pe bara 7s -i tinnd apa 7 sat butonul stng traget -i rndul pe noua pozit -ie; eliberat -i butonul stng.

Crearea unui 7 ra 7 raport fa Generator

deschidei baza de date Northwind i din fereastra bazei de date selectai butonul Reports; clic pe butonul Next pentru afiarea ferestrei de dialog New Report; selectai un tabel sau o interogare din list|; clic pe opiunea Design View; clic pe butonul OK;

Rapoarte f|r| Generator

Access va afia un raport f|r| controale sub forma:

0264-401667

NU COPIA !.

Access permite ada 7 ugarea de ntreruperi de pagina 7 pe baza ntreruperilor din grupuri, de asemenea, se pot insera ntreruperi n cadrul sect -iunilor, cu except -ia celor de pagina 7 . De 7 dorit -i ca fiecare grup nou sa 7 nceapa 7 pe o pagina 7 noua 7 se va folosi proprietatea exemplu, daca Force New Page. Aceasta poate lua urma 7 toarele valori: ! None: nu se fort -eaza 7 trecerea la pagina 7 noua 7 (implicit); ! Before Section: sect -iunea curenta 7 se va tipa 7 ri la nceputul unei noi pagini pentru fiecare grup nou; ! After Section: sect -iunea urma 7 toare se va tipa 7 ri la nceputul unei noi pagini pentru fiecare grup nou; ! Before & After: combina 7 efectele celor doua 7 valori anterioare.

Pt. cumparare viziteaza:

Ascunderea unei sect -iuni are rolul pa 7 stra 7 rii grupa 7 rii datelor fa 7 ra 7 afis - area informat -iilor legate de grupul n sine si se realizeaza 7 astfel: clic pe suprafat -a sect -iunii de ascuns; vizualizat -i proprieta 7tile sect -iunii; clic pe proprietatea Visible; 7 geata n jos, din lista afis - ata 7 selecat -i pe No. clic pe sa

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

- tergerea unei sect -iuni de antet sau a unui sfrs - it de pagina 7 sau de raport, fa 7 ra 7 afectarea S sorta 7 rii, se poate face din View, Page Header/Footer respectiv din View, Report Header/Footer.

http://www.east.utcluj.ro/mb/mep/antal

sau suna la:

207

Introducere n Microsoft Access: Rapoarte - cursul 9

Comutai pe vizualizarea n mod proiectare. Afiai cutia cu instrumente (Toolbox) din meniul View.

Cutia cu instrumente

Cutia cu instrumente este identic| cu cea de la formulare. Toate tipurile de controale pot fi create cu ajutorul cutiei cu instrumente.

Crearea unei cutii cu text legate

dac| lista cmpurilor nu este afiat| selectai Field List din meniul View; selectai cmpul sau cmpurile n unul din urm|toarele feluri:

0264-401667

NU COPIA !.

sau suna la:

Sunt trei tipuri de controale care pot fi puse pe suprafaa unui formular: 1. Controale legate (Bound Controls): se folosesc pentru afiarea datelor din cmpurile tabelelor sau a interog|rilor. Valorile pot fi texte, numere, date, valori de adev|r sau logice, imagini sau grafice. Cel mai comun control legat este cutia cu text (Text Box). Este mai eficient ca prima oar| s| creai controalele legate; 2. Controale nelegate (Unbound Controls): se folosesc pentru afiarea unor informaii cum sunt texte, linii, dreptunghiuri i imagini. Un control nelegat nu este derivat dintr-un tabel; 3. Controale calculate (Calculated Controls): rezultatul acestora vine din evaluarea unei expresii.

Crearea de controale

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

208

Introducere n Microsoft Access: Rapoarte - cursul 9

un cmp un grup de cmpuri adiacente grup de cmpuri neadiacente toate cmpurile din list|

Clic pe cmp.

inei ap|sat| tasta Ctrl n timp ce facei clic pe fiecare cmp dorit.
Clic pe bara cu titlul listei de cmpuri.

Crearea unei cutii cu text folosind cutia cu instrumente Crearea unei etichete

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

tragei cmpul sau cmpurile pe suprafaa raportului acolo unde dorii s| fie plasate. Dac| ai selectat mai multe cmpuri, ordinea lor este semnificativ|; clic pe pictograma Text Box din Toolbox. Cnd cursorul a ajuns pe suprafaa raportului forma lui se va modifica ntr-un semn + urmat de un dreptunghi care conine textul ab*; clic pe raport acolo unde dorii s| plasai cutia. clic pe pictograma Label din Toolbox; clic pe suprafaa raportului, acolo unde dorii s| plasai eticheta; introducei textul etichetei.

O alternativ| la crearea etichetelor este inerea ap|sat| a butonului stng i desenarea unui dreptunghi, de orice dimensiune, n care se va putea tasta textul dorit.
Crearea unui control legat folosind cutia cu instrumente

selectai Field List din meniul View pentru afiarea listei cmpurilor; clic pe instrumentul dorit din Toolbox; selectai un cmp din list| i tragei-l pe suprafaa raportului.

http://www.east.utcluj.ro/mb/mep/antal

Clic pe primul cmp, cu tasta Shift ap|sat|, clic pe ultimul cmp din grup.

Pt. cumparare viziteaza:

NU COPIA !.

Crearea unei cutii cu text calculate

poziionai cursorul peste cutia cu text i selectai-o; introducei o expresie, cursorul va lua forma I, apoi ap|sai Enter.

La crearea unui raport, Access presupune anumite valori pentru unele propriet|i pentru fiecare din controalele i pentru seciunile raportului i raportul n sine. Controalele legate motenesc propriet|ile din tabele sau din interog|rile la care sunt legate. Propriet|ile pot fi setate folosind lista propriet|ilor (Property Sheet). Aceasta se poate afia din View, selectnd Properties.

Setarea propriet|ilor raportului

sau suna la:

Modificarea textului unei etichete

clic dublu pe etichet|; introducei textul etichetei.

0264-401667

209

Introducere n Microsoft Access: Rapoarte - cursul 9

Pentru a vedea mai multe propriet|i, folosii bara de defilare, prin selectarea butoanelor de sus (Format, Data, Event, Other, All) putei vedea numai o parte sau toate propriet|ile obiectului selectat. Cteva din propriet|ile specifice rapoartelor sunt: HideDuplicate RunningSum

Se folosete pentru ascunderea datelor dintr-un control dac| acesta are aceeai valoare cu cea din nregistrarea anterioar|.

CanGrow, CanShrink

Specific| dac| textul, seciunea unui raport sau subraport i poate modifica dimensiunile pentru a se acomoda la datele pe care le afieaz|. Nu se poate folosi pentru nceputuri (headers) i sfrituri (footers) de pagini.

Vom continua aplicaia creat| n cursul 8 prin ad|ugarea a dou| rapoarte: primul va afia numerele de telefoane n format "carte de telefon", iar al doilea adresele de web i pot| electronic| din baza de date. n acest scop trebuie s| cre|m dou| interog|ri care vor fi sursele de date pentru cele dou| rapoarte.

Aplicaia 1 cu rapoarte

Interog|ri

Creai interogarea din figura care urmeaz| i salvai-o sub numele de QMobilTelefon:

0264-401667

NU COPIA !.

Specific| efectuarea unui sume n cutia cu text. Se poate seta la valoarea Over Group, cnd suma se va face pe grupuri.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

210

Introducere n Microsoft Access: Rapoarte - cursul 9

Observai c| ea va conine numai nregistr|ri care au ca denumire tipurile de contacte: "telefon" sau "mobil". Dup| ce ai salvat interogarea, lansai-o n execuie pentru a verifica dac| informaiile afiate de aceasta sunt corecte. Copiai obiectul QMobilTelefon sub numele de QAdreseElectronice i modificai interogarea din urm| aa nct vizualizat| n mod proiectare s| fie de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

211

NU COPIA !.
Rapoarte

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Creai un raport folosind Generatorul parcurgnd etapele din figuri.

http://www.east.utcluj.ro/mb/mep/antal

Introducere n Microsoft Access: Rapoarte - cursul 9

sau suna la:

0264-401667

212

Introducere n Microsoft Access: Rapoarte - cursul 9

Ap|sai butonul Finish i primul formular va fi de forma:

Redenumii raportul din TContacte n RAdreseElectronice.

Creai cel de al doilea raport avnd ca surs| de date interogarea QMobilTelefon aa nct n mod proiectare s| cont -ina 7 sect -iunile si controalele din figura urma 7 toare.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

213

Introducere n Microsoft Access: Rapoarte - cursul 9

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Raportul face sortarea nregistr|rilor pe baza celor scrise n fereastra Sorting and Grouping. Se observ| c| nregistr|rile vor fi grupate pe baza cmpului primului caracter (Prefix Characters) din cmpul Nume Contact, ceea ce nseamn| c| Access-ul ncepe un grup nou de cte ori primul caracter din numele contactelor de schimb|. Cnd aceasta se petrece va afia valorile din seciunea de sfrit a grupului (Group Footer) i valorile corespunz|toare seciunii de nceput a urm|torului grup (Group Header). Pentru ca Access-ul s| sorteze numele de contact n cadrul grupului trebuie ca Nume Contact s| fie ad|ugat din nou n fereastra Sorting and Grouping. La fiecare nceput de grup nou, n seciunea NumeContact Header, Access-ul va afia o copie mare a primei litere din numele de contact corespunz|tor grupului actual. Lista propriet|ilor pentru controlul din prima seciune Nume Contact Header este cea din figura al|turat|. Proprietatea nume (Name) are valoarea PimaLitera, iar cea surs| controlului (Control Source) =Left([Nume Contact], 1). Left() este o funcie care extrage un caracter din primul argument, n cazul de fa| valoarea din cmpul 7. [Nume Contact]. Previzualizarea raportului este prezentat| care urmeaza

http://www.east.utcluj.ro/mb/mep/antal

Observat -i ca 7 n fereastra Sorting and Grouping numele cmpului Nume Contact apare de doua 7 ori. Pentru fiecare caz se va afis - a antetul cmpului (proprietatea Group Header va lua valoarea Yes), dar, pentru prima aparit -ie proprieta 7tile vor fi setate dupa 7 cum se observa 7 n figura de mai sus.

0264-401667

NU COPIA !.

sau suna la:

214

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal
Introducere n Microsoft Access: Rapoarte - cursul 9

Se observ| c| raportul se ntinde pe mai multe pagini. Dac| dorii s| folosii modul de afiare

sau suna la:

0264-401667

215

Introducere n Microsoft Access: Rapoarte - cursul 9

0264-401667

NU COPIA !.

sau suna la:

n cazul n care dorii ca nregistr|rile unui grup s| fie afiate mpreun| pe aceeai coloan|, nu ca n figura urm|toare, unde pentru litera M, acestea sunt sparte pe dou| coloane, comutai pe vizualizarea n mod proiectare al raportului, iar n fereastra Sorting and Grouping, pentru primul cmp Nume Contact, modificai proprietatea cu numele Keep Together la Whole Group.

Pt. cumparare viziteaza:

Num|rul de coloane (Number of Columns) este setat la 2; La fel cu detaliile (Same as Detail) determin| dac| fiecare coloan| va avea sau nu aceeai l|ime (width) cu cea a seciunii Detail din proiectul raportului; Width - l|imea coloanelor - este setat| la 3; Aezarea Coloanelor (Column Layout) determin| dac| coloanele merg de sus n jos i apoi la dreapta (Down) sau de la stnga la dreapta i apoi n jos (Across). Realizai aceste modific|ri i raportul va ar|ta ca n figura urm|toare. Dac| dorii ca cele scrise n seciunile header i footer s| fie afiate pe toat| suprafaa raportului (cum este i n cazul de fa|) trebuie s| setai l|imea suprafeei raportului la l|imea ntregului raport, apoi plasai controale n seciunile Detail numai cu l|imea pe care o vor avea coloanele. Nu uitai s| invalidai opiunea Same as Detail i s| realizai setarea l|imii controalelor aa nct fiecare coloan| s| ncap| n l|inea dat|.

http://www.east.utcluj.ro/mb/mep/antal

pe coloane pentru a face raportul mai compact (eliminnd risipa de hrtie) facei set|rile urm|toare, slectnd Coulmns din Page Setup:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

216

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal
Introducere n Microsoft Access: Rapoarte - cursul 9

sau suna la:

0264-401667

217

Introducere n Microsoft Access: Rapoarte - cursul 9

Creat -i urma 7 toarele tabele: Nume tabel Elevi Nume cmp IDElev

http://www.east.utcluj.ro/mb/mep/antal

Aplicat -ia care urmeaza 7 s - i propune sa 7 gestioneze elevii unei clase mpreuna 7 cu notele pe care le-au primit. Scopul aplicat -iei este de a nva 7ta sa 7 creat -i, repede, un formular cu subformular si de a prezenta noi operat -ii care se pot la nivelul rapoartelor. Generatoarele din figurile care 7 sunt specifice lui Access 2002 din Microsoft Office XP Professional. urmeaza

Aplicaia 2 cu rapoarte

Proprieta 7t -i Data type: AutoNumber Primary Key Data type: Text Data type: Text Data type: Text Data type: Number Field Size: Long Integer Data type: Number Field Size: Long Integer Data type: Date/Time Data type: Number Field Size: Long Integer Data type: AutoNumber Primary Key Data type: Text

Note

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Nume Prenume Adresa IDElevNota Nota Data

IDMaterie IDMaterie Materie

Materii

Pt. cumparare viziteaza:

NU COPIA !.

-i doua 7 formulare, primul va fi folosit pentru introducerea materiilor de studiu (n tabelul Creat Materii), al doilea va fi folosit pentru intreoducerea elevilor s - i a notelor pe care aces - tia le-au primit la anumite materii. Ambele formulare vor fi create folosind generatoare de formulare.
Pentru crearea primului formular parcurget -i etapele:

sau suna la:

Creat -i urma 7 toarele relat -ii:

0264-401667

218

Introducere n Microsoft Access: Rapoarte - cursul 9

Pe ecran va fi afis - at nou formular care va fi salvat n baza de date sub numele de Materii atunci cnd se va realiza nchiderea lui. nainte de a trece la realizarea celui de al doilea formular deschidet -i formularul Materii, salvat mai nainte si ntroducet -i cteva materii n el. Tabelul Note nu cont -ine, explicit, numele materiei pentru care s-a da nota ci doar un cod al ei. Pentru ca n locul acestui cod sa 7 fie afis - ata 7 denumirea materiei corespunza 7 toare din Materii, vom crea un Lookup. Urma 7 toarele etape trebuie parcurse:

Nume proprietate Row Source

Valoare

Semnificat -ie

Materii 1

Sursa de date pentru nregistra 7 rile care vor fi afis - ate de controlul Combo Box.

Bound Column

Coloana din sursa de date, la noi tabelul Materii, care va da valori controlului Combo Box atunci cnd se va selecta o valoare din lista afis - ata 7 de acesta Numa 7 rul de coloane din sursa de date

Column Count

Column Widths

0, 2

La 7timea folosita 7 pentru afis - area valorilor din coloanele. Pentru la 7timea 0 coloana nu se va afis - a.

0264-401667

NU COPIA !.

sau suna la:

din Objects, selectat -i Tables; clic pe Design, apoi slectat -i cmpul IDMaterie; n lista proprieta 7tilor cmpului (Field Properties), clic pe Lookup; clic pe va valoarea proprieta 7tii Display Control, o sa 7 geata n jos va fi afis - ata 7 n dreapta; 7 geata din dreapta si selectat -i din lista Combo Box, n acest moment, se vor clic pe sa afis - a noi proprieta 7ti corspunza 7 toare afis -a 7 rii valorii acestui cmp prin intermediul unui control de tipul Combo Box; setat -i urma 7 toarele proprieta 7ti:

http://www.east.utcluj.ro/mb/mep/antal

din Object, selectat -i Forms; apoi, New, AutoForm:Tabular, iar sursa de date va fi tabelul Materii; clic pe butonul OK;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

219

Introducere n Microsoft Access: Rapoarte - cursul 9

List Width

La 7timea folosita 7 pentru afis - area tuturor coloanelor.

Pt. cumparare viziteaza:

n figura urma 7 toare, observat -i ca 7 , dintre cele patru cmpuri tabelului elevi, au fos selectate cmpurile Nume, - i Adresa pentru a fi puse Prenume s n formular. ntre tabelul Elevi si tabelul Note este o relat -ie unu-la-mult -i prin -i intermediul cmpurilor IDElev s IDElevNota. Generatorul de formulare va tine cont de aceasta 7 relat -ie, iar daca 7 n aceasta 7 etapa 7 , din Tables/Querie se va selecta tabelul Note s - i vor fi trecute n Selected Fields s -i cmpurile Nota, Data si IDMaterie, ale lui Note, generatorul va crea automat un subformular cu aceste cmpuri.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

din Objects, selectat -i Forms; clic pe New, din lista selectat -i Form Wizard, iar la "Choose table or query where the object's data comes from:" selectat -i tabelul Elevi (vezi figura ala 7 turata 7 ); clic pe OK;

http://www.east.utcluj.ro/mb/mep/antal

Salvat -i modifica 7 rile aduse tabelului. Acum vom trece la realizarea celui de al doilea formular.

n final, aceasta pagina 7 a generatorului, n care se vor selecta cmpurile de afis - at pe suprafat -a formularului trebuie sa 7 arate astfel:

0264-401667

NU COPIA !.

sau suna la:

220

Introducere n Microsoft Access: Rapoarte - cursul 9

clic pe Finish.

- a formularul: Pe ecran se va afis

Observat -i ca pentru cmpurile corespunza 7 toare tabelului Note s-a creat, automat, un subformular. Daca 7 dorit -i ca n subformular, n loc de IDMaterie, sa 7 fie afis - at textul Materie, trecet -i n modul proiectare s - i modificat -i denumirea etichetei (label) cmpului IDMaterie de la IDMaterie la Materie. Pentru ca acest formular sa 7 afis - eze media pe semestrul unu s - i pe semestrul doi a elevilor

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Datas11

Medias1

-i n modul proiectare si ada 7 ugat -i controalele din figura care urmeaza 7. trecet

Observat -i ca 7 primele doua 7 controale sunt de tipul Text Box "Unbound", acestea vor stoca doua 7 date avnd numele Datas11 s - i Datas12. Acestea reprezinta 7 limita inferioara 7s - i cea superioara 7 pentru definitrea semestrului 1. Urma 7 torul control, cu numele Medias1, este

0264-401667

Datas12

NU COPIA !.

sau suna la:

221

Introducere n Microsoft Access: Rapoarte - cursul 9

calculat dupa 7 formula:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Reluat -i etpatele de mai sus si pentru al doilea control. Linia Me.Medias1.Requery va face ca Medias1 sa 7 fie reactualizat dupa 7 terminarea modifica 7 rilor aduse valorilor celor doua 7 controale. Acest cod este ada 7 ugat formularului Elevi s - i, n final, va fi trebuie sa 7 fie de forma urma 7 toare.

Ultimul control este unul legat de cmpul IDElev a tabelului Elevi. El va fi invizibil, pentru aceasta proprietatea Visible, a lui, va fi setata 7 la valoarea No. Introducerea lui este necesara 7 pentru a selecta din Note numai notelor elevului curent. Acesta este identificat unui prin valoarea stocata 7 n cmpul IDElev a tabelului Elevi. Funct -iile au aceleas - i argumente, primul este numele tabelului, al doilea este numele cmpului, iar al treilea este condit -ia de respectat pentru ca valorile cmpului sa 7 fie nsumate respectiv numa 7 rate. Toate argumentele trebuie sa 7 fie siruri de caractere. Acesta este motivul pentru care textele sunt cuprinsa 7 ntre ghilimele.

0264-401667

NU COPIA !.

sau suna la:

El foloses - te funct -iile DSum() s - i DCount() pentru a calcula media unui elev pentru un anumit semestru. Funct -ia DSum() realizeaza 7 suma tuturor notelor, iar funct -ia DCount() numa 7 ra 7 cte note sunt ntr-un semestru (de exemplu, forma generala 7 pentru DSum() este DSum("[nume cmp]","nume tabel","criteriu de select -ie"). Aceste calcule pot fi realizate doar daca 7 n controalele Datas11 si Datas12 sunt stocate date. 7 controale este init -ializarea (prin folosirea Cel mai simplu mod de a pune date n aceste doua proprieta 7tii Default Value) lor cu data curenta 7 folosind funct -ia Date(). n lipsa unei date funct -iile de mai sus nu vor putea lucra s - i n locul mediei va fi afis - at textul #Error. Introducerea datei curente n aceste controale rezolva 7 evitarea aparit -iei erorii, dar, n mod sigur, aceste valori nu delimiteaza 7 corect semestrul. Deci, utilizatorul va trebui sa 7 modifice 7 toarea problema 7 . Valoarea controlului aceste valori la cele corecte. n acest caz apare urma Medias1 se calculeaza 7 pe baza valorilor int -iale din controalele Datas11 s - i Datas12. Cum aceste valori, sigur, nu sunt bune si trebuie sa 7 le modifica 7 m ce se va petrece cu valoarea din controlul Medias1 ca urmare a modifica 7 rii valorilo celor doua 7 controle. Daca 7 testat -i 7 rii vet -i vedea ca 7 nu se petrece nimic, adica 7 valoarea lui Medias1 nu se efectul modifica modifica 7 , des - i valorile din Datas11 si Datas12 au fost schimbate. Pentru ca modifica 7 rile aduse valorilor stocate n acestor controale sa 7 duca 7 la recalcularea cont -intului Medias1 trebuie sa 7 definim doua 7 proceduri de tratare a evenimentelor de actualizare a controalelor - i Datas12. Un eveniment este rezultatul sau consecint -a unei act -iuni realizate de Datas11 s utilizator. Access ra 7 spunde la evenimente prin intermediul unor comportamente definite la nivelul unor proprieta 7ti de controale. De exemplu, evenimetul de actualizare a valorilor 7tii After Update. Urma 7 toarele stocate ntr-un control este tratat prin intermediul proprieta etape vor fi parcure pentru ambele controale: din lista proprieta 7tilor, clic pe proprietatea After Update, n dreapta apare o sa 7 geata 7 n jos; clic pe sa 7 geata n jos, din lista 7 selectat -i [Event Procedure]; clic pe butonul cu cele trei puncte din dreapta; -i linia: Me.Medias1.Requery. tastat

http://www.east.utcluj.ro/mb/mep/antal

=DSum("[Nota]","Note", "[IDElevNota] = " & [IDElev] & " AND [Data] >= #" & [Datas11] & "# AND [Data] <= #" & [Datas12] & "#")/DCount("[Nota]","Note", "[IDElevNota] = " & [IDElev] & " AND [Data] >= #" & [Datas11] & "# AND [Data] <= #" & [Datas12] & "#").

222

Introducere n Microsoft Access: Rapoarte - cursul 9

Codul ada 7 ugat pentru actualizarea lui Medias1

Ultimul argument, pe lnga 7 buca 7ti de texte cuprinse ntre ghilimele mai cont -ine simbolul & care este un operator pentru prelucrarea sirurilor. El face concatenarea (ala 7 turarea operanzilor, 7s - iruri face unul singur prin ala 7 turarea cont -inutului celor doua 7s - iruri; detalii cu privire din doua 7 sesc n cursul 10, care prezinta 7 elementele limbajului de programare la acest operator se ga VBA).

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

Pentru realiza calculul mediei pe semestrul doi, vom copia, la dreapta, primele trei controale. Numele noilor controale vor fi: Datas21, Datas22, Medias2. n modul proiectare formular va ara 7 ta astfel:

0264-401667

223

Introducere n Microsoft Access: Rapoarte - cursul 9

unui elev.

Numerotarea 7 rilor unei nregistra -iuni sect

plasat -i un control Unbound, de tipul Text Box, n dreapta controlului Nota; modificat -i urma 7 toarele proprieta 7ti:

Nume proprietate Control Source

Valoare

Semnificat -ie

=1

Numele cmpului sau expresia folosita 7 pentru calcularea valorii. n cazul nostru controlul primes - te valoarea expresiei constante 1.

Format

#)

- area valorii Formatul folosit pentru afis controlului. n cazul nostru se va afis - a valoarea numerica 7 urmata 7 de caracterul ")".

sau suna la:

Pe baza elementelor de mai sus, folosit -i generatorul de rapoarte pentru a crea un raport ct mai apropiat de cel dorit. Trecet -i, apoi, n modul proiectare s - i modificat -i raportul pentru a-l aduce la forma din figura care urmeaza 7.

0264-401667

Raportul aplicat -iei, s - i propune pentru nceput, sa 7 afis - eze tot -i elevii clasei, cu toate notele lor, sortate s - i grupate pe baza numelui elevilor si a materiiilor. La nivelul materiilor, notele, vor fi 7 toare a datelor. Pe baza celor spuse se poate deduce ca 7 raportul va sortate n ordinea cresca avea urma 7 toarele sect -iuni: ! antet si sfrs - it de raport (Report Header s - i Report Footer); ! antet si sfrs - it de pagina 7 (Page Header s - i Page Footer); ! antet pentru grupare pe baza cmpului Nume (Nume Header); ! antet pentru grupare pe baza cmpului IDMaterie (IDMaterie Header); ! sect -iune pentru detalii (Detail).

http://www.east.utcluj.ro/mb/mep/antal

ntruct controlul Medias2 va trebuie sa 7 lucreze cu valorile din Datas21 s - i Datas22 modificat -i corespunza 7 tor expresia de calcul a acestuia. n figura care urmeaza 7 se prezinta 7 rezultatele afis - ate de controalele calculate, pe baze cel spuse pna 7 acum, n cazul concret a

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

224

Introducere n Microsoft Access: Rapoarte - cursul 9

Running Sum

Over Group

http://www.east.utcluj.ro/mb/mep/antal

Daca 7 se realizeaza 7 afis - area unui total si modul de calcul al acestuia. n cazul nostru se va realiza o 7 valoarea afis - ata 7 nsumare la nivel de grup, adica de acest control va fi crescuta 7 cu 1 pentru fiecare nregistrare noua 7 din grup. Se realizeaza 7 astfel numerotarea fieca 7 rei note primite de un elev la o materie.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

n figura care urmeaza 7 , se vede ca 7 fiecare nota 7 primita 7 de un elev, la o anumita 7 materie, va numerotata 7 . La trecerea la un nou grup, adica 7 la schimbarea materiei, numerorarea se reia cu valorea calculata 7 pentru control, la noi valoarea 1. Prin setarea proprieta 7tii Running Sum la valoarea Over Group, la valoarea curenta 7 a controlului, care la noi este ntotdeauna 1, se aduna 7 valorile anterioare.

Crearea unui total la nivel de grup

Sa 7 presupunem, ca 7 n raportul urma 7 tor, dorim sa 7 calcula 7 m media aritmetica 7 pentru fiecare materie. Daca 7 elevul are mai multe note la o materie acestea trebuie nsumate, apoi suma trebuie mpa 7 rt -ita 7 la numa 7 rul de note. Urma 7 toarele etape trebuie parcurse:

0264-401667

NU COPIA !.

sau suna la:

225

Introducere n Microsoft Access: Rapoarte - cursul 9

Pentru exemplul prezentat, controlul a fost introdus n antetul grupului IDMaterie -ia Sum() realizeaza 7 nsumarea valorilor acestui control, la nivel (IDMaterie Header). Funct de grup, iar funct -ia Count() va numa 7 ra nregistra 7 rile grupului.

Nota 7 : Daca 7 numele controlului este calculat, trebuie repetata 7 expresia de calcul a lui. De exemplu, daca 7 dorim sa 7 realiza 7 m totalul pentru un control numit PretcuTVA calculat cu formula [Pret]*[TVA], n loc de =Sum([Pretcu TVA]) se va scrie

0264-401667

NU COPIA !.

sau suna la:

creat -i un nou control n antetul grupului (sau n sfts - itul lui); introducet -i expresia =Sum([Nota])/Count([Nota]) n proprietatea Control Source; Nota trebuie sa 7 fie un nume de cmp valid din sursa de date; modificat -i proprietatea Format la #.00.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

226

Introducere n Microsoft Access: Rapoarte - cursul 9

=Sum([Pret]*[TVA]).

Daca 7 dorim sa 7 calcula 7 m media generala 7 a unui elev, fa 7 cnd media aritmetica 7 a mediilor la 7 toarele etape trebuie urmate n nivel de materii, strategia de mai sus nu mai este de folos. Urma acest caz: copiat -i controlul care face media aritmetica 7 la nivel de materii, n aceeas - i sect -iune, si dat -i numele de SumaMedii acestui nou control; apoi, setat -i proprietatea Running Sum la valoarea Over Group; creat -i un nou control de tipul Text Box cu numele ContorMaterii, tot n sect -iunea IDMaterie Header cu proprietatea Running Sum setata 7 la valoarea Over Group;

Pt. cumparare viziteaza:

Media generala 7 a unui elev va fi calculata 7 fa 7 cndu-se suma tuturor notelor lui, care apoi se va 7 rt -i la numa 7 rul de note a elevului. mpa

http://www.east.utcluj.ro/mb/mep/antal

n continuare, ne propunem sa 7 calcula 7 m media generala 7 a unui elev. Pentru aceasta, din fereastra Sorting and Grouping, vom selecta pe Nume. Aici, vom seta proprietatea Group Footer pe Yes. Efectul va fi aparit -ia sect -iunii de sfrs - it (Nume Footer) pentru grupul Nume n formular. Vom copia n aceasta 7 sect -iune controlul care realizeaza 7 media aritmetica 7 pentru fiecare materie.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

0264-401667

NU COPIA !.

sau suna la:

227

Introducere n Microsoft Access: Rapoarte - cursul 9

Rezultatele vor fi afis - ate astfel:

http://www.east.utcluj.ro/mb/mep/antal

n sect -iunea Nume Footer, realizat -i o copia a controlului care realizeaza 7 calculul mediei aritmetice, apoi modificat -i proprietatea Control Source la =[SumaMedii]/[ContorMaterii].

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

228

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:


! ! ! ! ! ! ! ! ! ! !

cum s-a n|scut limbajul de programare BASIC i ce este VBA; ce este programarea orientat| pe evenimente;

ce sunt i cum se definesc procedurile utilizator; ce sunt variabilele i cum se declar|; care sunt tipurile de date n VBA;

ce sunt constantele simbolice i intrinseci; care sunt operatorii limbajului VBA; care sunt instruciunile limbajului VBA; ce este o colecie VBA.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

ce sunt procedurile de evenimente;

ce este o clas| VBA i cum se definete aceasta;

http://www.east.utcluj.ro/mb/mep/antal

Obiectivele cursului 10

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

229

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Limbajul de programare Visual Basic for Applications

Renas -terea BASICului

Macro comenzile ofer| soluii rapide i simple, dar cu limit|ri multiple. Limbajul VBA ofer| facilit|i i control mai eficace asupra aciunilor pe care le derul|m cu datele din baz|.

n programarea procedural| tradiional|, controlul evoluiei programului este determinat chiar de el nsui. Execuia ncepe cu prima instruciune i urmeaz| o linie secvenial| sau cu salturi, funcie de instruciunile programului. n programarea orientat| pe evenimente, aciunile utilizatorului sau ale sistemului pe care se execut| programul genereaz| evenimente. Pentru a cunoate care poriune de cod este executat|, trebuie s| tim ce eveniment a ap|rut, iar dac| sunt mai multe, ordinea lor de apariie. Putem spune c| poriunea de cod executat| depinde de aciunile utilizatorului, aceasta fiind esena interfeelor grafice cu utilizatorul i a program|rii orientate pe evenimente. Pentru c| nu se poate ti ce va face utilizatorul, codul trebuie s| fac| anumite presupuneri cu privire la starea mediului n care funcioneaz|. Din acest motiv codul fie testeaz| dac| presupunerile f|cute sunt corecte, fie le aranjeaz| ntr-o ordine n care acestea s| fie ntotdeauna corecte.

Programarea orientat| pe evenimente

0264-401667

Visual Basic pentru Aplicaii - VBA - a fost transformat de firma Microsoft n limbajul de programare al ntregii familii de produse Microsoft Office (Access, Excel, Word, PowerPoint). Nucleul limbajului, componentele sale i mediul sunt aceleai pentru toate aceste aplicaii, oferind n plus, fa| de macro comenzi urm|toarele facilit|i: 1. apelarea funciilor API; 2. tratarea erorilor; 3. manipularea datelor din baz| sub controlul unor instruciuni folosind metode de acces la date specifice sau generale; 4. manipularea structurii bazei de date prin program.

http://www.east.utcluj.ro/mb/mep/antal

nceputurile limbajului BASIC

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

BASIC sau Beginner's All-purpose Symbolic Instruction Code este un limbaj simplu, creat de John G. Kemeny i Thomas E. Kurtz de la Dartmouth College n 1963. Dei din numele limbajului se pare c| a fost scris pentru a permite programarea ct mai simpl| pentru studeni i ncep|tori, iniial a fost proiectat ca un sistem experimental cu time sharing (time sharing: facilitate a unui sistem de operare care permite mai multor utilizatori s| execute mai multe programe concurent, pe un singur procesor sau, n paralel, pe mai multe procesoare. De obicei fiecare utilizator are propriul lui terminal pentru operaii de intrare/ieire. time sharing este multitasking pentru utilizatori multipli. multitasking: o tehnic| folosit| ntr-un sistem de operare pentru partajarea unui singur procesor ntre mai multe programe independente. Programele n multitasking pot fi ale unui singur utilizator sau ale mai multor utilizatori, prin aceasta se face distincia de procesarea paralel| - paralell processing, unde un singur utilizator execut| mai multe programe pe mai multe procesoare). Cu timpul a devenit cauza principal| a "reducerii i deform|rii mentale" a programatorilor ncep|tori. Cazul este oarecum similar cu cel al limbajului Pascal, cnd un limbaj proiectat exclusiv cu scop educaional, a fost luat prea n serios. Un novice poate scrie n BASIC programe scurte, de 2040 linii, foarte simplu; scrierea unor programe mai lungi este: (a) chinuitoare i (b) duce la formarea unor deprinderi care nu pot fi utilizate n cadrul unor limbaje de programare de nivel nalt mai puternice.

NU COPIA !.

sau suna la:

230

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Proceduri de evenimente (Event Procedures)

Tip obiect

Numele procedurii de eveniment

Raport

Pt. cumparare viziteaza:

Formular

Sub Form_numeeveniment() instruciuni End Sub Sub Report_numeeveniment() instruciuni End Sub Sub NumeControl_numeeveniment() instruciuni End Sub

Control

Procedurile de evenimente sunt apelate automat cnd apare evenimentul corespunz|tor acestora. Access-ul permite crearea de proceduri definite de utilizator, care trebuie apelate explicit, prin cod, pentru ca s| fie executate. Acestea nu sunt legate de evenimentele generate de utilizator, ci mai degrab| de anumite grupuri de linii de program care se repet| n mai multe locuri. Pentru eliminarea duplic|rii acestor linii se folosesc proceduri de tipul funcie (Function) sau subrutin| (Sub). Procedurile utilizator pot fi create oriunde n formulare, rapoarte sau module (Modules). Modulul este un obiect Access care stocheaz| numai proceduri definite de utilizator. Procedurile din module pot fi referite din orice alte obiecte Access, n timp, permind scrierea unor biblioteci de proceduri utile pentru rezolvarea unor sarcini care se repet| des. deschidei baza de date Northwind; clic pe butonul Modules din fereastra bazei de date;

Proceduri definite de utilizator (General Procedures)

Crearea unui proceduri

0264-401667

NU COPIA !.

sau suna la:

Cuvintele Sub i End Sub marcheaz| nceputul i sfritul procedurii. Cuvintele care urmeaz| pe aceeai linie cu Sub sunt numele procedurii de eveniment, iar instruciuni reprezint| codul scris de programator prin care se trateaz| evenimentul ap|rut.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Cnd Access-ul recunoate apariia unui eveniment de formular, raport sau control, apeleaz| automat procedura de eveniment denumit| dup| numele obiectului i al evenimentului care a ap|rut. De exemplu, dac| este vorba de un formular (Form) i de evenimentul clic (Click) pe suprafaa acestuia, numele procedurii de tratare a evenimentului va fi Form_Click. Dac| n locul formularului am fi avut un raport (Report), pentru acelai eveniment, numele procedurii ar fi Report_Click. n cazul unui control, numele acestuia se combin| cu caracterul underscore (_) i cu numele evenimentului pentru a forma numele procedurii de eveniment. De exemplu, dac| avem un buton cu numele Binchide, procedura de eveniment care trateaz| evenimentul Click pe buton se va numi Binchide_Click. Numele obiectelor sunt stocate n proprietatea Name, dac| intenionai s| modificai acest nume, trebuie s| o facei nainte de scrierea primei proceduri de eveniment. Dac| modificai numele obiectului dup| ce ai scris cel puin o procedur| de eveniment, trebuie s| modificai i numele procedurilor scrise pn| atunci. Din cele discutate observai c| Access-ul folosete aceeai strategie pentru construirea numelor procedurilor de evenimente:

231

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

acceptai set|rile implicite i tastai DatadeAzi n cutia de texte Name, apoi clic pe OK.

Editarea procedurilor existente

deschidei baza de date; clic pe butonul Modules; selectai din list| numele modului care dorii s|-l editai; clic pe Design.

Proceduri de tip Sub i Function

n Access procedurile pot fi de tipul Sub sau Function. Procedura Sub nu ntoarce valoare fiind asem|n|toare unei instruciuni. Procedurile de eveniment sunt ntotdeauna de tipul Sub. Procedura Function ntoarce o valoare. Atunci cnd se calculeaz| valori de expresii tipul procedurii va fi Function.

Procedura de tip Sub


Sintaxa procedurii Sub este:

0264-401667

NU COPIA !.

sau suna la:

Access-ul va crea corpul unei funcii cu numele DatadeAzi. Dac| n loc de tipul de subprogram Function selectai opiunea Sub, Access-ul va crea un subprogram de tipul subrutin|.

http://www.east.utcluj.ro/mb/mep/antal

clic pe butonul New pentru a crea un modul nou; din meniul Insert selectai Procedure..., fereastra de dialog Insert Procedure va fi afiat| dup| cum urmeaz|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

232

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Numele procedurii este numeprocedur|, instruciunile instruciuni grupate sub acest nume se numesc corpul procedurii. parametri sunt o list| de nume de parametri separate prin virgule. Fiecare parametru respect| sintaxa declaraiei de variabil| i este echivalentul unei variabile n corpul procedurii. Sintaxa pentru fiecare parametru este: [ByVal] numevariabil| [()] [As tip]

Apelul lui Sub

Procedura de tipul Sub se apeleaz| prin numele ei i prin specificarea parametrilor ei. De exemplu, procedura Sub cu numele Numara:

Public Sub Numara(ByVal n As Integer) Dim i As Integer For i = 1 To n Debug.Print i Next i End Sub

Ies -irea fort -ata 7 din Sub

Instruciunile din corpul lui Sub sunt executate secvenial, dac| se dorete p|r|sirea procedurii Sub nainte de execuia ultimei instruciuni se poate folosi instruciunea opional| End Sub. Aceasta are ca efect revenirea din procedur|. n corpul procedurii, num|rul de End Sub-uri nu este limitat.

Procedura de tip Function


Sintaxa procedurii Function este:

Function numeprocedur|(parametri) [As tip] [instruciuni] [Exit Function] [instruciuni] End Function

0264-401667

NU COPIA !.

sau suna la:

va fi apelat| prin Numara 5 (observai c| nu se pun paranteze n jurul argumentelor). Execuia procedurii i rezultatele ei se pot afia n fereastra imediat|. Se apas| Ctrl+G, apoi n ferestr| se scrie Numara 5 dup| care se apas| Enter.

Pt. cumparare viziteaza:

tip poate fi oricare dintre tipurile fundamentale de date (Integer, Long, Single, Double, Currency, String, Variant sau Obiect). Dac| tipul nu este specificat explicit, parametrul va avea tipul Variant care poate stoca orice tip de date. Parantezele drepte specific| faptul c| elementele cuprinse ntre ele sunt opionale. Parantezele rotunde opionale dup| numevariabil| indic| un argument de tipul tablou.

http://www.east.utcluj.ro/mb/mep/antal

Sub numeprocedur|(parametri) [instruciuni] [Exit Sub] [instruciuni] End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

233

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Dac| dorim s| scriem o funcie ArieCerc pentru calculul ariei unui cerc de raz| R, codul corespunz|tor unei implement|ri prin procedur| Function este: Public Function ArieCerc(R As Double) As Double Dim pi As Double pi = 4# * Atn(1#) ArieCerc = pi * R ^ 2 End Function

Ies -irea fort -ata 7 din Function

Instruciunile din corpul lui Function sunt executate secvenial, dac| se dorete p|r|sirea procedurii Function nainte de execuia ultimei instruciuni se poate folosi instruciunea opional| End Function. Aceasta are ca efect revenirea din procedur|. n corpul procedurii, num|rul de End Function-uri nu este limitat.

Orice program prelucreaz| o mulime de valori iniiale pentru a produce valorile de ieire. De obicei, trecerea de la valorile iniiale la cele de ieire se face prin unele temporare, care n procesul de calcul i modific| valoarea. Aceste valori temporare vor fi stocate n variabile. Numele de variabil| sugereaz| c| valorile stocate n acestea se modific| pe timpul execuiei aplicaiei. VBA folosete variabilele pentru stocarea valorilor. Variabilele sunt asemenea cmpurilor din tabele au un nume, un tip, dar pot stoca numai o singur| valoare.

Variabile

Declararea variabilelor

Exist| mai multe metode pentru declararea variabilelor n VBA. Sintaxa declaraiei de variabil| este:

0264-401667

NU COPIA !.

sau suna la:

Procedurile unui formular sau raport sunt private, adic| pot fi folosite numai n expresii ale codului coninut de formularul sau raportul n cauz|. Procedurile unui modul sunt publice, pot fi apelate din orice poriune a aplicaiei, mai puin n cazul n care au fost f|cute private prin folosirea lui Private naintea de Sub sau Function. Pentru c| procedurile formularelor i rapoartelor sunt private este posibil s| se scrie proceduri cu acelai nume n formulare sau rapoarte distincte. Numele procedurilor publice trebuie s| fie unice ntr-o aplicaie. Este posibil ca o procedur| dintr-un formular sau raport s| aib| acelai nume cu una dintr-un modul. n acest caz Access-ul va decide asupra procedurii apelate c|utnd astfel: formularul curent, raportul curent, modulele aplicaiei. O procedur| privat| poate fi apelat| numai de proceduri ale modulului din care face parte.

Proceduri private (Private) i publice (Public)

Pt. cumparare viziteaza:

Apelul procedurii Function se face sub forma: x=ArieCerc(5).

http://www.east.utcluj.ro/mb/mep/antal

Semnificaia elementelor sintactice ale procedurii Function sunt aceleai cu cele ale procedurii Sub, cu urm|toarele excepii: 1. procedurile Function, asemenea variabilelor, au tipuri de date care determin| tipul valorii ntoarse; 2. valoarea se ntoarce atribuind numelui procedurii Function o valoare n corpul funciei. Valoarea ntoars| de procedura Function prin numele ei se poate folosi n expresii; 3. argumentele procedurii Function se scriu ntotdeauna ntre paranteze rotunde.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

234

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Dim numevariabil| [As tip]

Liniile 1 i 2 prezint| declaraii pe care NU trebuie s| practicai! n linia 1 tipul a fost omis i este, conform celor spuse, Variant. n linia 2, x i y sunt de tipul Variant, iar j de tipul Double, faptul c| cele trei nume sunt scrise pe aceeai linie nu nseamn| c| toate au tipul ultimei variabile. Liniile 3 i 4 sunt cazul normal, pentru care trebuie s| v| formai un automatism de scriere. Depanarea programelor este mult mai uoar| dac| fiecare variabil| are asociat un tip particular de dat|, n plus, resursele pentru gestionarea variabilelor sunt folosite mult mai eficient de VBA rezultnd o cretere n vitez| a execuiei codului i o sc|dere a spaiului de RAM folosit pentru stocarea variabilelor.

NU COPIA !.

Locul declaraiei

Scop

Dim n procedur|

Local

Dim n formular, procedur| sau modul

Formular, procedur| sau modul Global

Public n modul

Scopul unei variabile nu se poate schimba n timpul execuiei aplicaiei, dar este posibil ca o variabil| cu acelai nume s| apar| n scopuri diferite. Pe lng| scop, variabilele au i durat| de existen|. Valorile din variabilele globale sau de module sunt p|strate ct timp baza de date este deschis| (mai puin n cazul cnd codul este reiniializat). Variabilele locale, exist| numai ct timp procedura n care s-au declarat se

sau suna la:

Cnd o variabil| este declarat| ntr-o procedur|, numai codul din acea procedur| poate citi sau modifica valoarea variabilei. Se spune c| scopul este local procedurii. Uneori este de dorit ca o variabil| s| poat| fi folosit| din mai multe proceduri ale aceluiai modul sau chiar din module diferite. Funcie de locul n care este declarat| o variabil| poate avea scopurile:

0264-401667

Scop i durat| de existen|

Pt. cumparare viziteaza:

1 2 3 4

Dim Dim Dim Dim

i x,y,j As Integer x As Double sir As String

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

numevariabil| trebuie s| nceap| cu o liter| i nu poate conine spaii sau punctul zecimal. Programatorul nu trebuie s| declare explicit o variabil| n VBA (iat| dintre "strategiile" care nu "merg" n limbajele adev|rate - declaraia implicit|, de care "beneficiaz| din plin" BASICul i FORTRAN-ul ). Dac| folosii un nume care nu este nume de variabil| deja declarat|, VBA creeaz| automat o variabil| cu acel nume de tipul Variant. Acest tip poate stoca orice valoare: num|r, text, dat|, ir. Atunci cnd o astfel de variabil| este atribuit| unei variabile de alt tip, VBA se ocup| de toate conversiile necesare. n cazul cnd cunoatem ce fel de valori se vor stoca ntr-o variabil| este bine s| i se specifice tipul particular. VBA va putea gestiona mai eficient datele stocate n variabil|. Variabilele declarate cu Dim exist| att timp ct se execut| procedura n care au fost declarate. La terminarea execuiei procedurii, valorile acestor variabile dispar. n plus, valorile acestor variabile sunt locale procedurii din care fac parte, adic| nu se pot accesa din alte proceduri. Datorit| acestor caracteristici acelai nume de variabile poate s| apar| n proceduri disticte far| s| apar| conflicte.

235

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Tipul Variant

Valoarea Empty

Valoarea Null

Variabila Variant poate conine valoarea special| Null. Aceasta se folosete n baza de date pentru a marca datele lips| sau necunoscute. Cmpurile i controalele care nu au fost iniializate au valoarea implicit| Null. Dac| dorii s| fii siguri c| un control sau un cmp are date trebuie s| verificai dac| nu conin valoarea Null. Pentru aceasta folosii funcia IsNull(). Null are cteva propriet|i interesante: 1. expresiile care conin Null dau valoarea Null. Din acest motiv se zice c| Null se propag| prin expresie, dac| orice parte a ei este Null, toat| expresia va fi Null; 2. majoritatea funciilor care primesc un argument Null ntorc valoarea Null; 3. valoarea Null poate fi atribuit| unei variabile Variant.

Tipul specific| pe lng| ce fel de valori poate lua o variabil| i domeniul n care pot varia acestea, operatorii care pot avea ca operanzi aceste variabile i spaiul de RAM ce se folosete pentru stocarea ei.

Tipuri numerice

0264-401667

NU COPIA !.

sau suna la:

Variabilele Variant au valoarea Empty din momentul n care s-au declarat i pn| cnd le-am atribuit o valoare. Aceasta este o valoare special| care ne permite s| verific|m dac| pn| n acel moment am atribuit o valoare variabilei respective i se poate testa prin funcia IsEmpty(). Folosirea unui Variant cu valoarea Empty ntr-o expresie este echivalent| cu valoarea numeric| 0. Dup| ce variabila Variant a primit o valoare, valoarea Empty dispare. Fiind o valoare, dar una special|, nu se poate atribui direct, dar este posibil s| atribuim valoarea Empty dintr-o variabil| Variant unei alte variabile Variant care i-a pierdut-o deja.

Pt. cumparare viziteaza:

La fel cum o cutie cu text poate stoca texte, numere sau date, la fel variabilele de tipul Variant pot stoca date de tipul numeric, ir, dat|/or|, valori Null. n general VBA face toate conversiile necesare cnd se fac manipul|ri ale datelor de acest tip, totui sunt cteva cazuri de evitat: 1. operaii aritmetice se pot efectua numai dac| tipul Variant stocheaz| o valoare numeric|; se poate determina dac| valoarea stocat| ntr-un tip Variant este numeric| prin funcia IsNumeric() 2. operaii cu date se pot efectua numai dac| tipul Variant stocheaz| o dat|; datele pot fi adunate, sc|zute, sau se poate extrage anul, luna, ziua unei date, pentru ca aceste operaii s| fie corecte se poate folosi funcia IsDate() pentru a determina dac| valoarea este de tip dat|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dup| cum ai v|zut deja, cnd se declar| o variabil| se poate specifica un tip de dat| corespunz|tor ei. Tipul determin| valorile pe care variabila le poate stoca. Dac| tipul nu este specificat, implicit, VBA asociaz| variabilei tipul Variant.

Tipuri de date

http://www.east.utcluj.ro/mb/mep/antal

execut|. Cnd procedura se termin|, valorile variabilelor locale sunt desc|rcate din RAM iar spaiul alocat acestora este refolosit, dac| este cazul, pentru stocarea altor variabile. La urm|torul apel al procedurii, toate variabilele locale sunt reiniializate. Dac| dorii ca VBA s| p|streze valoarea unei variabile locale trebuie s| o declarai Static. De exemplu, n loc de Dim pi As Double vom scrie Static pi As Double. O astfel de variabil| poate s| apar| numai n interiorul unei proceduri i se folosete, de obicei, pentru acumularea unor valori care altfel s-ar pierde ntre apelurile procedurii.

236

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Tip Byte Boolean Integer Long Single

Spaiu de stocare 1 octet 2 octei 2 octei 4 octei 4 octei

Domeniu 0 la 255 True sau False -32,768 la 32,767

Valoare iniial|

http://www.east.utcluj.ro/mb/mep/antal

0 False 0 0 0

-2,147,483,648 la 2,147,483,647

Double

8 octei

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

3.402823E38 la -1.401298E-45 pentru valori negative; 1.401298E-45 la 3.402823E38 pentru valori pozitive -1.79769313486232E308 la -4.94065645841247E-324 pentru valori negative; 4.94065645841247E-324 la 1.79769313486232E308 pentru valori pozitive -922,337,203,685,477.5808 la 922,337,203,685,477.5807

Currency Decimal

8 octei

Pt. cumparare viziteaza:

0 0

14 octei

+/-79,228,162,514,264,337,593,543,950,335 f|r| punct zecimal; +/-7.9228162514264337593543950335 cu 28 de zecimale; cel mai mic num|r nenul este +/-0.0000000000000000000000000001

Tipul ir

Dim sir As String

irul se poate atribui unei variabile de tipul ir i poate fi manipulat prin funcii specifice irurilor de caractere.
sir="Salut bade!" sir=Right$(5)

Implicit, o variabil| de tipul ir are lungimea variabil|, adic| lungimea ei poate crete dac| se adaug| noi date n variabil|. Este posibil| declararea de variabile ir cu lungime fix| prin folosirea sintaxei: String *lungime. De exemplu, o variabil| cu numele linie de 80 de caractere se declar| astfel: Dim linie As String*80. Dac| un ir mai scurt se atribuie unuia mai lung, caracterele lips| se completeaz| automat cu spaii. Dac| un ir mai lung se atribuie unuia mai scurt caracterele n plus se trunchiaz|. Pentru c| irurile cu lungime fix| se completeaz| automat n unele operaii cu spaii, exist| un set de funcii utile pentru eliminarea acestora: LTrim(), RTrim(), Trim(). Access-ul compar| irurile n mod diferit funcie de instruciunea Option Compare specificat| n seciunea declaraiilor de modul.

0264-401667

NU COPIA !.

Variabilele care conin un text se declar| de tipul ir (String).

sau suna la:

237

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Variabilele de tipul dat| se stocheaz| pe 8 octei sub form| de numere reale i au domeniul ntre 1 ianuarie 100 i 31 decembrie 9999 i ora de la 0:00:00 la 23:59:59. Constantele de tipul dat| trebuie cuprinse ntre caractere # nainte de a fi atribuite variabilelor de tipul dat| sub forma #12/21/1999#. Aceste variabile se afieaz| conform set|rilor formatului short date recunoscute de calculator. Orele vor fi i ele afiate conform set|rilor formatului de timp recunoscut de calculator (12 ore sau 24 de ore). Datele pot fi adunate sau sc|zute folosind funciile DateAdd() i DateDiff(). Ziua, luna i anul pot fi extrase folosind funciile Day(), Month() i Year(). Funcia Now() ntoarce data i ora curent|. Operaii de formatare pot fi f|cute asupra datelor folosind funcia Format(). Funciile DateSerial() i TimeSerial() se pot folosi pentru crearea unor date i ore din valori numerice ntregi.

Tipul dat|/or|

Tipul Object

Tipul de dat| obiect se stocheaz| pe 4 octei i are ca valoare adresa unui obiect. Folosind instruciunea Set, o variabil| declarat| de tipul Object va putea stoca adresa oric|rui obiect.

Tabloul ne permite s| referim un grup de variabile de acelai tip cu un singur nume realiznd diferenierea lor printr-un num|r numit indice. Tablourile au limite superioare i inferioare pentru indice, iar elementele de tablou sunt alocate continuu ntre acele limite. VBA aloc| spaiu pentru fiecare indice, din acest motiv nu este bine s| declarai un tablou mai mare dect este cazul s| fie. Toate elementele tabloului au acelai tip, numit i de baz|, mai puin cnd acest tip este Variant, caz n care elementele pot avea tipuri de date diferite. Tipul de baz| poate s| fie oricare dintre tipurile prezentate. Exist| trei metode de creare a tablourilor cu dimensiune fix|: 1. tablou public care are Public n declaraia ei; 2. tablou de modul care folosete Dim la nivelul seciunii Declarations a modului din care face parte; 3. tablou de procedur| sau local, care folosete Private ntr-o procedur| pentru declararea tabloului.

Tabloul

0264-401667

NU COPIA !.

sau suna la:

Dac| procedura are specificate tipuri pentru parametri, n apelul procedurii argumentele trebuie s| fie valori sau variabile de acel tip. Un parametru se poate declara folosind ByVal pentru a specifica c| argumentul se transfer| prin valoare i nu prin referin|. Cnd un argument este transferat prin valoare, o copie a acestuia se transfer| procedurii. Dac| procedura modific| valoarea, modificarea va afecta numai copia valorii i nu valoarea original| a variabilei. Dac| argumentul este transferat prin referin|, valoarea acestuia se poate modifica prin instruciunile din procedur|. Dac| nu dorim ca o procedur| s| modifice valorile argumentelor folosii ByVal la declararea acestora.

Tipul parametru de procedur|

http://www.east.utcluj.ro/mb/mep/antal

Cele trei posibilit|i pentru specificarea ordinii relative n comparaii sunt Option Compare Database, Option Compare Binary i Option Compare Text. Access-ul insereaz| automat la nceputul fiec|rui modul Option Compare Database prin care comparaiile de iruri n modul se fac pe baza modalit|ii de sortare a Access-ului. Celelate dou| opiuni fac ca sortarea s| fie dependent| sau nu de scrierea cu litere mici i majuscule.

Pt. cumparare viziteaza:

238

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Declararea tablourilor

Dim A(10) As Integer

'tablou cu numele A de 1 dimensiune 'cu 11 elemente de tipul Integer, 'indicele poate lua valorile 0,1,2, '..., 10. 'tablou cu numele X de 1 dimensiune 'cu 23 elemente de tipul Double, 'indicele ia valori n domeniul 0, '22. 'tablou public cu numele Y de 1 'dimensiune cu 15 elemente de tipul 'Byte, indicele ia valori n 'domeniul 0, 15.

Dim X(21) As Double

Public Y(15) As Byte

Dim A(1 To 10) As Integer Dim Y(10 To 22) As Double

Cazul cel mai comun este tabloul cu dou| dimensiuni care uneori este numit i matrice. Un tablou cu 2 dimensiuni, cu 10 elemente pe dimensiune, la care i mai spunem i matrice de 10x10 se declar| astfel:

Tablouri cu mai multe dimensiuni

Pt. cumparare viziteaza:

Observai c| prima valoare a indicelui este 0, aceast| valoare implicit| se poate schimba folosind instruciunea Option Base n seciune de declaraii (Declarations) modulului. De exemplu, pentru ca toi indicii tablourilor unui modul s| plece de la 1 scriem Option Base 1. Un alt mod de specificare a limitei inferioare a indicelui este folosirea lui To:

http://www.east.utcluj.ro/mb/mep/antal

Cea mai simpl| form| de declarare a unui tablou este numele acestuia urmat de limita superioar| a indicelui, care trebuie s| fie o valoare ntreg| de tipul Long.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau

Dim Matrice1(1 To 10, 1 To 10) As Double

VBA permite lucrul i cu tablouri cu mai mult de dou| dimensiuni, ns| n practic| folosirea lor este mai rar|. O declaraie de tablou cu 3 dimensiuni este: Dim Tablou3D(5, 1 To 7, 3 To 6) As Double

Alocarea dinamic| a spaiului pentru stocarea tablourilor

Uneori nu se cunoate num|rul de elemente ale unei dimensiuni de tablou. n acest caz este de dorit s| avem posibilitatea specific|rii n mod dinamic a num|rului de elemente pe dimensiune. Un tablou dinamic poate fi redimensionat oricnd spre deosebire de cel static care are are num|rul de elemente fixate. Etapele lucrului cu un tablou dinamic sunt: 1. declaraia: un tablou dinamic se declar| astfel: Dim Adina() As Double. 2. alocarea de spaiu: se face prin folosirea lui ReDim Adina(Nr_de_elemente),

sau suna la:

Dim Matrice(9,9) As Double

0264-401667

NU COPIA !.

239

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

unde Nr_de_elemente este o valoare numeric| ntreag| care specific| noul num|r de elemente al tabloului. Instruciunea ReDim poate s| apar| numai ntr-o procedur| pentru c|, spre deosebire de Dim i Static, are un efect cu o aciune asupra execuiei aplicaiei. Poate modifica spaiul alocat pentru stocarea elementelor de tablou i domeniul de variaie al indicelui, dar nu poate modifica num|rul de dimensiuni al tabloului de la cel definit n primul ReDim. Dim Matrice() As Integer ... Function Test() ... ReDim Matrice(20,30)

Preserve ReDim Matrice(20,30+i)

Deseori n programe avem valori numerice care nu se modific|. Pentru creterea lizibilit|ii programelor este posibil| nlocuirea acestor valori constante printr-un nume simbolic. Sintaxa pentru definirea constantelor simbolice este:

Constante simbolice

n general, sunt folosite pentru valori numerice speciale sau pentru date i ore reprezentative pentru aplicaie. numeconstant| respect| regulile de scriere a unui nume de variabil|, iar expresie este format| din constante numerice sau ir interconectate prin operatori. Scopul constantelor simbolice este acelai cu cel al variabilelor.

Constante intrinseci

Constantele simbolice sunt create de programator. Constantele intrinseci sunt definite de cei care au scris VBA i le putei vizualiza folosind Navigatorul de Obiecte (Object Browser). Numele acestora trebuie s| fie unic i sunt disponibile n toate modulele aplicaiei.

Valorile stocate n variabile rezult| n urma unor expresii. Expresiile sunt formate din secvene de operatori i operanzi. Urm|toarele grupe de operatori sunt predefinii n VBA: # aritmetici; # de comparaie # de concatenare

Operatori

0264-401667

[Public|Private] Const numeconstant| [As tip] =expresie

Pt. cumparare viziteaza:

Dac| nu vei folosi Preserve, valorile curente stocate n tablou, vor fi distruse n urma execuiei lui ReDim. VBA va reseta valorile tablourilor la Empty pentru Variant, la 0 pentru tipurile numerice i la irul de lungime zero, adic| "", pentru tablouri de iruri dinamice, iar la valorile zero ANSI pentru tablourile cu iruri cu lungime fix| respectiv la valoarea Nothing pentru tablourile de obiecte. Dac| tabloul are mai multe dimensiuni, prin folosirea lui Preserve se va putea modifica numai num|rul de elemente al ultimei dimensiuni ale tabloului.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

sau suna la:

240

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

logici

Semnificaie adunare sc|dere nmulire mp|rire

http://www.east.utcluj.ro/mb/mep/antal

Operatori aritmetici
Simbol + * Exemplu a+b a-b a*b a/b a\b a^b a Mod b

Remarc|

a i b de orice tip numeric. a i b de orice tip numeric. a i b de orice tip numeric. a i b de orice tip numeric. nainte de mp|rire a i b sunt rotunjite la valori ntregi, rezultatul este tot un ntreg. a poate fi orice num|r, b numai unul ntreg. a i b se rotunjesc la ntregi dup| care se calculeaz| restul mp|ririi lui a la b.

mp|rire ntreag| ridicare la putere modulo

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.


/ \ ^ Mod

Operatori de comparaie
Semnificaie mai mic

Se folosesc pentru compararea expresiilor. Simbol <

Pt. cumparare viziteaza:

Exemplu a<b a<=b a>b a>=b a=b a<>b

Remarc|

Expresia din exemplu ia valoarea True dac| a < b, altfel False. Expresia din exemplu ia valoarea True dac| a <= b, altfel False.

mai mic sau egal mai mare

<= >

mai mare sau egal egal

>= =

Expresia din exemplu ia valoarea True dac| a >= b, altfel False. Expresia din exemplu ia valoarea True dac| a = b, altfel False. Expresia din exemplu ia valoarea True dac| a <> b, altfel False.

diferit

<>

Dac| n exemplele de mai sus, una dintre variabilele a sau b ia valoarea Null, expresia de comparaie ia i ea valorea Null. Variabilele comparate trebuie s| fie de tip numeric.

Operatori de concatenare

Se folosesc n cazul irurilor i au ca efect al|turarea a dou| iruri. Valoarea ntoars| este un nou ir care conine irurile operanzi al|turai.

0264-401667

NU COPIA !.

sau suna la:

Expresia din exemplu ia valoarea True dac| a > b, altfel False.

241

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Semnificaie concatenare concatenare

Simbol & +

Exemplu a&b a+b

Remarc|

Dac| ambele variabile sunt de tipul ir, operatorul de adunare are efect de concatenare.

Operatori logici

Semnificaie

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

George Boole a inventat un sistem matematic bazat valorile de adev|r, adev|rat (True), fals (False) i funciile I (AND), SAU (OR) i NU (NOT). Funciile boolene sunt prezentate prin tabele de adev|r unde 0 reprezint| fals i 1 adev|rat. Simbol And Exemplu Remarc|

I logic sau pe bii

a > b And b > c

Expresiile asupra c|rora acioneaz| operatorul sunt valori de adev|r, n acest caz se execut| I logic. a i b sunt numere, operatorul I va lucra la nivel de bii. Expresiile asupra c|rora acioneaz| operatorul sunt valori de adev|r, n acest caz se execut| SAU logic. a i b sunt numere, operatorul SAU va lucra la nivel de bii. NU logic.

a And b

SAU logic sau pe bii

Or

a > b Or b> c

a Or b Not (a >b)

NU logic sau pe bii

Not

Not a

NU pe bii.

http://www.east.utcluj.ro/mb/mep/antal

a i b trebuie s| fie iruri, altfel se convertesc n iruri automat.

Pt. cumparare viziteaza:

NU COPIA !.

And

True True

False

Null Null False

And 1 0

1 1 0

True

False

False Null

False Null

False False

Null

Tabela de adev|r pentru Or logic a i b sunt valori de adev|r True sau False Or True False True Null

Tabela de adev|r pentru Or pe bii a i b sunt valori de bii (0, 1) Or 1 0 1 1 1 0

True

True

True

False Null

True True

False Null

False Null

sau suna la:


0 0 0 1 0

Tabela de adev|r pentru And logic

Tabela de adev|r pentru And pe bii

0264-401667

242

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Tabela de adev|r pentru Not logic a True False Null

Tabela de adev|r pentru Not pe bii Not 1 0 1 1 1 0 1 0

Not(a)
False True Null

Controlul execuiei programului se face prin instruciuni. Cea mai elementar| instruciune este cea de atribuire, urmeaz| apoi cele de decizie i cele de ciclare.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Operatorii logici pot lucra cu valori de adev|r sau cu descompunerea binar| a valorilor numerice ale operanzilor. n acest caz operatori logici se numesc operatori pe bii i acioneaz| asupra a dou| poziii identice de bii din dou| expresii numerice modificnd bitul corespunz|tor acelei poziii conform tabelelor prezentate mai sus.

Controlul execuiei programului

Instruciunea Let

Realizeaz| atribuirea valorii unei expresii unei variabile sau propriet|i. [Let] numevariabil| = expresie

Let este un cuvnt opional, de obicei fiind omis, numevariabil| este obligatoriu i este numele unei variabile sau a unei propriet|i de obiect, iar expresie este cea care produce valoarea care va fi atribuit|. Iat| cteva exemple de atribuiri: Dim a As Integer Dim danu As Boolean Dim s As String a=10 danu=True s="vin alegerile ... trec alegerile"

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Valoarea lui expresie poate fi atribuit| variabilei numai dac| este de tip compatibil cu cel al variabilei. Variabilelor de tipul Variant li se poate atribui orice valoare.

Aceste instruciuni permit testarea unor condiii i n funcie de rezultatul testului s| execute anumite poriuni de cod. Instruciunile de decizie n VBA sunt:

Instruciuni pentru decizie

# # #

If...Then If...Then...Else Select ...Case

If...Then Se folosete pentru execuia condiional| a unei instruciuni sau a unui grup de instruciuni. Se

0264-401667

NU COPIA !.

sau suna la:

243

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

pot folosi dou| forme de scriere:

sau If condiie Then instruciuni End If

If condiie1 Then [instruciuni_1] [ElseIf condiie2 Then [instruciuni_2]] ... [Else [instruciuni_n]] End If

Select...Case Aceast| instruciune este o alternativ| pentru scrierea de If Then Else -uri lungi asigurnd o citire mai uoar| a codului. Select Case expresietest [Case listaexpresie1 [instruciuni_1]] [Case listaexpresie2 [instruciuni_2]] ... [Case Else [instruciuni_n]] End Select

0264-401667

NU COPIA !.

sau suna la:

Prima oar| se testeaz| condiie1. Dac| este False, se testeaz| condiie2 i aa mai departe pn| la g|sirea unei condiii True. Cnd s-a g|sit o astfel de condiie se execut| grupul de instruciuni instruciuni_x, apoi se sare la codul imediat urm|tor lui End If. Opional se poate un Else la care se va trece numai dac| nu s-a g|sit nici o condiie True.

Pt. cumparare viziteaza:

If...Then...Else Se folosete pentru execuia condiiont| a unui grup de instruciuni dintre mai multe grupuri.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

condiie este de obicei o comparaie, dar poate fi orice expresie care se evalueaz| la o valoare numeric|. Dac| valoarea numeric| este 0, VBA i atribuie valoarea de adev|r False, dac| este nenul|, valoarea de adev|r atribuit| de VBA este True. Dac| condiie este True se execut| instruciune sau instruciuni, n caz contrar instruciunile sunt s|rite. Observai c| prima form| de scriere permite execuia condiionat| a unei singure instruciuni, iar cea de a doua a unui grup de instruciuni.

http://www.east.utcluj.ro/mb/mep/antal

If condiie Then instruciune

244

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Instruciuni de ciclare

Instruciunile de ciclare permit executarea repetat| a unei instruciuni sau grup de instruciuni uneori denumite i corpul ciclului, atta timp ct o condiie r|mne adev|rat|. VBA suport| urm|toarele instruciuni de ciclare:

Ciclul Do...Loop Repet| un grup de instruciuni ct timp o condiie este True sau devine True. Urm|toarele forme de cicluri Do...Loop sunt valide: Do [{While |Until} condiie] [instruciuni] [Exit Do] [instruciuni] Loop sau Do [instruciuni] [Exit Do] [instruciuni] Loop [{While |Until} condiie]

Pt. cumparare viziteaza:

# # # #

Do...Loop For...Next For Each...Next While...Wend

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Nota 7 : Select Case evalueaz| pe expresietest o singur| dat| la nceput, cu If Then ElseIf se pot evalua expresii diferite pentru fiecare ElseIf.

http://www.east.utcluj.ro/mb/mep/antal

Aici, este o singur| expresie de test expresietest care se evalueaz| o dat| la intrarea n instruciune. VBA compar| valoarea acestei expresii cu valoarile din fiecare Case. Dac| se g|sete o egalitate va executa instruciunile asociate Case-ului respectiv. Listele de expresii listaexpresie conin una sau mai multe valori. Dac| exist| mai mult de o valoare n list|, trebuie separate prin virgule. Fiecare grup de instruciuni instruciuni_x conine nici una, una sau mai multe instruciuni. Dac| mai multe valori din liste distincte sunt egale cu valoarea de test, grupul de instruciuni corespunz|tor primei liste va fi executat. Grupul de instruciuni opionale corespunz|toare lui Case Else va fi executat dac| nu s-a g|sit n nici una din liste o valoare egal| cu cea a celei de test.

condiie este o expresie numeric| sau ir opional care este True sau False. Dac| condiie ia valoarea Null este echivalent| cu False. Cuvintele ntre acolade reprezint| alternative, adic| unul dintre ele poate s| fie scris. Pentru While instruciuni se execut| atta timp ct condiie este True, pentru Until instruciuni se execut| ct timp condiie nu este True. Exit Do produce ieirea din ciclul Do...Loop nainte de realizarea condiiei de p|r|sire a ciclului. Controlul este dat instruciunii imediat urm|toare ciclului, prima linie dup| Loop sau Loop [{While |Until} condiie]. Al doilea tip de ciclu se execut| cel puin o dat| pentru c| condiie, prin care se face testarea termin|ri, se atinge numai dup| execuia instruciunilor.

0264-401667

NU COPIA !.

sau suna la:

245

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

For contor = nceput To sfrit [Step pas] [instruciuni] [Exit For] [instruciuni] Next [contor]

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

For i=1 To 7 For j=1 To 10 For k=1 To 9 . . . Next k Next j Next i

Ciclul For Each...Next Repet| un grup de instruciuni pentru fiecare element de tablou sau colecie.

Pt. cumparare viziteaza:

contor este o variabil| de tip numeric, nceput este valoarea iniial| a lui contor, iar sfrit este valoarea final|, pas este o valoare opional| fiind cantitatea cu care se modific| contor la fiecare reluare a ciclului. Dac| pas nu este specificat| se consider| implicit 1. Dac| exist|, pas poate fi pozitiv sau negativ. instruciuni se execut| ct timp ct contor<=sfrit pentru valori pozitive ale lui pas sau ct timp contor>=sfrit pentru valori negative ale lui pas. Exit For produce saltul la instruciunea imediat urm|toare liniei Next [contor] de terminare a corpului ciclului For...Next. Un caz clasic de utilizare al ciclurilor For...Next este cnd un ciclu este n interiorul altuia, de exemplu:

http://www.east.utcluj.ro/mb/mep/antal

Ciclul For...Next Repet| grupul de instruciuni de un num|r de ori.

NU COPIA !.

element este o variabil| folosit| pentru parcurgerea iterativ| a elementelor din grup. Pentru colecii, element poate fi numai de tip Variant, variabil| obiect generic sau variabil| obiect specific. grup este numele unei colecii de obiecte sau tablou. For Each...Next se ncepe numai dac| n grup este cel puin un element. Dac| exist| mai multe elemente, instruciuni sunt repetate pentru fiecare element pn| la parcurgerea tuturor elementelor, cnd ciclul se termin| s|rindu-se la instruciunea imediat urm|toare lui. i aici Exit For produce ieirea forat| din ciclu cu saltul la instruciunea imediat urm|toare ciclului, adic| la prima instruciune dup| Next [element]. Ciclul While...Wend Execut| instruciuni ct tip condiie este True.

sau suna la:

For Each element In grup [instruciuni] [Exit For] [instruciuni] Next [element]

0264-401667

246

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

condiie este o expresie numeric| sau ir care se evalueaz| la True sau False. instruciuni reprezint| una sau mai multe instruciuni care vor fi executate ct timp condiie este True. Controlul revine la condiie dup| o execuie a corpului ciclului format din instruciuni cnd se verific| dac| condiie este nc| True. Dac| da, procesul se repet|, altfel se execut| instruciunea urm|toare lui Wend.

S| presupunem c| dorim s| lucr|m cu datele unei facturi ntr-un modul VBA. ntr-un model simplificat, urm|toarele date ar fi de manipulat pentru fiecare facut|: ID - un num|r care identific| unic o factur|, ContClient - num|rul de cont al clientului, Valoare - valoarea de pl|tit, DFactura - data emiterii facturii, DAmanare - data pn| la care plata poate fi amnat|; DPlata - data pl|ii facurii, Expirata - n cazul n care factura expir|. Toate aceste date pot fi stocate n variabile simple astfel: Dim Dim Dim Dim Dim Dim Dim ID As Long ContClient As String Valoare As Currency DFactura As Date DAmanare As Date DPlata As Date Expirata As Boolean

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Tipuri de date definite de utilizator

O metod| de rezolvare a problemei este crearea unui tip de dat| definit| de utilizator care stocheaz| toate informaiile de manipulat prin: Type Factura ID As Long ContClient As String Valoare As Currency DFactura As Date DAmanare As Date DPlata As Date Expirata As Boolean End Type

Pe baza acestui tip de dat| definit de utilizator se pot declara variabile noi, dup| cum urmeaz|: Dim TestFactura As Factura

0264-401667

NU COPIA !.

Aceast| abordare are cteva probleme: ! dac| se lucreaz| cu mai multe facturi simultan, trebuie create cte un set de variabile pentru fiecare factura, acesta fiind un dezavantaj clar; ! nu exist| un mecanism intern pentru verificarea i manipularea datelor stocate n aceste variabile.

http://www.east.utcluj.ro/mb/mep/antal

While condiie [instruciuni] Wend

Pt. cumparare viziteaza:

sau suna la:

247

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Dac| dorim s| lucr|m cu mai multe facturi, tot ce trebuie s| facem, este s| declar|m mai multe variabile de tipul Factura. Este mult mai simplu s| lucr|m cu mai multe facturi, ns| ad|ugarea datelor se face, nc|, elementar.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

n tehnica program|rii obiectuale clasa reprezinta 7 un ablon. O variabil| de tipul clas| (uneori numita 7s - i instant -iere) este un obiect care se creeaz| pe baza ablonului, el avnd caracteristicile descrise de acesta. Aceste caracteristici sunt determinate de proprieta 7tile i de membrii clasei. Obiectul este o entitate care poate fi programat, manipulat sau controlat. n Access, formularele, controalele etc. sunt obiecte. O proprietate este o caracteristc| a unui obiect, n Access, majoritatea propriet|ilor pot fi citite i scrise. O metod| reprezint| o aciune care poate fi efectuat| de obiect.

Crearea unei modul clas|

Tradit -ional, la specificarea numelui unei clase, acesta este prefixat cu un "C". Daca 7 clasa CFactura este deja definita 7 , un obiect pe baza clasei se creeaza 7 prin linia:

Dim Factura As New CFactura

Des - i linia de mai sus creeaza 7 obiectul, adica 7 aloca 7 memorie pentru el, obiectul nu este instant -iat dect dupa 7 ce se refera 7 n cod.

Cnd se atribuie o valoare unei proprieta 7ti din obiect, valoarea este stocata 7 ntr-o variabila 7 interna 7 care este accesibila 7 numai respectivului obiect. Un utilizator al obiectului poate manipula doar proprieta 7tile expuse, astfel datele specifice obiectului sunt protejate contra manipula 7 rilor directe si, eventual, gres - ite.

Definirea membrilor data 7

0264-401667

NU COPIA !.

sau suna la:

din fereastra bazei de date selectai Modules; clic pe butonul New; din Insert selectai Class Module; -i proprietatea Name pentru a modifica numele clasei de la Class1 la folosit CFactura;

Pt. cumparare viziteaza:

Pentru a elimina aceast| problem| se poate defini un obiect "Factura" care are urm|toarele caracteristici: ! ID, ContClient, Valoare etc. devin propriet|i ale obiectului; ! cnd se creeaz| un obiect nou, anumite propriet|i primesc automat valori; ! cnd se atribuie o valoare unei propriet|i se poate scrie o secven| de cod VBA pentru validarea valorii; ! obiectului i se pot pot implementa metode (de exemplu, pentru a verifica dac| o factur| este expirat|).

http://www.east.utcluj.ro/mb/mep/antal

TestFactura.ID = 1234 TestFactura.ContClient = "AK72 - 12344" TestFactura.Valoare = 777.12345 TestFactura.DFactura = Date TestFactura.DAmanare = Date + 30 TestFactura.Expirata = False

248

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Pentru exemplul nostru se vor declara variabile din figura urma 7 toare:

http://www.east.utcluj.ro/mb/mep/antal

Prima sarcina 7 , dupa 7 crearea unui modul clasa 7 , este specificarea acestor variabile interne clasei care se mai numesc si membri data 7 . De obieci, se declara 7 cte o variabila 7 interna 7 pentru fiecare data de stocat n obiect respectnd regulile: ! fiecare variabila 7 se declara 7 folosind cuvntul cheie Private pentru a face variabilele disponibile numai n interiorul acelui modul; ! tradit -ional, numele membrilor data 7 se prefixeaza 7 cu m_ pentru a indica ca 7 este vorba despre un membru al unei clase.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Implementarea propriet|ilor clasei

Cel de al doilea pas consta 7 n definirea proprieta 7tilor clasei. La fel ca si n cazul membrilor data, ideea sta 7 n crearea unei proprieta 7ti pentru fiecare articol de informat -ie stocat|. Acest pas are dou| etape pentru fiecare proprietate: ! stabilirea mecanismului pentru ntoarcerea valorii curente a propriet|ii i ! un mecanism, opional, pentru modificarea valorii propriet|ii.

Aceste "mecanisme" se implementeaz| printr-un grup special de funcii VBA folosind cuvintele cheie Property Get i Property Set.

Modul de lucru cu Property Get Property Get se folosete pentru ntoarcerea valorii curente a unei propriet|i. Formatul general pentru aceast| proprietate este:

0264-401667

NU COPIA !.

sau suna la:

249

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Folosirea lui Public face ca aceast| procedur|, sau proprietate, s| fie vizibil| pentru procese externe. numeproprietate este numele propriet|ii, tipdedat| este tipul de dat| al propriet|ii, iar m_membrudat| este variabila membru dat| care stocheaz| valoarea curent| a propriet|ii. Dac| dorim, se pot ad|uga instruciuni n plus procedurii, dei n cazul lui Property Get este destul de rar. Pentru exemplul nostru, propriet|ile Property Get folosite sunt: Private Private Private Private Private Private Private m_ID As Long m_ContClient As String m_Valoare As Currency m_DFactura As Date m_DAmanare As Date m_DPlata As Date m_Expirata As Boolean

' Intoarce valoarea curenta a valorii proprietatii CFactura.ID Public Property Get ID() As Long ID = m_ID End Property ' Intoarce valoarea curenta a proprietatii CFactura.ContClient Public Property Get ContClient() As String ContClient = m_ContClient End Property ' Intoarce valoarea curanta a proprietatiui CFactura.Valoare Public Property Get Valoare() As Currency Valoare = m_Valoare End Property ' Intoarce valoarea curenta a proprietatii CFactura.DFactura Public Property Get DataFactura() As Date DataFactura = m_DFactura End Property ' Intoarce valoarea curenta a proprietatii CFactura.DPlata Public Property Get DataPlata() As Date DataPlata = m_DPlata End Property

http://www.east.utcluj.ro/mb/mep/antal

Public Property Get numeproprietate( ) As tipdedat| [instruciuni] numeproprietate = m_membrudat| End Property

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

250

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Modul de lucru cu Property Let Cu excepia cazului n care dorii ca proprietatea s| poat| fi, doar citit|, trebuie definit| o procedur| care permite atribuirea unei noi valori propriet|ii. n acest scop se va folosi o procedur| Property Let care are forma general|:

Pentru CFactura, propriet|ile Property Let sunt:

' Modifica valoarea proprietatii CFactura.ContClient Public Property Let ContClient(ContClient As String) m_ContClient = ContClient End Property ' Modifica valoarea proprietatii CFactura.Valoare Public Property Let Valoare(Cantitate As Currency) If Cantitate < 0 Then Cantiate = 0 MsgBox "Nu se poate introduce o cantitate < 0 de bani"& _ Chr(13) _ & "$0.00 se va folosi in locul valorii introduse." End If m_Valoare = Cantitate End Property ' Modifica valoarea proprietatii CFactura.DFactura Public Property Let DataFactura(DF As Date) If DF < Date Then DF = Date MsgBox "Nu se poate introduce o factura in trecut!" & _ Chr(13) _

Pt. cumparare viziteaza:

La fel ca i nainte numeproprietate este numele propriet|ii, de asemenea, ValoareNou| este noua valoare pe care utilizatorul vrea s-o atribuie propriet|ii, tipdedat| este tipul de dat| care trebuie folosit pentru valoarea propriet|ii, iar m_membrudat| este variabila membru dat| a c|rei valoare se va modifica. i aici pot fi ad|ugate instruciuni n plus. Acestea testeaz|, de obicei, noua valoare nainte de a modifica membrul dat|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Public Property Let numeproprietate(ValoareNou| As tipdedat|) [instruciuni] m_membrudat| = ValoareNou| End Property

http://www.east.utcluj.ro/mb/mep/antal

' Intoarce valoarea curenta a proprietatii CFactura.Expirata Public Property Get EsteExpirata() As Boolean EsteExpirata = m_Expirata End Property

0264-401667

NU COPIA !.

sau suna la:

251

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Observai c| nu exist| proceduri Property Let pentru propriet|ile ID i EsteExpirata, astfel ele devin propriet|i care pot fi doar citite (read-only). Crearea metodelor clasei Orice obiect are i un grup de metode care acioneaz| asupra obiectului. n acest scop, n cadrul clasei, trebuie s| definim proceduri Sub sau Function de tipul Public pentru ca s| fie vizibile extern. n cazul exemplului prezentat, se poate scrie o procedur| Sub care s| actualizeze valoarea lui m_Expirata dup| cum data curent| este mai mare sau mai mic| dect data amn|rii de plat| sub forma:

Pt. cumparare viziteaza:

Propriet|ile Property Let ContClient, Property Let ID permit modificarea membrilor dat| m_ContClient, m_ID f|r| a realiza verificarea noilor valori. Proprietatea Property Let DataFactura permite modificarea datei facturii numai dac| aceasta este mai mare dect data curent|. n caz contrar se afieaz| un mesaj prin care utilizatorul este avertizat c| nu se poate factura "n trecut" i data factur|rii devine data curent|, iar data pn| la care se face amnarea de plat| este cu 30 de zile n plus fa| de cea de emitere a facturii.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

' Modifica valoarea proproetatii CFactura.DPlata Public Property Let DataPlata(DP As Date) m_DPlata = m_DPlata m_Expirata = False End Property

http://www.east.utcluj.ro/mb/mep/antal

& "Data de azi va fi folosita in locul celei introduse." End If m_DFactura = DF m_DAmanare = m_DFactura + 30 End Property

NU COPIA !.

Definirea evenimentelor clasei Clasele definite de utilizator suport| lucrul cu dou| evenimente: Initialize i Terminate.

Evenimentul Initialize Acesta apare atunci cnd se realizeaz| la instanierea obiectului de tipul clas|, adic| atunci cnd: ! se declar| o variabil| obiect de tipul clasei prin folosirea lui New; evenimentul apare la prima folosire a variabilei n cod, de exemplu: Dim test As New CFactura test.ID = 1234 'evenimentul Initialize apare aici

sau suna la:

' Defineste metoda CFactura.Actualizare Public Sub Actualizare() If m_DAmanare < Date And m_DPlata = 0 Then m_Expirata = True End If End Sub

0264-401667

252

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Pentru a folosi acest eveniment se adaug| clasei o procedur| Private care folosete urm|torul format: Private Sub Class_Initialize( ) [codul de iniializare se pune aici] End Sub

n cazul nostru, procedura care urmeaz|, iniializeaz| pe: ! m_ID cu un num|r aleator format din 5 cifre; ! m_DFactura cu data curent|; ! m_DAmanare cu 30 de zile dup| data curent|.

Private Sub Class_Terminate( ) [codul pentru terminare se pune aici] End Sub

Utilizarea clasei

Codul care urmeaz| se va crea ntr-un modul i permite verificarea funcion|rii clasei. Public Sub TestCFactura() Dim test As New CFactura Debug.Print "ID = "; test.ID test.ID = 1234 Debug.Print "ID = "; test.ID Debug.Print "Data facturii ="; test.DataFactura

0264-401667

NU COPIA !.

sau suna la:

Evenimentul Terminate Acest eveniment apare atunci cnd toate referinele la obiectul de tipul clas| sunt setate la Nothing. Se folosete atunci cnd eliberarea clasa a alocat dinamic memorie i aceasta trebuie eliberat|. Pentru a folosi acest eveniment se scrie, n clasa, o procedur| Private de forma:

Pt. cumparare viziteaza:

' Aceasta procedura este lansata in executie la aparitia ' evenimentului de clasa "Initialize" Private Sub Class_Initialize() Randomize m_ID = Int((99999 - 10000) * Rnd + 10000) m_DFactura = Date m_DAmanare = m_DFactura + 30 End Sub

http://www.east.utcluj.ro/mb/mep/antal

! se declar| o variabil| obiect de tipul clasei f|r| cuvntul cheie New, la scrierea lui Set prin care variabila este egal| cu noua instaniere a clasei Dim test1 As CFactura Set test1 = New CFactura 'evenimentul Initialize

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

253

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

El se va lansa n execuie din fereastra imediat| (Ctrl+G).

Crearea unei colecii VBA

ntruct coleciile sunt obiecte, ele se creeaz| asemenea obiectelor. Prima oar| se declar| o variabil| obiect care se va folosi ca referin| la colecie, apoi, se folosete Set pentru a crea o referin| de la variabila obiect colecie. Codul, principial, este de forma:

Propriet|ile i metodele obiectului colecie

Obiectul colecie are o structur| foarte simpl| avnd o singur| proprietate i trei metode prezentate n tabelul urm|tor: Nume Tip Descriere

Count

proprietate metod| metod| metod|

Specific| num|rul articolelor din colecie

Add

Se folosete pentru ad|ugarea unui articol la colecie

Remove Item

Se folosete pentru tergerea unui articol din colecie

Se folosete pentru referirea unui articol din colecie; este metoda implicit|

Ad|ugarea unui articol la colecie

0264-401667

NU COPIA !.

sau suna la:

Dim Facturi As Collection Set Facturi = New Collection

Pt. cumparare viziteaza:

Cloeciile VBA furnizeaz| o metod| pentru tratarea unor obiecte definite de utilizator sub forma unui grup. De exemplu, dac| avem mai multe obiecte de tipul CFactura i se dorete realizarea unei aciuni este mai simplu dac| aceste obiecte pot fi tratate, grupat, dect, individual. O colecie este, la rndul ei, un obiect cu propriile lui propriet|i i metode. Obiectul colecie are urm|toarele caracteristici: ! este un obiect cu propriet|i i metode; ! obiecte de tipuri diferite pot fi ad|ugate coleciei; ! are dimensiunea variabil|, dup| cum se adaug| sau se terg obiecte; ! articolele coleciei nu pot fi sortate; ! articolele din colecie se pot selecta pe baza unui index care ncepe cu valoarea numeric| 1.

Colecii VBA

http://www.east.utcluj.ro/mb/mep/antal

test.DataFactura = #1/1/2002# Debug.Print "Data facturii ="; test.DataFactura test.Actualizare Debug.Print "Este expirata = "; test.EsteExpirata test.Valoare = 120 Debug.Print "Valoarea facturii este = "; test.Valoare End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

254

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Metoda Add se folosete pentru ad|ugarea unui articol n colecie, ea are forma general|:

De exemplu, pentru ad|ugarea obiectelor test1, test2, test3 de tipul CFactura coleciei testi se va folosi codul: Dim Dim Dim Dim testi test1 test2 test3 As As As As New New New New Collection CFactura CFactura CFactura

test1.ContClient = "ab-1234" test2.ContClient = "bc-5555" test3.ContClient = "ab-3334" testi.Add test1, "unu" testi.Add test2, "doi" testi.Add test3, "trei" Set Set Set Set test1 test2 test3 testi = = = = Nothing Nothing Nothing Nothing

Dei folosirea lui Cheie este opional|, utilizarea unor nume pentru identificarea unui articol de colecie este de preferat n locul unui num|r ntreg. Num|rul de index nu este foarte sigur ntruct valoarea lui se poat schimba dac| se terg sau se adaug| articole. Argumentele opionale nainte i Dup| se pot folosi pentru a specifica poziia obiectelor n colecie.

Referirea unui obiect

Debug.Print testi.Item(2).ContClient Debug.Print testi(2).ContClient Debug.Print testi.Item("doi").ContClient

Parcurgerea articolelor coleciei

Cel mai eficient mod de parcurgere a coleciei este folosirea instruciunii For Each.

Dim test As CFactura 'variabila obiect de tipul CFactura For Each test In testi Debug.Print test.ContClient Next test

tergerea obiectelor individuale

0264-401667

NU COPIA !.

sau suna la:

Obiectele coleciei pot fi referite printr-un num|r sau valoarea cheii. Cnd articolele se refer| printr-un num|r ntreg, numit i index, valoarea indexului, pentru primul obiect din colecie, este 1. Metoda mai simpl| de referire este prin numele cheii. Codul care urmeaz| exemplific| cele descrise.

http://www.east.utcluj.ro/mb/mep/antal

Collection.Add Articol [, Cheie] [, nainte] [, Dup|]

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

255

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Obiecte specifice ale unei colecii por fi terse folosind indexul sau valoarea cheii dup| cum urmeaz|: testi.Remove 2 testi.Remove "trei"

O metod| pentru tegerea tuturor obiectelor din cloecie este parcurgerea ei i apelarea metodei Remove pentru fiecare articol. Exist| ns| i o metod| mai rapid| n care se reatribuie obiectul colecie unei noi colecii: Set testi = New Collection

tergerea tuturor obiectelor

Eliberarea spaului folosit pentru stocarea variabilei obiect

Coleciile sunt obiecte, din acest motiv spaiul folosit pentru stocarea variabilei colecie trebuie i el eliberat prin codul: Set testi = Nothing

Pentru testarea secvenelor de cod prezentate se va folosi procedura: Public Sub TestCFacturi1() Dim testi As New Collection Dim test1 As New CFactura Dim test2 As New CFactura Dim test3 As New CFactura Dim test As CFactura

testi.Add test1, "unu" testi.Add test2, "doi" testi.Add test3, "trei"

Debug.Print testi.Item(2).ContClient Debug.Print testi(2).ContClient Debug.Print testi.Item("doi").ContClient Debug.Print "----" For Each test In testi Debug.Print test.ContClient Next test testi.Remove 2

0264-401667

NU COPIA !.

test1.ContClient = "ab-1234" test2.ContClient = "bc-5555" test3.ContClient = "ab-3334"

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

256

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

testi.Remove "trei"

Set testi = New Collection Set testi = Nothing End Sub

Lansarea ei n execuie i afiarea rezultatelor se fac din fereastra imediat|.

Crearea unei clase pentru manipularea coleciilor

Option Explicit

' Membru data Private m_Facturi As New Collection

' Intoarce proprietatea CInvoices.Contor Public Property Get Contor() As Long Contor = m_Facturi.Count End Property

Pt. cumparare viziteaza:

Codul care urmeaz| implementeaz| o clasa pentru manipularea unei colecii. Pentru aceasta se va crea o clas| nou| care va avea proprietatea Name seat| la CFacturi i urm|torul cod:

http://www.east.utcluj.ro/mb/mep/antal

Debug.Print "----" For Each test In testi Debug.Print test.ContClient Next test

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

' Functia este versiunea romana pentru metoda Add Public Function Adauga(CClient As String, ValFact As _ Currency) As CFactura Dim facturaNoua As New CFactura With facturaNoua .ContClient = CClient .Valoare = ValFact m_Facturi.Add Item:=facturaNoua, Key:=CStr(.ID) End With Set Adauga = facturaNoua End Function

sau suna la:

Public Property Get Facturi() As Collection Set Facturi = m_Facturi End Property

0264-401667

NU COPIA !.

257

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

' Versiunea romana pentru metoda Remove Public Sub Sterge(Index As Variant) m_Facturi.Remove Index End Sub Pentru testarea clasei se va folosi procedura: Public Sub TestCFacturi2() 2 Dim testi As New CFacturi 3 Dim test As CFactura
1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

For i = 1 To testi.Contor Debug.Print testi.Articol(i).ContClient Next i For Each test In testi.Facturi Debug.Print test.ContClient Next test

Pt. cumparare viziteaza:

testi.Adauga CClient:="ab-1234", ValFact:=777.77 testi.Adauga CClient:="bc-5555", ValFact:=333.33 testi.Adauga CClient:="ab-3334", ValFact:=555.55 Debug.Print testi.Contor

http://www.east.utcluj.ro/mb/mep/antal

' Versiunea romana pentru metoda Item Public Function Articol(Index As Variant) As CFactura Set Articol = m_Facturi.Item(Index) End Function

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End Sub

Liniile 10 - 12 prezint| modul de parcurgere a coleciei testi folosind ciclul For. Liniile 14 - 16 prezint| modul de parcurgere a coleciei testi prin folosirea ciclului For Each. Pentru ca aceast| metod| de parcurgere s| poat| fi folosit| a fost nevoie de proprietatea Facturi care s| ntoarc| colecia curent| de facuri stocat| n membrul dat| m_Facturi.

Modul de lucru cu Property Set Pentru a atribui o colecie propriet|ii Facturi trebuie folosit| o procedur| Property Set. Acest tip de procedur| se folosete pentru atribuirea unui obiect la o proprietate i are urm|torul format: Public Property Set numeproprietate(ObiectNou As tipdedat|) [instruciuni] Set m_membrudat| = ObiectNou End Property

0264-401667

NU COPIA !.

sau suna la:

258

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Property Set este o varianta 7 de Property Let care permite crearea unor proprieta 7ti obiect. Proprieta 7tile obiect sunt proprieta 7ti care sunt poantori la obiecte si nu sunt valori scalare obies - nuite. Creat -i un nou modul clasa 7 cu numele CClient. Option Compare Database Option Explicit Private Private Private Private m_ContClient As String m_NumeClient As String m_AdresaClient As String m_FacturiClient As CFacturi

Public Property Get NumeClient() As String NumeClient = m_NumeClient End Property

Public Property Let AdresClient(adr As String) m_AdresaClient = adr End Property

Public Property Let ContClient(cont As String) m_ContClient = cont End Property Public Property Get ContClient() As String ContClient = m_ContClient End Property

Public Property Get FacturiClient() As CFacturi Set FacturiClient = m_FacturiClient End Property

Public Property Set FacturiClient(ObiecteFacturi As CFacturi)

0264-401667

NU COPIA !.

sau suna la:

Public Property Get AdresaClient() As String AdresaClient = m_AdresaClient End Property

Pt. cumparare viziteaza:

Public Property Let NumeClient(nume As String) m_NumeClient = nume End Property

http://www.east.utcluj.ro/mb/mep/antal

numeproprietate este numele propriet|ii, ObiectNou esteobiectul pe care dorim s|-l atribuim, tipdedat| este tipul de dat| al obiectului, iar m_membrudat| este variabil| membru dat| obiect.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

259

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Set m_FacturiClient = ObiecteFacturi End Property Pentru testarea clasei creat -i procedura urma 7 toare: Public Sub TestCClient() 2 Dim tc As CClient 3 Dim fa As CFacturi
1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 24

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set tc = New CClient With tc .ContClient = "12-3456" .AdresClient = "Fericirii 13" .NumeClient = "Ionel Vasile" Set .FacturiClient = New CFacturi End With

Debug.Print "----" With tc.FacturiClient .Adauga tc.ContClient, "100.00" .Adauga tc.ContClient, "200.108" For i = 1 To .Contor Debug.Print .Articol(i).ContClient,E .Articol(i).Valoare Next i End With Debug.Print "----"

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

n majoritatea cazurilor, cnd se modeleaza 7 o problema 7 cu ajutorul obiectelor, se vor ga 7 si relat -ii ntre obiecte. Deseori, aceste relat -ii sunt reprezentate grafic, sub forma unei diagrame 7 denumirea de modelul de obiecte al aplicat -iei. n principal, relat -iile dintre obiecte ce poarta sunt de natura 7 ierarhica 7 . Pentru reprezentarea realt -iilor ntre obiecte se folosesc poantori. Se vor declara poantori la obiecte copil n sect -iunea declarat -iilor modulului clasa 7 pa 7 rinte. Mai sus, pentru a modela relat -ia ntre factura 7s - i client s-a declarat o variabila 7 m_FacturiClient n sect -iunea declarat -iilor din clasa CClient. Ea primes - te, valoare n linia 10 a secvent -ei pentru testarea clasei, cu ajutorul proprieta 7tii Set. Pentru a putea accesa membrii obiectului CFacturi s-a definit proprietatea Get FacturiClient la nivelul obiectului CClient. Fa 7 ra 7 ea, liniile 14-20, din codul de testare ar fi fost imposibil de scris.

sau suna la:

Set fa = tc.FacturiClient For i = 1 To fa.Contor Debug.Print fa.Articol(i).ContClient,E fa.Articol(i).Valoare Next i End Sub

0264-401667

260

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Atent -ie

scris4 a n pe locul lui

E.

Public Function f(x As Double) As Double f = 1 + Sqr(x) End Function

0264-401667

NU COPIA !.

sau suna la:

Definit -ia de mai sus este stocata 7 n modulul cu numele Module3, iar rezultatul funct -iei este afis - at n fereastra imediata 7 (Immediate window). Vizualizarea acestei ferestre se face selectnd din View, Immediate Window. Deseori, aceasta 7 fereastra 7 este folosita 7 pentru testarea unui 7 situatie ar fi calculul valorii unei expresii sau a subprogram din interiorul unui modul. O alta unei variabile. Pentru aceasta se va folosi caracterul ? urmat de numele variabilei, expresiei sau funct -iei dupa 7 care se apasa 7 tasta Enter. Rezultaul se va afis - a, n fereastra imediata 7 , pe linia urma 7 toare expresiei de calculat.

Pt. cumparare viziteaza:

Fie funct -ia defines - te sub forma:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Exista 7 multe asema 7 na 7 ri ntre funct -ia din "matematica 7" s - i cea din VBA. Prin definit -ie, avnd doua 7 mult -imi D, C s - i G o parte a produsului cartezian D x C, astfel nct , cu proprietatea , se numes - te funct -ie (aplicat -ie sau transformare) definita 7 pe D cu valori C tripletul . D se numes - te domeniul de definit -ie, C codomeniul funct -iei, iar G graficul lui f. Deseori, n locul notat -iei se prefera 7 sau y = f(x). x se numes - te variabila 7 independenta 7 sau argument, iar y variabila 7 depedenta 7 . Elementul unic , care corespunde lui se numes - te imaginea lui x prin f sau valoarea funct -ie n x. , pentru care D=[0,4] si C=[1,3], n limbajul VBA, acesta 7 funct -ie se

Aplicaii VBA cu funcii i clase

http://www.east.utcluj.ro/mb/mep/antal

n toate secvent -ele de program care urmeaza 7 simbolul este folosit pentru a marca o linie 7 lungimii prea mari, nu a putut fi scrisa 7 complet pe un singur rnd. Pe hrtie, linia care, datorita prea lunga este continuata 7 pe linia imediat urma 7 toare, dar n program, continuarea trebuie

261

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Aplicat -ii cu instruct -iunea If

daca 7 a este mai mic dect b minimul este a, daca 7 a este mai mare dect b minimul este b, observnd ca 7 o solut -ie o exclude pe cealata 7 se poate spune:

daca 7 a este mai mic dect b atunci minimul este a, altfel minimul este b,

Rat -ionamentul de mai sus, se va programa n VBA, folosind instruct -iunea If astfel: Daca 7 a < b Atunci minim = a Altfel minim =b Terminare If

If a < b Then minim = a Else minim = b End If

sau suna la:

-ia problemei ntr-o formulare comuna 7 ar fi: Solut

0264-401667

If se foloses - te atunci cnd pe parcursul rezolva 7 rii problemei, n secvent -a 7 de pas - i de urmat, trebuie luata 7 o decizie. n "vocabularul uman" corespondentul lui If este daca 7 . Sa 7 presupunem ca 7 dorim sa 7 scriem o funct -ie care ga 7 ses - te minimul dintre doua 7 valori reale. Funct -ia se va primi 7 va calcula minimul dintre doua 7 valori si va avea ca parametri pe a numele de min2, pentru ca si b.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

262

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Pe baza codului de mai sus, se va scrie o funct -ie care sa 7 calculeze minimul.

Public Function min3(a As Double, b As Double, c As Double) As E Double min3 = min2(min2(a, b), c) End Function

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Daca 7 , pe baza funct -iei care ga 7 ses - te minimul dintre doua 7 valori dorim sa 7 scriem o funct -ie, cu numele min3, care ga 7 ses - te minumul dintre trei valori, acesta va fi:

-i ca 7 valoarea lui min3 se determina 7 prin apelarea de doua 7 ori a lui min2. Prima oara 7 Observat se ga 7 ses - te minimul dintre a s - i b, apoi ntre minimul dintre a, b s - i c.
Pe baza exemplelor prezentate, scriet -i funct -iile max2 s - i max3 pentru calcularea maximului dintre doua 7 respectiv trei numere. Scriet -i apoi o procedura 7 Sub, cu numele minmax3, pentru 7 pe funct -iile de mai sus. calculul valorilor minime si maxime bazata

http://www.east.utcluj.ro/mb/mep/antal

Public Function min2(a As Double, b As Double) As Double If a < b Then min2 = a Else min2 = b End If End Function

Pt. cumparare viziteaza:

Procedura Sub va avea trei argumente de intrare, pe a, b s -i c s - i doua 7 de ies - ire, pe vmin s -i vmax. Observat -i, n fereastra imediata 7 , ca 7 des - i pe ultimele doua 7 pozit -ii stau parametrii de

0264-401667

NU COPIA !.

sau suna la:

263

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

n acest caz, subprogramul cu numele minmax3v1 va putea fi apelat din fereastra imediata 7 prin linia minmax3v1 1,2,3.

Se d| funcia definit| pe intervale:

x <1 sin( x ) e x, 7 g( x ) = x + 5x 5 + 1, x [1, 1] cos( x ) 2 , x >1 x 4

intervalului i se noteaz| cu h. Dac| h =

continuare. Observai c| funcia g(x) are un parametru care este folosit pentru a monitoriza evaluarea corect| a valorilor ei. n caz de eroare acest parametru va lua valoarea True, caz n care rezultatul ntors de funcie nu este definit. Public Function g(x As Double, eroare As Boolean) As Double eroare = False If (x < -1) Then g = Sin(x) * Exp(-x) ElseIf (x <= 1) Then g = x ^ 7 + 5 * x ^ 5 + 1 Else If (Abs(x) = 2) Then

sau suna la:

ba , atunci valoarea punctului al i-elea va n 1 calcula folosind formula x = a + ( i 1)h . Cele dou| proceduri sunt implementate n

0264-401667

NU COPIA !.

Se cere s| se scrie o procedur| de tipul funcie pentru calculul valorilor lui g(x) i una de tipul subrutin| pentru afiarea valorilor ei ntr-un interval dat, [a,b], n n puncte echidistante. ntruct punctele sunt echidistante, se poate determina dinstana ntre dou| puncte consecutive considerndu-se conoscute a, b i n. Aceast| distant| se numete pas de parcurgere a

Pt. cumparare viziteaza:

Aplicaii cu instruciunea For

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Public Sub minmax3v1(a As Double, b As Double, c As Double, E Optional vmin As Double, Optional vmax As Double) vmin = min3(a, b, c) vmax = max3(a, b, c) Debug.Print "Minimul dintre "; a; b; c; " este "; vmin Debug.Print "Maximul dintre "; a; b; c; " este "; vmax End Sub

http://www.east.utcluj.ro/mb/mep/antal

ies - ire, care se calculeaza 7 n procedura 7 , ei trebuie specificat -i conform sintaxei de scriere a apelului lui minmax3. Pentru a sca 7 pa de aceasta 7 scriere ei pot fi declarat -i ca parametrii opt -ionali dupa 7 cum urmeaza 7:

264

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

n continuare se por prezenta cteva dintre posibilit|ile de implementare a operaiilor cu numere complexe, n VBA, folosind tehnicile de progrmare deja discutate. n prima variant|, programarea procedurarl| este folosit| pentru implementarea adum|rii a dou| numere complexe. Creai un modul cu urm|toarele proceduri: Sub complex_aduna(re1 As Double, im1 As Double, re2 As E Double, im2 As Double, sumare As Double, sumaim As Double) sumare = re1 + re2

Realizarea unei clase pentru lucrul cu numere complexe

0264-401667

NU COPIA !.

sau suna la:

For i = 1 To n x = a + (i - 1) * h aux = g(x, eroare) If eroare Then Debug.Print "Evaluarea functiei a generat eroare E pentru x = "; x Else Debug.Print i; ")"; x; aux End If Next i End Sub

Pt. cumparare viziteaza:

If (b < a) Then MsgBox "a < b" Exit Sub End If If n <= 1 Then h = 0 Else h = (b - a) / (n - 1) End If

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Public Sub afisare(a As Double, b As Double, n As Integer) Dim x As Double, aux As Double, eroare As Boolean Dim h As Double Dim i As Integer

http://www.east.utcluj.ro/mb/mep/antal

'Debug.Print "Impartire cu 0 in g(x) pentru x = ; x" eroare = True Exit Function Else g = Cos(x) / (x * x - 4) End If End If End Function

265

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

sumaim = im1 + im2 End Sub Sub test() Dim re As Double, re1 As Double, re2 As Double Dim im As Double, im1 As Double, im2 As Double re1 im1 re2 im2 = = = = 1 2 3 4

complex_aduna re1, im1, re2, im2, re, im Debug.Print re; "+i*"; im End Sub

Type complex re As Double im As Double End Type

Sub test1() Dim c As complex, c1 As complex, c2 As complex c1.re = 1 c1.im = 2 c2.re = 3 c2.im = 4 c = complex_aduna(c1, c2) Debug.Print c.re; "+i*"; c.im End Sub

Observai c| tipul de dat| complex ne oprete s| facem greseli n utilizarea valorilor re i

0264-401667

NU COPIA !.

sau suna la:

Function complex_aduna(c1 As complex, c2 As complex) As E complex complex_aduna.re = c1.re + c2.re complex_aduna.im = c1.im + c2.im End Function

Pt. cumparare viziteaza:

Procedura pentru adunarea a dou| numere complexe are ase parametri, primii patru sunt de intrare, iar ultimii doi sunt de ieire. n aceasata variant| de implementare nu exist| nici un control asupra valorilor de intrare, care, pna la urm|, pot fi orice valori numerice i nu neap|rat p|rile reale i imaginare are unor numere complexe. O variant| mbun|t|it| ar fi folosirea unui tip de dat| pentru reprezentarea numerelor complexe. Creai un nou modu care s| fie de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

266

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Private re As Double Private im As Double

Public Property Let imaginar(img As Double) im = img End Property Public Property Let real(rea As Double) re = rea End Property

Public Property Get imaginar() As Double imaginar = im End Property Public Property Get real() As Double real = re End Property

http://www.east.utcluj.ro/mb/mep/antal

im. Este clar c| ele reprezint| o pereche i nu este corect| folosirea lor independent|. S-a creat un nou concept, cel de num|r complex. El apare i la nivelul funciei ce realizeaz| adunarea celor dou| numere complexe prin faptul ca se pot declara parametri i rezultare de tipul n cauz|. Aceast| abordare este nc| un pas nainte, dar nc| problema nu este rezolvat| total. Operaia de adunare a numerelor complexe este specific| acestora, ar fi normal ca acestea s| poat| aciona numai asupr| numerelor complexe. n varianta prezentat|, funcia complex_aduna() ar putea fi folosit| ncorect de cineva care nu tie ca ea poate lucra corect numai cu tipul de dat| complex. Soluia este, ca att datele, ct i procedurile care manipuleaz| datele s| fie folosite pentru definirea unui nou tip de date. n acest scop se va defini un modul de tipul clasa cu numele CComplex, dup| cum urmeaz|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Public Sub complex_afis() Debug.Print re; "+i*"; im End Sub

Public Sub aduna(a As CComplex, b As CComplex) im = a.imaginar + b.imaginar re = a.real + b.real End Sub Pentru testarea clasei se va folosi modulul:

Public Sub test2() Dim x As New CComplex, y As New CComplex, z As New E CComplex x.imaginar = 1 x.real = 2

0264-401667

NU COPIA !.

sau suna la:

267

Introducere n limbajul de programare Visual Basic for Applications - cursul 10

Observai c|, aici, ncepnd cu operaia de atribuire a valorilor complexe, pn| la cea de afiare totul se face sub controlul strict al funciilor specifice clasei CComplex orice posibilitate de eroare n utilizarea unor date sau funcii incorecte fiind exclus|.

http://www.east.utcluj.ro/mb/mep/antal

y.imaginar = 3 y.real = 4 z.aduna x, y z.complex_afis End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

268

Obiecte n Visual Basic for Applications - cursul 11

Obiectivele cursului 11

! ! ! ! ! ! ! ! !

ce este programarea orientat| pe obiecte;

cum se acceseaz| obiectele i ierarhiile de obiecte n Access; care sunt obiectele Access; care sunt propriet|ile folosite mai des; ce sunt coleciile implicite; ce sunt evenimentele i tipurile lor;

care sunt obiectele pentru accesul la date;

care este rolul obiectelor Container i Document; cum se depaneaz| i se depisteaz| erorile din proceduri.

http://www.east.utcluj.ro/mb/mep/antal

Dupa 7 parcurgerea acestui curs vet -i cunoas - te:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

269

Obiecte n Visual Basic for Applications - cursul 11

POO a nceput cu SIMULA-67 n jurul anului 1970. Exemple populare de limbaje orientate pe obiecte sunt Smalltalk creat la Palo Alto Research Center (PARC) a lui Xerox i C++-ul.

sau suna la:

O baz| de date Access este format| din obiectele pe care le vedei n fereastra bazei de date (Database Window): tabele, interog|ri, formulare, rapoarte, macro-uri, i module. Aceste obiecte pot fi manipulate din limbajul VBA prin codul coninut de procedurile aplicaiei. Unele dintre aceste obiecte pot fi create cu ajutorul generatoarelor prezentate deja, ns| controlul pe care l ofer| aceast| metod| de creare este prea puin flexibil fa| de ceea ce ne permite limbajul VBA. n Access unele obiecte conin alte obiecte, de exemplu, un fomular conine controale. Aceste leg|turi dintre obiecte determin| o ierarhie de obiecte. Obiectele sunt organizate n colecii, care reprezint| o mulime de obiecte de acelai tip. De exemplu, exist| o colecie cu numele Forms care cuprinde toate formularele deschise ale bazei de date; fiecare formular are o colecie numit| Controls care conine toate controalele de pe suprafaa lui. Un obiect cu numele NumeObiect al unei colecii cu numele NumeColecie poate fi referit prin trei metode din VBA:

0264-401667

NU COPIA !.

Obiecte i Colecii n VBA

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

n Programarea Orientat| pe Obiecte (POO) conceptul de baz| este obiectul (sau Tipul Abstract de Dat|, TAD, - un tip de dat| a c|rui form| intern| este ascuns| n spatele unei funcii de acces. Obiectele de acest tip sunt create i inspectate numai prin apeluri la funciile de acces. Aceasta permite ca implementarea tipului s| fie modificat| f|r| alte modific|ri de module n afara celui n care TAD este definit). El este o structur| de dat| ncapsulat| mpreun| cu rutinele, numite "metode", care opereaz| asupra datelor. Operaii asupra datelor pot fi efectuate numai prin intermediul acestor metode, care sunt comune tuturor obiectelor ce s-au n|scut prin instanierea aceleiai clase particulare. Denumirea de clas| este folosit| n POO pentru un prototip de obiect, fiind echivalentul noiunii de tip derivat din limbajele procedurale. O clas| este determinat| de o mulime de obiecte cu o structur| i un comportament comun. Structura clasei este determinat| de variabilele care reprezint| starea unui obiect din acea clas|, iar comportamentul ei este dat de metodele asociate clasei. Clasele se pot afla ntr-o relaie ierarhic|. O clas| poate fi specializarea (o "subclas|") alteia (care este "superclasa"), poate fi compus| din alte clase sau se poate folosi n alte clase. Fiecare clas| are o poziie n ierarhia de clase. Metodele sau codul unei clase pot fi transferate n josul ierarhiei unei subclase sau pot fi motenite de la o superclas|. Subclasa este o clas| care este derivat| dintr-o superclas| prin motenire. Subclasa conine toate tr|s|turile superclasei, dar poate ad|uga noi tr|s|turi sau poate s| le redefineasc| pe unele din cele motenite. Apelurile de proceduri sunt descrise n POO n termenii transferurilor de mesaje. Un mesaj specific| o metod| i opional poate include i alte argumente. Cnd un mesaj este transmis unui obiect, metoda este c|utat| n clasa obiectului pentru a g|si care este operaia de efectuat cu obiectul. Dac| metoda nu este definit| n clasa obiectului, este c|utat| n superclasele lui pn| cnd se ajunge la o superclas| care nu mai este derivat|. Apelurile de procedur| ntotdeauna ntorc un obiect rezultat, care poate fi o eroare, la fel este i aici, cnd nu s-a g|sit o superclas| care s| defineasc| metoda specificat|.

Ce este programarea orientat| pe obiecte?

270

Obiecte n Visual Basic for Applications - cursul 11

Sintaxa M NumeColecie!NumeObiect e NumeColecie![Nume Obiect] t o d a 1

Semnificaie

Exemplu Forms!Clienti Forms![Zi rata]

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

M NumeColecie("NumeObiect") e t o d a 2

http://www.east.utcluj.ro/mb/mep/antal

Numele obiectului este explicit scris ca un membru al coleciei. Parantezele drepte sunt necesare dac| numele obiectului conine spaii. Numele obiectului este explicit scris ca un membru al coleciei sau se poate folosi o variabil| de tipul String pentru a stoca numele acesteia. index specific| poziia obiectului din colecie.

Forms("Clienti") sau s="Clienti" Forms(s)

M NumeColecie(index) e t o d a 3

Pt. cumparare viziteaza:

Forms(1)

Propriet|ile unui obiect se refer| prin sintaxa: NumeObiect.NumeProprietate

Valoarea unei propriet|i poate fi setat| prin sintaxa:

NumeObiect.NumeProprietate = valoare

De exemplu, toate obiectele formular (Forms) au o proprietate cu numele titlu (Caption). Dac| avem un formular cu numele Clienti i dorim s|-i modific|m titlul la "Salutare!" scriem:

0264-401667

NU COPIA !.

sau suna la:

Fiecare form| sintactic| are avantajele ei. Atunci cnd referim un singur obiect, de exemplu al unui formular sau raport, Metoda 1, cu folosirea semnului de exclamare !, este cea mai simpl|. Dac| dorim s| facem anumite aciuni cu un grup de obiecte, ale c|ror nume este cunoscut, vom folosi Metoda 2. Metoda 3 se folosete, n general, cnd dorim s| parcurgem ntreaga colecie pentru a realiza o aciune cu toate obiectele acesteia. Toate obiectele au propriet|i, metode asociate i dac| este cazul, proceduri de evenimente. Fiecare obiect are o mulime de caracteristici denumite propriet|i. Acestea pot controla, de exemplu, modul de afiare al obiectului i poziia lui pe ecran.

271

Obiecte n Visual Basic for Applications - cursul 11

Forms![Clienti].Caption="Salutare!"

Declarat -ia variabilei obiect

O variabil| de tipul obiect se declar| dup| aceeai sintax| cu a variabielor obinuite prin folosirea lui Dim, ReDim, Static, Private sau Public.

Atribuirea varabilelor obiect

Atribuirea unei valori pentru cazul variabilelor obiect se face folosind instruciunea Set dup| sintaxa:

Set numevariabil| = ExpresieObiect

Nu toate obiectele lui Access pot fi reprezentate prin variabile. Tabelul care urmeaz| descrie obiectele Access utilizate mai des, specificnd dac| pot s| participe sau nu ntr-o declaraie de variabil|. Nume obiect Descriere Poate fi un tip obiect?

Obiecte Microsoft Access

Application

Aplicaia Microsoft Access.

Da

Control

Control de pe suprafaa unui formular sau raport.

Da

Debug Form

Fereastr| pentru afiarea imediat| a rezultatelor unei proceduri. Formular sau subformular deschis.

Nu Da

0264-401667

NU COPIA !.

sau suna la:

Dup| ce variabila a fost declarat| i i-a fost atribuit| o valoare se poate folosi asemenea oric|rei varabile.

Pt. cumparare viziteaza:

Dac| baza de date este mare, specificarea unor obiecte individuale n liniile procedurilor duce la programe greu de ntreinut. n plus, uneori se poate s| dorim executarea acelorai operaii cu obiecte diferite. n VBA exist| variabila obiect c|reia se poate asocia un tip de obiect.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Sub ModificaCaption() Dim i As Integer For i=0 To Forms.Count-1 Forms(i).Caption = "Formular nr. " + str(i) Next End Sub

Variabilele de tipul obiect

http://www.east.utcluj.ro/mb/mep/antal

Fiecare colecie are o proprietate Count care conine num|rul actualizat de obiecte ale coleciei. Primul membru are index-ul 0 iar ultimul Count-1. Aceast| proprietate permite parcurgerea unei colecii de obiecte.De exemplu, dac| dorim s| set|m titlurile tuturor formularelor deschise la "Formular nr. x", unde x este num|rul ordine al formularului din colecie se poate scrie procedura Sub:

272

Obiecte n Visual Basic for Applications - cursul 11

Forms Module Report Reports Screen Section

Colecie de formulare deschise.

Nu Nu Da Nu Nu Nu

Raport sau subraport deschis. Colecie de rapoarte deschise. Ecranul monitorului.

Seciune de raport sau o colecie de seciuni.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Ierarhia obiectelor Microsoft Access se prezint| n figura care urmeaz|:

Nume obiect

Descriere

Poate fi un tip obiect?

Container

Obiect care conine informaii despre alte obiecte definite de Microsoft Access sau motorul Jet. Colecie de obiecte Container. Baza de date deschis|.

Da

Containers Database

Nu

Da

Databases DoCmd

Colecie a bazelor de date deschise. Obiect care definete aciuni care pot fi utilizate ntr-o macro procedur|.

Nu Nu

0264-401667

NU COPIA !.

sau suna la:

Pe lng| obiectele definite de aplicaia Microsoft Access, motorul bazelor de date Microsoft Jet, definete obiecte pentru operaiile de gestionare a datelor din aplicaie. Aceste obiecte poart| denumirea de obiecte pentru accesul la date (Data Access Objects sau DAO) i pot fi folosite n procedurile VBA pentru a aciona asupra tabelelor sau datelor din tabele, interog|rilor, relaiilor etc. din bazele de date. Tabelul care urmeaz| descrie obiectele de acces la date utilizate mai des, specificnd dac| pot s| participe sau nu ntr-o declaraie de variabil|.

Obiecte pentru accesul la date

http://www.east.utcluj.ro/mb/mep/antal

Modul de formular sau raport.

Pt. cumparare viziteaza:

273

Obiecte n Visual Basic for Applications - cursul 11

Document Documents Field Fields Parameter Parameters QueryDef QueryDefs RecordSet

Informaii ale motorului Jet al bazelor de date Microsoft despre alte obiecte din baza de date. Colecie de obiecte Document.

Da Nu Da Nu Da Nu Da Nu Da Nu Da Nu Da Nu Da

Cmp al unui tabel, interogare, mulime de nregistr|ri, index sau relaie. Colecie de obiecte Field ale unui tabel, interogare, mulime de nregistr|ri etc. Parametru de interogare.

Colecie de parametri de interogare. Interogare salvat| n baza de date.

Colecie de interog|ri salvate n baza de date.

Mulime de nregistr|ri definite printr-un tabel sau interogare. Colecie de obiecte RecordSet. Tabel salvat n baza de date.

Recordsets TableDef TableDefs User Users Workspace

Colecie de tabele salvate n baza de date.

Cont de utilizator n grupul de lucru curent al motorului Jet al bazelor de date. Colecie de obiecte User.

O sesiune activ| a motorului Jet al bazelor de date.

Workspaces

Ierarhia DAO este prezentat| n figura care urmeaz|.

Cele dou| ierarhii prezentate pn| acum nu conin obiecte ci ceea ce n capitolul introductiv numeam clase, adic| prototipuri sau abloane de obiecte. Clasa este similar| cu tipul de dat| i descrie caracteristicile unui obiect. Dac| scriem Dim x As Integer, Integer este tipul de dat|, iar variabila de acel tip este x, dac| scriem Dim spl As Workspace, clasa este Workspace, iar variabila de acel tip este obiectul spl.

Dac| o variabil| este declarat| de tipul Control, dar nu este specificat un tip de obiect control concret este posibil s| dorim determinarea tipului de control care este stocat n variabil|. n acest scop se va folosi o instruciune If...Then...Else cu sintaxa: {If|Else} TypeOf Variabil|Control Is TipControl Then

Determinarea tipului unui obiect de tipul Control

Variabil|Control este numele unei variabile de tipul Control, iar argumetul TipControl poate fi unul dintre cuvintele rezervate: BoundObjectFrame, CheckBox, ComboBox,

0264-401667

Colecie de obiecte Workspace.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Nu

NU COPIA !.

sau suna la:

274

Obiecte n Visual Basic for Applications - cursul 11

Un exemplu de procedur| care afieaz| n fereastra imediat| tipul unui control este:

http://www.east.utcluj.ro/mb/mep/antal

CommandButton, Graph, Line, ListBox, UnboundObjectFrame, OptionButton, OptionGroup, Rectangle, Subform, Subreport, TextBox, ToggleButton, Label, PageBreak.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

Uneori dorim s| realiz|m modificarea atributelor unor obiecte din cauza unor condiii concrete ale aplicaiei. De exemplu, dorim s| realiz|m ascunderea unui control de tipul text pentru c| din lipsa unor date afiate nu este cazul s| fie afiat pe suprafaa formularului

Unele propriet|i ale obiectelor folosite mai des

sau suna la:

Sub DeterminaTipControl(VarControl As Control) If TypeOf VarControl Is CommandButton Then Debug.Print "Controlul este de tipul " &E TypeName(MyControl) ElseIf TypeOf VarControl Is CheckBox Then Debug.Print "Controlul este de tipul " &E TypeName(VarControl) ElseIf TypeOf VarControl Is TextBox Then Debug.Print "Controlul este de tipul " &E TypeName(VarControl) End If End Sub

0264-401667

275

Obiecte n Visual Basic for Applications - cursul 11

deschis.

Propriet|ile obiectului Screen se folosesc la referirea bazei de date, formularului, raportului, controlului, care la momentul curent este activ, dup| cum urmeaz|: Proprietate Screen.ActiveDatasheet Screen.ActiveForm Screen.ActiveReport La cine se refer|

Baza de date activ| curent|. Formularul curent activ. Raportul curent activ.

Screen.ActiveControl

Controlul unui formular care la momentul curent este activ.

n documentaia tehnic| original|, obiectul curent de interfa| cu utilizatorul care este activ se zice c| are focus-ul (focus = focalizare n limba englez|).

Fiecare formular sau raport are o proprietate numit| Me (Eu) care reprezint| formularul sau raportul nsui n codul care se execut|. Pentru a exploata aceast| proprietate pentru formulare trebuie s|: creai o procedur| public| care are un parametru de tipul Form i n care setai o proprietate a formularului; apelai procedura cu argumentul Me pentru a modifica parametrul respectiv al formularului curent. S| presupunem c| scriem o procedur| Sub pentru colorarea automata 7 a sect -iunii de detalii a formularelor cnd acestea deschise:

Propriet|i ale formularelor i rapoartelor

http://www.east.utcluj.ro/mb/mep/antal

Propriet|ile obiectului Screen

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

= RGB(255,255,0)

End Sub

Apelnd aceast| procedur| cu proprietatea Me n evenimentul Open (Deschidere) a formularului efectul va fi de modificare a culorii fondului formularului la verde (operat -ia nu se observa 7 daca 7 n locul culorii de fond formularul foloses - te o imagine): Sub Form_Open()

ColoreazaFormular Me

End Sub

n majoritatea cazurilor formularul sau raportul reprezentat de proprietatea Me este acelai cu

sau suna la:

Sub ColoreazaFormular (frm As Form) frm.Section(acDetail).BackColor

0264-401667

NU COPIA !.

276

Obiecte n Visual Basic for Applications - cursul 11

Colecii implicite

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

DBEngine.Workspaces(0).Databases(0).TableDefs("TClienti") sau DBEngine(0)(0)!TClienti

Pt. cumparare viziteaza:

Gruparea obiectelor n colecii, a plecat n Access, de la ideea c| obiectele pot conine alte obiecte. Aceste leg|turi sunt cele care creeaz| ierarhia de obiecte. De exemplu, o baz| de date conine obiecte tipul formular, obiectul formular conine la rndul lui obiecte de tipul control (cutie de text, seciune de detalii etc.). Obiectele de acelai tip coninute de alte obiecte sunt grupate n colecii. Coleciile pot fi privite asemenea unui tablou declarat automat de Access la ale c|rui elemente ne referim prin denumirea de element de colecie. Din moment ce o colecie este un obiect, aceasta are propriet|ile i metodele ei proprii. Multe obiecte au o colecie implicit| de obiecte care grupeaz| cele mai probabile obiecte ce vor fi folosite. De exemplu, Forms are o colecie implicit| de controale, iar Databases are o colecie implicit| TableDefs. Nu exist| o colecie de obiecte controale, ne referim la un astfel de obiect ca la un membru al coleciei implicite a formularului sau raportului. De exemplu, Forms![Clienti]![IDClient] se refer| la controlul IDClient al formularului Clienti din colecia implicit| de controale a formularului. Cnd lucrai cu DAO coleciile implicite se pot folosi pentru o scriere mai scurt| a obiectului de identificat, dei folosind aceast| scriere relaia dintre obiecte devine mai criptic|, de exemplu, o referire la tabelul TClienti se poate scrie astfel:

http://www.east.utcluj.ro/mb/mep/antal

cel reprezentat de propriet|ile ActiveForm sau ActiveReport ale obiectului Screen. Totui, propriet|ile ActiveForm i ActiveReport reprezint| formularul sau raportul activ, iar proprietatea Me reprezint| formularul sau raportul al c|rui cod este n curs de execuie (atunci cnd folosii evenimentul Timer este posibil ca o procedur| a unui formular deschis s| fie activat| la momente de timp definite de programator, n timp ce pe ecran mai exist| un alt formular deschis i activ, adic| care comunic| cu utilizatorul) .

Obiect

Colecie implicit|

Container Database DBEngine Form

Documents

TableDefs

Workspaces Controls

Index

Fields

QueryDef RecordSet Report

Parametres

Fields Controls

sau suna la:

n primul caz, elementele coleciilor sunt scrise explicit, n al doilea cunoscndu-se coleciile implicite se trec numai index-urile corespunz|toare. Tabelul care urmeaz| prezint| cteva dintre obiectele Access i DAO mpreun| cu coleciile implicite:

0264-401667

NU COPIA !.

277

Obiecte n Visual Basic for Applications - cursul 11

TableDef User Workspace

Fields Groups Databases

Propriet|i ale obiectelor i coleciilor

Crearea unei proceduri Sub

din meniul Insert selectai Procedure;

urm|toarele linii formeaz| procedura:

Public Sub PropTabel(NumeTabel As String) Dim db As Database Dim tbd As TableDef Dim i As Integer

For i = 0 To tbd.Properties.Count - 1

Debug.Print tbd.Properties(i).Name;E tbd.Properties(i).Value Next

End Sub

din meniul View selectai Debug Window;

n fereastra afiat| introducei numele procedurii de mai sus mpreun| cu numele unui tabel din baza de date, de exemplu Orders sub forma PropTabel "Orders":

0264-401667

Set tbd = DBEngine.Workspaces(0).Databases(0).TableDefsE (NumeTabel)

Pt. cumparare viziteaza:

dai numele PropTabel procedurii Sub, acceptai toate celelalte set|ri implicite i clic pe OK;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Obiectele Forms, Reports i DAO conin o colecie de obiecte proprietate (Property). De exemplu, procedura care urmeaz| parcurge ntr-un ciclu toate propriet|ile unui tabel din baza de date, afind n fereastra imediat| numele propriet|ii i valoarea ei, dac| exist|. deschidei baza de date Northwind; din fereastra bazei de date clic pe butonul Modules; clic pe butonul New pentru a crea un modul nou;

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

sau suna la:

278

Obiecte n Visual Basic for Applications - cursul 11

Pentru crearea unei proceduri Sub care s| afieze propriet|ile unui formular creai procedura: Public Sub PropFormular(NumeFormular As String) Dim db As Database Dim frm As Form

Dim i As Integer

For i = 0 To frm.Properties.Count - 1

Debug.Print frm.Properties(i).Name;E frm.Properties(i).Value Next

End Sub

Pentru exemplificarea parcurgerii unei colecii de obiecte prezint n continuare aceeai procedur| scris| folosind For Each...Next: Public Sub PropFormular(NumeFormular As String) Dim prp As Property

0264-401667

Set frm = Forms(NumeFormular)

Pt. cumparare viziteaza:

la ap|sarea tastei Enter procedura va fi lansat| n execuie, iar rezultatle se vor afia sub linia PropTabel "Orders".

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

sau suna la:

279

Obiecte n Visual Basic for Applications - cursul 11

For Each prp In Forms(NumeFormular).Properties Debug.Print prp.Name; prp.Value Next End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Obiectele Container i Document

Obiect Container

Definit de

Se refer| la

Databases Forms

Motorul Jet Access Access Motorul Jet Access

Baza de date curent|.

Formularele salvate n baza de date curent|. Modulele salvate n baza de date curent|.

Modules

Relationships Reports Scripts

Relaii ntre tabele salvate n baza de date curent|.

Rapoartele salvate n baza de date curent|.

Access Motorul Jet

Macro-urile salvate n baza de date curent|.

Tables

Tabelele i interog|rile salvate n baza de date curent|.

0264-401667

Informaiile legate de baza de date curent| i toate obiectele ei sunt stocate de Access n obiectele Container i Document. Acestea pot fi folosite pentru enumerarea obiectelor stocate n baza de date, modificarea proprietarului (ownership), obiectelor sau a drepturilor de acces ale utilizatorilor (user permission) la obiectele din baza de date. Fiecare baz| de date conine o colecie Containers format| din obiecte Container. Unele dintre aceste obiecte sunt definite de Access, altele de motorul Jet al bazelor de date Access:

Pt. cumparare viziteaza:

Observai c| se folosete colecia Forms care conine numai formularele deschise ale bazei de date. Din acest motiv, argumentul procedurii PropFromular trebuie s| fie un nume de formular care este deschis. Pentru ca s| putei deschide formularul Customer Orders din meniul Window selectai Northwind: Database. Clic pe butonul Forms din fereastra bazei de date, apoi clic dublu pe numele formularului Customer Orders i formularul va fi deschis. Folosind meniul Windows revenii pe fereastra Debug Window, apoi lansai n execuie procedura scriind PropFormular "Customer Orders". Fereastra Debug Window permite afiarea imediat| a valorilor unor variabile din procedurile aplicaiei. Figura care urmeaz| prezint| cele patru ferestre care au fost parcurse folosind meniul Windows pentru a deschide un formular. Este posibil s| avei deschise mai multe formulare la un moment dat, n acelai timp putei avea mai multe module deschise ntre care putei comuta folosind meniul Windows. Meniul va conine numele tuturor obiectelor Access din fereastra bazei de date care sunt deschise, indiferent de modul lor de vizualizare (foaie de date, proiectare, formular etc.).

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

sau suna la:

280

Obiecte n Visual Basic for Applications - cursul 11

Nota 7 : Dei folosesc acelai nume, obiectul Container pentru obiectele Forms i colecia Forms sunt obiecte distincte. n primul caz g|sim numai informaii legate de formularele salvate f|r| a conine obiectele n sine. Colecia Forms conine obiectele de tipul Form deschise. De exemplu, nu se poate folosi obiectul Documents pentru a modifica titlul unui formular, pentru aceasta trebuie s| ne referim direct la obiect prin colecia Forms. Procedura care urmeaz| afieaz| toate obiectele i propriet|ile acestora din colecia Containers ale bazei de date curente: Public Sub AfisarePropContainere() Dim db As Database Dim ctr As Container Dim prp As Property

0264-401667

Informaiile individuale ale unui obiect salvat sunt coninute n obiectul Container care are o colecie Documents. Fiecare obiect Document din colecia Documents stocheaz| informaii despre un obiect individual. De exemplu, obiectul Container pentru obiectele Forms are o colecie Documents care include cte un obiect Document pentru fiecare obiect salvat n baza de date.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

281

Obiecte n Visual Basic for Applications - cursul 11

Set db = CurrentDb()

For Each ctr In db.Containers

Debug.Print "Nume container:" & ctr.Name Debug.Print " Proprietati:"

For Each prp In ctr.Properties Debug.Print "

" & prp.Name & " = "; prp

Next ctr db.Close End Sub

Procedura care urmeaz| afieaz| toate formularele salvate n baza de date curent|: Public Sub AfisareToateFormdinBazadeDate() Dim db As Database Dim con As Container Dim doc As Document

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Next prp

Set db = CurrentDb()

Set con = db.Containers("Forms")

Debug.Print doc.Name

Next doc db.Close

End Sub

Evenimente

tii deja c| Access-ul folosete modelul orientat pe evenimente pentru interaciunea cu utilizatorul. n acest scop, obiectele Access r|spund la urm|toarele tipuri de evenimente:
ap|sarea de c|tre utilizator a unei taste;

primirea sau pierderea focaliz|rii (focus); deschiderea, nchiderea sau redimensionarea formularelor; formatarea sau tip|rirea rapoartelor;

0264-401667

NU COPIA !.

For Each doc In con.Documents

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

282

Obiecte n Visual Basic for Applications - cursul 11

apariia unor erori.

formular, n ferestra propriet|ilor (din dreapta) observai propriet|ile de eveniment specifice acestui obiect. Comportamentul unui obiect se poate defini prin procedurile de evenimente pentru cazul apariiei unui eveniment la care obiectul ar putea reaciona (r|spunde). n cazul apariiei unui eveniment care este afiat n lista propriet|ilor obiectului r|spunsul este determinat astfel:

http://www.east.utcluj.ro/mb/mep/antal

Access-ul r|spunde automat la evenimentele care apar n cazul unor obiecte cu comportament specific i predefinit. De exemplu, n cazul unei cutii de text, se verific| automat dac| modific|rile aduse datelor sunt corecte, adic| conform regulilor de validare. Am vorbit deja despre proceduri de evenimente, n figura care urmeaz| se prezint| un obiect

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

dac| numele specificat n list| corespunde unui nume de macro, Access-ul execut| macro-ul respectiv;

dac| numele propriet|ii de eveniment este [Event Procedure], Access-ul execut| procedura de eveniment corespunz|toare. deschidei baza de date Northwind;

Specificarea unei proceduri de tratare a unui eveniment

vizualizai formularul Customer Labels Dialog n mod proiectare;

clic oriunde n afara suprafeei formularului, apoi clic pe butonul drept al mouse-ului i selectai Properties pentru afiarea listei propriet|ilor obiectului formular;

clic pe butonul Event pentru afiarea numai a propriet|ilor de eveniment specifice obiectului curent;

sau suna la:

dac| numele propriet|ii eveniment nu este specificat, Access-ul r|spunde prin lansarea procedurilor specifice obiectului (verific|ri ale corectitudinii de scriere sau de ncadrare ntr-un domeniu de valori);

0264-401667

283

Obiecte n Visual Basic for Applications - cursul 11

clic pe cmpul din dreapta lui On Open, apoi clic pe s|geata n jos i selectai [Event Procedure];

n dreapta lui On Open apare textul [Event Procedure], pentru nceperea edit|rii procedurii de eveniment corespunz|toare evenimentului On Open, care apare la deschiderea formularului, clic pe butonul din dreapta cu trei puncte.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Numele procedurii de eveniment este dat conform conveniei deja cunoscute, utilizatorul va introduce codul dorit ntre liniile Private Sub Form_Open ... i End Sub. Este posibil ca Access-ul s| apeleze o funcie definit| de utilizator ca r|spuns la apariia unui eveniment, n acest caz n locul textului [Event Procedure] se va introduce semnul = urmat de numele procedurii funcie.

Tipuri de evenimente

Atunci cnd utilizatorul deruleaz| o operaie cu un obiect, Access-ul lanseaz| o secven| de evenimente. De exemplu, cnd se deschide un formular evenimentele care apar sunt: Open, Load

0264-401667

NU COPIA !.

sau suna la:

284

Obiecte n Visual Basic for Applications - cursul 11

Tip eveniment de fereast| de focalizare

Nume Close, Load, Open, Resize, Unload

http://www.east.utcluj.ro/mb/mep/antal

i Activate. Se observ| c| o singur| operaie, cum ar fi deschiderea unui formular, se traduce ntr-o secven| de evenimente, n timpul c|rora programatorul poate lua anumite decizii. De exemplu, la apariia evenimentului Open se poate nchide o alt| fereastr| deschis|, iar nainte ca formularul s| devin| activ, se poate afia o bar| de instrumente specific| lui. O parte din evenimente pot fi anulate, de exemplu, se poate anula deschiderea unui formular dac| anumite condiii nu sunt ndeplinite. Tipurile de evenimente tratate de Access sunt:

Apare cnd

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Utilizatorul realizeaz| o aciune cu formularul sau raportul.

Activate, Deactivate, Enter, Exit, GotFocus, LostFocus

Obiectul primete sau pierde focalizarea sau devine activ respectiv inactiv. Se fac modific|ri ale datelor sau nregistr|rilor.

de date

Pt. cumparare viziteaza:

AfteDelConfirm, AfterInsert, AfterUpdate, BeforeDelConfirm, BeforeInsert, BeforeUpdate, Change, Current, Delete, NotInList, Update Clic, DblClick, MouseDown, MouseMove, MouseUp KeyDown, KeyPressed, KeyUp

de mouse de tastatur|

Apare o aciune cu mouse-ul. Utilizatorul apas| taste sau folosete funcia SendKeys pentru transmiterea unei aciuni. Un raport este tip|rit sau este formatat n vederea tip|ririi.

de tip|rire de ceas

Format, Print, Retreat

de eroare

Error

Generat de Access dac| a ap|rut o eroare n procedurile Access.

Evenimente specifice formularelor i controalelor

Deschiderea unui formular

Dac| deschidei un formular care conine un control activ, adic| un control care poate primi focalizarea, urm|toarele evenimente sunt declanate n formular: Open - Load - Resize -Activate - Current. Dac| nu exist| un control activ, Access-ul declaneaz| i evenimentul GotFocus ntre evenimentele Activate i Current.

nchiderea unui formular

Dac| se nchide un formular care are un control activ, secvena de evenimente declanate de Access este: Unload - Deactivate - Close. Dac| nu sunt controale active n formular, Access-ul declaneaz| i

0264-401667

NU COPIA !.

Timer

sau suna la:

Generat de Access la intervale de timp definite de utilizator.

285

Obiecte n Visual Basic for Applications - cursul 11

evenimentul LostFocus ntre evenimentele Unload i Deactivate.

Intrarea ntr-un control

Ies -irea dintr-un control

Evenimente de date

Evenimente de date apar cnd se modific| datele sau nregistr|rile din baza de date. Cnd se modific| textul dintr-un control de tipul Text Box sau Combo Box apare evenimentul Change. El apare la fiecare modificare a coninutului controlului i nainte de trecerea pe un alt control sau nregistrare. De exemplu, ntr-un Text Box pentru fiecare introducere sau tergere a unui caracter apare secvena de evenimente: KeyDown KeyPressed - Change -KeyUp. Evenimentul Change nu apare dac| valoarea se modific| ntr-un control calculat.

Actualizarea datelor ntr-un control sau ntregistrare

Cnd se actualizeaz| datele ntr-un control prin deplasarea pe un alt control al formularului se declaneaz| evenimentele BeforeUpdate nainte de remprosp|tarea controlului i AfterUpdate dup| remprosp|tarea controlului. De exemplu, dac| se remprosp|teaz| datele dintr-un Text Box (TB1) prin inserarea unui caracter, apoi se face clic pe un Text Box (TB2), Access-ul declaneaz| secvena de evenimente: KeyDown - KeyPressed Change -KeyUp - BeforeUpdate - AfterUpdate - Exit(TB1) - LostFocus(TB1) - Enter(TB2) -GotFocus(TB2). n cazul cnd actualizarea controlului se face prin deplasarea pe o alt| nregistrare sau prin

0264-401667

NU COPIA !.

sau suna la:

Modificarea unui text ntr-un Text Box sau Combo Box

Pt. cumparare viziteaza:

Comutarea ntre 7 formulare doua deschise

Dac| se comut| ntre dou| formulare deschise care conin controale active, Access-ul declaneaz| evenimentele Deactivate i Activate ale primului formular (F1), de pe care se comut| i ale celui de al doilea (F2), pe care se comut| astfel: Deactivate(F1) - Activate(F2). Dac| nu exist| controale active pe formulare, ordinea declan|rii evenimentelor este: LostFocus(F1) - Deactivate(F1) - GotFocus(F2) - Activate(F2).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

La ieirea dintr-un control, de exemplu prin selectarea unui altui control, urm|toarea secvena de evenimente este declanat|: Exit LostFocus

http://www.east.utcluj.ro/mb/mep/antal

Cnd se deschide un formular care conine unul sau mai multe controale active secvena de evenimente declanate este: Enter GotFocus i apar ntre evenimentele Activate i Current ale formularului. Evenimentele apar cnd controlul primete focalizarea prima oar|. Dac| se comut| pe un alt formular i se revine pe acelai control al formularului, Access-ul declaneaz| numai evenimentul GotFocus pentru control.

286

Obiecte n Visual Basic for Applications - cursul 11

Inserarea unei nregistrari

S , tergerea unei 7 ri nregistra

La selectarea unei nregistr|ri pentru tergere prin ap|sarea tastei Del Access-ul declaneaz| evenimentul Delete. Dac| evenimentul nu este anulat, se declaneaz| i evenimentele BeforeDelConfirm i AfterDelConfirm. Secvenele declanate sunt n ordinea: Delete - Current - BeforeDelConfirm se afieaz| fereastra de dialog:

Pt. cumparare viziteaza:

Dac| acum ne deplas|m, folosind mouse-ul, de pe un cmp TB1 pe unul TB2, secvena evenimentelor declanate este: BeforeUpdate(TB1) - AfterUpdate(TB1) - Exit(TB1) LostFocus(TB1) - Enter(TB2) - GotFocus(TB2) - MouseDown(TB2) - MouseUp(TB2) - Click(TB2) KeyDown(TB2) - KeyPressed(TB2) - Change(TB2) - KeyUp(TB2). Avnd focalizarea pe TB2, cnd se trece la salvarea nregistr|rii cu Save Record din meniul File, secvena evenimentelor declanate este: BeforeUpdate(TB2) - AfterUpdate(TB2) - AfterUpdate(F) - AfterInsert(F).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

La introducerea de date ntr-o nregistrare nou|, Access-ul declaneaz| evenimentul BeforeInsert cnd se introduc date prima oar| n nregistrare i apoi evenimentul AfterInsert cnd nregistrarea se salveaz|. S| presupunem c| se introduc date ntr-o nregistrare nou| a formularului F, ncepnd cu cmpul TB1. La introducerea primului caracter n TB1 secvena de evenimente declanate este: KeyDown(TB1) - KeyPressed(TB1) - BeforeInsert(F) - Change(TB1) KeyUp(TB1).

http://www.east.utcluj.ro/mb/mep/antal

selectarea lui Save Record din meniul File, apar evenimentele BeforeUpdate i AfterUpdate att pentru control ct i pentru formular. De exemplu, dac| se adaug| un caracter ntr-un Text Box i apoi selectai Save Record, secvena de evenimente care apare este: KeyDown KeyPressed - Change -KeyUp - BeforeUpdate(TB) - AfterUpdate(TB)- BeforeUpdate(F) - AfterUpdate(F).

apoi se declaneaz| evenimentul AfterDelConfirm dac| n fereastra de mai sus s-a ap|sat butonul Yes.

Dac| confirmarea tergerii este deranjant|, este posibil| evitarea afi|rii acesteia. O procedur| de eveniment BeforeDelConfirm are dou| argumente, Cancel i Response: Private Sub Form_BeforeDelConfirm(Cancel As Integer, ResponseE As Integer) . . .

0264-401667

NU COPIA !.

sau suna la:

287

Obiecte n Visual Basic for Applications - cursul 11

Cancel = True Response=AacDataErrContinue End Sub

Evenimente implicite

Obiect

Eveniment implicit

Bound Object Frame Check Box Combo Box

Update Click

BeforeUpdate Click Load Update Click

Command Button Form

Graph Label

List Box

BeforeUpdate

0264-401667

Unele tipuri de obiecte sunt folosite mai des pentru anumite aciuni c|rora le corespunde un eveniment specific. De exemplu, un obiect buton va fi cel mai des ap|sat, aciunea de ap|sare va declana evenimentul Click. Pentru a simplifica scrierea procedurilor de evenimente s-au definit evenimente implicite. Cnd creai un control, dac| acesta este selectat i ap|sai butonul din dreapta al mouse-ului, vei vedea un buton Build Event, dac| din lista afiat| selectai Code Builder, Access-ul va crea automat procedura de eveniment corespunz|toare evenimentului implicit al controlului. Tabelul care urmeaz| prezint| lista evenimentelor implicite ale obiectelor Access:

Pt. cumparare viziteaza:

Exist| proceduri de eveniment cu parametri care prin valori atribuite n corpul lor pot modifica secvena de prelucrare a evenimentelor care urmeaz| dup| procedura n cauz|. Cele mai frecvente cazuri sunt cnd dorim s| anul|m un eveniment asociat unei proceduri de eveniment. Urm|toarele evenimente fac parte din categoria celor care pot fi anulate: BeforeDelConfirm, BeforeInsert, BeforeUpdate, DblClick, Delete, Error, Exit, Format, Open, Print, Unload.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Setarea valorii Cancel la True face ca procedura s| fie anulat| i tergerea s| fie evitat|. Aceasta este posibil pentru c| nainte de tergerea efectiv|, datele terse se mut| ntr-o zon| temporar| de memorie n care sunt p|strate pn| la confirmarea tergerii. Dac| evenimentul BeforeDelConfirm este anulat, datele sunt ref|cute din aceast| zon| temporar|. Pentru evitarea afi|rii ferestrei de confirmare a tergerii se poate seta parametrul Response la valoarea acDataErrContinue.

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

sau suna la:

288

Obiecte n Visual Basic for Applications - cursul 11

Option Button Option Group Rectangle Report Section Subform Text Box

Click

Click Open Format Enter

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

BeforeUpdate Click Update

Toggle Button

Unbound Object Frame

n scrierea unei aplicaii Access pot s| intervin| trei tipuri de erori: erori de compilare: apar ca urmare a scrierii incorecte a unor instruciuni din proceduri. Limbajul VBA detecteaz| aceste erori n timpul compil|rii de exemplu, prin folosirea opiunii Compile All Modules din meniul Debug (acest meniu este afiat cnd vizualiz|m n mod proiectare orice modul al aplicaiei Access). O alt| metod| care asigur| detectarea imediat| a erorilor de sintax| este selectarea din Tools, Options, Module a opiunii Auto Syntax Check. Aceast| opiune controleaz| momentul n care VBA va raporta erorile de sintax|. Cnd opiunea este validat|, VBA-ul va afia mesajul de eroare ntr-o fereastr| de dialog imediat cum se p|r|sete linia care conine eroarea de sintaxa n timpul fazei de creare a procedurii;

erori logice: sunt erori care apar datorit| scrierii unor secvene de intruciuni corecte sintactic i care pot fi executate de VBA, dar care logic sunt invalide motiv pentru care produc rezultate incorecte. Aceste tip de erori pot fi scoase numai prin analiza atent| a rezultatelor mpreun| cu codul care le produce.

Instrumente pentru depanare (Debugging tools)

Instrumentele pentru depanare au rolul de a uura analiza funcion|rii codului VBA i depistarea erorilor pe timpul execuiei aplicaiilor Access. Depanarea programelor este mult uurat| dac| se respect| urm|toarele reguli:

aplicaia va fi divizat| n proceduri de tipul Sub i Function cu rol clar, fiecare avnd nume corespunz|toare aciunii pe care o realizeaz| i comentarii care descriu modul de operare a procedurii mpreun| cu rolul fiec|rui parametru. n VBA, o linie comentariu ncepe prin caracterul ' (apostrof) sau cu textul REM urmat de un spaiu i textul comentariului, iat| cteva exemple:

0264-401667

NU COPIA !.

sau suna la:

erori n timpul execuiei aplicaiei: apar din cauz| c| Access-ul nu poate executa o anumit| instruciune, un exemplu clasic este cel al mp|ririi cu zero. VBA nu poate executa operaia de mp|rire dac| mp|ritorul unei expresii ia valoarea 0;

Pt. cumparare viziteaza:

Erori i proceduri de tratare a erorilor

http://www.east.utcluj.ro/mb/mep/antal

BeforeUpdate

289

Obiecte n Visual Basic for Applications - cursul 11

'************************************************************* Rem * numele tabelului ale carui proprietati vor fi afisate

http://www.east.utcluj.ro/mb/mep/antal

Rem * NumeTabel este un sir de caractere care contine

* *

examinai funcionarea codului n vederea depist|rii instruciunilor cu probleme prin

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

folosii instruciunea Option Explicit n seciunea declaraiilor pentru fiecare modul. Ea foreaz| folosirea declaraiilor explicite pentru varibilele modulului n care apare. Una din sursele de erori comune este scrierea greit| a numelor de variabile. Dac| se folosete Option Explicit un mesaj de eroare va fi dat la scrierea unui astfel de nume de variabile;

folosirea punctelor de ntrerupere (Breakponit) care suspend| temporar execuia codului; folosii fereastra pentru depanare (Debug Window) n vederea examin|rii valorilor unor variabile i expresii cnd codul este suspendat din funcionare. Atunci cnd lucrai cu module, bara cu intrumente ia forma din figura anterioar|. Dac| suspectai c| problema de depanat apare la o anumit| instruciune din cod este posibil| suspendarea execuiei codului la atingerea unei instruciuni. VBA permite folosirea punctelor de ntrerupere sau a instruciunii Stop n acest scop. La folosirea unui punct de ntrerupere trebuie s| poziionai cursorul pe o instruciune executabil|, apoi clic pe pictograma (Toggle Breakpoint) i instruciunea va fi marcat| ca n figura urm|toare.

0264-401667

NU COPIA !.

sau suna la:

Suspendarea -iei unei execut proceduri

Pt. cumparare viziteaza:

290

Obiecte n Visual Basic for Applications - cursul 11

Scoaterea unui punct de ntrerupere se face prin poziionarea pe instruciunea marcat|, apoi clic pe aceeai pictogram|. Cazurile de mai sus au fost ntreruperi executate voit de programator, dar VBA va suspenda execuia codului i n cazul n care apare o eroare la execuia unei instruciuni, acestea se numesc erori n execuie. Not|: Utilizatorul poate ntrerupe de la tastatur| execuia unui cod prin combinaia de taste Ctrl+Break, de exemplu pentru o poriune de program care a intrat ntr-un ciclu infinit. Dac| eroarea a fost descoperit| i am f|cut modific|ri n cod pentru evitarea ei se poate s| dorim s| actualiz|m valorile stocate n variabilele codului. Pentru aceasta se poate selecta pictograma Reset, ca urmare toate variabilele numerice i pierd valoarea actual| i vor fi resetate la valoarea 0, variabilele de tipul Variant primesc valoarea Empty, irurile cu lungime variabil| valoarea "" iar cele cu lungime fix| sunt iniializate cu valoarea ASCII 0.

Execuia pas cu pas a procedurilor (Stepping)

Execuia pas cu pas este procesul de execuie a unei singure instruciuni din cod, sub controlul utilizatorului, pentru vizualizarea modific|rilor aduse de aceasta variabilelor sau obiectelor din baza de date. Pentru execuia pas cu pas a codului se va folosi pictograma (Step Into), VBA va executa instruciunea curent| i avanseaz| automat la urm|toarea dup| care suspend| execuia codului. Este posibil ca uneori s| fim siguri de funcionarea corect| a unei proceduri i s| dorim evitarea execut|rii ei pas cu pas, n acest caz folosim pictograma (Step Over). Acest mod de execuie este identic cu cel al lui Step Into cu excepia c| n cazul n care instruciunea de executat este o procedur|, nu se intr| n ea i se execut| pas cu pas toate instruciunile ei, ci procedura se execut| "dintr-o bucat|" ca o singur| instruciune dup| care se trece la urm|toarea instruciune din cod.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Fereastra pentru Depanare

Cnd se creeaz| i testeaz| procedurile VBA este posibil s| dorii vizualizarea valorilor unor expresii, variabile, propriet|i sau cmpuri. Pentru acest scop a fost creat| fereastra pentru depanare (Debug Window). Deschiderea ei se face prin clic pe pictograma , iar pe lng| vizualizarea valorilor de obiecte descrise anterior se pot testa i procedurile de tipul Sub sau Function apelndu-le direct din aceasta. Pentru a vizualiza valorile unui obiect trebuie s| ne poziion|m pe numele acestuia, de exemplu prin folosirea mouse-ului, apoi clic pe pictograma (Quick Watch). n fereastra care urmeaz| s-a folosit aceast| procedur| pentru dou| obiecte, un nume de variabil| (pi) i un nume de parametru (R). De asemenea, linia de program ArieCerc = pi * R ^ 2 a fost marcat| cu un punct de ntrerupere. Procedura ArieCerc va fi lansat| n execuie din fereastra de depanare prin linia ?ArieCerc(5) dup| care se apas| tasta Enter. Caracterul ? este o form| prescurtat| pentru instruciunea Debug.Print folosit| pentru afiarea valorii unei variabile n ferestra imediat| (Immediate Window - partea de jos a ferestrei de depanare). n codul VBA, Debug.Print se poate folosi pentru afiarea unor valori n fereastra imediat|. Fereastra de depanare nu se deschide automat la ntlnirea unei instruciuni Debug.Print n cod, aceasta trebuie deschis| de

0264-401667

NU COPIA !.

sau suna la:

291

Obiecte n Visual Basic for Applications - cursul 11

c|tre utilizator, altfel, valorile scrise n ea nu vor fi v|zute.

Depanarea procedurilor de evenimente

Dac| suspendai execuia unei proceduri MouseDown, prin folosirea unui punct de ntrerupere, putei elibera butonul mouse-ului sau s| folosii mouse-ul pentru anumite aciuni. Dar, cnd vei continua execuia procedurii, aplicaia va presupune c| butonul mouse-ului este nc| ap|sat. Evenimentul MouseUp va apare numai cnd butonul mouse-ului este ap|sat i eliberat din nou. Cnd ap|sai din nou butonul mouse-ului dup| continuarea execuie programului, evenimentul MouseDown este ntrerupt din nou din cauza punctului de ntrerupere, astfel, conform acestui scenariu evenimentul MouseUp nu apare. Soluia este scoaterea punctului de ntrerupere. Problema este similar| la KeyDown i KeyUp.

Suspendarea execuiei n timpul evenimentelor GotFocus sau LostFocus poate conduce la apariia unor mesaje inconsistente, evitarea situaiei f|cndu-se prin folosirea lui Debug.Print pe locul punctului de ntrerupere.

0264-401667

NU COPIA !.

sau suna la:

Unele evenimente care in de sistemul de operare Microsoft Windows pot pune probleme la depanarea unor proceduri de eveniment VBA pe care le declaneaz|. Uneori este necesar s| modificai valorile pe care le iau anumite variabile legate de evenimente pentru ca depanarea s| se poate realiza.

http://www.east.utcluj.ro/mb/mep/antal

Valoarea funciei va fi afiat| numai dac| programul ntrerupt este continuat n execuie pn| la cap|t prin selectatrea pictogramei (Go/Continue).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

292

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.


Aplicat -ie

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal

Obiecte n Visual Basic for Applications - cursul 11

sau suna la:

0264-401667

293

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Obiectivele cursului 12
Dupa 7 parcurgerea acestui curs vet -i cunoas - te:
! ! ! !
cum se trateaz| erorile n VBA;

instruciunile On Error cu formele ei pentru tratarea erorilor i

instruciunea Resume Next revenirea din codul de tratare a erorilor; instruciunile de baza ale limbajului SQL:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

ce este obiectul Err;

- SELECT pentru selecii mpreun| cu clauzele SELECT, FROM,

WHERE, ORDER BY;

- predicatele ALL, DISTINCTROW i DISTINCT; - instruciunile de actualizare: UPDATE, DELETE, INSERT INTO i SELECT INTO; - definiia datelor prin instruciunile: CREATE TABLE, CREATE

INDEX, ALTER TABLE i DROP.

Pt. cumparare viziteaza:

- operatorul de reuniune;

http://www.east.utcluj.ro/mb/mep/antal

0264-401667

NU COPIA !.

sau suna la:

294

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Tratarea erorilor n VBA

Unde apare eroarea Formular sau raport n codul VBA

Se scrie cod pentru procedura de eveniment Error a obiectului respectiv.

Folosirea evenimentului Error

Private Sub Form_Error(DataErr As Integer, Response As Integer) Dim MesEr As String, NL As String NL = Chr$(13) & Chr$(10)

'Debug.Print DataErr, Error(DataErr) 'Stop

Select Case DataErr Case 2237

MesEr = "Conform integritatii referentiale," & NL MesEr = MesEr & "Pentru IDInfContact din TContacte1"

0264-401667

Cnd o eroare apare n timpul lucrului cu un formular sau raport Acceess-ul declaneaz| evenimentul Error pentru care se poate scrie o procedura de eveniment prin setarea propriet|ii On Error la [EventProcedure] i apoi realiznd clic pe butonul . Un exemplu de lucru ar putea fi ad|ugarea codului urm|tor formularului TContacte1 subform creat n cursul 8. Controlul Combo Box nu permite introducerea de valori n afara celor enumerate n list|. Dac| utilizatorul totui ncearc| o astfel de operaie, codul care urmeaz| l avertizeaz|, n limba romn|, asupra incorectitudinii aciunii.

Pt. cumparare viziteaza:

Se folosete instruciunea On Error pentru prinderea ei i o poriune de program specific| pentru tratarea ei.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Erorile apar cnd programatorul furat de rutina operaiilor pe care le implementeaz| uit| s| trateze cazuri particulare ale manevrelor de executat. Atunci cnd se anticipeaz| posibilitatea apariiei unei erori, n loc ca Access-ul s| fie l|sat s| afieze un mesaj de eroare, prin folosirea unui secvene de cod speciale pentru prinderea erorii (error trapping), acesta este obligat s| execute o secven| de cod special| n vederea trat|rii situaiei deosebite ap|rute. Tratarea erorii const|, fie n corectarea automat| a ei, fie prin atenionarea utilizatorului asupra unei secvene de aciuni pe care trebuie s| le deruleze pentru evitarea acesteia. n continuare se prezint| metode de tratatre a erorilor n cursul execuiei aplicaiei. Erorile datorate scrierii incorecte ale unor instruciuni se g|sesc n faza de compilare a modulului n cauz|, cele de execuie se rezolv| conform tabelului:

Cum se trateaz|

NU COPIA !.

sau suna la:

295

Tratarea erorilor n VBA s - i Access SQL - cursul 12

MesEr = MesEr & " trebuie sa existe o inregistrare" & NL MesEr = MesEr & "in TTipContacte." MsgBox MesEr, vbCritical, "Violare a integritatiiE referentiale" Response = acDataErrContinue End Select

End Sub

Debug.Print DataErr, Error(DataErr) Stop

Este posibil| sugerarea unor aciuni pe care utilizatorul trebuie s| le fac| pentru evitarea erorii, de exemplu se poate ad|uga codul DoCmd.OpenForm "FTTipContact" ce va deschide formularul n care trebuie introduse noile tipuri de contacte. Pentru aceasta procedura se va scrie sub forma: Private Sub Form_Error(DataErr As Integer, Response AsE Integer) Dim MesEr As String, NL As String NL = Chr$(13) & Chr$(10)

'Debug.Print DataErr, Error(DataErr) 'Stop

0264-401667

NU COPIA !.

sau suna la:

nainte de scrierea celorlate linii de cod pentru a afla valoarea numeric| n cauz|. Pe ecran, n ferestra imediat|, vor fi afiate valoarea numeric| a erorii i prin folosirea funciei Error() un text corespunz|tor erorii ap|rute, dac| n modul formular se ncearc| introducerea unei valori incorecte. Apoi, aceste linii vor fi transformate n comentarii i codul poate fi introdus n continuare.

Pt. cumparare viziteaza:

Apariia unei erori n TContacte1 subform face ca Access-ul s| execute procedura Form_Error de mai sus transfernd codul erorii procedurii prin parametrul DataErr. Num|rul 2237 este valoarea care indic| ncercarea de a introduce un element care nu este n list|. Instruciunea Select Case folosete aceast| valoare pentru a prinde eroarea i a genera o aciune sau un mesaj corespounz|tor. Parametrul Response va lua n final valoarea acDataErrContinue pentru a fora Access-ul s| continue execuia f|r| afiarea unui mesaj de eroare standard. ntrebarea care se pune este de unde s| cunoatem valoarea numeric| corespunz|toare tuturor erorilor care pot s| apar|? n exemplul de mai sus am scris liniile:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

296

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Select Case DataErr Case 2237 MesEr = "Conform integritatii referentiale," & NL MesEr = MesEr & "Pentru IDInfContact dinE TContacte1" " & NL MesEr = MesEr & "trebuie sa existe o inregistrareE MesEr = MesEr & "TTipContacte."

Case Else

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

MsgBox MesEr, vbCritical, "Violare a integritatiiE referentiale" SendKeys "{ESC}", True

DoCmd.OpenForm "FTTipContact" Response = acDataErrContinue

Response = acDataErrDisplay

End Select End Sub

Procedura SendKeys transmite ferestrei curente una sau mai multe taste ca i cnd acestea ar fi tastate prin ap|sare de la tasatatur|. n cazul de mai sus s-a folosit tasta Esc, care va anula modific|rile f|cute n controlul (sau cmpul) curent.

Instruciunea On Error

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

Instruciunea On Error GoTo eticheta 7

Aceast| form| este cea mai puternic| modalitate de tratare a erorilor pentru c| permite controlul cel mai flexibil asupra celor ce vor fi de f|cut n cazul apariiei erorilor. Pentru forma On Error GoTo eticheta 7 VBA va s|ri la o poriune de cod specific|, marcat| prin etichet|. Poriunea de cod care urmeaz| exemplific| cea mai comun| variant| de tratare a erorilor: Sub ProceduraGenericadeTratareaErorilor()

sau suna la:

Erorile n timpul execuiei codului VBA pot fi tratate prin folosirea instruciunii On Error i ad|ugarea codului corespunz|tor trat|rii erorii. Instruciunea On Error va fi codul VBA care se va executa, n caz de eroare, ea specificnd modul n care va fi tratat| eroarea ap|rut|. Este posibil ca mai multe instruciuni On Error s| apar| ntr-o singur| procedur|, dar numai cea mai recent| este activ|. On Error are mai multe variante care vor fi discutate n continuare.

0264-401667

297

Tratarea erorilor n VBA s - i Access SQL - cursul 12

On Error GoTo CodGenericPentruTratareaErorilor 'Orice cod care poate genera o eroare n timpul execut -iei lui

Iesire_in_caz_de_Eroare: Exit Sub

'Codul pentru tratarea erorii MsgBox Err.Description Resume Iesire_in_caz_de_Eroare

End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

CodGenericPentruTratareaErorilor:

Cnd o eroare apare, controlul este dat etichetei specificate n linia On Error GoTo CodGenericPentruTratareaErorilor. Eticheta trebuie s| apar| scris| n cadrul aceleiai proceduri cu instruciunea On Error GoTo CodGenericPentruTratareaErorilor. Prin convenie, codul pentru tratarea erorii se scrie la sfritul procedurii. Dac| vei ncerca s| creai un buton de comand| care s| nchid| un formular, codul pe care Generatorul l scrie pentru procedura de tratare a evenimentului On Click este: Private Sub Command13_Click()

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

On Error GoTo Err_Command13_Click

DoCmd.Close

Exit_Command13_Click: Exit Sub

Err_Command13_Click:

MsgBox Err.Description

Resume Exit_Command13_Click

End Sub

0264-401667

sau suna la:

298

Tratarea erorilor n VBA s - i Access SQL - cursul 12

< codul de tratare a erorii definit prin instruciunea On Error GoTo CodGenericPentruTratareaErorilor nu mai are efect. Aceasta nseamn| c| n cazul apariiei unei erori n poriunea de cod care trateaz| prima eroare, noua eroare este tratat| ca i cum nu exist| un cod pentru tratarea acesteia; < se poate folosi instruciunea Resume (care va fi descris| n paragraful urm|tor) pentru a reda controlul procedurii principale i pentru a relua modalitatea de tratare normal| a erorilor; < nu se poate executa o instruciune End Sub sau End Function pentru p|r|sirea codului de tratarea a erorii. Trebuie folosit| explicit una dintre instruciunile Exit Sub sau Exit Function pentru p|r|sirea procedurii. O tehnologie software comun| spune c| o procedur| ar trebui s| aib| un singur punct de intrare i unul singur de ieire, deci o idee ar fi utilizarea lui Resume etichet| pentru a reda controlul codului principal, ntr-un punct de p|r|sire comun mai multor poriuni al acestuia.
Instruciunea On Error Resume Next

Crearea unui cod de tratare a erorilor prin On Error GoTo CodGenericPentruTratareaErorilor necesit| uneori un num|r mare de linii de cod. Dac| se dorete ignorarea erorilor, din motivul de mai sus sau pentru c| ntr-o poriune de cod a unei proceduri poate s| apar| numai un singur fel de eroare pe care dorim s| o ignor|m se poate folosi instruciunea On Error Resume Next care spune VBA-ului c| se dorete reluarea codului cu instruciunea imediat urm|toare celei n care a ap|rut eroarea f|r| nici o alt| intervenie n desf|urarea evenimentelor din cod. Un exemplu clasic este cel al instruciunii Kill care terge un fiier dac| acesta exist| pe disc i dac| nu este utilizat de altcineva n momentul n care se dorete tergerea lui. Sub StergeFisier(ByVal numefisier As Strig)

http://www.east.utcluj.ro/mb/mep/antal

Trebuie s| folosii o instruciune Exit Sub sau Exit Function pentru a p|stra execuia normal| a liniilor din program. Dac| o eroare a ap|rut controlul este dat poriunii de cod care trateaz| eroarea aceast| fiind o starea special| a procedurii n care:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

On Error Resume Next

Kill numefisier

End Sub

Dac| de exemplu, fiierul de ters nu exist|, instruciunea Kill genereaz| o eroare n timpul execuiei procedurii StergeFisier. Datorit| instruciunii On Error Resume Next, eroarea ap|rut| este ignorat| i controlul este dat instruciunii urm|toare, pentru acest caz instruciunea End Sub. Instruciunea On Error GoTo 0

0264-401667

NU COPIA !.

sau suna la:

299

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Instruciunea Resume Next

Pentru revenirea n poriunea principal| a procedurii din codul de tratare a erorii se folosete instruciunea Resume. Aceasta are formele:

Resume eticheta 7: se folosete cnd dorii s| revenii la o linie de program oarecare marcat| cu eticheta 7.

Obiectul Err

VBA are un obiect pentru determinarea erorii ap|rute n timpul execuiei codului. Cteva dintre propriet|ile obiectului se prezint| n tabelul care urmeaz|.

Proprietatea

Pt. cumparare viziteaza:

Resume Next: se folosete n interiorul codului de tratare al erorii atunci cnd se dorete ignorarea ei sau cnd ca urmare a imposibilit|ii corect|rii ei se dorete continuarea cu linia urm|toare instruciunii care a generat eroarea;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Resume: red| controlul instruciunii care a generat eroarea. Se folosete atunci cnd codul de tratare a erorii a rezolvat motivul apariiei ei i se dorete continuarea din locul n care a ap|rut problema;

http://www.east.utcluj.ro/mb/mep/antal

La folosirea uneia dintre instruciunile On Error Resume Next, On Error GoTo CodGenericPentruTratareaErorilor, efectul lor va r|mne pn| la p|r|sirea procedurii sau pn| la declararea unei noi poriuni de cod pentru tratarea erorilor. Exist| posibilitatea anul|rii codului de tratare a erorilor prin instruciunea On Error GoTo 0.

Descriere

NU COPIA !.

Err.Number Err.Source

Stocheaz| o valoarea numeric| care identific| eroarea. Aceasta este proprietatea implicit| a obiectului Err.

Stocheaz| numele obiectului sau aplicaiei care a generat eroarea iniial|.

Ierarhii ale codului pentru tratarea erorilor

Atunci cnd o procedur| apeleaz| o alta, VBA folosete o strategie ierarhic| de tratare a erorilor. Dac| procedura apelat| genereaz| o eroare care nu este tratat| n corpul ei, procedur| apelant| (din care s-a realizat apelul) va recepiona eroarea. VBA-ul va reaciona ca i cum linia de apel a procedurii a generat eroarea, ca efect, VBA-ul va c|uta napoi, pe baza adreselor de revenire de pe stiv|, pn| cnd va prinde un cod pentru tratarea erorilor. Dac| ajunge la nivelul procedurii care pornete grupul de apeluri f|r| a prinde un cod de tratare a erorii va afia un mesaj de eroare propriu i va opri execuia codului.

sau suna la:

Err.Description

Stocheaz| un ir de caractere asociat erorii ap|rute.

0264-401667

300

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Access SQL
Limbajul SQL (Structured Query Language) este cel mai popular limbaj neprocedural pentru accesul la datele stocate n SGBDR-uri pe toate tipurile de calculatoare (calculatoare personale, profesionale i sisteme mari). El asigur| o interfa| ntre utilizator i un SGBDR, fiind dezvoltat de IBM n 1970 pentru System R (un SGBD dezvoltat ntr-un proiect de cercetare la IBM San Jose Research, azi IBM Almaden Research Center, n care s-a introdus limbajul SQL i s-a ar|tat c| SGBDR-urile au performae bune de prelucrare a tranzaciilor). Access-ul sprijin| lucrul cu SQL f|r| a suporta ns| ANSI SQL n totalitate. Primul standard SQL ap|rut n 1986, descria elementele de baz| ale limbajului pentru definirea i manipularea tabelelor. Revizia din 1989 ad|uga limbajului extensii pentru integritatea referenial| i constrngerile de integritate generalizat|. O alt| revizie n 1992 furniza facilitatea de manipulare a schemei bazei de date i de administrare a datelor mpreun| cu mbun|t|iri substaniale pentru definirea i manipularea datelor.

Cum se folosete Access SQL-ul?

Vizualizarea unei 7 ri n mod interoga SQL

deschidei baza de date Northwind; clic pe butonul Queries; clic pe butonul Design; din list| selectai interogarea cu numele Quarterly Orders;

Pt. cumparare viziteaza:

Spre deosebire de alte produse care suport| SQL, Access-ul nu are o fereastr| n care dup| introducerea unei linii SQL i ap|sarea tastei Enter rezultatele corespunz|toare s| fie direct afiate. n schimb, interog|rile pot fi vizualizate i editate n format SQL. Pentru afiarea rezultatelor trebuie s| comutai pe vizualizare n mod foaie de date a interog|rii. Orice interogare poate fi vizualizat| n mod SQL. n acest caz vei vedea instruciunile SQL corespunz|toare specificaiilor folosite n fereastra Access QBE, n modul de proiectare, cnd s-a creat interogarea.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Fereastra Access QBE din figura urma 7 toare va fi afiat| pe ecran.

din meniul View selectai SQL View, fereastra urm|toare va fi afiat|.

0264-401667

NU COPIA !.

sau suna la:

301

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Sintaxa comenzilor SQL

Convenie SQL MAJUSCULE nclinate <>

Pt. cumparare viziteaza:

Acest paragraf prezint| conveiile folosite la scrierea comenzilor SQL.

Semnificaie

Literele majuscule indic| cuvinte cheie i cuvinte rezervate, care trebuie introduse ntocmai.

Cuvintele scrise cu caractere nclinate reprezint| variabile specificate de utilizator. Parantezele unghiulare conin elemente de sintax| care trebuie scrise. Cuvintele din interiorul acestor paranteze descriu elementele f|r| a specifica sintaxa lor.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

{}

Acoladele includ una sau mai multe opiuni, separate de cte un caracter bar| (|), dac| sunt mai multe nu se introduce paranteza sau caracterul |.

()

Parantezele rotunde indic| repetarea unui articol, o dat| sau de mai multe ori. Cnd apare o virgul| mpreun| cu o parantez| rotund|, se introduce virgula ntre articole.

n general, o comand| este format| dintr-un verb care indic| aciunea i un num|r de clauze,

sau suna la:

[]

Parantezele dreptunghiulare conin informaii opionale, separate de cte o bar| vertical| (|). Dac| sunt mai multe se alege una sau nici una dintre ele. Nu se introduc parantezele sau caracterul bar|. De menionat c| Microsoft Access necesit| n multe cazuri introducerea de nume ntre paranteze. Atunci cnd parantezele sunt necesare, facnd parte din sintaxa variabilei pe care trebuie s-o d|m, parantezele sunt nclinate, ca n [Tabelul Meu].[Cmpul Meu].

0264-401667

302

Tratarea erorilor n VBA s - i Access SQL - cursul 12

care particularizeaz| efectul verbului. Forma general| a unei comenzi SQL este:

<VERB> este un cuvnt cheie care specific| operaia de executat <clauza> difer| de la comand| la comand| i poate fi fi o construcie a utilizatorului sau un cuvnt cheie a limbajului.

SELECT este inima limbajului SQL. Se folosete pentru a selecta sau a extrage linii i coloane din tabelele bazei de date. Sintaxa instruciunii SELECT conine cinci clauze majore dup| cum urmeaz|: SELECT < list| de cmpuri > FROM < list| de tabele >

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Instruciunea SELECT

[WHERE < specificarea liniei selectate >]

[GROUP BY < specificarea modului de grupare >] [HAVING < specificarea grupului selectat >] [ORDER BY < specificarea ordon|rii >] Clauza SELECT

Se folosete pentru specificarea coloanelor care s| fie incluse n mulimea de nregistr|ri rezultat|. Numele coloanelor se specific| analog cu cele din grila Access QBE. SELECT {* | expresie1 [AS alias1] [, expresie2 [AS alias2] [,...]]]}

http://www.east.utcluj.ro/mb/mep/antal

<VERB> [<clauza1>][<clauza2>]

Pt. cumparare viziteaza:

expresie poate fi un simplu nume de coloan|, o expresie de nume de coloane sau de funcii SQL de agregare. Similar cu QBD, * i aici indic| toate cmpurile unui tabel. Definiia sintactic| pentru expresie este: [{+ | - | * | / | \ | MOD |&} { funcie | (expresie) | constant| | nume-coloan| }]...

funcie: o funcie de agregare SQL, cum ar fi AVG, COUNT, MAX, MIN, STDEV, STDEVP, SUM, VAR, VARP sau orice alt| funcie construit| n Microsoft Access sau definit| de utilizator folosind VBA. (expresie): o expresie cu unul sau mai muli termeni.

constant|: o constant| alfabetic| sau numeric|. Constanta alfabetic| trebuie inclus| ntre ghilimele simple sau duble. Pentru a introduce un apostrof n constanta alfabetic|, e necesar s|

0264-401667

NU COPIA !.

sau suna la:

303

Tratarea erorilor n VBA s - i Access SQL - cursul 12

se introduc| apostroful de dou| ori n irul literal. Dac| expresia e numeric|, trebuie folosit| o constant| numeric|. O constant| de tip dat|/timp va fi inclus| ntre dou| semne pound (#).

+| -| * | / | \ | MOD: operatori ce definesc calcule. Dac| apar e necesar ca toate subexpresiile din interiorul unei expresii s| poat| fi evaluate ca date de tip numeric. &: operator folosit pentru concatenarea constantelor alfabetice.
Exemple:

SELECT *

Clauza FROM

Definete tabelele i/sau interog|rile prev|zute care reprezint| surse de date pentru interogarea noastr|. FROM {{nume-tabel [[AS] alias] | nume-interogare [[AS] alias]} | < tabele asociate >},... La fel ca la clauza SELECT, unde se putea folosi un nume alternativ (alias) pentru coloan| i FROM-ul permite folosirea de nume alternative. Alias-ul, uneori numit i nume de corelare, se scrie imediat dup| numele tabelului precedat de cuvntul cheie AS. Numele alternative se folosesc pentru scrierea mai scurt| a unor nume, sunt ns| obligatorii cnd se specific| asocieri (self joins) sau subinterog|ri corelate.
Exemple:

Pt. cumparare viziteaza:

SELECT [Nume] & " " & [Lastname] AS [Prenume]

http://www.east.utcluj.ro/mb/mep/antal

nume-coloan|: numele unei coloane dintr-un tabel sau dintr-o interogare. Se poate folosi numele unei coloane sau interog|ri care s-a specificat n articolul FROM din declaraie. Dac| expresia este una numeric|, trebuie folosit| o coloana ce conine date numerice. Dac| acelai nume-coloana apare n dou| sau mai multe dintre tabelele sau interog|rile incluse n interogare, acesta trebuie modificat cu numele interog|rii, numele tabelului, sau cu unul corespunz|tor, ca de exemplu [tabelA].[coloana1].

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

SELECT *

FROM TComenzi;

SELECT ComandaID, ComandaData, ComandaPret FORM TComenzi;

SELECT ComandaID, ComandaData, ComandaPret FORM TComenzi AS [Tabelul Comenzilor];

0264-401667

NU COPIA !.

sau suna la:

304

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Clauza WHERE

WHERE expresie1 [{And | Or} expresie 2 [...]]

Exemple:

SELECT ComandaID, ComandaData, ComandaPret FORM TComenzi WHERE ComandaPret > 100000; SELECT ComandaID, ComandaData, ComandaPret FORM TComenzi

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

expresie are acelai format cu expresiile Access QBE. Pot fi referite coloane, funcii definite de utilizator i operatori n fiecare expresie

WHERE ComandaPret > 100000 AND ComandaData > #5/11/1999# AND NumeClient Like "V*"; Clauza ORDER BY

ORDER BY coloana1 [{ASC | DESC}] [, coloana2 [{ASC | DESC}] [, ...]]

Este posibil| i sortarea pe baza valorilor unor expresii. Sortarea pe baza coloanelor indexate este mult mai rapid| dect pe baza unor expresii oarecare.
Exemple:

SELECT *

FORM TClienti

ORDER BY Nume, Prenume; SELECT * FORM TClienti

0264-401667

NU COPIA !.

Clauza opional| se folosete pentru sortarea rndurilor ntoarse de o interogare cu una sau mai multe coloane. Cuvintele cheie ASC sau DESC specific| sortarea cresc|toare sau descresc|toare. Sortarea cresc|toare este implicit|. Clauza corespunde liniei Sort din Access QBE, iar precedena sort|rii este de la stnga la dreapta.

http://www.east.utcluj.ro/mb/mep/antal

Clauza restricioneaz| (filtreaz|) rndurile ntoarse de o interogare. Ea corespunde liniilor Criteria sau Or din Access QBE. Coloanele referite n WHERE nu trebuie s| fie incluse n lista coloanelor specificate n clauza SELECT. Efectul este identic dac| n QBE se invalideaz| cutia Show din QBE.

Pt. cumparare viziteaza:

sau suna la:

305

Tratarea erorilor n VBA s - i Access SQL - cursul 12

ORDER BY Nume & " " & Prenume;

Dac| baza de date a fost normalizat| este necesar| crearea unor interog|ri care au ca surs| de date mai multe tabele. Cnd se acceseaz| mai multe tabele, n SQL, la fel ca n Access QBE, tabelele trebuie s| fie asociate (join) pe baza unor coloane pentru a produce rezultate care au semnificaie. Dac| tabelele nu sunt asociate, rezultatul interog|rii va fi produsul cartezian al tabelelor care sunt sursele de date.

Folosind SQL-89, asocierea a dou| tabele, tabel1 i tabel2, pe baza coloanelor, coloana1 i coloana2 se face astfel: SELECT list|-coloane FROM tabel1, tabel2

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Exist| dou| metode de asociere a tabelelor n Access SQL: prin folosirea clauzei FROM i prin clauza WHERE. Asocierea cu WHERE a fost parte a SQL-ului ncepnd cu SQL-89; asocierea prin FROM este o clauz| ad|ugat| standardului ANSI SQL-92.

WHERE tabel1.coloana1 = tabel2.coloana2;

n SQL-92, sintaxa pentru asocierea celor dou| tabele este: SELECT list|-coloane

FROM tabel1 {INNER | LEFT [OUTER] | RIGHT [OUTER]} JOIN tabel2

http://www.east.utcluj.ro/mb/mep/antal

Asocierea tabelelor

Pt. cumparare viziteaza:

NU COPIA !.

ON tabel1.coloana1 = tabel2.coloana2 Folosirea lui OUTER este opional|.

Exemple:

De exemplu, dac| am dori s| select|m cmpurile ComandaID, ComandaData, Nume i Prenume cu toate comenzile care au fost f|cute nainte de 28 iulie 2000, folosind SQL-89 scriem: SELECT ComandaID, ComandaData, Nume, Prenume AS Clienti FROM TComenzi, TClienti WHERE TClienti.ClientID = TComenzi.ComandaID AND ComandaData <= #07/28/2000#

0264-401667

sau suna la:

306

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Folosind sintaxa SQL-92 scriem:

FROM TComenzi INNER JOIN TClienti ON TClienti.ClientID = TComenzi.ComandaID WHERE ComandaData <= #07/28/2000#

Asociere multipl| (Multiple Joins)

La fel n cazul lui Access QBE, instruciunea SELECT poate asocia mai multe tabele. O sintax| simplificat|, unde apare numai JOIN, f|r| INNER JOIN, LEFT OUTER JOIN sau RIGHT OUTER JOIN, a clauzei FROM pentru asocierea mai multor tabele este: FROM (... (tabel1 JOIN tabel2 ON condiiaA) JOIN tabel3 ON condiiaB) JOIN ...) Ordinea JOIN-urilor imbricate (cuprinse unele n altele) definete ordinea de execuie a asocierilor. Asociere non-equi

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Este de preferat folosirea sintaxei lui SQL-92 pentru c| mulimile de ntregistr|ri nu se pot actualiza.

Asocierile discutate se numesc n literatura de specialitate equi joins, adic| se bazeaz| pe egalitatea unui cmp cu altul. Asocieri non-equi sunt cele n care se apar operatorii >, <, >=, <=, <> sau Between.

http://www.east.utcluj.ro/mb/mep/antal

SELECT ComandaID, ComandaData, Nume, Prenume AS Clienti

Pt. cumparare viziteaza:

Lista coloanelor din clauza SELECT poate fi precedat| cu unul dintre predicatele de cuantificare mutual exclusive: ALL, DISTINCTROW (specific Acces SQL-ului) sau DISTINCT. Ele controleaz| modul n care sunt tratate valorile i nregistr|rile duplicate. Sintaxa clauzei SELECT cu folosirea acestor predicate este: SELECT [{ALL | DISTINCT | DISTINCTROW}] list|-coloane

Dac| nu se scrie niciunul dintre predicate se presupune implicit ALL. ALL ntoarce toate rndurile care respec| criteriul impus. Nu se fac prelucr|ri speciale pentru asigurarea unicit|ii rndurilor. n Access QBE aceasta se realizeaz| prin setarea propriet|ilor UniqueValues i UniqueRecords a interog|rii la valoarea No. Folosirea lui DISTINCT produce eliminarea rndurilor duplicate n mulimea de nregistr|ri rezultat| pe baza coloanelor coninute n clauza SELECT. Cnd se folosete DISTINCT mulimea de nregistr|ri ale interog|rii nu se poate actualiza, iar performanele interog|rii scad. Setarea propriet|ii UniqueValues la Yes

sau suna la:

Predicatele ALL, DISTINCTROW i DISTINCT

0264-401667

NU COPIA !.

307

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Interog|rile de agregare sunt utile pentru sumarea datelor, calcule statistice, depistarea datelor greite. Acest tip de interog|ri produc mulimi de nregistr|ri (recordset) care pot fi numai citite. Cteva din metodele de construire n Access SQL a interog|rilor de agregare sunt: interog|ri de agregare simple cu instruciunea SELECT f|r| clauza GROUP BY; interog|ri cu GROUP BY folosind instrunciunea SELECT mpreun| cu clauza GROUP BY. Aceste interog|ri au n comun folosirea a cel puin una dintre funciile de agregare prezentate n tabelul care urmeaz| n clauza SELECT.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Agregarea datelor

Nume funcie SQL de agregare Avg([coloana])

Efect

http://www.east.utcluj.ro/mb/mep/antal

n Acces QBE este echivalentul acestui predicat. La folosirea lui DISTINCTROW, se elimin| ntregistr|rile duplicate n mulimea rezultat| pe baza tuturor coloanelor din tabele surs|. Nu are efect dac| interogarea are un singur tabel surs| sau dac| nu ntoarce cel puin cte o coloan| din fiecare tabel. Predicatul DISTINCTROW este echivalent cu proprietatea UniqueRecords. Pentru majoritatea tipurilor de interogare pentru care se poate aplica DISTINCTROW (interog|ri cu mai multe tabele i unde cel puin un tabel este inclus n clauza FROM f|r| o coloan| corespondent| n clauza SELECT - adic| un tabel este inclus f|r| a avea coloane de ieire) produce acelai rezultat cu predicatul DISTINCT, cu o singur| diferen|, mulimea de nregistr|ri se poate actualiza.

Pt. cumparare viziteaza:

Poate lucra cu valori Null? nu nu da

Valoarea medie.

Count([coloana])

Sum([coloana])

Suma valorilor din coloan|.

Min([coloana]) Max([coloana])

Cea mai mic| valoare din coloan|. Cea mai mare valoare din coloan|. Valoarea coloanei din primul rnd al mulimii de nregistr|ri rezultate.

First([coloana])

Last([coloana])

Valoarea coloanei din ultimul rnd al mulimii de nregistr|ri rezultate.

StDev([coloana])

Abaterea standard pentru un eantion de populaie. Abaterea standard pentru o populaie.

StDevP([coloana])

sau suna la:


nu nu nu da da nu nu

Count(*)

Num|r| toate rndurile din mulimea de nregistr|ri.

0264-401667

Num|r| valorile care nu au valoarea Null din coloan|.

NU COPIA !.

308

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Var([coloana]) VarP([coloana])

Variaia statistic| pentru un eantion de populaie. Variaia statistic| pentru o populaie.

nu nu

Este posibil| folosirea unor expresii din combinaii de funcii de agregare i matematice, iat| cteva exemple: Pentru a nsuma (cu Sum()) valorile absolute (cu funcia Abs()) ale cmpului Cheltuieli scriem: Sum(Abs([Cheltuieli])). Pentru a calcula valoarea medie a costului unor articole putem scrie: Avg([Pret]* [Cantitate]*(1-[Reducere])). Interog|ri de agregare f|r| clauza GROUP BY

Exemplu:

SELECT COUNT(ComenziID) AS NumarulTotal, MIN(ValoareComanda) AS ComandaMinima, MAX(ValoareComanda) AS ComandaMaxima FROM TComenzi;

Pt. cumparare viziteaza:

Se poate folosi instruciunea SELECT f|r| clauza GROUP BY pentru a calcula nsum|ri statistice pe rnduri care ndeplinesc condiia clauzei WHERE. Aceasta este util| pentru totale la nivel de tabel sau la nivelul unei submulimi de tabel. Acest tip de interogare de agregare se creeaz| prin includerea numai de funcii de agregare n clauza SELECT a instruciunii SELECT.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

Clauza GROUP BY se folosete pentru a defini grupuri de rnduri pentru care se dorete calculul funciei de agregare. Iat| modul n care clauza GROPU BY se intercaleaz| n sintaza instruciunii SELECT: SELECT lista-coloane FROM lista-tabele

[WHERE clauza-where]

[GROUP BY clauza-groupby] [HAVING clauza-having]

[ORDER BY clauza-orderby]

Sintaxa clauzei GROUP BY este:

sau suna la:

Interog|ri de agregare cu clauza GROUP BY

0264-401667

309

Tratarea erorilor n VBA s - i Access SQL - cursul 12

GROUP BY expresie1 [, expresie2 [,...]] Expresiile din clauza GROUP BY pot referi coloane de tabele, cmpuri calculate sau constante. Termenii expresiei nu pot fi funcii de agregare. Cmpurile din GROUP BY definesc grupurile ntoarse de interogare. La folosirea clauzei GROUP BY, toate cmpurile din clauza SELECT trebuie s| fie argumente ale unei funcii de agregare sau s| fie prezente n clauza GROUP BY.
Exemplu:

SELECT ClientID, COUNT(*) AS NumardeComenzi FROM TClienti GROUP BY ClientID;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru calculul num|rului comenzi ale unor clieni scriem:

Rezultatele vor fi de forma: ClientID 1 2 3 4

NumardeComenzi

24 14 1

12

HAVING expresie1 [{AND | OR} expresie2 [...]]


Exemplu:

S| presupunem c| dorii s| calculai cantitatea medie comandat| din fiecare articol de un individ, exculzndu-i pe cei care au comandat mai puin de 3 articole. Pentru c| se dorete excluderea rndurilor care nu respect| criteriul impus nainte de a se face gruparea lor vom folosi clauza WHERE astfel: SELECT DenumireArticol, Avg(Cantitate) AS CantitateMedieComandata

0264-401667

NU COPIA !.

sau suna la:

Interog|rile de agregare pot conine una din clauzele WHERE sau HAVING sau pe ambele. Orice criterii din WHERE sunt aplicate nainte de gruparea rndurilor. Din acest motiv clauza WHERE se poate folosi pentru excluderea rndurilor care nu dorii s| fie grupate. Orice criterii din HAVING sunt aplicate dup| grupare. Astfel, se pot filtra rnduri pe baza statisticilor de sumare calculate pe grupuri. Sintaxa pentru clauza HAVING este:

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

310

Tratarea erorilor n VBA s - i Access SQL - cursul 12

FROM TArticole INNER JOIN TComenzi ON TArticole.ArticolID=TComenzi.ArticolID WHERE Cantitate > 3

Dac| dorii s| realizai aceleai calcule cu eliminarea articolelor din muimea de nregistrare dac|, n medie, mai puin de 3 articole au fost vndute pe o comand|, criteriul trebuie aplicat dup| ce s-au evaluat valorile medii pentru fiecare grup. Pentru aceasta se va folosi clauza HAVING dup| cum urmeaz|: SELECT DenumireArticol, Avg(Cantitate) AS CantitateMedieComandata GROUP BY DenumireArticol HAVING Avg(Cantitate) > 3;

FROM TArticole INNER JOIN TComenzi ON TArticole.ArticolID=TComenzi.ArticolID

Este simplu s| reinei cnd se aplic| cele dou| clauze dac| privii poziia lor n instruciunea SELECT. WHERE se scrie naintea lui GROUP BY, adic| caluza WHERE se aplic| nainte de grupare, iar HAVING se scrie dup| GROUP BY corespunznd aplic|rii clauzei HAVING dup| aplicarea criteriilor de grupare.

Interog|ri de reuniune (UNION Queries)

n Access este obligatorie utilizarea SQL-ului pentru crearea unei interog|ri de reuniune; nu exist| un echivalent n Access QBE pentru crearea acestui tip de interogare. UNION este un operator i nu o instruciune sau clauz| producnd o mulime de nregistr|ri care pot fi numai citite. Sintaxa lui este:

http://www.east.utcluj.ro/mb/mep/antal

GROUP BY DenumireArticol;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

UNION[ALL]

instruciune-select2 [UNION[ALL]

instruciune-select3] [...]

Access-ul pune n coresponden| coloanele din fiecare SELECT pe baza poziiilor din SELECT i nu pe baza numelor de coloane. Implicit, Access-ul elimin| nregistr|rile duplicate. Se poate fora includerea dublurilor prin folosirea opiunii ALL.
Exemplu:

Dac| dorim s| cre|m o interogare care reunete toate adresele i numele elevilor i

sau suna la:

instruciune-select1

0264-401667

NU COPIA !.

311

Tratarea erorilor n VBA s - i Access SQL - cursul 12

profesorilor pentru a-i invita la aniversarea liceului scriem:

FROM TProfesori UNION FROM TElevi

SELECT Nume & ": " Prenume AS Nume, Adresa, Oras, Cod

SELECT Nume UNION ALL FROM TElevi

FROM TProfesori

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Se poate folosi clauza ORDER BY pentru sortarea nregistr|rilor din mulimea de nregistr|ri rezultat|. Dac| unele nume de coloane difer|, se va folosi numele din ultimul SELECT pentru a specifica ordinea din mulimea de nregistrare rezultat|.

SELECT NumeElev ORDER BY Nume;

Compatibilitatea interog|rilor

Interog|rile sunt compatibile pentru a fi reunite dac| au acelai num|r de coloane. Access-ul folosete urm|toarele reguli pentru a le combina: pentru coloane cu nume diferite, se folosete numele coloanei din prima interogare; pentru coloane cu tipuri de date diferite Access-ul va converti datele coloanelor la un singur tip de dat| care este compatibil cu toate tipurile de date ale coloanelor.

http://www.east.utcluj.ro/mb/mep/antal

SELECT Nume & ": " Prenume AS Nume, Adresa, Oras, Cod

Pt. cumparare viziteaza:

Subinterog|ri

Este posibil ca o parte a unei instruciuni SELECT s| fie o alt| instruciune SELECT. Tipic, subinterog|rile se folosesc n clauza WHERE pentru a filtra rezultatele afiate de interogare pe baza valorilor unei alte interog|ri (subinterogarea). Urm|toarele forme sintactice sunt definite pentru subinterog|ri: expresie [NOT] IN (instruciune-select): se folosete pentru a verifica dac| valoarea unei coloane face parte dintr-o list| de valori.

Exemplu:

S| presupunem c| dorim selectarea num|rului de identificare (ProdusID), a numelui (Descriere) i a preului(Pret) pentru toate produsele care care s-au vndut n cantitate (Cantitate) mai mic| de 7 pentru ca s| renun|m a le mai comercializa.

0264-401667

NU COPIA !.

sau suna la:

312

Tratarea erorilor n VBA s - i Access SQL - cursul 12

SELECT ProdusID, DescriereProdus, Pret FROM TProduse (SELECT ProdusID FROM TProduseDetalii WHERE Cantitate <=6); Utilizarea operatorului NOT va duce la ntoarcerea valorilor care nu sunt n list|. Aceast| form| de subinterogare poate ntoarce numai o singur| coloan|; comparaie [{ANY | SOME | ALL}] (instruciune-select): permite compararea unei valori cu valorile din rndurile unei subinterog|ri.

Predicat f|r| ANY, SOME ALL

Realizeaz| comparaia cu o singur| valoare.

Este adev|rat| dac| comparaie este adev|rat| pentru toate rndurile din subinterogare.

Exemplu:

Dac| dorim s| cunoatem care sunt automobilele mai scumpe dect SKODA: SELECT DescriereProdus, Pret FROM TProduse WHERE Pret >

Pt. cumparare viziteaza:

Este adev|rat| dac| comparaia este adev|rat| pentru unul sau mai multe rnduri din subinterogare.

http://www.east.utcluj.ro/mb/mep/antal

WHERE ProdusID IN

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Descriere

(SELECT Pret FROM TProduse WHERE DescriereProdus = "Automobil SKODA");

[NOT] EXIST (instruciune-select): permite compararea unor valori pentru a verifica existena lor n una sau mai multe rnduri ale unei subinterog|ri. Dac| subinterogarea are cel puin un rnd, comparaie este adev|rat| (True), altfel este fals| (False).
Exemplu:

Dac| dorim s| g|sim automobilele care nu au fost cump|rate de nici un client, folosind NOT EXIST scriem: SELECT ProudID, DescriereProdus, Pret FROM TProduse WHERE NOT EXIST (SELECT * FROM TProduseDetalii WHERE ProdusID = TProduse.ProdusID);

0264-401667

NU COPIA !.

sau suna la:

313

Tratarea erorilor n VBA s - i Access SQL - cursul 12

SQL cu parametri

PARAMETERS parametru1 tip1 [, parametru2 tip2 [, ...]]; instruciune-sql;

Dac| dorii s| afi|m comenzile din tabelul Orders ntre dou| date Data1 i Data2 scriem: PARAMETERS Data1 DateTime, Data2 DateTime; FROM Orders

SELECT Orders.ShipName, Orders.ShipAddress, Orders.ShipCity, Orders.ShippedDate WHERE (((Orders.ShippedDate) Between [Data1] And [Data2])); Fiecare parametru trebuie s| aib| un tip de dat| din lista tipurilor SQL prezentate n tabelul care urmeaz|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Exemplu:

Tip SQL

Tip cmp n mod proiectare al tabelului Yes/No

BIT, BOOLEAN, LOGICAL, YESNO BYTE, INTEGER1

Number, FiledSize=Byte

CURRENCY, MONEY

Currency

DATETIME, DATE, TIME

Date/Time

SHORT, INTEGER2, SMALLINT

Number, FildSize = Integer Number, FildSize = Long

LONG, INT, INTEGER, INTEGER4 SINGLE, FLOAT4, REAL

Number, FildSize = Single

DOUBLE, FLOAT, FLOAT8, NUMBER TEXT, ALPHANUMERIC, CHAR, CHARACTER, STRING LONGTEXT, MEMO, NOTE

Number, FildSize = Double Text

Memo

LONGBINARY, GENERAL, OLEOBJECT GUID

OLE Object AutoNumber, FildSize=ReplicationID

0264-401667

NU COPIA !.

COUNTER, AUTOINCREMENT

AutoNumber, FildSize=Long Integer

http://www.east.utcluj.ro/mb/mep/antal

La fel ca n Access QBE i n SQL se pot specifica parametrii care vor fi rezolvai n timpul execuiei aplicaiei. Sintaxa pentru declaraia parametrilor este:

Pt. cumparare viziteaza:

sau suna la:

314

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Actualizarea datelor cu SQL

Instruciune SQL UPDATE DELETE

Echivalent n Access QBE Update Delete

INSERT INTO SELECT INTO

Append

Make-table

Toate fac parte i din ANSI SQL, cu excepia ultimei, mai precis SELECT INTO este folosit| cu totul altfel pentru mutarea unui singur rnd de date ntr-o list| de variabile. Instruciunea UPDATE

Se folosete pentru modificarea valorilor din una sau mai multe coloane ale unui tabel. Sintaxa este: UPDATE tabel-interogare

SET coloana1=expresie1 [, coloana2=expresie2] [, ...] [WHERE criteriu];

Exemplu:

Pentru a crete preul produselor care nu sunt automobile din tabelul TProduseDetalii cu 1.05 scriem: UPDATE TProduseDetalii

SET TProduseDetalii.Pret = [Pret]*1.05

WHERE DescriereProdus Not Like "Automobil*";

Standardul ANSI permite utilizarea subinterog|rilor n clauza SET, n timp ce Access SQL-ul nu le suport|, dar suport| asocieri, aceasta fiind o deviere de la standard, pentru a asigura o oarecare echivalen| n funcionare.

0264-401667

NU COPIA !.

sau suna la:

Dac| se folosete o interogare ca aceasta trebuie s| fie permis| actualizarea (updateable) datelor. Expresia din clauza SET poate fi o constant| sau rezultatul unor calcule.

http://www.east.utcluj.ro/mb/mep/antal

n plus, pe lng| interogarea datelor, SQL-ul permite i modificarea acestora. SQL-ul se poate folosi pentru actualizarea, tergerea sau copierea nregistr|rilor. Instruciunile SQL care au o coresponden| n Access QBE se prezint| n tabelul care urmeaz|:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

315

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Instruciunea DELETE Se folosete pentru tergerea rndurilor dintr-un tabel. Sintaxa ei este: DELETE [tabel.*] FROM clauza-form [WHERE criteriu];

se pot folosi datele unui tabel pentru a decide care rnduri s| fie terse dintr-un tabel asociat. Aceasta se realizeaz| folosind o asociere n clauza FROM sau prin folosirea unei subinterog|ri n clauza WHERE. Relaia dintre tabele poate fi 11 sau 1M; se pot terge rnduri cu o singur| interogare DELETE dac| tabelele sunt n relaia de 11;

Exemplu:

Pentru a terge toi clienii din TClienti care nu au f|cut o comand| n ultimii 3 ani scriem: DELETE

FROM TClienti

WHERE TClienti.ClientID NOT IN

(SELECT ClientID FROM TClienti WHERE DataComenzii > DateAdd('yyyy',-3,Date())); Instruciunea INSERT INTO

Pt. cumparare viziteaza:

se pot terge rnduri din tabelele asociate printr-o relaie 1M cu o serie de interog|ri DELETE.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Folosirea lui tabel.* este opional| pentru interog|ri ce se refer| la un singur tabel. Este posibil| tergerea rndurilor din tabel asociate respectnd regulile:

http://www.east.utcluj.ro/mb/mep/antal

Permite copierea de rnduri dintr-un tabel sau interogare ntr-un alt tabel sau se mai poate folosi pentru ad|ugarea unui singur rnd de date unui tabel. Sintaxa este: INSERT INTO tabel-destinaie instruciune-select;

Exemplu:

Cea mai simpl| form| este copierea ntregului coninut al unui tabel (TClienti) n altul (TClientiNou) scriem: INSERT INTO TClientiNoi SELECT * FROM TClienti;

0264-401667

NU COPIA !.

sau suna la:

316

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Dac| dorii inserarea unui rnd de valori unui tabel se folosete sintaxa: INSERT INTO tabel-interogare [(coloana1 [, coloana2 [, ...]])] VALUES (valoare1 [, valoare2 [, ...]]);

Exemplu:

Pentru a insera un rnd nou n tabelul TProduse scriem:

INSERT INTO TProduse (ProdusID, Pret, DescriereProdus)

Instruciunea SELECT INTO

Este specific| Access SQL-ului i permite crearea unui tabel nou din rndurile unui alt tabel sau interogare. Sintaxa este: SELECT coloana1 [, coloana2 [, ...]] INTO tabel-nou FROM lista-tabele

[WHERE clauza-where]

Pt. cumparare viziteaza:

VALUES (108, 90000000, "Automobil SKODA Felicia");

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dac| referinele coloanelor sunt omise trebuie incluse valori pentru fiecare coloan| n ordinea de apariie din definiia tabelului. Dac| referinele coloanelor sunt scrise, se pot omite coloane i se poate modifica ordinea de apariie a valorilor.

http://www.east.utcluj.ro/mb/mep/antal

NU COPIA !.

[ORDERED BY clauza order-by];

Exemplu:

Pentru crearea tabelului TComenziVasile scriem:

SELECT ComandaID, DataComada, ClientID INTO TComenziVasile FROM TComanzi WHERE ClientID = 7;

Att INSERT INTO ct i SELECT INTO pot include orice instruciune SELECT care produce o mulime de ntregistr|ri folosind clauza GROUP BY, asocieri, subinterog|ri sau operatorul UNION.

0264-401667

sau suna la:

317

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Definiia datelor cu SQL

Instruciune DDL

CREATE TABLE ALTER TABLE

Creeaz| schema unui tabel nou. Modific| schema unui tabel existent. Creeaz| un index nou.

CREATE INDEX DROP

Instruciunea CREATE TABLE

Instruciunea creeaz| un tabel nou. Sintaxa ei este: CREATE TABLE tabel

(coloana1 tip1 [(dimensiunea1)] [CONSTRAINT constrngere1-coloana] [, (coloana2 tip2 [(dimensiunea2)] [CONSTRAINT constrngere2-coloana]

Tipul de dat| al coloanelor este specificat conform tabelului prezentat n paragraful SQL cu parametri. Parametrul opional dimensiunea permite specificarea lungimii unei coloane text. Dac| dimensiunea este nespecificat|, valoarea dimensiunii atribuite implicit este de 255. Prin folosirea lui CREATE TABLE se pot crea dou| tipuri de constrngeri, indexuri simple i multi-coloan|, prin folosirea clauzei CONSTRAINS.
Exemplu:

Pentru a crea un tabel TProduseNoi folosind schema tabelului TProduse scriem: CREATE TABLE TProduseNoi

(ProdusID LONG, DescriereProdus TEXT (200), Pret CURRENCY);

sau suna la:

[CONSTRAINT constrngere1-tabel [, constrngere2-tabel [, ...]]]);

0264-401667

[, ...]]

Pt. cumparare viziteaza:

terge schema unui tabel sau un index.

http://www.east.utcluj.ro/mb/mep/antal

Exist| trei metode pentru crearea i manipularea schemei bazelor de date prin programe Access: ActiveX Data Objects (ADOX), interog|ri Data Definition Language (DDL) i mai vechea Data Access Objects (DAO). n paragraful care urmeaz| se vor prezenta, ntr-o versiune concentrat|, interog|rile DDL. La fel ca i n cazul interog|rilor de reuniune, se lucreaz| interog|ri DDL ce folosesc SQL. Nu exist| un corespondent n Access QBE. De asemenea, se pot executa interog|ri DDL prin definirea i executarea unei definiii de interogare folosind VBA. Tabelul care urmeaz| prezint| 4 instruciuni DDL suportate de SQL:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Efect

NU COPIA !.

318

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Clauza CONSTRAINT

CONSTRAINT nume

iar pentru crearea unei chei multi-coloan| este: CONSTRAINT nume

| UNIQUE

| FOREIGN KEY (coloana1 [, coloana2 [, ...]]) REFERENCES tabel-str|in [(coloan|-str|in|1 [, coloan|-str|in|2 [, ...]])]}
Exemple:

Pentru a crea folosind instruciunea CREATE TABLE tabelul TProduseNoi avnd un index unic cmpul DescriereProdus scrie: CREATE TABLE TProduseNoi

Pt. cumparare viziteaza:

{PRIMARY KEY (coloana1 [, coloana2 [, ...]])

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

{PRIMARY KEY | UNIQUE | REFERENCES tabel-str|in [(coloan|-str|in|)]}

http://www.east.utcluj.ro/mb/mep/antal

n SQL-92, constrngerile se folosesc pentru: restricionarea valorilor care pot fi ad|ugate unui tabel; crearea cheilor primare i str|ine; forarea valorilor unor coloane s| fie unice (UNIQUE) sau nenule (NOT NULL); crearea regulilor de validare (prin constrngerea CHECK). Pentru c| singura constrngere pe care Access-ul o suport| este cea legat| de definiia indexurilor, este convenabil s| ne gndim c| n Access clauza CONSTRAINT se folosete pentru a crea indexuri. Sintaxa pentru crearea unei chei simple este:

n continuare s| presupunem c| dorim crearea a dou| tabele TComenziNoi i TArticoleNoi ntre care s| existe o relaie 1M. TComenziNoi va avea cmpurile ComandaID - cheia primar|, DataComenzii i ClientID, iar TArticoleNoi va avea cmpurile DescriereArticol, ComandaID i AtricolID - ultimele dou| mpreun| vor forma cheia primar|, iar ComandaID va fi cheia str|in|. CREATE TABLE TComenziNoi

(ComandaID LONG CONSTRAINT CheiePrimara PRIMARY KEY, DataComenzii DATETIME, Client ID LONG); CREATE TABLE TArticoleNoi

(ComandaID LONG CONSTRAINT TComenziNoiChStraina REFERNCES TComenziNoi ,

sau suna la:

(ProdusID LONG, DescriereProdus TEXT CONSTRAINT DescriereProdus UNIQUE, Pret CURRENCY);

0264-401667

NU COPIA !.

319

Tratarea erorilor n VBA s - i Access SQL - cursul 12

AtricolID LONG, DescriereAtricol TEXT (100), CONSTRAINT CheiePrimara PRIMARY KEY (ComandaID, AtricolID));

Instruciunea CREATE INDEX

Al|turi de clauza CONSTRAINT din instruciunile CREATE TABLE i ALTER TABLE se poate folosi instruciunea CREATE INDEX (care nu face parte din ANSI SQL) pentru crearea unui index al unui tabel deja existent. Sinatxa comenzii este: CREATE [UNIQUE] INDEX index ON tabel (coloana1 [, coloana2 [, ...]])

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

Instruciunea ALTER TABLE

Se folosete pentru modificarea schemei unui tabel existent. Ea permite ad|ugarea unei coloane noi sau a unei constrngeri respectiv tergerea unei coloane sau a unei constrngeri. Se poate opera numai asupra unui singur cmp sau index ntr-o singur| instruciune ALTER TABLE. Sintaxa pentru ad|ugarea unei coloane este: ALTER TABLE tabel ADD [COLUMN] tipdata [(dimensiune)]

Exemplu:

Ad|ugarea unei coloane noi Cantitate tabelului TArticoleNoi se face prin:

ALTERT TABLE TArticoleNoi ADD Cantitate SHORT; Sintaxa pentru ad|ugarea unei constrngeri este:

ALTER TABLE tabel ADD CONSTRAINT constrngere; Sintaxa pentru tergerea unei coloane este:

ALTER TABLE tabel DROP [COLUMN] coloana;

0264-401667

[CONSTRAINT costrngere_coloan|_unic|];

Pt. cumparare viziteaza:

Cuvntul cheie UNIQUE face ca valorile indexului s| fie unice. PRIMARY permite crearea unui index cheie primar|. Toate indexurile cheie primar| sunt automat indexuri unice. IGNORE NULL oprete motorul Jet de la crearea unui index cu valori Null. DISALLOW NULL oprete utilizatorul s| introduc| o valoare Null n cmpul index.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

sau suna la:

320

Tratarea erorilor n VBA s - i Access SQL - cursul 12

Nu se poate terge o coloan| index dect dup| ce s-a ters indexul. Sintaxa pentru tergerea unui index este: ALTER TABLE tabel DROP CONSTRAINT index;

Instruciunea DROP

Se folosete pentru tergerea tabelelor sau a indexurilor. Are dou| forme sintactice. Sintaxa pentru tergerea unui tabel din baza de date este: DROP TABLE tabel;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Nu se poate terge un index care particip| ntr-o relaie dect dup| tergerea tuturor relaiilor n care particip|.

Sintaxa pentru tergerea unui index este: DROP INDEX index ON tabel;

Interog|ri SQL Pass-Through

0264-401667

NU COPIA !.

sau suna la:

Acest tip de interogare este transmis| neinterpretat| unui server de baze de date. Access-ul nu va verifica sintaxa, nu va interpreta i nici nu va traduce instruciunile acestei interog|ri SQL. Se creeaz| prin crearea unei interog|ri noi, apoi din Query, selectai SQL Specific i n final Pass-Through. O interogare normal| nu se poate converti n una Pass-Through.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

321

Programarea cu obiectul DAO - cursul 13

Obiectivele cursului 13
Dupa 7 parcurgerea acestui curs vet -i cunoas - te:
! ! !
! ! ! ! !

ce este o mulime de nregistr|ri;

cum se creeaz| o mulime de nregistr|ri;

cum se parcurge o mulime de nregistr|ri;

cum se utilizeaz| marcajele ntr-o mulime de nregistr|ri; cum se sorteaz| ntregistr|rile dintr-o mulime de nregistr|ri; cum se filtreaz| nregistr|rile dintr-o mulime de nregistr|ri; cum se editeaz| (adaug|, modific|, terg) datele dintr-o mulime de cum se creeaz| folosind VBA obiecte ale bazei de date.

nregistr|ri;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

cum se caut| o nregistare ntr-o mulime de nregistr|ri;

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

322

Programarea cu obiectul DAO - cursul 13

Lucrul cu mulimi de nregistr|ri (sets of records)

DBEngine.Workspaces(0).Databases(0) sau forma scurtat|:

DBEngine(0)(0)

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Pn| acum am folosit interfaa Access-ului pentru afiarea, manipularea i modificarea datelor din baz|. Uneori, aplicaiile trebuie s| aib| controlul direct asupra datelor pentru a putea derula anumite sarcini speciale. Limbajul de programare VBA mpreun| cu obiectele pentru accesul la date (DAO), asigur| un limbaj de manipulare al datelor, sumar prezentat n cursul 11. Cnd creai o baz| de date n Access 2000 acesta va presupune c| dorii s| folosii numai obiectul ADO (care va fi prezentat n cursul 14) i va include referine numai c|tre aceast| bibliotec|. Pentru c| pn| la inclusiv Access 97 politica Microsoft-ului a fost orientat| c|tre popularizarea lui DAO, voi descrie lucrul cu aceast| bibliotec|, apoi voi descrie i modul de lucrul cu ADO. Dac| n Access 2000 dorii s| folosii biblioteca DAO, n timp ce editai codul VBA, selectai din Tools pe Reference i ad|ugai Microsoft DAO 3.6 Object Library n lista referinelor selectate. Din cursul 11, cunoatei c| obiectul DBEngine - adic| motorul Jet - este la nivelul cel mai de sus n ierarhia DAO. Toate referinele la orice obiecte DAO ncep prin referirea obiectului DBEngine. n cadrul unei aplicaii, motorul Jet conine o colecie de unul sau mai multe obiecte. Fiecare obiect Workspace conine o colecie de unul sau mai multe obiecte Database. Fiecare obiect Database conine o colecie de obiecte TableDefs, care la rndul lor conin colecii de obiecte Fields .a.m.d. Un obiect particular se poate stoca ntr-o variabil| i poate fi manipulat prin intermediul acesteia. Pentru a referi baza de date curent| n DAO, soluia este plecarea din DBEngine i coborrea prin colecia Workspaces pn| la colecia Databases, unde prin Databases(0) Access-ul va referi tocmai baza de date curent|. Conform celor spuse exist| dou| metode de scriere pentru aceasta:

n plus Access-ul are i o funcie CurrentDB() care ntoarce o referin| la baza de date curent|. Jet-ul i Access-ul sunt dou| produse separate. Jet-ul furnizeaz| serviciile de tip baz| de date de care are Access-ul nevoie, dar Access-ul are i el la rndul lui un grup de servicii propriu bazat pe Jet care se folosete la proiectarea aplicaiilor din interiorul Access-ului. Access-ul furnizeaz| CurrentDB() pentru referirea bazei de date curente, iar Jet-ul furnizeaz| DBEngine.Workspaces(0).Databases(0) n acelai scop. n momentul de fa| exist| o problem| subtil| legat| de cele dou| metode de acces. CurrentDB() i DBEngine(0)(0) nu reprezint| intern acelai obiect, dei ambele se refer| la aceeai baz| de date. La fiecare folosire a lui CurrentDB() Access-ul creeaz| intern un obiect nou care se refer| la baza de date curent|. Dup| ce VBA execut| linia cu aceast| referin| Access-ul nchide automat referina c|tre baza de date (excepie face obiectul Recordset) motiv pentru care, din acel moment n continuare, orice referire la coleciile bazei de date curente vor fi invalide. Pentru codul care urmeaz|, n procedura AsaNu() cnd se ajunge la doc.Name apare o eroare fatal|. Obiectul din baza de date care a fost referit nu mai exist|, iar doc devine o referin| invalid|. Dac| ns| se folosete DBEngine(0)(0) n locul lui CurrentDB() procedura va lucra corect.

0264-401667

NU COPIA !.

sau suna la:

323

Programarea cu obiectul DAO - cursul 13

Sub AsaNu() Dim doc As Document Set doc = CurrentDb.Containers("Forms").Documents(0) Debug.Print doc.Name End Sub Sub AsaDa() Dim doc As Document Set db = CurrentDb()

Set doc = db.Containers("Forms").Documents(0) End Sub

Procedura AsaDa() lucreaz| de asemenea corect pentru c| se lucreaz| cu o variabil| de tipul baz| de date n locul unei simple referine. Cnd folosii numai Jet-ul pentru a accesa datele dintr-o baz| utilizai DBEngine(0)(0), dac| lucrai din Access, baza de date curent| poate fi referit| prin ambele metode. Baza de date referit| prin CurrentDb() este ntodeauna actualizat| la baza de date deschis| din Access. La utilizarea lui DBEngine(0)(0) trebuie apelat| metoda Refresh nainte de folosirea oric|ror obiecte din coleciile bazei de date. Pentru cei care lucreaz| n Access 2000, declaraiile de variabile din procedurile de mai sus se modific| astfel:

Pt. cumparare viziteaza:

Debug.Print doc.Name

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dim db As Database

http://www.east.utcluj.ro/mb/mep/antal

Declaraii n Access 2.0, 95 i 97

Declaraie n Access 2000 i 2002 Dim db As DAO.Database Dim doc As DAO.Document

Dim db As Database

Dim doc As Document

Obiectul mulime de nregistr|ri (recordset)

DAO asigur| trei feluri de mulimi de nregistrare, descrise n tabelul urm|tor mpreun| cu caracteristicile fiec|reia. Tip mulime de nregistr|ri Descriere Avantaje Dezavantaje

Table

Mulime de nregistr|ri pe baza unui tabel.

Poate folosi indexuri pentru c|ut|ri rapide; datele pot fi editate.

Se poate folosi numai pentru tabele locale Access, nu i n cazul tabelelor ataate.

0264-401667

NU COPIA !.

sau suna la:

324

Programarea cu obiectul DAO - cursul 13

Dynaset

Snapshot

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

O copie instantanee a unei mulimi de nregistr|ri, valorile sunt o copie fix| a datelor i nu poantori la acestea.

Poate fi folosit| numai pentru parcurgere n avans asigurnd creterea vitezei unor operaii.

http://www.east.utcluj.ro/mb/mep/antal

Mulime de poantori (pointers) referind datele unui tabel sau interog|ri din baza de date.

Poate include date din mai multe tabele locale sau ataate; poate folosi SQL; n majoritatea cazurilor datele pot fi editate.

n unele cazuri mulimea de ntregistrare nu se poate edita; nu permite c|ut|ri rapide pe baza de index.

Crearea unei mulimi de nregistr|ri

O mulime de nregistr|ri se creeaz| pn| la inclusiv Access 97 cu unul din grupurile de instruciuni: Dim rs As Recordset

Set rs = db.OpenRecordset(Sursa, Tip, Optiuni, BlocareEditare)

Set rs=obiect.OpenRecordset(Tip, Optiuni, BlocareEditare) n Access 2000 declaraia variabilei va fi de forma: Dim rs As DAO.Recordset

n primul caz mulimea se creeaz| pe baza variabilei db care este tipul obiect baz| de date. Parametrul Sursa specific| de unde vor veni datele i poate fi: un nume de tabel, un nume de interogare, o instruciune SQL. Pentru cel de al doilea exemplu, obiect este sursa de date i poate fi orice obiect al bazei de date care este deschis i ntoarce nregistr|ri: tabel, interogare sau alt| mulime de nregistr|ri. Parametrul Tip specific| tipul mulimii de nregistr|ri i poate lua valorile pe baza constantelor predefinite din tabelul care urmeaz|:

0264-401667

NU COPIA !.

sau

Pt. cumparare viziteaza:

Datele nu se pot edita; toate datele se citesc n mulime nainte de redarea controlului programului, deci nu vor reflecta modific|rile n regimul de lucru cu utilizatori multipli (multiuser); nu permite c|ut|ri rapide prin indexuri.

sau suna la:

325

Programarea cu obiectul DAO - cursul 13

Numele tipului mulime de nregistrare dbOpenTable dbOpenDynaset dbOpenSnapshot dbOpenForwardOnly

Descriere Deschiderea unei mulimi de nregistr|ri Table. Deschiderea unei mulimi de nregistr|ri Dynaset. Deschiderea unei mulimi de nregistr|ri Snapshot. Deschiderea unei mulimi de nregistr|ri care poate fi parcurs| numai n sensul avansului (forward-only).

Parametrul Optiuni controleaz| accesul n regimul de utilizatori multipli i comportamentul la actualizarea nregistr|rilor din mulime. Constantele predefinite se dau n tabelul care urmeaz|:

Constant| dbAppendOnly

dbSQLPassThrough dbSeeChanges

Face ca SQL-ul s| fie transferat direct server-ului pentru prelucrare (numai pentru tipul Snapshot). Jet-ul genereaz| o eroare dac| un alt utilizator modific| datele editate la momentul curent (numai pentru tipul Dynaset).

dbDenyWrite

dbDenyRead

dbForwardOnly

Mulimea nregistr|rilor se parcurge ntr-un singur sens, de la nceput la sfrit; se folosete cnd se face o singur| parcurgere a mulimii de nregistr|ri, caz n care datele nu se copiaz| ntr-o zon| temporar| de memorie, viteza de parcurgere fiind mult mai mare (numai pentru tipul Snapshot i nu se folosete n conjuncie cu dbOpenForwardOnly).

dbReadOnly

Utilizatorul poate vedea datele, ceilali ultilizatori le pot i modifica.

dbInconsistent

Permite actualiz|ri inconsistente (numai pentru tipul Dynaset cu folosirea lui dbInconsistent sau dbInconsistent).

sau suna la:

Ceilali utilizatori nu pot vizualiza datele tabelului (numai pentru tipul Table).

0264-401667

Ceilali utilizatori nu pot modifica sau ad|uga nregistr|ri, toate nregistr|rile tabelului vor fi blocate mpreun| cu cele ale celorlalte tabele care formeaz| sursa de date ale tipului Dynaset.

Pt. cumparare viziteaza:

Se pot ad|uga numai nregistr|ri noi (se aplic| numai tipului Dynaset).

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Descriere

NU COPIA !.

326

Programarea cu obiectul DAO - cursul 13

dbConsistent

Parametrul BlocareEditare controleaz| concurea utilizatorilor multipli pentru accesul la noua mulime de nregistr|ri. Urm|toarele constante sunt predefinite:

Constant| dbReadOnly

Descriere

nregistr|rile pot fi vizualizate de utilizatorul curent, alii le pot modifica (se folosete fie n Opiuni fie n BlocareEditare, dar nu simultan). Blocare pesimist|; o pagin| este blocat| la folosirea metodei Edit i va r|mne blocat| ct timp datele paginii sunt editate. Aceasta este opiunea implicit| pentru Jet.

dbPesimistic

dbOptimistic

Consistena i inconsistena actualiz|rilor

Moduri de creare a mulimilore de nregistrare


1.

Mulime de nregistr|ri creat| pe baza unui tabel sau interogare:

Dim db As Database

Dim rsClienti As RecordSet Dim rsVanzari As RecordSet Set db = CurrentDB()

Set rsClienti = db.OpenRecordset("TClienti", dbOpenTable)

0264-401667

NU COPIA !.

sau suna la:

La crearea unei mulimi de nregistr|ri bazat| pe mai multe tabele, implicit, Access-ul permite modific|ri numai n partea "muli" a asocierii. Aceasta se cunoate sub numele de actualizare consistent|. Dac| dorii actualizarea de cmpuri situate de ambele p|ri ale asocierii trebuie s| folosii opiunea dbInconsistent. Aceasta poate duce la violarea relaiilor dintre tabelele aplicaiei. Dac| ai activat integritatea referenial| pentru relaie i ai validat cascadarea actualiz|rilor, dbInconsistent i dbConsistent produc comportament identic. n acest caz integritatea referenial| este mai puternic| i actualizarea se va face i pentru cmpurile din partea muli mpreun| dac| se face actualizarea celor din parte unu.

Pt. cumparare viziteaza:

Blocare optimist|; o pagin| este blocat| numai la folosirea metodei Update fiind blocat| un timp foarte scurt corespunz|tor actualiz|rii datelor.

http://www.east.utcluj.ro/mb/mep/antal

Permite numai actualiz|ri consistente (numai pentru tipul Dynaset cu folosirea lui dbInconsistent sau dbInconsistent).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

327

Programarea cu obiectul DAO - cursul 13

Set rsVanzari = db.OpenRecordset("QVanzari", dbOpenDynaset) 2. Mulime de nregistr|ri creat| pe baza unui ir SQL:

Dim db As Database Dim rsClienti As RecordSet Dim sirSQL As String Set db = CurrentDB()

sirSQL="SELECT [Nume Client] AS Nume FROM TClienti" & _ "ORDER BY [Nume Client]"

Set rsClienti = db.OpenRecordset(sirSQL, dbOpenDynaset) 3. Mulime de nregistr|ri creat| pe baza unui tabel care blocheaz| accesul altor utilizatori la sursa de date: Dim db As Database

Dim rsClienti As RecordSet

Set db = CurrentDB()

Set rsClienti = db.OpenRecordset("TClienti", dbOpenTable,E dbDenyRead) 4. Mulime de nregistr|ri creat| pe baza unei definiii de interogare (QueryDef):

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Dim db As Database

Dim rs As RecordSet Dim qdf As QueryDef Dim pr As Parameter

Set db = CurrentDB()

Set qdf = db.QueryDefs("Nume Interogare") For Each pr In qdf.Parameters

pr.Value = Eval(pr.Name)

Next pr Set rs = qdf.OpenRecordSet(dbOpenDynaset)

0264-401667

NU COPIA !.

sau suna la:

328

Programarea cu obiectul DAO - cursul 13

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

5.

Mulime de nregistr|ri creat| pe baza unui formular:

Dim rsClienti As RecordSet

Set rsClienti = Forms![FClienti].RecordSetClone Proprietatea RecordsetClone a unui formular este o mulime de nregistr|ri de tip Dynaset care are ca surs| de date tabelul sau interogarea care este sursa de date a formularului.

Pt. cumparare viziteaza:

Codul prezentat este necesar atunci cnd dorim s| cre|m o mulime de nregistr|ri pe baza unei interog|ri despre care nu tim nimic pn| n momentul execuiei aplicaiei cnd ar putea fi necesar| furnizarea unor parametri din definiia interog|rii. F|r| acest cod ar trebui s| cunoatem n avans num|rul i valorile acestor parametri. Prin folosirea DAO toi parametri necesari pot fi evaluai nainte de crearea muimii de nregistr|ri. Obiectul QueryDef are colecia Parameters, unde fiecare element al coleciei este un parametru al interog|rii. Access-ul nu tie evalua valorile parametrilor cnd se creeaz| o mulime de nregistr|ri pe baza unei definiii de interogare, dei parametrii sunt cunoscui, singura modalitate de rezolvare fiind codul prezentat deja. De exemplu, dac| avem o interogare care are ca parametru cmpul Forms!FTContacte![Nume Contact], containerul QueryDef va conine un singur obiect parametru pentru care numele va fi Forms!FTContacte![Nume Contact].

http://www.east.utcluj.ro/mb/mep/antal

Ciclul parcurge toi parametri obiectului QueryDef (dac| acesta nu are parametri, ciclul nu se execut|). Pentru fiecare parametru, codul evalueaz| proprietatea Name folosind funcia Eval() i atribuie valoarea ntoars| propriet|ii Value a parametrului. n acest fel toate valorile parametrilor se evalueaz| f|r| a trebui cunoscut n avans num|rul lor.

Parcurgerea unei mulimi de nregistr|ri

Dup| ce au fost create, mulimile de nregistr|ri au ntotdeauna o nregistrare curent|. Cnd referim cmpurile mulimii de nregistr|ri, valorile obinute sunt cele ale nregistr|rii curente (current record). Exist| cazuri cnd poziia curent| este imediat naintea primei nregistr|ri sau imediat dup| ultima nregistrare din mulimea de nregistr|ri. n anumite cazuri speciale este posibil ca poziia curent| s| fie nedefinit|. Navigarea printre nregistr|rile mulimii se face cu metodele prezentate n tabelul care urmeaz|:

Numele metodei

Efect

MoveFirst MoveLast MoveNext

Deplasare pe prima nregistrare.

Deplasare pe ultima nregistrare. Deplasare pe nregistrarea urm|toare.

0264-401667

NU COPIA !.

sau suna la:

329

Programarea cu obiectul DAO - cursul 13

MovePrevious Move

Deplasare pe nregistrarea anterioar|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Metoda Move, permite deplasarea nainte sau napoi, cu un num|r de nregistr|ri, n raport cu nregistrarea curent| sau cu un marcaj. Dac| obiectul este de tipul Table, deplasarea se face pe baza valorilor indexului, care se poate modifica prin proprietatea Index. n lipsa unui index, ordinea nregistr|rilor este nedefinit|. Mulimile de nregistr|ri, prin propriet|ile AbsolutePosition i PercentPosition, permit citirea sau scrierea poziiei curente pe baza datelor din mulimea de nregistr|ri. Metodele MoveFirst, MoveLast, MoveNext, MovePrevius au o aciune evident|, pentru cazul lui Move ns| treaba devine ambigu|. Dac| rs este o mulime de nregistrare, atunci rs.Move nrrnduri [, nceput] specific| deplasarea peste nrrnduri (>0 deplasarea se face nainte, <0 deplasarea se face napoi), iar parametrul opional poate conine un marcaj salvat. Dac| marcajul nu este scris, Access-ul ncepe deplasarea de la nregistrarea curent|, altfel deplasarea este relativ| la marcaj. G|sirea num|rului de nregistr|ri din mulime

Proprietatea RecordCount permite aflarea num|rului de nregistr|ri dintr-o mulime. Ea stocheaz| num|rul de nregistr|ri accesate pn| la momentul curent din mulimea de nregistr|ri. Pentru g|sirea num|rului actual de nregistr|ri trebuie folosit| MoveLast, naintea citirii valori lui RecordCount. ntr-un regim cu mai muli utilizatori problema se complic|. Dac| datele sunt partajate ntre mai muli utilizatori i dac| mai muli utilizatori au deschis mulimi de nregistr|ri pe baza aceleiai surse de date, tergerile nu vor fi v|zute imediat ntre maini. n acest caz urm|torii pai vor fi urmai pentru aflarea num|rului de nregistr|ri: se folosete metoda Requery a obiectului mulime de nregistrare; se folosete metoda MoveLast pentru a ne deplasa la sfritul mulimii; se citete valoarea stocat| n RecordCount. Testarea limitelor mulimii de nregistr|ri

http://www.east.utcluj.ro/mb/mep/antal

Deplasare nainte sau napoi, relativ la un marcaj (bookmark).

Pt. cumparare viziteaza:

Orice mulime de nregistrare are propriet|ile BOF i EOF pentru a indica dac| nregistrarea curent| este la sfritul (EOF) sau nceputul (BOF) mulimii:

< la folosirea lui MovePrevious dac| prima nregistrare este curent|, BOF devine True i nu va mai exista rnd curent;

< dac| se folosete din nou MovePrevious, BOF r|mne True dar apare o eroare n execuie;

< la folosirea lui MoveNext, dac| ultima nregistrare este curent|, EOF devine True i nu va mai exista nregistrare curent|; < dac| se folosete MoveNext din nou, EOF r|mne adev|rat| dar se genereaz| o eroare n execuia ciclului.

Pentru ca s| tii la deschiderea unei mulimi de nregistr|ri, dac| aceasta are sau nu nregistr|ri, trebuie s| testai simultan propriet|ile BOF i EOF astfel (dac| BOF i EOF sunt

0264-401667

NU COPIA !.

sau suna la:

330

Programarea cu obiectul DAO - cursul 13

ambele True, mulimea nu are nregistr|ri):

'aici se ajunge numai daca 7 mult -imea are nregistr|ri End If

Deseori, n instruciunile de ciclare dorim s| test|m terminarea relu|rii operaiei ciclate, iar dac| mulimea nu are nregistr|ri ciclul nici m|car s| nu fie nceput, codul folosit pentru aceasta este: Do Until rs.EOF

'operaiile ciclate vin aici ...

'undeva aici se face i avansul la nregistrarea 'urm|toare, de exemplu cu rs.MoveNext Loop

C|utarea unor nregistr|ri specifice

Urm|toarele metode se pot folosi pentru localizarea unor nregistr|ri din mulimile de tipurile Dynaset sau Snapshot.

Numele metodei

FindFirst criteriu FindLast criteriu

G|sete prima nregistrare care satiface criteriul. G|sete ultima nregistrare care satisface criteriul.

FindPrevious criteriu

G|sete nregistrarea anterioar| care satisface criteriul.

Metodele Find necesit| specificarea unui criteriu de selecie de forma unei ecuaii ce conine nume de cmpuri care iau valori specifice. De exemplu, dac| dorim s| g|sim prima apariie a numelui "Ioan" scriem: rs.FindFirst "[Nume Contact] = 'Ioan' " Instruciunea With

Permite executarea unei serii de instruciuni ale unui singur obiect f|r| a specifica n mod repetat numele obiectului. Sintaxa instruciunii este: With obiect

0264-401667

NU COPIA !.

FindNext criteriu

G|sete urm|toarea nregistrare care satisface criteriul.

http://www.east.utcluj.ro/mb/mep/antal

If Not rs.BOF And Not rs.EOF Then

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Efect

sau suna la:

331 [instruct -iuni]

Programarea cu obiectul DAO - cursul 13

End With Dac| dorim, de exemplu s| g|sim toate contactele cu [Nume Contact] = Ioan atunci trebuie realizat un ciclu care parcurge toate nregistr|rile mulimii verificnd criteriul dorit dup| cum urmeaz|: sircriteriu = "[Nume Contact] = 'Ioan' "

.FindFirst sircriteriu Do While Not .NoMatch

Debug.Print ![Nume Contact] .FindNext sircriteriu

End With

Proprietatea NoMatch devine True de cte ori operaia Find nu reuete i poziia nregistr|rii curente devine nedefinit|. Dac| c|utarea are ca scop modificarea unor valori de cmpuri, folosirea unei interog|ri de aciune este mai eficient|. C|utarea n tabele

Metoda Seek se folosete pentru localizarea unei nregistr|ri dintr-o mulime indexat| de tipul Table care satiface un criteriu pentru indexul curent. Sintaxa ei este: rstabel.Seek operatorcomp. cheie1, cheie2 ...

Pt. cumparare viziteaza:

Loop

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

With rs

http://www.east.utcluj.ro/mb/mep/antal

rstabel este o variabil| mulime de nregistr|ri care refer| tabelul n care se va c|uta. Primul parametru, operatorcom, este un ir de caractere ce specific| operatorul de comparaie i poate fi: "=", "<=", "<", ">=", ">". Argumentele cheie sunt una sau mai multe valori pe care VBA le compar| cu valorile indexului din tabel. Dac| indexul este format dintr-un singur cmp atunci se folosete pentru comparaie numai valoarea cheie1, dac| indexul este format din dou| cmpuri, atunci se folosesc pentru comparaie valorile cheie1 i cheie2, etc. Indexul curent trebuie stabilit explicit nainte de folosirea lui Seek. Dac| indexul localizeaz| un cmp cheie cu valoarea neunic|, Seek va g|si prima nregistrarea care satisface criteriul. Sub SeekIndex() Dim db As Database

0264-401667

NU COPIA !.

sau suna la:

332

Programarea cu obiectul DAO - cursul 13

Dim rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset("TContacte", dbOpenTable)

rs.Index = "IDContact" rs.Seek "=", 1

If Not rs.NoMatch Then Debug.Print rs![Nume Contact]

Do Until Not rs.NoMatch

Debug.Print rs![Nume Contact] rs.Seek "=", 1 Loop

rs.Close

End Sub

Utilizarea marcajelor (bookmark)

n Access, nregistr|rile unei mulimi de nregistr|ri sunt o submulime a nregistr|rilor unor tabele. Pentru c| num|rul actual de nregistr|ri se poate modifica oricnd, mai ales n regim de lucru cu mai muli utilizatori, nu exist| un num|r absolut care s| specifice poziia unei nregistr|ri particulare. Motorul Jet, are o proprietate Bookmark sau marcaj, care permite p|strarea i poziionarea rapid| pe nregistrarea curent| dintr-o mulime de nregistr|ri. Fiecare mulime de nregistr|ri are o singur| nregistrare curent|. Pentru a stoca poziia acesteia se poate stoca marcajul rndului respectiv care este un ntreg pe 4 bii unic, generat de sistem, pentru fiecare nregistrare. Valoarea numeric| a marcajului are o semnificaie numai pentru Access, ea nu se poate folosi n cadrul unor expresii aritmetice. Pentru a salva valoarea unui marcaj se atribuie unei variabile de tipul Variant valoarea propriet|ii Bookmark. Pentru a seta valoarea unui marcaj, se seteaz| valoarea propriet|ii Bookmark la valoarea variabilei. Num|rul marcajelor pentru o mulime de nregistr|ri este nelimitat. Acestea asigur| viteza de manevr| cea mai mare cu nregistr|rile mulimii. De exemplu, dac| dorii s| v| poziionai de pe nregistrarea curent| pe alta, apoi s| revenii, putei lucra prin dou| metode: stocai valoarea cheii primare - v| poziionai pe o alt| nregistrare, apoi folosii una dintre metodele Seek sau FindFirst pentru a reveni la nregistrarea original| pe baza valorii cheii primare salvate; stocai valoarea marcajului - v| poziionai pe o alt| nregistrare, apoi folosii marcajul pentru a reveni la nregistrarea original|. Dac| de exemplu, dorim s| folosim marcajul nregistr|rii curente dintr-o mulime la care apoi s| revenim, codul va fi ceva de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

333

Programarea cu obiectul DAO - cursul 13

Dim bm As Variant

bm= rs.Bookmark

rs.MoveFirst 'Pozit -ionare pe prima nregistrare 'Realizat -i ca 7utarea dorita 7 ....

rs.Bookmark=bm

Dup| nchiderea mulimii de nregistr|ri prin folosirea metodei Close valoarea marcajului devine invalid|.

nregistr|rile unei mulimi de nregistr|ri apar n ordinea introducerii lor n baza de date. Dac| se dorete afiarea datelor ntr-o ordine specific| se pot folosi mai multe metode de sortare. Sortarea prin folosirea propriet|ii Index

Procedura care urmeaz| afieaz| cmpurile indexate, n ordinea specific|rii indexurilor pentru tabel. Indexurile tabelului cu numele stocat n variabila NumeTabel se obin prin parcurgerea colecie de indexuri a obiectului TableDef. Pentru fiecare index din colecie, este extras numele lui i numele cmpului indexat mpreun| cu valorile cmpului indexat corespunz|tor fiec|rei nregistr|ri din mulimea de nregistrare. Sub AfisareCampuriIndexate(NumeTabel As String) Dim db As Database Dim rs As Recordset Dim tdf As TableDef Dim id As Index Dim fl As Field

0264-401667

NU COPIA !.

nregistr|rile unui tabel se pot extrage pe baza valorii oric|rui index, inclusiv pe baza cheii primare. Specificarea ordinii de sortare se face dnd propriet|ii Index a variabilei mulime de nregistr|ri (recordset), mai jos rs, numele unui index al tabelului, mai jos id. Imediat dup| setarea acestei propriet|i, nregistr|rile apar n noua ordine. Dup| modificarea indexului, Access-ul se pare c| face prima nregistrare ca nregistrare curent|, ns| acest comportament nu este documentat. Dac| proprietatea Index este setat| la un index inexistent se va genera o eroare care va putea fi tratat| conform procedurilor din cursul anterior.

Pt. cumparare viziteaza:

Sortarea nregistr|rilor dintr-o mulime de nregistr|ri

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

'Pentru revenire la nregistrarea originala 7

http://www.east.utcluj.ro/mb/mep/antal

sau suna la:

334

Programarea cu obiectul DAO - cursul 13

Dim sircamp As String

Set db = CurrentDb()

Set tdf = db.TableDefs(NumeTabel)

Set rs = db.OpenRecordset(NumeTabel, dbOpenTable) For Each id In tdf.Indexes

Debug.Print "Index este: "; rs.Index rs.MoveFirst

Do While Not rs.EOF

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

rs.Index = id.Name

For Each fl In id.Fields

sircamp = sircamp & vbTab & rs(fl.Name)

Next fl

Debug.Print sircamp sircamp = "" rs.MoveNext

Loop Next id

End Sub

Pentru a testa procedura de mai sus, folosind baza de date ex1.mdb, care conine tabelul cu numele TContacte, scriem AfisareCampuriIndexate "TContacte" n fereastra imediat|. Sortarea prin folosirea clauzei SQL ORDER BY

Cnd datele unei mulimi de nregistr|ri vin din mai multe tabele problema ordinii nregistr|rilor este mai complicat|. O variant| pentru sortare este folosirea SQL-ului. De exemplu, pentru sortarea ascendent| a nregist|rilor unui tabel TContacte folosind codul: Dim db As Database

0264-401667

NU COPIA !.

rs.Close

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

335

Programarea cu obiectul DAO - cursul 13

Dim rs As Recordset

n acest caz, mulimea de nregistr|ri poate fi creat| numai folosind un obiect baz| de date i un ir SQL, iar mulimea de nregistr|ri rezultat| este implicit de tip Dynaset (eventual de tip Snapshot dac| se cere explicit aceasta). Sortare folosind proprietatea Sort

Metoda se poate aplica pentru tipurile de mulime de nregistr|ri Dynaset i Snapshot prin setarea propriet|ii Sort folosind un criteriu asem|n|tor cu cel al clauzei ORDER BY. Se va specifica cmpul pe baza c|ruia se face sortarea, opional tipul cresc|tor sau descresc|tor al sort|rii. Cteva exemple de setare a propriet|ii Sort sunt: rs.Sort = "[Nume Contact]" rs.Sort = "[Nume Contact] ASC"

rs.Sort = "[Nume Contact] DESC"

La folosirea propriet|ii Sort trebuie reinute:

noua ordine de sortare are efect numai la crearea unei noi mulimi de nregistr|ri, bazat| pe cea veche, un cod care ilustreaz| aceast| modalitate de lucru fiind: Dim db As Database

Dim rs As Recordset

http://www.east.utcluj.ro/mb/mep/antal

set rs=db.OpenRecordset("SELECT * FROM TContacte ORDER BYE [Nume Contact];")

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Set db = CurrentDb()

Set rs = db.OpenRecordset("TContacte")

rs.Sort = "[Nume Contact] DESC"

Set rssortat = rs.OpenRecordset()

proprietatea nu se aplic| unei mulimi de nregistrare de tipul Table, n acest caz se folosete proprietatea Index.

Filtrarea mulimilor de nregistr|ri

sau suna la:

Dim rssortat As Recordset

0264-401667

NU COPIA !.

336

Programarea cu obiectul DAO - cursul 13

Este posibil| i filtrarea nregistr|rilor care vor face parte din mulimea de nregistr|ri, n continuare fiind prezentate dou| metode cu avantajele i dezavantajele lor.

Filtrarea folosind clauza SQL WHERE

Se poate crea o mulime de nregistr|ri prin folosirea instruciunii SQL cu clauza WHERE astfel: Sub Filtrare()

Dim db As Database Dim rs As Recordset Dim fl As Field

Set db = CurrentDb()

Set rs = db.OpenRecordset( _

"SELECT * FROM TContacte WHERE [Nume Contact] Like 'A*';")

Do While Not rs.EOF

For Each fl In rs.Fields

Debug.Print fl.Name; " = "; rs(fl.Name).Value

Next fl

Loop

rs.Close

End Sub

Metoda se poate folosi numai cnd cre|m mulimea de nregistr|ri utiliznd un obiect al bazei de date, spre deosebire de celelalte variante de OpenRecordset unde se pot folosi tabele, interog|ri sau alte mulimi de nregistr|ri. Filtrarea prin proprietatea Filter

Mulimile de nregistr|ri cu tipurile Dynaset i Snapshot pot fi filtrate utiliznd proprietatea Filter. Aceasta este un ir de caractere, identic cu cel folosit n clauza WHERE. Filtrarea va avea efect la urm|toarea creare a unei mulimi de ntergistr|ri.

0264-401667

rs.MoveNext

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

337

Programarea cu obiectul DAO - cursul 13

Sub Filtrare1() Dim db As Database Dim rs As Recordset, rsFil As Recordset Dim fl As Field

Set db = CurrentDb()

Set rs = db.OpenRecordset("TContacte", dbOpenDynaset)

Set rsFil = rs.OpenRecordset()

Do While Not rsFil.EOF For Each fl In rsFil.Fields

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

rs.Filter = "[Nume Contact] Like 'A*'"

Debug.Print fl.Name; " = "; rsFil(fl.Name).Value

Next fl

rsFil.MoveNext Loop

rs.Close

rsFil.Close

Editarea datelor unei mulimi de nregistr|ri

Datele unei mulimi de nregistr|ri se pot modifica sau nu n funcie de permisiuni. La deschiderea mulimii de nregistr|ri este posibil ca datele s| nu se poat| modifica ci numai vizualiza. ncercarea de a modifica aceste date duce la o eroare de execuie a aplicaiei care se poate trata prin cod. Mulimile de nregistr|ri de tipul Table i Dynaset pot fi ntotdeauna editate cu excepia cazului n care altcineva a blocat tabelul (prin folosirea opiunilor de blocare prezentate). La Dynaset n plus, regulile de asociere pot opri editarea anumitor cmpuri. Cele de tipul Snapshot nu se pot modifica prin definiie. Modificarea unei nregistr|ri existente 1. 2.

Modificarea unei nregistr|ri existente decurge n patru pai: Poziionai-v| pe nregistrare (cu Move sau Find);

Folosii metoda Edit pentru punerea nregistr|rii curente n modul de editare;

0264-401667

NU COPIA !.

End Sub

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

338

Programarea cu obiectul DAO - cursul 13

3. 4.

Realizai modific|rile; Folosii metoda Update pentru salvarea modific|rilor.

Sub EditareRand() Dim db As Database Dim rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset("TContacte", dbOpenDynaset)

With rs

.FindFirst "[Nume Contact] = 'Grisa Marius'" If .NoMatch Then vbCritical MsgBox "Nu exista persoana de contact !",E

Else

.Edit

![Nume Contact] = "Grigore Mariuta" .Update

End If

End With

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

rs.Close

End Sub

Ad|ugarea unei nregistr|ri noi

Ad|ugarea unei nregistr|ri ntr-o mulime de tipul Dynaset sau Table se face n trei pai:

1. Folosii metoda AddNew pentru ad|ugarea noii nregistr|ri. Toate cmpurile vor lua valorile implicite; 2. Atribuii valorile dorite cmpurilor; 3. Folosii metoda Update pentru a salva noua nregistrare.

Sub AdaugareRand() Dim db As Database

0264-401667

NU COPIA !.

sau suna la:

339

Programarea cu obiectul DAO - cursul 13

Dim rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset("TContacte", dbOpenDynaset)

With rs .AddNew

.Update End With

rs.Close End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

![Nume Contact] = "Sebastian Corina"

La folosirea metodei AddNew nregistrarea curent| nu se modific| dup| ad|ugarea noii nregistr|ri. Dac| dorii ca noua nregistrare s| devin| cea curent| folosii metoda Move avnd ca parametru marcajul ntors de proprietatea LastModified a mulimii de nregistr|ri. Pentru mulimea de nregistr|ri de tipul Dynaset, Access plaseaz| ntotdeauna noua nregistrare la sfritul mulimii i la cap|tul tabelului care este sursa de date. n cazul mulimii de nregistr|ri de tipul Table, dac| este definit un index, Access plaseaz| nregistrarea n poziia corespunz|toare valorii indexului.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

tegerea unui rnd dintr-o mulime de nregistr|ri se face parcurgnd paii:


1. Poziionai-v| pe nregistrarea (rndul) dorit|; 2. Folosii metodai Delete pentru tergerea lui.

Dup| tergerea unei nregistr|ri aceasta continu| s| r|mn| nregistrarea curent|, este necesar| folosirea lui MoveNext pentru a trece la urm|torul rnd.

O modalitate de tergere a tuturor nregistr|rilor dintr-un tabel este codul care urmeaz|, dei n practic| metoda cea mai bun| este folosirea unei interog|ri pentru tergere: Sub StergeRandurileUnuiTabel(NumeTabel As String) Dim db As Database

sau suna la:

tergerea unor nregistr|ri dintr-o mulime de nregistr|ri

0264-401667

NU COPIA !.

340

Programarea cu obiectul DAO - cursul 13

Dim rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset(NumeTabel)

With rs If .RecordCount > 0 Then

End If .Close End With End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

.MoveFirst Do

.Delete .MoveNext

Loop Until .EOF

Modificarea unui grup de nregistr|ri

Modificarea unui grup de nregistr|ri se poate realiza folosind instruciunile de ciclare prezentate, dar cea mai eficient| metod| r|mn interogarile de actualizare sau tegere. Dac| dorim s| modific|m toate numerele de telefoane care ncep cu cifra 1 la cifra 2 se poate folosi codul: Sub Modifica()

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Dim db As Database

Dim qdef As QueryDef Dim sirSQL As String

Set db = CurrentDb()

Set qdef = db.CreateQueryDef("") 'Crearea interogarii

sirSQL = "UPDATE TContacte1 SET TContacte1.[Info Contact] = "

sirSQL = sirSQL + """2"" & Right([Info Contact],Len([InfoE Contact]-1))"

sirSQL = sirSQL + " WHERE ((Left([Info Contact],1)=""1""));"

0264-401667

NU COPIA !.

sau suna la:

341

Programarea cu obiectul DAO - cursul 13

qdef.SQL = sirSQL 'Definirea proprietatii SQL

qdef.Execute 'Lansarea interogarii qdef.Close 'Inchiderea interogarii

End Sub O alt| variant| de scriere a codului se mai sus este: Sub Modifica1()

Dim db As Database

Dim qdef As QueryDef Dim sirSQL As String

Set db = CurrentDb()

Set qdef = db.CreateQueryDef() 'Crearea interogarii qdef.Name = "Interogare de actualizare (update)" sirSQL = "UPDATE TContacte1 SET TContacte1.[Info Contact] = " sirSQL = sirSQL + """7"" & Right([Info Contact],Len([InfoE ontact]-1))"

db.QueryDefs.Append qdef 'Adaugarea interogarii

qdef.Execute 'Lansarea interogarii qdef.Close 'Inchiderea interogarii

db.QueryDefs.Delete qdef.Name 'Stergerea interog|rii

End Sub

Dac| metoda Append primete orice ir nevid (diferit de "" sau f|r| a fi scris), obiectul rezultat este automat ad|ugat coleciei QueryDefs, altfel obiectul rezultat este temporar.

sau suna la:

qdef.SQL = sirSQL 'Definirea proprietatii SQL

0264-401667

sirSQL = sirSQL + " WHERE ((Left([Info Contact],1)=""1""));"

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

342

Programarea cu obiectul DAO - cursul 13

Modificarea datelor prin tranzacii

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Termenul de prelucrarea a tranzaciilor (transaction) se refer| n bazele de date la gruparea modific|rilor aduse datelor n secvene speciale care sunt tratate asemenea unei singure operaii. Un astfel de grup reuete dac| fiecare operaie a grupului reuete i atunci spunem c| tranzacia (commit) a reuit. Dac| oricare dintre operaiile de modificare ale grupului nu reuete, toate modific|rile aduse datelor se refac (roll back) la valorile avute naintea nceperii tranzaciei i spunem c| tranzacia nu a reuit. Access-ul lucreaz| cu trei metode pentru prelucrarea tranzaciilor BeginTrans - pentru nceperea unei noi tranzacii, CommitTrans - pentru salvarea tuturor modific|rilor f|cute datelor de la cea mai recent| BeginTrans i Rollback - pentru anularea tuturor modific|rilor f|cute datelor de la cel mai recent BeginTrans. Cele trei metode sunt ale obiectului Workspace, iar codul care urmeaz| este un ablon pentru folosirea acestora n derularea tranzaciilor: On Error GoTo Tratare_Eroare

Dim ws As WorkSpace

Dim StareTr As Boolean

StareTr = False

Set ws = DBEngine.Workspaces(0) . . .

http://www.east.utcluj.ro/mb/mep/antal

Definiiile de interogare temporare se folosesc n cazul unor iruri SQL pentru obiectele care nu dorim s| devin| permanente, de exemplu, pentru c| ele la fiecare repetare se modific| puin. Dac| o definiie de interogare exist|, nu se poate crea o alta cu acelai nume dect dac| prima este tears| - cea de a dou| procedur| exemplific| acest mod de lucru.

Pt. cumparare viziteaza:

StareTr=True

ws.CommitTrans StareTr=False . . .

Tratare_Eroare:

if StareTr then ws.Rollback

End If

' alte prelucrari

sau suna la:

ws.BeginTrans

0264-401667

NU COPIA !.

343

Programarea cu obiectul DAO - cursul 13

Definiia datelor cu DAO


O baz| de date poate fi creat| i prin folosirea exclusiv| a metodelor DAO Create... i Append. Acestea permit crearea tuturor obiectelor ce alc|tuiesc o baz| de date.

Crearea obiectelor bazelor de date


Pentru crearea unui obiect nou se parcurg paii:

1. Folosii una din metodele Create... pentru a crea obiectul (CreateTable, CreateField, CreateIndex, CreateQueryDef, CreateRelation, ...);

3. Folosii metoda Append pentru ad|ugarea obiectului la colecia din care face parte pentru a-l face permanent parte a bazei de date. Cnd obiectul conine la rndul lui noi obiecte, de exemplu tabelul conine cmpuri, trebuie creat obiectul primar, se creeaz| subobiectele care fac parte din acesta i se adaug| la colecia corespunz|toare, iar n final obiectul primar se adaug| i el coleciei corespunz|toare lui. Crearea unui tabel

Pt. cumparare viziteaza:

2. Definii caracteristicile noului obiect prin setarea propriet|ilor lui. Unele propriet|i, de exemplu numele, sunt obligatoriu de setat la crearea obiectului, altele pot fi setate mai trziu. Majoritatea metodelor Create... au argumente opionale care permit specificarea propriet|ilor obligatorii ale noului obiect;

http://www.east.utcluj.ro/mb/mep/antal

n cazul formularelor legate Access-ul are propria lui metod| de tratare a tranzaciilor, din acest motiv nu se pot folosi tranzacii n proceduri de evenimente pentru a grupa modific|rile aduse datelor prin intermediul formularului.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

1 Sub CreeazaTabelTel() 2 3 4 5 6 7 8 9 10

Dim db As Database Dim tdf As TableDef Dim fl1 As Field Dim fl2 As Field Dim fl3 As Field

Set db = CurrentDb()

Set tdf = db.CreateTableDef("") tdf.Name = "TAdrese"

sau suna la:

S| presupunem c| dorim s| cre|m un tabel nou numit TAdrese care are cmpurile AdreseID, Tip adresa, Adresa folosii codul:

0264-401667

344

Programarea cu obiectul DAO - cursul 13

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Set fl1 = tdf.CreateField("AdreseID", dbLong) Set fl2 = tdf.CreateField("Tip adresa", dbText, 30) Set fl3 = tdf.CreateField("Adresa", dbText, 100)

With tdf.Fields .Append fl1

.Append fl3 End With

With db.TableDefs .Append tdf .Refresh End With

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

.Append fl2

Application.RefreshDatabaseWindow

28 End Sub

Tabelul metodelor Create...

Fiecare obiect DAO poate fi creat prin program prin metoda Create... asociat| din tabelul care urmeaz|:

Obiect

Metod|

Argume nte Nume

Tip de dat|

Descriere

Tabel (Table)

CreateTableDef

String

Numele noului tabel.

0264-401667

NU COPIA !.

sau suna la:

Pn| la atingerea liniei 14 tabelul i cele trei cmpuri exist| numai n memorie. Pentru ca aceste obiecte s| devin| permanente trebuie folosit| metoda Append care le va ad|uga unor colecii f|cndu-le permanente. Pentru cmpuri, ad|ugarea se face n liniile 16-20, iar pentru tabel, n liniile 22-25. n linia 24 se folosete metoda Refresh prin care se actualizeaz| coninutul coleciei, noul tabel devenind numai n acest mod disponibil i pentru ali utilizatori care lucreaz| cu aceeai baz| de date (regim multiuser). Dei tabelul este disponibil pentru utilizare, Access-ul nu remprosp|teaz| coninutul fereastrei bazei de date dect dac| ne poziion|m pe o alt| colecie i apoi revenim pe cea a tabelelor. Pentru a rezolva aceast| problem| se folosete metoda RefreshDatabaseWindow a obiectului aplicaie.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

345

Programarea cu obiectul DAO - cursul 13

Atribute

Integer

Surs|

http://www.east.utcluj.ro/mb/mep/antal

Set|ri pentru tabele ataate, de sistem i ascunse. Sursa de date a unui tabel ataat. Calea c|tre tabelul care este sursa de date a tabelului ataat. Numele noului cmp. Tipul de dat| al noului cmp. M|rimea cmpului dac| este de tipul text. Numele noului index. Numele noii interog|ri. Un ir QL valid care definete noua interogare. Numele noii relaii.

String String

Conexiun e

Cmp (Feld)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

CreateFiled

Nume Tip

String

Integer Integer

M|rime

Index

CreateIndex

Pt. cumparare viziteaza:

Nume

String String

Interogare (Query)

CreateQueryDef

Nume

TextSQL

String

Relat -ie (Relation)

CreateRelation

Nume Tabel

String

Tabel asociat

String

Numele cheii str|ine din tabelul asociat. Setarea tipului de relaie, forarea intergrit|ii relaionale. Numele noului spaiu de lucru.

Atribute

Integer

Spat -iu de lucru (Workspace)

CreateWorkspace

Nume

String

Utilizator

String

Numele unui utilizator existent. Acesta va deveni proprietarul noului spaiu de lucru.

0264-401667

NU COPIA !.

String

sau suna la:

Numele cheii primare din relaie.

346

Programarea cu obiectul DAO - cursul 13

Parol| Tip

String Long

Parola pentru noul spaiu de lucru. Valoare care indic| sursa datelor (Jet sau ODBCDirect). Numele fiierului care va conine baza de date.

7 de date Baza (Database)

CreateDatabase

Nume

http://www.east.utcluj.ro/mb/mep/antal

String

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Indirecte

String

ir care specific| date colaterale (limb|, parol| implicit|).


Valoare care definete dac| noua baz| de date este sau nu incriptat| i versiunea de Jet folosit| la stocarea fiierelor. Numele noului grup. Identificator personal al noului grup. Numele noului utilizator.

Opiuni

Integer

Grup (Group)

CreateGroup

Pt. cumparare viziteaza:

Nume PID

String String

Utilizator (User)

CreateUser

Nume PID

String String

Parol|

String

Crearea unui Index

Este posibil ca ntr-o aplicaie s| fie necesar| crearea unui index prin program. Etapele necesare pentru aceasta sunt:

1. Folosii metoda CreateIndex a obiectului TableDef pentru a crea obiectul index, iar proprietatea Name va fi setat| la acest obiect; 2. Atribuii valori propriet|ilor noului index. Ct timp indexul nu a fost ad|ugat unui obiect index toate propriet|ile lui pot fi setate dup| cum dorim. n general vor fi setate propriet|ile Name, Primary, Unique i Required. Dac| obiectul index a fost ad|ugat unei colecii, propriet|ile lui nu mai pot fi modificate fiind necesar| tergerea lui i crearea

sau suna la:

Identificator personal al noului utilizator.

Parola pentru noul obiect utilizator.

0264-401667

NU COPIA !.

347

Programarea cu obiectul DAO - cursul 13

unui obiect index nou n cazul n care am uitat s|-i set|m una dintre propriet|i;

4. Folosii metoda Append a obiectului TableDef pentru ad|ugarea index-ului n colecia Indexes.
1 Function CreareCheiePrimara(NumeTabel As String, NumeCheieP E 2 As String, ParamArray VectorParametri() As Variant) As E 3 Boolean 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Dim id As Index

Dim tdf As TableDef Dim fld As Field

Dim varCP As Variant Dim varid As Variant

Dim db As Database

On Error GoTo CreareaCheieP_Eroare

Set db = CurrentDb()

Set tdf = db.TableDefs(NumeTabel) Set ids = tdf.Indexes

Pt. cumparare viziteaza:

Dim ids As Indexes

http://www.east.utcluj.ro/mb/mep/antal

3. Paii 1 i 2 se reiau pentru toate cmpurile care vor fi parte a indexului, iar fiecare cmp index va fi ad|ugat coleciei Fields;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

If Not IsNull(varCP) Then ids.Delete varCP

End If

Set id = tdf.CreateIndex(NumeCheieP)

id.Primary = True

For Each varid In VectorParametri AdaugaCamp id, varid Next varid

sau suna la:

varCP = GasesteCheiaPrimara(tdf)

0264-401667

NU COPIA !.

348

Programarea cu obiectul DAO - cursul 13

30 31 32 33 34 CreareaCheieP_Iesire: 35 36

ids.Append id CreareCheiePrimara = True

Exit Function

38 MsgBox "Eroare: " & Err.Description & " (" & Err.Number &E 39 ")" 40 41

CreareCheiePrimara = False Resume CreareaCheieP_Iesire

42 End Function

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

37 CreareaCheieP_Eroare:

1 Private Function GasesteCheiaPrimara(tdf As TableDef) As E 2 Variant 3 4 5 6 7 8

Dim id As Index

For Each id In tdf.Indexes If id.Primary Then

GasesteCheiaPrimara = id.Name Exit Function

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

9 10 11 12

End If

Next id

GasesteCheiaPrimara = Null

13 End Function

1 Private Function AdaugaCamp(id As Index, varid As Variant) AsE 2 Boolean 3 4 5 6 7

Dim fld As Field

On Error GoTo AdaugaCamp_Eroare If Len(varid & "") > 0 Then

Set fld = id.CreateField(varid)

0264-401667

sau suna la:

349

Programarea cu obiectul DAO - cursul 13

8 9 10 11

id.Fields.Append fld End If AdaugaCamp = True

12 AdaugaCamp_Iesire: 13 14

Exit Function

16 17

AdaugaCamp = False Resume AdaugaCamp_Iesire

18 End Function

Sub TestCreareCP()

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

15 AdaugaCamp_Eroare:

Debug.Print CreareCheiePrimara("TAdrese", "CheiePrimata",E "AdreseID", "Tip adresa") End Sub

O procedur| de tip funcie sau subprogram poate avea ultimul parametru precedat de cuvntul opional ParamArray i urmat de paranteze rotunde (). n acest fel parametrul se definete ca un tablou cu elemente de tipul Variant. Aceasta este metoda disponibil| n VBA pentru a transfera unei funcii un num|r variabil de argumente.

Funcia GasesteCheiaPrimara() are ca parametru de intrare o definiie de tablou i are rolul de a g|si numele cheii primare dac| aceasta exist|. Rezultatul ntors este numele cheii primare sau Null n cazul cnd aceasta nu exist|. Funcia AdaugaCamp() adaug| un obiect cmp unui obiect index. Rezultatul ntors este True n caz de reuit| sau False altfel.

Crearea unei relaii Pentru crearea unei relaii se va folosi metoda CreateRealtion a obiectului baz| de date

0264-401667

NU COPIA !.

Funcia CreareCheiePrimara() creeaz| cheia primar| cu numele NumeCheieP a unui tabel numit NumeTabel. n liniile 17-20 se caut| dac| tabelul are cheie primar|, iar dac| aceasta exist| este tears| i n linia 22 se creeaz| un nou index. Linia 24 seteaz| noul index drept cheie primar| mpreun| cu propriet|ile: IgnoreNulls = False, Required=True, Unique=True. n liniile 26-28 nou createle cmpuri care formeaz| indexul se adaug| coleciei Fields. n final, prin linia 30 se adaug| noul index coleciei Index a definiiei de tabel TableDef.

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

350

Programarea cu obiectul DAO - cursul 13

urmnd paii: 1. 2. 3. Deschidei baza de date n care se va crea relaia; Folosii metoda CreateRelation pentru crearea obiectului relaie;

4. Creai un obiect cmp pentru fiecare cmp de cheie primar| a tabelului primar. Pentru fiecare obiect cmp se seteaz| proprietatea ForeignName ce corespunde numelui corespunz|tor din tabelul ataat; 5. Folosii metoda Append pentru ad|ugarea noi relaii n colecia Relations a bazei de date. Tabelul care urmeaz| prezint| constantele predefinite care pot fi date propriet|ii Attributes a obiectului relaie:

Constant| dbRelationUnique

dbRelationDontEnforce dbRelationInherited dbRelationLeft

dbRelationRight

Pt. cumparare viziteaza:

Relaia este 1 1.

Integritatea referenial| nu este activat|. Relaia dintre tabele este definit| ntr-o baz| de date extern|. Relaia este de tip asociere la stnga extern|, aceasta include toate nregistr|rile din primul tabel (cel din stnga), inclusiv cele care nu au un corespondent n cel de al doilea tabel. Relaia este de tip asociere la dreapta extern|, aceasta include toate nregistr|rile din cel de al doilea tabel (cel din dreapta), inclusiv cele care nu au un corespondent n primul tabel. Actualiz|rile vor fi cascadate.

http://www.east.utcluj.ro/mb/mep/antal

Se verific| dac| tabelul primar are o cheie primar|;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Descriere

dbRelationUpdateCascade

dbRelationDeleteCascade

tergerile vor fi cascadate.

Proprietatea este setat| f|cnd suma constantelor prezentate. Majoritatea programatorilor folosesc operatorul pe bii Or pentru "adunarea" constantelor n scopul evidenierii faptului c| nu este vorba de o simpl| expresie aritmetic|. Dac| proprietatea Attributes nu este setat| de c|tre programator, Access-ul creeaz| o relaie de tipul 1 M intern| (particip| numai nregistr|rile care au valori identice n cmpurile asociate) cu integritatea referenial| activat|. Funcia care urmeaz| creeaz| o relaie 1 M cu asociere la stnga extern| ntre tabelele TContacte i TAdrese avnd tergerea cascadat|. Function CreeazaRelatie() As Boolean Dim db As Database

0264-401667

NU COPIA !.

sau suna la:

351

Programarea cu obiectul DAO - cursul 13

Dim rel As Relation Dim fld As Field

On Error GoTo CreazaRelatie_Eroare

Set db = CurrentDb()

Set rel = db.CreateRelation("Relatia1", "TContacte", E "TAdrese", dbRelationLeft Or dbRelationDeleteCascade)

Set fld = rel.CreateField("IDContact") fld.ForeignName = "AdreseID" rel.Fields.Append fld

db.Relations.Append rel

CreazaRelatie = True

CreazaRelatie_Iesire: Exit Function

CreazaRelatie_Eroare:

NU COPIA !.

")"

CreazaRelatie = False

Resume CreazaRelatie_Iesire

End Function

Ataarea tabelelor din bazele de date externe

Pe lng| posibilitatea definirii de noi tabele, exist| posibilitatea ata|rii unor tabele din baze de date externe. La ataarea unui tabel extern, informaia de conectare este stocat| n baza de date Access, iar conectarea are loc automat la deschiderea bazei de date. Datele ns| vor r|mne stocate n baza de date extern|. Dup| ataare, aceste tabele pot fi folosite asemenea tabelelor interne ale Access-ului ns| nu se pot crea obiecte Recordset de tipul Table pe baza lor. Proprietatea Connect a obiectului TableDef permite controlul tabelelor ataate mpreun| cu proprietatea SourceTableName i metoda RefreshLink. Fiecare obiect TableDef are o proprietate Connect care este un ir ce identific| tipul i locul tabelului ataat. Numele tabelului este stocat separat n proprietatea SourceTableName. Dac|

0264-401667

MsgBox "Eroare: " & Err.Description & " (" & Err.Number &E

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

352

Programarea cu obiectul DAO - cursul 13

tabelul face parte din baza de date Access proprietatea lui Connect are valoarea "".

1. Folosii metoda CreateTableDef a obiectului baz| de date (Database) pentru a crea un nou obiect TabelDef pentru tabelul ataat. Dai tabelului un nou nume prin care va fi identificat n baza de date local|; 2. Setai propriet|ile SourceTableName i Connect ale obiectului TableDef pentru a specifica tabelul extern i baza de date care va fi ataat|;

n funcie de tipul tabelului extern care va fi ataat este posibil ca unele informaii adiionale s| fie necesare n proprietatea Connect (parol|, nume de utilizator, driver ISAM sau ODBC). Un cod tipic pentru ataarea unui tabel este de forma: Dim db As Database

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

3. date.

Folosii proprietatea Append pentru ad|ugarea noului obiect TableDef n baza de

Dim tdf As TableDef

Dim NumeTabel As String Set db = CurrentDB()

NumeTabel="TAT_Clienti"

Set tdf = db.CreateTableDef(NumeTabel) With tdf

End With

db.TableDefs.Append tdf

Pus sub forma unei proceduri de tipul funcie codul devine:

Function CreareTabelAtasat(NumeTabel As String, Cale As E String, NumeTabelExtern As String) As Boolean Dim db As Database Dim tdf As TableDef

Dim strConnect As String Dim vIntoarsedeFunctie As Boolean

sau suna la:

.SourceTableName = "Customers"

0264-401667

.Connect";DATABASE=" & "c:\My Documents\Northwind.mdb"

http://www.east.utcluj.ro/mb/mep/antal

Ataarea unui tabel extern unei baze de date Access

Pt. cumparare viziteaza:

NU COPIA !.

353

Programarea cu obiectul DAO - cursul 13

On Error GoTo CreareTabelAtasat_Eroare

Set db = CurrentDb()

Set tdf = db.CreateTableDef(NumeTabel)

With tdf

.SourceTableName = NumeTabelExtern End With

db.TableDefs.Append tdf vIntoarsedeFunctie = True

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

.Connect = ";DATABASE=" & Cale

CreareTabelAtasat_Iesire:

CreareTabelAtasat = vIntoarsedeFunctie Exit Function

CreareTabelAtasat_Eroare: ")"

MsgBox "Eroare: " & Err.Description & " (" & Err.Number &E vIntoarsedeFunctie = False

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

End Function

Reataarea tabelelor

De multe ori, din motive independente de voina noastr|, poziia tabelelor externe se poate modifica pe discul folosit pentru stocarea lor. Aplicaia Access va genera o eroare n execuie dac| unul dintre tabelele externe au fost mutate ntr-un alt director sau disc. Este util| scrierea unei funcii s| verifice dac| tabelele ataate au fost mutate, iar dac| au fost, s| fac| reataarea lor pe baza noii poziii ocupate de acestea pe disc. Funcia VerificaAtasareaTabelului() verific| ataarea tabelului NumeTable, iar dac| acesta nu mai este ataat, ncearc| s|-l ataeze folosind calea din parametrul CaleNoua parcurgnd paii: 1. Se activeaz| tratarea erorilor n execuie (On Error Resume Next); 2. 3. Se ncearc| accesarea propriet|ii Name din lista de cmpuri ale tabelului dorit; Dac| ncercarea este nereuit| se apeleaz| funcia ReatasareTabel()care va

sau suna la:

Resume CreareTabelAtasat_Iesire

0264-401667

NU COPIA !.

354

Programarea cu obiectul DAO - cursul 13

ncerca reataarea tabelului. n cazul n care ncercarea este nereuit| se afieaz| un mesaj de eroare i se revine cu valoarea False;

Function VerificaAtasareaTabelului(NumeTabel As String, E CaleNoua As String) As Boolean Dim db As Database

VerificaAtasareaTabelului = True

On Error Resume Next Set db = CurrentDb()

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dim strName As String

strName = db.TableDefs(NumeTabel).Fields(0).Name

If Err.Number <> 0 Then

If Not ReatasareTabel(NumeTabel, CaleNoua) Then MsgBox "Nu am reusit reatasarea tabelului :'" & E NumeTabel & "'" VerificaAtasareaTabelului = False

End If End If

http://www.east.utcluj.ro/mb/mep/antal

4. Dac| ncercarea de accesare a reuit nseamn| c| tabelul este ataat corect i se revine cu valoarea True din funcie.

Pt. cumparare viziteaza:

End Function

Function ReatasareTabel(NumeTabel As String, CaleNoua As E String) As Integer Dim db As Database Dim tdf As TableDef

ReatasareTabel = True

Set db = CurrentDb()

Set tdf = db.TableDefs(NumeTabel)

sau suna la:

On Error GoTo 0

0264-401667

NU COPIA !.

355

Programarea cu obiectul DAO - cursul 13

If Len(tdf.Connect) > 0 Then tdf.Connect = ";DATABASE=" & CaleNoua

On Error Resume Next tdf.RefreshLink ReatasareTabel = (Err = 0) On Error GoTo 0

End Function

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End If

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

356

Access 2000, ADO si ADOX - cursul 14

Obiectivele cursului 14
Dupa 7 parcurgerea acestui curs vet -i cunoas - te:
! ! ! ! ! ! !

care sunt nout|ile aduse de Access 2000;

care este noul model de date pentru manipularea bazelor de date Access; ce este obiectul Connection; cum se manipuleaz| coleciile n Access 2000;

cum se lucreaz| cu mulimile de nregistr|ri n Access 2000; cum se efectueaz| operaiile comune cu mulimile de nregistr|ri (creare, ce este schema bazei de date i cum se lucreaz| cu ea n Access 2000

navigare, editare i operaii cu interog|ri);

indexuri i relaii).

Pt. cumparare viziteaza:

(crearea de tabele locale i legate, crearea i modificarea interog|rilor, crearea de

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

0264-401667

NU COPIA !.

sau suna la:

357

Access 2000, ADO si ADOX - cursul 14

Ce aduce nou Access 2000?

VBA n Access 2000

Editorul Access pentru module de program a fost nlocuit cu cel folosit n limbajul de programare Visual Basic 6, iar modific|rile f|cute ntr-o prezentare sumar| sunt:

ntregul cod VBA din modulele globale, formulare i rapoarte se poate proteja printr-o singur| parol|. VBA nu mai este protejat prin sistemul de securitate la nivel de utilizator; editorul VBA folosete modelul de obiect programabil i suport| tehnologia COM pentru aplicaii add-ins (o procedur| Visual Basic mpreun| cu obiectele pe care le manipuleaz| ce poate fi stocat| sau tears| din baza de date sub controlul unui program gestionar de add-ins-uri) care cresc productivitatea scrierii, analizei i format|rii codului VBA.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

editorul VBA din Access 2000 este acelai cu editoarele VBA ale altor aplicaii Microsoft Office (Excel i Word) i cu cel al firmelor tere care permit programarea aplicaiei lor din VBA;

Formulare i rapoarte n Access 2000

Aici modific|rile nu sunt foarte mari i se pot grupa astfel:

formularele i rapoartele suport| gruparea i degruparea controalelor;

controalele care afieaz| text permit folosirea unui chenar definit de utilizator n jurul textului permind mutarea textului n interiorul controlului; se pot aplica reguli de formatare condiionat| datelor din cutiile cu text i combinate;

Accesul la date n Access 2000

Accesul la date a suferit o modificare important|, motorul bazei de date vine cu o opiune nou|, un nou model pentru accesul la date i un nou format al bazei de date, toate aceste mbun|t|iri sunt prezentate pe scurt n cele ce urmeaz|:

dei motorul Jet r|mne motorul implicit, Access-ul permite lucrul cu Microsoft Data Engine (MSDE), o versiune cu num|r de conect|ri limitate ale lui SQL Server 7;

este posibil| crearea de fiiere Access Data Projects (ADP) pe lng| clasicele baze de date Access MDB. Un fiier ADP este o baz| de date f|r| date n care se pot stoca formulare, rapoarte, macro-uri, module i leg|turi la date care sunt stocate pe un SQL server sau pe baz| de date MSDE; motorul Jet stocheaz| datele n formatul Unicode, motiv pentru care aplicaiile multilingve sunt mai uor de scris; Access-ul 2000 folosete noul model de date ActiveX Data Objects (ADO) ca model

0264-401667

NU COPIA !.

sau suna la:

mulimea de nregistr|ri care formeaz| sursa de date a formularului se poate seta la o mulime de nregistr|ri DAO sau ADO.

http://www.east.utcluj.ro/mb/mep/antal

n evoluia produsului Access un salt mare s-a produs de la versiunea 2.0 la 95. Access 2000, la rndul lui, aduce modific|ri majore versiunii 97 care se pot grupa pe urm|toarele domenii: VBA, formulare i rapoarte, obiectele pentru accesul la date, internet/intranet.

Pt. cumparare viziteaza:

358

Access 2000, ADO si ADOX - cursul 14

preferenial pentru accesul la date dei codul DAO va continua s| existe i s| lucreze corect; motorul Jet permite blocare la nivel de nregistrare i nu la pagin| ca i pn| acum;

Microsoft-ul d| dou| noi modele de obiecte din familia ADO pentru lucrul cu schema bazei de date i ntreinerea acesteia: ADOX i JRO. ADOX permite investigarea i modificarea schemei bazei de date, iar JRO permite compactarea i repararea bazelor de date.

n aceast| versiune de Access Generatorul de pagini Web este nlocuit cu pagini pentru accesul la date. O pagin| pentru accesul la date este o pagin| Web care se poate folosi la vizualizarea i editatrea datelor dintr-o baz| de date Access, MSDE sau SQL Server 7 prin intermediul lui Internet Explorer 5. Cteva dintre informaiile legate de aceste pagini sunt: paginile pentru accesul la date se folosesc de capacitatea lui IE5 de legare la datele unui client; pagina pentru accesul la date face parte dint-o pagin| HTML care folosete eXtensible Markup Language (XML); paginile pentru accesul la date pot fi folosite dintr-o baza de date MDB, proiect ADP sau IE5; Access-ul are un Generator pentru proiectarea paginilor pentru accesul la date; se poate ataa cod scris n limbajele VBscript sau JavaScript paginilor;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Facilit|ile internet i intranet ale lui Access 2000

pagina pentru accesul la date poate fi scris| de la zero sau se poate baza pe coninutul unei alte pagini de Web ; se pot include componente de Web Office n pagini; paginile active pentru accesul la date pot fi folosite pentru navigare i editarea nregistr|rilor unei baze de date i pentru realizarea de rapoarte datorit| facilit|ilor n grupare.

http://www.east.utcluj.ro/mb/mep/antal

Jet-ul are o serie de facilit|i care permit determinarea mainii i a numelui tuturor utilizatorilor care acceseaz| baza de date i permite inhibarea leg|rii de noi utilizatori la baza de date pentru a permite derularea unor operaii de ntreinere a bazei de date;

Pt. cumparare viziteaza:

ADO sau DAO?

Versiunile anterioare de Access foloseau o bibliotec| numit| DAO pentru accesul la date din program. DAO i-a nceput existena ca interfa| cu motorul Jet odat| cu Access 1 i treptat a ajuns la o m|rime i complexitate impresionant| sub Access 97, sau cu alte cuvinte a devenit prea complicat. ncepnd cu Access 2000, DAO nu mai este modelul preferat pentru accesul la date, locul ei fiind luat de ADO. Exist| situaii cnd este de preferat folosirea lui DAO n Access 2000, cele mai importante sunt: folosirea unei mulimi de nregistr|ri a unui formular dintr-o baz| de date Access este o mulime de nregistr|ri DAO (formularele unui proiect Access folosesc mulimi de nregistr|ri ADO);

la conversia unei baze de date dintr-o versiune anterioar| de Access, mulimile de nregistr|ri vor fi implicit DAO (la crearea unei baze de date noi n Access 2000 se folosete implicit ADO).

0264-401667

NU COPIA !.

sau suna la:

359

Access 2000, ADO si ADOX - cursul 14

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dim rs As Recordset

Dim rs1 As ADODB.Recordset Dim rs2 As DAO.Recordset

Noua ierarhie de obiecte

La fel cu versiunile anterioare, Access-ul are propria lui ierarhie de obiecte prin care putem avea acces la informaii cu privire la paginile, formularele, rapoartele deschise sau la modulele aplicaiei. Figura care urmeaz| le prezint| parial pe acestea. Ierarhia obiectului aplicaie (Application) include toate obiectele (formularele, rapoartele, paginile

0264-401667

NU COPIA !.

sau suna la:

nu se tie la ce fel de mulime de nregistr|ri se refer|. Pentru rezolvarea ambiguit|ii numele bibliotecii va preceda numele obiectului astfel vom scrie:

Pt. cumparare viziteaza:

La crearea unei baze de date noi (fiierul are extensia MDB) sau a unui proiect (fiierul are extensia ADP) Access 2000 presupune c| vei lucra cu ADO i va seta referina din figura urm|toare c|tre biblioteca Microsoft ActiveX Data Objects 2.1. Referina se poate seta i manual din editorul de module Visual Basic al Access-ului selectnd din Tools pe References. Pentru aceasta n fereastra de dialog References, unde sunt afiate sub forma unei liste toate bibliotecile de obiecte instalate pe calculator, se activeaz| butonul de validare corespunz|tor numelui aplicaiei dorite. Dac| validai Microsoft ActiveX Data Objects 2.1 Library, aplicaia va folosi ADO, dac| validai Microsoft DAO 3.6 Object Library aplicaia va folosi DAO. Este posibil s| fie ambele biblioteci validate simultan, caz n care apar unele probleme de scriere ntruct exist| obiecte ale celor dou| biblioteci care au acelai nume. De exemplu, att DAO ct i ADO au obiectul Recordset, astfel o linie de program de forma:

http://www.east.utcluj.ro/mb/mep/antal

Specificarea referinelor

360

Access 2000, ADO si ADOX - cursul 14

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

deschise i modulele de cod etc. ) cu care Access-ul poate lucra. n cele ce urmeaz|, din punctul de vedere al accesului la date, aceste obiecte vor avea un rol secundar fiind discutate n principal obiectele care in de ierarhia ADO. Acestea vor fi folosite pentru a interaciona cu motorul bazei de date indiferent dac| acesta este motorul Jet, SQL Server sau motorul MSDE. Figura care urmeaz| prezint| ca exemplu ierahia pentru obiectul Connection, apoi n ultima figur| se prezint| colecia Properties comun| obiectelor Connection, Command, Recordset i Filed.

Manipularea datelor prin ADO

ADO permite aplicaiilor client s| acceseze i s| manipuleze date prin orice furnizor de servicii OLE DB (OLE DB este o component| a unui SGBDR care implementeaz| accesul eficient prin reea local| sau internet la mai multe tipuri de surse de date: date stocate conform modelului relaional, fiiere de pot| electronic|, foi de calcul). ADO conine obiecte pentru conectarea la o surs| de date i manipularea acestora. n ADO obiectul Connection definete o sesiune de lucru pentru un utilizator al unei surse de date particulare. n DAO obiectul Workspace definete o sesiune de lucru a unui utilizator, iar obiectul Database definete

0264-401667

NU COPIA !.

Diferent -e ntre -i DAO ADO s

sau suna la:

DAO a devenit n timp o bibliotec| uria|, ADO folosete trei modele de obiecte distincte pentru a furniza aceeai funcionalitate cu DAO. Acestea sunt ADO (ADODB), Microsoft ADO Extensions for DDL and Security (ADOX) i Microsoft Jet and Replication Objects (JRO). Majoritatea aplicaiilor nu au nevoie de toate aceste modele pentru a funciona, divizarea pe criteriul funcionalit|ilor putndu-se justifica n acest fel. Aplicaia care acceseaz| datele se numete consumator de date (de exemplu, Access 2000 sau un program scris n Visual Basic 6.0), iar programul care asigur| accesul la date se numete, furnizor de baz| de dat| (de exemplu, Microsoft OLE DB Provider for SQL Server sau Microsoft Jet 4.0 OLE DB Provider).

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

361

Access 2000, ADO si ADOX - cursul 14

Definiia datelor i securitatea cu ADOX

Replicarea cu JRO

Utilizarea variabilelor obiect

Pentru o variabil| obinuit| linia de declaraie este de forma: Dim i As Integer

Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim frm As Form

variabilele respective nu vor conine obiectul n sine ci numai o referint| (un poantor) la obiect. n acest moment n aceste variabile nu sunt ns| stocate i adresele obiectelor, pentru aceasta trebuie s| scriem codul: Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

0264-401667

NU COPIA !.

sau suna la:

aceasta spune Access-ului s| rezerve spaiu n RAM pentru stocarea unei valori de tipul ntreg (Integer). n cazul unei variabile obiect (o variabil| care refer| un obiect pentru accesul la date sau un obiect de interfa| cu utilizatorul) Access-ul creeaz| numai un poantor, adic| aloc| spaiu suficient numai pentru stocarea unei adrese de obiect. Deci, n Access 2000 dac| scriem liniile:

Pt. cumparare viziteaza:

Modelul JRO conine obiecte pentru crearea, modificarea i sincronizarea mai multor replici a unei baze de date. Se poate folosi numai pentru baze de date ale motorului Microsoft Jet. Replica este obiectul primar folosit pentru crearea de replici noi, pentru modificarea propriet|ilor unei replici i pentru sincronizarea replicilor.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

ADOX conine obiectele pentru definiia datelor (Tables, Procedures i Views) i coleciile (Users i Groups) pentru securitate. Aici diferenele fa| de DAO sunt semnificative ntruct n DAO, obiectul Workspace coninea coleciile pentru securitate i cel Database cele pentru definiia datelor. Fiecare obiect Catalog este asociat unui singur obiect Connection, n timp ce n DAO obiectul Workspace putea conine mai multe obiecte Database. Obiectele ADO Tabel, Index i Column sau aproximativ echivalente cu obiectele DAO TableDef, IndexDef i Field, dar n ADO fiecare dintre aceste obiecte are o colecie standard Properties.

http://www.east.utcluj.ro/mb/mep/antal

sursa de date. Obiectul ADO Command este similar obiectului DAO QueryDef, ambele putnd fi folosite pentru executarea de instruciuni SQL asupra unei surse de date. Obiectul Recordset este folosit n ambele biblioteci pentru vizualizarea coninutului unui tabel sau a rezultatelor execuiei unei instruciuni SQL.

362

Access 2000, ADO si ADOX - cursul 14

Set frm = Forms("FAdrese")

Unele obiecte au o metod| Close, aceasta trebuie apelat| nainte de dezalocarea spaiului pentru obiectul n cauz|, deci ordinea va fi: rs.Close

Obiectul Connection

Pentru a ne conecta la o baz| de date cu numele db2000-test.mdb se folosete codul:

Public Sub Conectare()

Dim con As ADODB.Connection

Set con = New ADODB.Connection

con.ConnectionString = _

"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source= " & CurrentProject.Path & "\db2000-test.mdb" con.Open

Debug.Print con.ConnectionString

0264-401667

Este obiectul din vrful ierarhiei ADO, orice alt obiect se poate folosi numai dac| s-a specificat conexiunea care va fi folosit| pentru accesul la date. Obiectul corespunde unei singure conexiuni la un furnizor de date OLE DB. Obiectul Connection poate fi creat explicit sau se poate crea implicit cnd se lucreaz| cu un obiect derivat al lui, de exemplu obiectul Recordset, cnd este necesar| i specificarea informaiei de conectare. Dac| codul se scrie n Access se poate folosi obiectul CurrentProject pentru a obine o referin| la conexiunea bazei de date curente.

Pt. cumparare viziteaza:

Set rs = Nothing

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set rs = Nothing

http://www.east.utcluj.ro/mb/mep/antal

Liniile de mai sus fac ca variabilele obiect s| se refere la cte un obiect actual. Dac| pe parcursul codului scris variabila obiect iese n afara scopului, Access-ul va elibera (obiectul este ters din RAM) i spaiul de RAM corespunz|tor obiectului poantat de variabila respectiv| n cazul n care aceast| variabil| este singura din cod n care se refer| obiectul. Dac| avei dubii asupra eliber|rii spaiului folosit la stocarea unui obiect aceasta se poate realiza i explicit prin:

NU COPIA !.

sau suna la:

363

Access 2000, ADO si ADOX - cursul 14

Set con = Nothing End Sub iar rezultatul afiat n fereastra imediat| este:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=C:\My Documents\db2000-test.mdb; Mode=Share Deny None;Extended Properties="";Locale Identifier=1033;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False Procedura Sub de mai sus folosete proprietatea CurrentProject.Path pentru a determina calea c|tre baza de date curent| sau fiierul proiect. R|spunsul afiat conine un num|r foarte mare de propriet|i ale conexiunii, dar singurele necesare pentru realizarea unei conexiuni sunt numele furnizorului OLE DB (Provider) i numele bazei de date care se va deschide (Data Source). Dac| dorii s| facei referire la baza de date curent| folosii codul: Public Sub BdCurenta()

Debug.Print con.ConnectionString

End Sub

Enumerarea obiectelor unei colecii

Prezint n continuare cel mai simplu mod de parcurgere a unei colecii prin folosirea instruciunii For Each ... Next. Este necesar| crearea unei variabile care s| poat| referi tipul de obiect specific coleciei care va fi parcurs|. Baza de date folosit| se numete ADDBOOK.MDB, iar tabelul Members. Figura care urmeaz| conine i codul pentru procedura de tipul Sub cu numele ListareCampuri.

Codul parcurge iterativ fiecare element al coleciei i folosete un Set implicit pentru a poanta la variabila obiect corespunz|toare pentru fiecare obiect al coleciei. Cnd ajunge la linia Next fld, valoarea poantorului se va modifica la urm|torul element al coleciei.

sau suna la:

Set con = CurrentProject.Connection

0264-401667

Dim con As ADODB.Connection

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

364

Access 2000, ADO si ADOX - cursul 14

Public Sub ListareCampuri(NumeTable As String) Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Set rs = New ADODB.Recordset

rs.Open NumeTable, CurrentProject.Connection

For Each fld In rs.Fields Debug.Print fld.Name Next fld

rs.Close

Set rs = Nothing End Sub

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

365

Access 2000, ADO si ADOX - cursul 14

Acelai cod rescris cu un For ... Next clasic devine: Public Sub ListareCampuriClasic(NumeTable As String) Dim rs As ADODB.Recordset Dim fld As ADODB.Field Dim i As Integer

rs.Open NumeTable, CurrentProject.Connection

For i = 0 To rs.Fields.Count - 1 Set fld = rs.Fields(i) Debug.Print fld.Name Next i

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set rs = New ADODB.Recordset

rs.Close

Set fl = Nothing Set rs = Nothing End Sub

n general, termenul de cursor este asociat unei instruciuni SQL i reprezint| mulimea nregistr|rilor ntoarse de c|tre respectiva instruciune. n ADO, se folosete denumirea de cursor descrie comportamentul poantorului nregistr|rii curente dintr-o mulime de nregistr|ri. Un cursor este obiectul ce permite deplasarea printre nregistr|rile unei mulimi de nregistr|ri. ADO permite folosirea a patru tipuri de cursoare care sunt descrise n tabelul urm|tor:

Tipul cusorului

Descriere

Avantaje

Dezavantaje

Dynamic

Mulime de nregistr|ri dintr-un tabel sau dintr-o alt| surs| de date.

Afieaz| toate modific|rile f|cute de ali utilizatori.

Permite folosirea marcajelor numai dac| furnizorul le suport|. Nu poate lucra cu jet ole db n acest mod.

0264-401667

NU COPIA !.

Lucrul cu mulimile de nregistr|ri n Access 2000

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

sau suna la:

366

Access 2000, ADO si ADOX - cursul 14

Keyset

Static

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Copie a unei mulimi de nregistr|ri aa cum era ea la momentul cre|rii ei. Copie a unei mulimi de nregistr|ri aa cum era ea la momentul cre|rii ei.

ntotdeuna suport| marcaje. Singurul tip de mulime de nregistrare este client-side cursor Mai rapid| dect cursorul static

http://www.east.utcluj.ro/mb/mep/antal

Mulime de poantori (bookmarks) care refer| datele unui tabel sau interogare din baza de date.

Afieaz| toate modific|rile f|cute de ali utilizatori. Suport| lucrul cu marcaje ntotdeauna.

Nu afieaz| noile nregistr|ri ad|ugate de ali utilizatori. mpiedic| accesul la nregistr|rile terse de ali utilizatori. Nu reflect| modific|rile aduse datelor n regimul de lucru cu mai muli utilizatori Permite navigarea n mulime numai n fa|.

Forward-only

Deschiderea unei mulimi de nregistr|ri


Codul pentru deschiderea unei mulimi de nregistr|ri este de forma: Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

rs.Open Sursa 7, Conexiune, TipCursor, TipBlocare, Opt -iuni Toi aceti parametri sunt opionali i pot fi specificai i naintea deschiderii mulimii de nregistr|ri, din acest motiv cele dou| poriuni de cod care urmeaz| sunt echivalente:

Pt. cumparare viziteaza:

rs.Connection = CurrentProject.Connection rs.CursorType = adOpenStatic rs.Open "Members" rs.LockType = adLockOptimistic

rs.Open "Members", CurrentProject.Connection, adOpenStatic, _ adLockOptimistic

7 specific| locul din care vin datele i trebuie s| fie: Parametrul Sursa
numele unui tabel existent;

numele unei interog|ri existente sau a unei proceduri stocate care ntoarce nregistr|ri; o instruciune SQL care ntoarce nregistr|ri; numele unei variabile obiect Command existente;

0264-401667

NU COPIA !.

sau suna la:

367

Access 2000, ADO si ADOX - cursul 14

numele de fiier al unei mulimi de nregistr|ri persistente.

Numele constantei de tipul cursor adOpenDynamic adOpenKeyset

Deschide o mulime dinamic| de nregistr|ri. Deschide o mulime de nregistr|ri de chei. Deschide o mulime de nregistr|ri statice. Deschide o mulime de nregistr|ri pentru navigare n fa|.

adOpenStatic

adOpenForwardOnly

Numele constantei de tipul blocare adLockReadOnly

Pt. cumparare viziteaza:

Parametrul TipBlocare specific| comportamentul n cazul edit|rii mulimii de nregistr|ri n cazul bloc|rii lor. Tabelul urm|tor prezint| constantele predefinite care pot fi folosite:

Mulimea de nregistr|ri nu poate fi editat|. Blocarea mulimii de nregistr|ri este pesimist|. Blocarea mulimii de nregistr|ri este optimist|. Pentru mulimile de nregistr|ri care vor folosi metoda UpdateBatch pentru actualizarea mai multor nregistr|ri ntr-o singur| operaie.

adLockPessimistic adLockOptimistic

adLockBatchOptimistic

http://www.east.utcluj.ro/mb/mep/antal

Parametrul TipCursor specific| tipul cursorului pe care ADO l folosete la navigarea printre nregistr|ri i trebuie s| fie una dintre constantele prezentate n tabelul care urmeaz|:

Descriere

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Descriere

Not|: Implicit, mulimea de nregistr|ri ADO seteaz| valorile acestor parametri la adOpenForwardOnly i adLockReadOnly

Parametrul Opt -iuni spune lui ADO cum s| evalueze parametrul Sursa 7, el poate lua valorile prezentate n tabelul urm|tor:

Numele constantei de evaluare

Descriere

adCmdText

Spune furnizorului s| evalueze sursa ca i instruciune SQL.

adCmdTable

Spune ADO-ului s| genereze o interogare SQL pentru citirea tuturor nregistr|rilor unui tabel sau interogare a c|rui nume este specificat n surs|.

0264-401667

NU COPIA !.

sau suna la:

368

Access 2000, ADO si ADOX - cursul 14

adCmdTableDirect

adCmdStoredProc adCmdUnknown

Spune furnizorului s| evalueze sursa ca un nume de procedur| stocat| sau ca interogare. Spune ADO-ului s| interogheze furnizorul pentru a determina dac| sursa este o procedur| stocat|, un nume de tabel sau o instruciune SQL. Spune ADO-ului c| parametrul surs| este numele unui fiier care conine o mulime de nregistr|ri persistent|.

Codul pentru deschiderea unei mulimi de nregistr|ri pe baza tabelului Members din baza de date ADDRBOOK.MDB este: Public Sub DeschideMultimedeInregistrariADO() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

adCmdFile

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

For Each fld In rs.Fields

Debug.Print fld.Name; "= "; fld.Value

Next

rs.Close

Set fld = Nothing Set rs = Nothing

End Sub

Numele (Name) i valoarea (Value) fiec|rui cmp din prima nregistrare a mulimii vor fi afiate n fereastra imediat| prin parcurgerea iterativ| a coleciei Fields.

0264-401667

NU COPIA !.

rs.Open "SELECT * FROM Members", con, adOpenForwardOnly,E adLockReadOnly

http://www.east.utcluj.ro/mb/mep/antal

Spune furnizorului s| ntoarc| toate nregistr|rile unui tabel sau interogare a c|rui nume este specificat n surs|.

Pt. cumparare viziteaza:

sau suna la:

369

Access 2000, ADO si ADOX - cursul 14

Crearea obiectelor mulime de nregistrare

1.

Crearea unei mulimi de nregistr|ri pe baza unui tabel:

Set rs = New ADODB.Recordset

rs.Open "NumeTabel", CurrentProject.Connection 2. Crearea unei mulimi de nregistr|ri pe baza unei interog|ri salvate n baza de date: Set rs = New ADODB.Recordset

rs.Open "[NumeInterogare]", CurrentProject.Connection 3. Crearea unei mulimi de nregistr|ri care se poate edita i permite navigarea mpreun| cu sortare: rs.CursorLocation=adUseClient rs.Open "SELECT * FROM numeTabel", CurrentProject.Connection,E adOpenKeyset, adLockOptimistic

4. Crearea unei mulimi de nregistr|ri pe baza unui tabel care permite c|utarea cu Seek: rs.CursorLocation=adUseServer rs.Open "NumeTable", CurrentProject.Connection, adOpenKeyset,E adLockOptimistic, adCmdTableDirect

http://www.east.utcluj.ro/mb/mep/antal

Marele avantaj al ADO este flexibilitatea, adic| exist| mai multe feluri de a scrie acelai cod. Exemplele care urmeaz| specific| mai multe moduri de creare ale unui obiect Recordset:

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Cursorul client

Obiectul ADO Recordset are o proprietate CursorLocation care nu exista n DAO i care afecteaz| funcionarea i performanele mulimii de nregistr|ri. Noiunea de cursor semnific| nregistr|rile din cache (termenul de cache se folosete pentru o memorie care stocheaz| date recent accesate i care este proiecat| pentru a crete viteza de acces n cazul referirii acelorai date) sau de poantori la nregistr|ri furnizate de motorul bazei de date la deschiderea unei mulimi de nregistr|ri. ADO suport| lucrul cu dou| tipuri de cursoare: cel client (client-side) i cel server (server-side). Un cursor client se creeaz| pe aceeai main| cu clientul (adic| cu utilizatorul bazei de date), iar cel server se creeaz| pe aceeai main| cu server-ul, care poate fi chiar maina pe care lucreaz| utilizatorul sau poate fi o main| server oarecare. Dou| constante sunt definite pentru alegerea cursorului, adUseServer (implicit|) pentru cursorul server i adUseClient pentru cursorul client. Cnd se specific| cursorul client, ADO transfer| cererile serviciului Microsoft Cursor Service pentru OLE DB care este proiectat pentru creterea funcionalit|ii n accesarea nregistr|rilor de la orice furnizor OLE DB. Serviciul cere n primul pas toate datele de la furnizorul OLE DB folosind o mulime de nregistr|ri cu parcurgere n avans (forward-only) f|r| posibilitatea de modificare (read-only).

0264-401667

NU COPIA !.

sau suna la:

370

Access 2000, ADO si ADOX - cursul 14

Navigarea printre nregistr|ri

La fel ca i la DAO, ADO are metodele Move, MoveFirst, MoveLast, MoveNext i MovePrevious pentru deplasarea de la o nregistrare la alta. Codul care urmeaz| prezint| folosirea lui MoveNext pentru a parcurge toate ntegistr|rile obiectului Recordset.

Public Sub ParcurgeMultimedeInregistrariADO() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "SELECT * FROM Members", con, adOpenForwardOnly,E adLockReadOnly

http://www.east.utcluj.ro/mb/mep/antal

Apoi realizeaz| un cache local pentru date i le prezint| aplicaiei ca o mulime de nregistr|ri static|. n majoritatea cazurilor cursorul client din interiorul unei baze de date Access duce la realizarea de dou| cache-uri pentru date pe aceeai main|: odat| de motorul Jet, apoi de Serviciul Cursor. Totui, acest cursor extinde funcionalitatea obiectului, de exemplu se poate folosi metoda Sort sau se poate folosi o mulime de nregistr|ri deconectat| care va fi mai trziu reconectat| la baza de date i actualizat| n regimul cu o singur| comand| ce modific| nregistr|ri multiple. n general valoarea implicit| este cea folosit| normal, mai puin n cazul cnd funcionalitatea adus| de cursorul client este necesar|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

For Each fld In rs.Fields

Debug.Print fld.Value & ", ";

Next

Debug.Print rs.MoveNext

Loop

rs.Close

Set fld = Nothing Set rs = Nothing

End Sub

sau suna la:

Do Until rs.EOF

0264-401667

NU COPIA !.

371

Access 2000, ADO si ADOX - cursul 14

C|utarea nregistr|rilor
Att DAO ct i ADO au dou| metode pentru localizarea unei nregistr|ri ntr-o mulime de nregistr|ri: Find i Seek. n ambele cazuri trebuie specificat un criteriu pentru localizarea nregistr|rii care se ndeplinete. Seek are, n general, performane mai bune ca Find pentru c| lucreaz| cu indexuri la c|utarea poziiei nregistr|rilor, dar este limitat la mulimile de nregistr|ri care au index. DAO are metodele FindFirst, FindLast, FindNext i FindPrevious pentru c|utare. ADO are o singur| metod| pe Find care cu ajutorul parametrilor permite specificarea sensului c|ut|rii i poziia din care ncepe c|utarea. Forma general| a lui Find este: Recordset.Find Criteriu, SariRanduri, SensCautare, Inceput Semnificaia parametrilor este:

SariRanduri: specific| un deplasament fa| de nregistrarea curent| din care va 2. ncepe c|utarea. Implicit c|utarea ncepe de la nregistrarea curent|; SensCautare: ia valoarea adSearchForward (implicit) pentru c|utarea n avans 3. sau adSearchBackward pentru c|utarea n urm|; Inceput: un marcaj opional pentru specificarea locului de nceput al c|ut|rii. 4. Implicit c|utarea ncepe cu nregistrarea curent|.
Public Sub CautaInregistrariADO()

Dim fld As ADODB.Field Dim crt As String

crt = "[LastName] = 'Fuller'"

Set rs = New ADODB.Recordset

rs.Open "Members", CurrentProject.Connection, E adOpenKeyset, adLockOptimistic, adCmdTable rs.Find crt

Do While Not rs.EOF

For Each fld In rs.Fields Debug.Print fld.Value & ", ";

0264-401667

NU COPIA !.

Dim rs As ADODB.Recordset

Pt. cumparare viziteaza:

1. Criteriu: este un ir de caractere de forma unei clauze WHERE format| la fel ca n expresiile SQL, dar f|r| cuvntul WHERE, de exemplu, PersonID = 3. Poate conine numai un singur nume de cmp, un operator de comparaie i o valoare;

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

372

Access 2000, ADO si ADOX - cursul 14

Next Debug.Print rs.Find crt, 1 Loop rs.Close Set fld = Nothing Set rs = Nothing

Tabelul care urmeaz| prezint| echivalena ntre metodele de c|utare DAO i metoda Find ADO: Metoda DAO FindFirst

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End Sub

SariRanduri din Find


0

adSearchForward (dac| nu suntem poziionai pe prima nregistrare se folosete MoveFirst nainte de Find).

FindLast

adSearchBackward (dac| nu suntem poziionai pe ultima nregistrare se folosete MoveLast nainte de Find). adSearchForward adSearchBackward

FindNext

1 1

FindPrevious

n cazul deschiderii unei mulimi de nregistr|ri cu opiunea adCmdTableDirect se poate folosi metoda Seek pentru localizarea mai rapid| a unei nregistr|ri folosind codul care urmeaz|. Localizarea unei date cu Seek se realizeaz| n dou| etape:

1. Setai proprietatea Index a mulimii. Aceasta spune Access-ului dup| care index se va realiza c|utarea. Dac| c|utarea se va face dup| cheia primar| trebuie s| cunoatei numele ei (dac| numele ei nu s-a modificat din program acesta este PrimaryKey);

2. Folosii metoda Seek pentru g|sirea valorii dorite prin utilizarea unei opiuni de c|utare i a uneia sau a mai multor valori de c|utare. Dac| index-ul este format din mai multe cmpuri se vor furniza toate valorile de cmpuri printr-un tablou care se poate construi folosind funcia Array.

0264-401667

NU COPIA !.

sau suna la:

DAO i ADO folosesc o sintax| diferit| pentru localizarea nregistr|rilor cu valori Null. n DAO se scria un ir de forma: "LastName Is Null" sau "LastName Is Not Null". ADO nu recunoate operatorul Is se vor folosi n schimb operatorii = i <>, adic| scriem: "LastName = Null" sau "LastName <> Null".

http://www.east.utcluj.ro/mb/mep/antal

SensCautare din Find

Pt. cumparare viziteaza:

373

Access 2000, ADO si ADOX - cursul 14

Opiune Seek adSeekAfterEQ

C|utarea cheii egal| cu valoarea specificat| sau dac| nu este o astfel de cheie, prima cheie dup| punctul unde egalitatea ar fi ap|rut. C|utarea primei chei dup| punctul n care egalitatea apare sau ar fi ap|rut.

adSeekAfter

adSeekBeforeEQ

C|utarea cheii egal| cu valoarea specificat| sau dac| nu este o astfel de cheie, prima cheie naintea punctului unde egalitatea ar fi ap|rut.

adSeekBefore

adSeekFirstEQ adSeekLastEQ

Caut| prima cheie egal| cu valoarea specificat|. Caut| ultima cheie egal| cu valoarea specificat|.

Public Sub CautarecuSeekADO()

Dim con As ADODB.Connection Dim rs As ADODB.Recordset

Pt. cumparare viziteaza:

C|utarea primei chei naintea punctului n care apare egalitatea sau ar fi ap|rut.

http://www.east.utcluj.ro/mb/mep/antal

Seek lucreaz| numai cu mulimi de nregistr|ri care au proprietatea CursorLocation setat| la ceva diferit de adUserClient. Pentru c| setarea implicit| este adUseServer aceasta, de obicei, nu va fi o problem|. Opiunile de c|utare se specific| prin constantele predefinite din tabelul care urmeaz|:

Descriere

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "Members", con, adOpenKeyset, adLockReadOnly, E adCmdTableDirect rs.Index = "PrimaryKey"

rs.Seek 5, adSeekFirstEQ

If Not rs.EOF Then

Debug.Print rs.Fields("FirstName").Value, E rs.Fields("LastName").Value End If

0264-401667

sau suna la:

374

Access 2000, ADO si ADOX - cursul 14

rs.Close Set rs = Nothing End Sub

Dac| Seek reuete s| localizeze nregistrarea, nregistrarea curent| devine cea care conine valoarea specificat|. Dac| operaia nu reuete, proprietatea EOF a mulimii de nregistrare ia valoarea True.

Editarea datelor unei mulimi de nregistr|ri

Dac| o mulime de nregistr|ri se poate actualiza prin specificarea tipului corespunz|tor DAO sau n ADO prin parametrii TipCursor i TipBlocare se pot modifica, ad|uga i terge nregistr|ri prin folosirea obiectului Recordset.

Modificarea din program a unei nregistr|ri se face parcurgnd etapele: 1. 2. 3. Poziionare pe nregistrarea dorit|; Realizarea modific|rilor;

Folosirea opional| a metodei Update pentru salvarea modific|rilor.

Public Sub ModificarecuADO()

Dim con As ADODB.Connection Dim rs As ADODB.Recordset

Pt. cumparare viziteaza:

Modificarea unei nregistr|ri

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "Members", con, adOpenKeyset, adLockOptimistic,E adCmdTable

With rs

.Find "[LastName] = 'Davolio'" If .EOF Then

MsgBox "Nu exist asa un nume!"

Else .Fields("LastName") = "Marinica"

0264-401667

NU COPIA !.

sau suna la:

375

Access 2000, ADO si ADOX - cursul 14

.Update End If End With

rs.Close Set rs = Nothing End Sub

n DAO era obligatorie folosirea metodei Edit nainte de modificarea unei mulimi de nregistr|ri, n ADO aceasta nici m|car nu mai exist|. ADO nu necesit| folosirea metodei Update pentru salvarea modific|rilor f|cute, aceasta se realizeaz| automat, mai puin dac| se apeleaz| metoda CancelUpdate. Dac| se modific| o nregistrare i ncercai s| nchidei mulimea de nregistr|ri ADO va genera o eroare n execuie dac| nu ai folosit metoda Update. Ad|ugarea unei nregistr|ri noi

Unei mulimi de nregistr|ri care se poate actualiza i care are securitatea aa nct s| ne permit| aceasta, i se adaug| o nregistrare parcurgnd etapele: 1. Folosii metoda AddNew pentru ad|ugarea unei nregistr|ri. Toate cmpurile vor primi valorile lor implicite; 2. Completai cmpurile cu valorile dorite; 3. Opional, folosii metoda Update pentru salvarea noii nregistr|ri. Dac| nu apelai metoda Update dar v| poziionai pe o alt| nregistrare ADO va salva nregistrarea automat. Dac| ncercai s| nchidei o mulime de nregistr|ri far| salvarea explicit| a nregistr|rii se va genera o eroare n execuie.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Public Sub AdaugarecuADO()

Dim con As ADODB.Connection Dim rs As ADODB.Recordset

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "Household", con, adOpenKeyset, adLockOptimistic,E adCmdTable

With rs .AddNew

0264-401667

NU COPIA !.

sau suna la:

376

Access 2000, ADO si ADOX - cursul 14

.Fields("HouseholdName") = "Vasilis" .Fields("Address") = "Muncii 103-105"

.Update End With

rs.Close

End Sub

tergerea unei nregistr|ri


1. 2.

Pentru a terge o nregistrare dintr-o mulime de nregistr|ri se parcurg etapele: Poziionare pe nregistrarea dorit|; Apelarea metodei Delete.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set rs = Nothing

Nu este nevoie de folosirea lui Update pentru tergerea nregistr|rii, odat| tears| nregistrarea dispare, mai puin n cazul n care face parte dintr-o tranzacie. n acest caz se poate reveni asupra tergerii. Dup| tergere nregistrarea care s-a ters r|mne cea curent|, de exemplu se poate folosi MoveNext pentru deplasarea pe nregistrarea urm|toare. Orice ncercare de a face ceva cu nregistrarea tears| va genera o eroare n execuie. Public Sub StergeToateInregistarileunuiTabelcuADO()

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "Members", con, adOpenStatic, adLockOptimistic,E adCmdTable

With rs

If .RecordCount > 0 Then .MoveFirst Do .Delete

sau suna la:

Dim rs As ADODB.Recordset

0264-401667

Dim con As ADODB.Connection

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

377

Access 2000, ADO si ADOX - cursul 14

.MoveNext Loop Until .EOF End If End With

rs.Close Set rs = Nothing

Codul prezentat terge toate nregistr|rile tabelului Members din baza de date ADDRBOOK.MDB dei metoda nu este cea mai bun| pentru rezolvarea acestei probleme. n practic| vei folosi pentru aceasta o interogare de tergere (Delete Query). Actualiz|ri n grup

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End Sub

Dac| se folosete cursorul client avnd unul dintre tipurile: adOpenKeyset, adOpenStatic se poate folosi abilitatea ADO-ului de actualizare unui grup de nregistr|ri. Adic|, se pot edita nregistr|ri multiple din baza de date dup| care se pot transmite toate modific|rile furnizorului OLE DB pentru a fi stocate ntr-o singur| operaie. Codul care urmeaz| va modifica toate nregistr|rile avnd n cmpul Country stocat| "USA" n "Transilvania". Public Sub ModificareInBloccuADO() Dim con As ADODB.Connection Dim rs As ADODB.Recordset

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset crt = "[Country] = 'USA'"

With rs

.CursorLocation = adUseClient

.Open "Household", con, adOpenKeyset, E adLockBatchOptimistic .Find crt Do While Not .EOF .Fields("Country") = "Transilvania"

sau suna la:

Dim crt As String

0264-401667

NU COPIA !.

378

Access 2000, ADO si ADOX - cursul 14

.Find crt, 1 Loop .UpdateBatch End With

rs.Close Set rs = Nothing

Dac| modific|rile nu pot fi salvate, de exemplu pentru c| un alt utilizator a ters o nregistrare, apare o eroare n execuie. ntr-un astfel de caz se poate folosi proprietatea Filter mpreun| cu constanta adFilterAffectedRecords pentru filtrarea interog|rilor afectate de ultimul Delete, UpdateBatch sau CancelBatch.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End Sub

Executarea interog|rilor

La fel ca i n DAO i n ADO interog|rile pot fi executate ns| cu o tehnic| i o funcionalitate m|rit|. Executarea unei interog|ri f|r| parametri stocate n baza de date O interogare f|r| parametri stocat| n baza de date este o instruciune SQL care a fost slavat| n baza de date i nu necesit| informaii suplimentare pentru a fi executat|. Codul care urmeaz| lucreaz| cu o astfel de interogare: Public Sub ExecutieInterogareStocataADO()

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset

rs.Open "[Invoices]", con, adOpenForwardOnly, E adLockReadOnly, adCmdStoredProc

With rs Do Until .EOF

sau suna la:

Dim con As ADODB.Connection

0264-401667

NU COPIA !.

379

Access 2000, ADO si ADOX - cursul 14

For Each fld In .Fields Debug.Print fld.Value & "' "; Next Debug.Print .MoveNext Loop .Close

Set rs = Nothing

Set con = Nothing

End Sub

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End With

Observai c| interogarea se folosete la fel ca i n DAO cu diferena c| aici numele interog|rii n Open se scrie ntre paranteze dreptunghiulare. Ea folosete interogarea Invoices din baza de date Northwind.mdb. Executarea unei interog|ri cu parametri stocate n baza de date O interogare cu parametri stocat| n baza de date este o instruciune SQL care a fost salvat| n baza de date i necesit| informaii suplimentare de natur| variabil| pentru a fi executat|. Codul care urmeaz| lucreaz| cu o astfel de interogare: Public Sub ExecutieInterogareStocatacuParametriADO()

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Dim com As ADODB.Command

Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Set con = CurrentProject.Connection

Set com = New ADODB.Command

Set com.ActiveConnection = con

com.CommandText = "[Sales by Year]"

Set rs = com.Execute(, Array(#7/28/1996#, #1/28/2000#), E adCmdStoredProc)

sau suna la:

Dim con As ADODB.Connection

0264-401667

NU COPIA !.

380

Access 2000, ADO si ADOX - cursul 14

With rs Do Until .EOF For Each fld In .Fields

Debug.Print fld.Value & "' "; Next Debug.Print

Loop

.Close End With

Set rs = Nothing

Set con = Nothing

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

.MoveNext

End Sub

O alt| form| de scriere al aceluiai cod, ns| prin folosirea parametrului Parameters din obiectul Command n locul metodei Execute este:

Public Sub ExecutieInterogareStocatacuParametriADO1() Dim con As ADODB.Connection Dim cat As ADOX.Catalog

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Set con = CurrentProject.Connection

Set cat = New ADOX.Catalog cat.ActiveConnection = con

Set com = cat.Procedures("sales by Year").Command

com.Parameters("Forms![Sales By YearE Dialog]!BeginningDate") = _ #7/28/1996# com.Parameters("Forms![Sales By Year Dialog]!EndingDate")E

sau suna la:

Dim com As ADODB.Command

0264-401667

NU COPIA !.

381

Access 2000, ADO si ADOX - cursul 14

= #1/28/2000#

Set rs = New ADODB.Recordset

rs.Open com, , adOpenForwardOnly, adLockReadOnly,E adCmdStoredProc

With rs Do Until .EOF

For Each fld In .Fields

Debug.Print fld.Value & "' ";

Next

Debug.Print

.MoveNext Loop

.Close End With

Set rs = Nothing

Set con = Nothing End Sub

Public Sub ExecutieInterogareStocatacuParametriADO2() Dim par As ADODB.Parameter Dim com As ADODB.Command

Dim rs As ADODB.Recordset Dim fld As ADODB.Field

Dim cat As ADOX.Catalog

Dim pro As ADOX.Procedure

Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection Set pro = cat.Procedures("Sales by Year")

0264-401667

NU COPIA !.

sau suna la:

O alt| metod|, n cazul n care trebuie s| cre|m o mulime de nregistr|ri pe baza unei interog|ri despre care nu tim prea multe este codul:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

382

Access 2000, ADO si ADOX - cursul 14

Set com = pro.Command

For Each par In com.Parameters par.Value = Eval(par.Name) Next

With rs

Do Until .EOF

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set rs = com.Execute

For Each fld In .Fields

Debug.Print fld.Value & "' ";

Next

Debug.Print

.MoveNext Loop

.Close End With

Set rs = Nothing

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

Set con = Nothing Set pro = Nothing

Set cat = Nothing

End Sub

Pentru ca exemplul prezentat s| funcioneze, trebuie deschis formularul "Sales by Year Dialog" din baza de date Northwind.mdb. Dac| interogarea are ca parametri obiecte ale unui formular trebuie ca formularul s| fie deschis, cu valorile parametrilor completai, nainte de lansarea interog|rii din program. Observai modul ciudat de stocare a obiectului Command. Se folosete ADOX (despre care se va vorbi mai pe larg n paragraful urm|tor)

0264-401667

sau suna la:

383

Access 2000, ADO si ADOX - cursul 14

Definirea i nc|rcarea schemei bazelor de date

nainte de crearea tabelelor sau a definirii oric|ror altor obiecte ale bazei de date trebuie creat| baza de date n sine. Codul care urmeaz| ilustreaz| cum se realizeaz| aceasta cu ADOX: Public Sub CreareBazadeDate() Dim cat As ADOX.Catalog

Set cat = New ADOX.Catalog

cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=.\bdnoua2000.mdb"

Obiectului DAO Database i corespunde n ADOX obiectul Catalog, iar pentru crearea unei baze de date se folosete metoda Create. n ADOX, ncriptarea i versiunea bazei de date se specific| prin intermediul propriet|ilor Encript Database i Engine Type. Linia care urmeaz| creaz| o baz| de date ncriptat| cu versiunea 1.1 a motorului Microsoft Jet prin specificarea propriet|ilor descrise mai sus n irul de conectare. cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=.\bdnoua2000.mdb" & _ "Jet OLEDB:Engine Type=2;" "Jet OLEDB:Encrypt Database=True;" & _

nc|rcarea informaiilor legate de schema bazei de date


Exemplul care urmeaz| afieaz| toate tabelele bazei de date prin parcurgerea coleciei ADOX

0264-401667

End Sub

Pt. cumparare viziteaza:

Crearea unei baze de date

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Orice baz| de date conine un num|r de tabele, indexuri, constrngeri etc. Definiiile acestor obiecte, toate la un loc, poart| denumirea de schema bazei de date. Att DAO ct i ADO pun la dispoziia utilizatorului obiecte pentru crearea de noi obiecte n baza de date ct i pentru nc|rcarea informaiilor legate de obiectele deja existente n baz|. Pentru manipularea din program ale acestor obiecte trebuie setat| referina c|tre Microsoft ADO Extensions for DDL and Security sau ADOX.

http://www.east.utcluj.ro/mb/mep/antal

pentru a extrage proprietatea Command a obiectului Procedure (o interogare stocat|). n condiii normale s-ar fi creat un obiect Command i s-ar fi atribuit propriet|ii CommandText numele interog|rii stocate n baza de date. Aceast| metod| ns| funcioneaz| numai cu interog|ri f|r| parametri. Furnizorul Jet nu va popula corect colecia Parametres a obiectului Command dect dac| obiectul Command este nc|rcat prin ADOX.

NU COPIA !.

sau suna la:

384

Access 2000, ADO si ADOX - cursul 14

Tables:

Public Sub AfisareTabele() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table

Set cat = New ADOX.Catalog

cat.ActiveConnection = CurrentProject.Connection

For Each tbl In cat.Tables

If ((tbl.Type <> "VIEW") And (tbl.Type <> "SYSTEM E TABLE")) Then Debug.Print tbl.Name, tbl.Type

End Sub

n DAO colecia TableDefs stoca tabele (obiecte TableDef) bazei de date, n ADOX colecia Tables conine obiectele Table din baza de date. n ADO ns| colecia Tables poate conine i obiecte care nu sunt tabele obinuite cum ar fi interog|ri f|r| parametri (considerate vederi [View] n ADOX). Tabelul care urmeaz| prezint| lista tuturor valorilor pe care le poate lua proprietatea Type:

LINK

Tabelul este legat printr-o surs| de date ne-ODBC. Tabelul este legat printr-o surs| ODBC.

PASS-THROUGH SYSTEM TABLE

Tabelul este unul de sistem al motorului Microsoft Jet.

TABLE VIEW

Tabel normal.

Tabelul este o interogare f|r| parametri care ntoarce nregistr|ri.

Crearea tabelelor

Bazele de date Microsoft Jet pot conine tabele locale, acestea avnd definiia i datele stocate n cadrul bazei de date din care sunt referite i tabele legate care sunt stocate n baze de date externe bazei n care sunt folosite, dar prin intermediul unei leg|turi o copie a definiiei tabelului este stocat| n baza de date din care aceasta este referit|.

sau suna la:

ACCESS TABLE

Tabelul este unul de sistem al Microsoft Access-ului.

0264-401667

Valoarea proprieta 7t -ii Type

Pt. cumparare viziteaza:

Next

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Descriere

NU COPIA !.

385

Access 2000, ADO si ADOX - cursul 14

Strategia pentru crearea unui obiect al bazei de date este sintetic prezentat| n etapele urm|toare: 2. Creai noul obiect prin definirea unei variabile de tipul obiect respectiv pentru a v| putea referi la el; 3. Definii noul obiect prin setarea propriet|ilor lui; 4. Ad|ugai prin folosirea lui Append obiectul coleciei pentru a-l face permanent parte a bazei de date. Crearea unui tabel local

Public Sub CreeazaUnTabelADOX() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table

Set cat = New ADOX.Catalog

cat.ActiveConnection = CurrentProject.Connection Set tbl = New ADOX.Table

With tbl

.ParentCatalog = cat .Name = "Clienti"

.Columns.Append "IDClient", adInteger True

.Columns.Append "Nume", adVarWChar

.Columns.Append "Prenume", adVarWChar

End With

cat.Tables.Append tbl cat.Tables.Refresh

Set tbl = Nothing Set cat = Nothing

Application.RefreshDatabaseWindow

0264-401667

.Columns("IDClient").Properties("AutoIncrement") = E

http://www.east.utcluj.ro/mb/mep/antal

1.

Deschidei obiectul Catalog corespunz|tor bazei de date;

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

386

Access 2000, ADO si ADOX - cursul 14

End Sub n ADOX nu este necesar| folosirea metodei Create pentru crearea unei coloane nainte de ad|ugarea ei la colecie. Metoda Append va fi folosit| att pentru crearea ct i pentru ad|ugarea coloanei. Denumirile tipurilor de date pentru coloane sunt diferite fa| de DAO i sunt prezentate comparativ n tabelul urm|tor:

Tip de dat| DAO

Tip de dat| ADO adBinary

dbBinary dbBoolean dbByte

adBoolean

adUnsignedTinyInt adCurrecy adDate

dbCurrency dbDate

dbDecimal dbDouble dbGUID

adNumeric adDouble adGUID

dbInteger dbLong

adSamllInt adInteger

dbLongBinary dbMemo

adLongVarBinary adLongVarWChar

dbSingle dbText

adSingle

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Exist| i alte atribute ale unui tabel sau ale unei coloane care nu pot fi setate la crearea tabelului sau coloanei n DAO numai prin folosirea propriet|ii Attributes, n ADO setarea lor se face cu aceeai proprietate, iar echivalena ntre propriet|ile DAO i ADO se dau n continuare sub form| tabelar|. n noul model de date unele propriet|i au r|mas n ADO iar altele sunt specifice furnizorului Microsoft Jet.

Proprietate TableDef DAO

Valoare

Proprietate Table ADOX

Attributes Attributes

dbAttachExclusive dbAttachSavePWD

Jet OLEDB: Exclusive Link Jet OLEDB: Cache Link Name/Password

sau suna la:


True True

adVarWChar

Valoare

0264-401667

NU COPIA !.

387

Access 2000, ADO si ADOX - cursul 14

Attributes Attributes

dbAttachedTable dbAttachedODBC

Type

"LINK"

Proprietate Field DAO Attributes Attributes Attributes Attributes Attributes Attributes

Valoare dbAutoIncrement dbFixedField

Proprietate Column ADOX AutoIncrement True

http://www.east.utcluj.ro/mb/mep/antal

Type

"PASS-THROUGH"

Valoare

ColumnAttributes Jet OLEDB: Hyperlink

adColFixed True adFldUpdatable Not adColFixed

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

dbHyperlinkField dbSystemField dbUpdatableField dbVariableField

nu are echivalent Attribute (obiectul Field) ColumnAttribute

n exemplul prezentat proprietatea ParentCatalog a obiectului Catalog este setat| la cea a furnizorului nainte de setarea propriet|ii AutoIncrement la valoarea True din colecia Properties. Crearea unui tabel legat

Codul urm|tor leag| n baza de date Northwind.mdb tabelul cu numele Clienti din baza de date bdnoua2000.mdb. Pentru aceasta se va deschide baza de date Northwind.mdb, iar codul care urmeaz| va fi introdus i lansat n execuie din cadrul acestei baze de date. Public Sub LegareTablecuADO() Dim cat As New ADOX.Catalog

0264-401667

NU COPIA !.

sau suna la:

Legarea cunoscut| i sub denumirea de ataare a unui tabel dintr-o baz| de date extern| permite citirea, actualizarea i ad|ugarea datelor i crearea de interog|ri pe baza tabelului legat ca i cnd acesta ar face parte din baza de date. Pentru crearea unui tabel legat trebuie specificat| sursa datelor externe i numele tabelului extern. n ADOX, propriet|i specifice furnizorului Microsoft Jet sunt folosite pentru crearea leg|turii. La referirea coleciei Properties a obiectului Table nainte de ad|ugarea lui la colecia Tables trebuie setat| proprietatea ParentCatalog. Setarea este obligatorie pentru ca ADOX s| tie de la care furnizor OLE DB va primi informaiile legate de proprietate. Proprietatea Jet OLEDB: Link Datasource va stoca numai numele i calea c|tre baza de date care conine tabelul extern. Alte opiuni de conectare sunt specificate n proprietatea Jet OLEDB: Link Provider String, de exemplu aici se va specifica dac| este cazul numele de utilizator i parola lui pentru conectare la baza de date din care face parte tabelul extern.

Pt. cumparare viziteaza:

388

Access 2000, ADO si ADOX - cursul 14

Dim tbl As New ADOX.Table

cat.ActiveConnection = CurrentProject.Connection

tbl.Name = "Clienti-legati" Set tbl.ParentCatalog = cat

tbl.Properties("Jet OLEDB:Link Datasource") =E ".\bdnoua2000.mdb" tbl.Properties("Jet OLEDB:Link Provider String") = "" tbl.Properties("Jet OLEDB:Remote Table Name") = "Clienti"

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

tbl.Properties("Jet OLEDB:Create Link") = True

cat.Tables.Append tbl

Set cat = Nothing End Sub

Observai n codul de mai sus linia Dim cat As New ADOX.Catalog, aceasta este echivalenta liniilor: Dim cat As ADOX.Catalog

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

Set cat = New ADOX.Catalog Modific|ri aduse tabelelor

Odat| ce un tabel a fost creat se pot aduce modific|ri acestuia, astfel putem ad|uga sau terge coloane, schimba regulile de validare sau actualiza leg|turile c|tre tabele legate.

Codul care urmeaz| adaug| un cmp de tipul Memo tabelului Clienti din baza de date bdnoua2000.mdb. Public Sub AdaugaunCampADOX()

Dim cat As New ADOX.Catalog Dim col As New ADOX.Column

cat.ActiveConnection = CurrentProject.Connection

0264-401667

sau suna la:

389

Access 2000, ADO si ADOX - cursul 14

With col .Name = "Observatii" .Type = adLongVarWChar End With

cat.Tables("Clienti").Columns.Append col

Set col = Nothing Set cat = Nothing

End Sub

n cazul tabelelor legate, dac| parola de conectare la baza de date sau poziia bazei de date pe disc care conine tabelele legate se modific|, de exemplu datorit| mut|rii acesteia ntr-un alt director, codul care urmeaz| va realiza legarea tabelelor dac| se va specifica noua parol| i noua cale c|tre baza de date. Public Sub ActualizareLegaturicuADO() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

cat.ActiveConnection = CurrentProject.Connection

For Each tbl In cat.Tables

If tbl.Type = "LINK" Then

tbl.Properties("Jet OLEDB:Create Link") = False

tbl.Properties("Jet OLEDB:Link Datasource") = _ "calenoua\bdnoua2000.mdb"

tbl.Properties("Jet OLEDB:Link Provider String") = _ ";pwd=nouaparola" tbl.Properties("Jet OLEDB:Create Link") = True

End If

Next

Set cat = Nothing

0264-401667

sau suna la:

390

Access 2000, ADO si ADOX - cursul 14

End Sub

Crearea i modificarea interog|rilor

n DAO obiectul QueryDef era folosit pentru ad|ugarea automat| a interog|rii la colecia QueryDefs. Obiectul Command este ntr-un fel echivalentul lui QueryDef, dar interog|rile create cu acesta sunt temporare. Ele trebuie explicit ad|ugate coleciei Views sau Procedures pentru ca acestea s| fie stocate n baza de date. Furnizorul Microsoft Jet definete interog|rile motorului Jet ca vederi (Views) dac| acestea nu au parametri i ntorc nregist|ri. Crearea unei interog|ri stocate n baza de date folosind colecia Views Pentru c| n exemplul care urmeaz| interogarea este f|r| parametri i ntoarce nregistr|ri, obiectul ADO Command va fi ad|ugat coleciei ADOX Views.

Dim cat As New ADOX.Catalog

Dim com As New ADODB.Command

cat.ActiveConnection = CurrentProject.Connection com.CommandText = "SELECT Clienti.Nume FROM Clienti WHEREE " & "(((Clienti.Nume) Like ""A*""));" cat.Views.Append "ClienticuA", com cat.Views.Refresh Set cat = Nothing

Pt. cumparare viziteaza:

Public Sub CreareIntrogareStocatecuADO()

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

End Sub

Crearea unei interog|ri stocate n baza de date folosind colecia Procedures Public Sub CreareIntrogareStocatecuADO1() Dim cat As New ADOX.Catalog

Dim com As New ADODB.Command

cat.ActiveConnection = CurrentProject.Connection

com.CommandText = "PARAMETERS [Nume client] Text ( 255E );SELECT" & _

sau suna la:

Set com = Nothing

0264-401667

NU COPIA !.

391

Access 2000, ADO si ADOX - cursul 14

"Clienti.Nume FROM Clienti WHERE (((Clienti.Nume) LikeE [Nume" & "client]));"

cat.Procedures.Refresh Set cat = Nothing com.Execute End Sub

Modificarea instruciunii SQL a unei interog|ri

Pentru modificarea instruciunii SQL a unei interog|ri trebuie creat un obiect Command bazat pe interogarea de modificat din baza de date. Apoi se modific| proprietatea CommandText, iar n final se reseteaz| proprietatea Command a interog|rii dup| cum se vede n codul care urmeaz|: Public Sub ModificareIntrogareStocatecuADO() Dim cat As New ADOX.Catalog

Dim com As New ADODB.Command

cat.ActiveConnection = CurrentProject.Connection Set com = cat.Procedures("ClientiPar").Command com.CommandText = "SELECT * FROM Clienti;"

Set cat = Nothing Set com = Nothing End Sub

Crearea unui index

Crearea unui obiect index necesit| folosirea obiectului ADOX Index. Dup| crearea obiectului, trebuie ad|ugat unui cmp, apoi se va specifica c| va fi cheie primar|, unic| i ordinea de sortare. n DAO exist| dou| propriet|i Required i IgnoreNulls care mpreun| determin| dac| vor fi sau nu inserate valori Null pentru cmpurile din index i dac| intr|rile index vor fi sau nu create cnd unele cmpuri ale unui index cu mai multe coloane conin valori Null. Tabelul care urmeaz| prezint| proprietatea ADOX IndexNulls comparativ cu cele din DAO.

sau suna la:

Set cat.Procedures("ClientiPar").Command = com

0264-401667

'aici se salveaza procedura actualizata

http://www.east.utcluj.ro/mb/mep/antal

cat.Procedures.Append "ClientiPar", com

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

392

Access 2000, ADO si ADOX - cursul 14

DAO Required True

DAO IgnoreNulls False

ADOX IndexNulls adIndexNullsDisallow

Descriere Valoarea Null nu este permis| n cmpul index; nu se adaug| o intrare index. Valoarea Null este permis| n cmpul index; nu se adaug| o intrare index. Valoarea Null este permis| n cmpul index; se adaug| o intrare index.

False

True

adIndexNullsIgnore

False

False

adIndexNullsAllow

Public Sub CreeazaUnIndexADOX() Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table Dim ind As New ADOX.Index

With ind

.Name = "PrimaryKey"

.Columns.Append "IDClient"

.Columns("IDClient").SortOrder = adSortAscending .IndexNulls = adIndexNullsDisallow .PrimaryKey = True

End With

tbl.Indexes.Append ind

sau suna la:

Set tbl = cat.Tables("Clienti")

0264-401667

cat.ActiveConnection = CurrentProject.Connection

Pt. cumparare viziteaza:

Implicit proprietatea IndexNulls este setat| la valoarea adIndexNullsDisallow ceea ce face ca valorile Null s| fie nepermise n index i nu se va ad|uga o intrare cu un index care are un cmp Null.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

393

Access 2000, ADO si ADOX - cursul 14

Set cat = Nothing Set tbl = Nothing Set ind = Nothing End Sub

Crearea unei relaii

Public Sub CreareRelatieADOX() Dim cat As New ADOX.Catalog Dim che As New ADOX.Key

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Crearea unei relaii se face prin obiectul ADOX Key, care dup| crearea i setarea propriet|ilor lui se va ad|uga obiectului Tabel. Relaia din codul care urmeaz| se creeaz| ntre tabelele Categories i Products ale bazei de date Northwind.mdb. Aceast| relaie exist| deja n baza de date i va putea fi creat| din cod numai dac| deschidei fereastra relaiilor i o tergei nainte de lansarea n execuie a codului.

cat.ActiveConnection = CurrentProject.Connection With che

.Name = "CategoriiProduse" .Type = adKeyForeign

.RelatedTable = "Categories" .Columns.Append "categoryID"

End With

cat.Tables("Products").Keys.Append che

Set cat = Nothing Set che = Nothing

End Sub

sau suna la:

.UpdateRule = adRICascade

0264-401667

.Columns("CategoryID").RelatedColumn = "CategoryID"

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

NU COPIA !.

394

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Crearea unei aplicaii cu formulare, subformulare i cod n Access 2000


Aplicaia care se prezint| n continuare face gestionarea ratelor pentru poliele ce trebuie pl|tite de c|tre o firm| sau de c|tre o persoan| particular|, asiguratorului. Schema bazei de date este:

Nume Tabel

Nume cmp

TFirme

IDFirma

Data Type: AutoNumber PrimaryKey

Firma

Data Type: Text Field Size: 100 Data Type: Memo

Profil

TPolite

IDPolita

Data Type: AutoNumber PrimaryKey

IDFirma

Data Type: Number

Field Size: Long Integer Data Data Type: Date/Time

sau suna la:

Tip/Propriet|i

0264-401667

Baza de date se va numi curs15.mdb. Des - i este scris| n Access 2002, ea funcioneaza 7 i n Access 2000. Se vor crea trei tabele, TFirme, TPolite i TRate, toate cmpurile vor fi de tipul, implicit, Text, mai puin cele care sunt enumerate n continuare:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

395

Formulare, subformulare, programare cu DAO i ADO - cursul 15

TRate

IDRata

Data Type: AutoNumber PrimaryKey

IDPolita

Data Type: Number Field Size: Long Integer

Data ratei Achitat

Data Type: Date/Time Data Type: Yes/No

Sincronizarea a dou| subformulare

Formularul pentru introducerea firmelor care au de pl|tit polie este:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Observai c| exist| dou| regiuni n formular, cea de sus, n care datele sunt prezentate mai sumar, motiv pentru care se poate alege o form| de afiare care s| cuprind| mai multe firme i cea de jos, n care pentru fiecare firm| selectat| n regiunea de sus se vor afia toate detaliile clientului. Formularul p|rinte se numete FFirme, pe suprafa| lui vor fi puse dou| subformulare care vor avea aceeai surs| de date, tabelul TFirme i care vor fi sincronizate ntre ele. Formularul p|rinte nu are surs| de date. Din acest motiv proprietatea Record Source va fi vid|, iar pentru c| f|r| date nu sunt necesare nici instrumentele de navigare propriet|ile corespunz|toare navig|rii vor fi setate la valorile din tabelul care urmeaz|:

0264-401667

NU COPIA !.

sau suna la:

396

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Proprietate Scroll Bars Record Selectors Navigation Buttons Dividing Lines Border Style On Open Neither No No No Dialog

Valoare

n vederea sincroniz|rii celor dou| subformulare se folosete proprietatea Recordset care reprezint| sursa de date (Record Source) pentru cele dou| subformulare. Aceast| proprietate

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Set Forms!FFirme!sf2.Form.Recordset = Forms!FFirme!sf1.Form.Recordset

http://www.east.utcluj.ro/mb/mep/antal

Pt. cumparare viziteaza:

permite citirea sau scrierea nregistr|rilor manipulate printr-un formular sau subformular. Pentru a lega subformularele sf1 i sf2 la aceeai surs| de date, n vederea sincroniz|rii lor, s-a pus linia Set Forms!FFirme!sf2.Form.Recordset = Forms!FFirme!sf1.Form.Recordset pe evenimentul On Open a formularului principal. Menionez c| aceast| metod| de sincronizare funcioneaz| numai n Access 2000 i 2002. n figura anterioar| se prezint| formularul FFirme n modul proiectare. n versiunile anterioare de Access formularul p|rinte afia subformularele sub forma unor

0264-401667

NU COPIA !.

sau suna la:

397

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pentru subformularul sf1 proprietatea Default View are valoare Datasheet. Pentru subformularul sf2 urma 7 toarele proprieta 7ti sunt modificate: Default View Single Form, Record Selectors No, Navigation Buttons No, Dividing Lines No. Proprietatea Record Source este, pentru ambele subformulare, setat| la TFirme. sf1 va avea vizibile numai controalele corespunza 7 toare cmpurilor Firma, Adresa, Telefon1. Toate celelalte controale vor fi ascunse cu ajutorul lui Hide. De asemenea, pe evenimentul Double Click a formularului corespunz|tor lui sf1 se va scrie codul: Private Sub Form_DblClick(Cancel As Integer) If Not IsNull(Forms!FFirme!sf1.Form.IDFirma) Then DoCmd.OpenForm "FFirma", , , , , acDialog,E Forms!FFirme!sf1.Form.IDFirma End If End Sub

nainte de a trece la discutarea celui de al doilea formular, doresc s| prezint modul de creare a unui meniu Popup care s| permit| sortarea nregistr|rile din sf1 cresc|toare sau descresc|toare. Tehnologia de realizare a meniurilor este aceeai n toat| gama de aplicaii Office ncepd cu Office 97. selectai pe rnd View, Toobars, Customize;

Realizarea unui meniu

clic pe butonul New, introducei n fereastra de dialog New Toolbar, Sortare, care va fi numele noului meniu (vezi figura

0264-401667

NU COPIA !.

sau suna la:

7 ri a subformularului sf1, va Acesta, la realizarea unui clic dublu, pe selectorul de nregistra duce la deschiderea formularul cu numele FFirma (care nca 7 nu exista 7 ). De asemenea, se va transmite ca argument, noului formular deschis, coninutul cmpului Forms!FFirme!sf1.Form.IDFirma din subformularul sf1. Valoarea va fi folosit| pentru a deschide formularul TFirme1 avnd ca nregistrare curent| chiar firma pe a c|rei nregistrare s-a dat clic dublu n sf1. Aceasta este o metod| pentru realizarea sincroniz|rii ntre dou| formulare independente pe baza valorilor unor controale care conin date comune. n cazul exemplului prezentat este vorba despre coninutul lui IDFirma. Deschiderea formularului FFirma este condit -ionata 7 de existent -a unei valori n controlul IDFirma. Testarea existent -ei acestei valori se face colosind funct -ia IsNull().

http://www.east.utcluj.ro/mb/mep/antal

dreptunghiuri albe. ncepnd cu Access 2000, subformularele sunt i ele afiate n modul proiectare. Observai c| acestea sunt afiate complet, dei teoretic ar trebui s| fie un pas nainte, practic spaiul alocat subformularului este mic fiind aproape imposibil s| acion|m asupra controalelor lui. i pentru a face lucrurile i mai incomode este imposibil s| deschidem un subformular ntr-o fereastr| separat| ct timp formularul p|rinte este deschis. Problema se poate rezolva numai dac| deschidei prima oar| subformularul i apoi formularul p|rinte. n aces caz subformularul va fi afiat ca un dreptunghi alb n formularul p|rinte, dar va putea fi 7 uor n propria lui fereastr|. editata

Pt. cumparare viziteaza:

398

Formulare, subformulare, programare cu DAO i ADO - cursul 15

urma 7 toare);

n acest moment pe suprafaa ecranului apare undeva un desen de forma

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

, acesta este

noul meniu . n continuare urmeaz| s|-i complet|m elementele; realiznd clic pe butonul Commands a ferestrei de dialog Customize vor fi afiate toate comenzile care pot fi inserate n noul meniu. n cazul nostru, nainte de a trece mai departe trebuie s| mai realiz|m urm|toarele: 1. Realizai un modul nou cu numele de Sortare care s| conin| codurile funciilor urm|toare: Public Function SortareCrescatoare()

Forms!FFirme!sf1.Form.OrderByOn = True

Forms!FFirme!sf1.Form.OrderBy = "[" &E Screen.ActiveControl.Name & "] ASC" Set Forms!FFirme!sf2.Form.Recordset =E Forms!FFirme!sf1.Form.Recordset End Function

Public Function SortareDescrescatoare()

Forms!FFirme!sf1.Form.OrderByOn = True

Forms!FFirme!sf1.Form.OrderBy = "[" &E Screen.ActiveControl.Name & "] DESC" Set Forms!FFirme!sf2.Form.Recordset =E Forms!FFirme!sf1.Form.Recordset

0264-401667

NU COPIA !.

sau suna la:

399

Formulare, subformulare, programare cu DAO i ADO - cursul 15

End Function

Public Function Nesortate()

Forms!FFirme!sf1.Form.OrderByOn = False Forms!FFirme!sf1.Form.OrderBy = "" Set Forms!FFirme!sf2.Form.Recordset =E Forms!FFirme!sf1.Form.Recordset End Function 2. Realizai urm|toarele macro-uri:

Observai c| fiecare macro va lansa n execuie o funcie corespunz|toare unei intrari n meniul pe care urmeaz| s|-l construim (ultimul macro n-a mai fost prezentat mai sus, el va lansa n execuie funcia SortareDescrescatoare()). realizai clic cu butonul din dreapta pe noul

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

meniu

apoi, selectai

Customize; selectai pe Commands i apoi pe All Macros, n fereastra Commands (vezi fereastra ala 7 turata 7 ) vor fi afiate cele trei macro-uri; folosii tehnica drag-and-drop pentru a trage numele acestor macro-uri pe suprafaa noului meniu pentru ca el s| fie de forma:

n fereastra de dialog Customize dai clic pe Toolbars, apoi selectai numele

0264-401667

NU COPIA !.

sau suna la:

400

Formulare, subformulare, programare cu DAO i ADO - cursul 15

pentru asocierea noului meniu Popup controlului sf1 se intr| n modul de editare al formularului p|rinte, apoi al subformularului i proprietarea Shorcut Menu Bar a subformularului va fi setat| la Sortare (vezi figura urm|toare).

dac| ne poziion|m acum undeva pe suprafaa lui sf1 i facem clic pe butonul din dreapta meniul Sortare va fi afiat sub forma:

http://www.east.utcluj.ro/mb/mep/antal

meniului, ap|sai butonul Properties i setai proprietatea Type a meniului la Popup. Acceptat -i mesajul de avertisment dat de Access s - i vet -i vedea ca 7 meniul dispare din lista meniurilor. Daca 7 dorit -i sa 7 -l mai modificat -i, selectat -i Customize, Toolbars, Properties, iar n Selected Toolbar ca 7 utat -i si selectat -i numele Sortare, apoi setat -i pe Type la Menu Bar si meniul va deveni vizibil din nou.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Sincronizarea a trei formulare

0264-401667

NU COPIA !.

sau suna la:

401

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Private Sub Form_Open(Cancel As Integer) Dim IDFirma As Long If Not IsNull(Me.OpenArgs) Then IDFirma = CLng(Me.OpenArgs) DoCmd.GoToControl "IDFirma"

DoCmd.FindRecord IDFirma, , True, , True, , True End If End Sub

http://www.east.utcluj.ro/mb/mep/antal

Am v|zut deja c| la realizarea unui dublu clic pe selectorul de nregistr|ri din sf1 a formularului FFirme, formularul TFirme1 va fi deschis avnd ca nregistre curent| firma pe care s-a realizat dublu clic n formularul FFirme. Pentru ca s| se poat| realiza aceast| sincronizare ntre dou| formulare independente formularul deschis transmite ca s - i parametru celui care urmeaz| s| fie deschis valoarea din cmpul IDFirma. Al doilea formular (TFirme1) are scris codul care urmeaz| scris n procedura de eveniment OnOpen pentru poziionarea pe nregistrarea cu acelai IDFirma. Evenimetul Open apare cnd un formular este deschis, dar nainte de afiarea nregistr|rilor. La prima deschidere a unui formular evenimentele care apar sunt: Open - Load - Resize - Activate - Current.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

402

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Cnd se folosesc subformularele?

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Formularul FFirma este prezentat n figura urma 7 toare. Observai c| pe suprafaa lui sunt dou| subformulare sf1, sf2 i un control Unbound care are numele IDPolita. Formularul p|rinte (FFirma) are ca surs| de date (Record Source) tabelul TFirme, sf1 pe tabelul TPolite, iar sf2 pe tabelul TRate. Ambele subformulare vor avea proporietatea Default View setat| la Datasheet. Pentru afiarea sau introducerea datelor n mai multe tabele care se afl| ntr-o relaie 1-M (one-to-may) pot fi folosite subformulare. Un subformular este un formular legat de formularul din care face parte putnd fi afiat n modurile foaie de date (Datasheet view) sau

http://www.east.utcluj.ro/mb/mep/antal

Valoarea parametrului IDFirma este stocat| n proprietatea OpenArgs a formularului care se deschide prin metoda OpenForm. Daca 7 proprietatea OpenArgs cont -ine o valoare atunci se va ga 7 si nregistrarea care are acea valoare n controlul IDFirma. Pentru aceasta prima oara 7 , folosind metoda GoToControl, se va muta focusul pe controlul IDFirma din formular. n continuare, prin folosirea metodei FindRecord, se va ga 7 si nregistraeea care are n controlul curent valoarea specificata 7 n primul argument.

Pt. cumparare viziteaza:

formular (Form view). Din punctul lor de vedere subformularele sunt formulare, dar din punctul de vedere al formularului p|rinte sunt simple controale. Pot fi create prin mai multe metode, cea mai simpl| este tehnologia drag-and-drop, adic| se selecteaz| un formular din

0264-401667

NU COPIA !.

sau suna la:

403

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Private Sub Form_Current()

Me.Parent("IDPolita") = IDPolita End Sub

Accesul la controalele unui subformular

La crearea unei referine prin cod ntre un formular i un subformular sunt importante numai numele formularului i al controlului subformular, adic| valorile propriet|ilor Name. n acest sens numele subformularului coninut n proprietatea Source Object nu este folosit nic|ieri pentru referirea controlului de tip subformular. Subformularul este doar un control i de multe ori numele acestuia va fi diferit de cel al numelui formularului coninut n subformular. Pentru a referi un subformular al unui formular se folosete proprietatea Form a controlului subformular de referit astfel: Forms![NumeFormular]![NumeControlSubformular].Form.

0264-401667

NU COPIA !.

Proprietatea Parent este folosit|, n procedura anterioar|, pentru a accesa pe IDPolita din formularul p|rinte.

Pt. cumparare viziteaza:

n condiii normale se pot crea leg|turi numai ntre formularul p|rinte (principal) i subformulare. n cazul nostru este nevoie de crearea unei leg|turi speciale pentru a putea sincroniza o nregistrare din subformularul polielor cu nregistr|rile corespunz|toare ratelor de pl|tit pentru o anumit| polit|. Pentru aceasta este nevoie de un artificiu. Pe suprafaa formularului pa 7 rinte se pune un control Text care va fi Unbound pentru ca nu va avea trecut nimic la proprietatea Control Source. La fiecare trecere pe o nregistrare nou| n subformularul sf1 valoarea acestui control va fi actualizat|, n acelai timp numele acestui control va fi trecut cu mna n propriet|ile LinkChildFields i LinkMasterFields ale subformularului sf2. Actualizarea valorii controlului IDPolita se realizeaz| prin procedura de tratare a evenimentului On Current n subformularul sf1 astfel:

http://www.east.utcluj.ro/mb/mep/antal

fereastra bazei de date, apoi se trage pe suprafaa unui formular p|rinte. Dac| ntre tabelele celor dou| subformulare s-au definit relaii Access va crea automat leg|tura ntre formularul p|rinte i subformular. n cazul nostru leg|tura ntre formularul p|rinte i sf1 se face prin propriet|ile LinkChildFields i LinkMasterFields care vor fi setate la valoarea IDFirma. Aceste propriet|i controleaz| relaia dintre formularul p|rinte i subformular respectiv modul n care acestea interacioneaz|. Numai dac| aceste propriet|i sunt setate corect deplasarea pe o alt| nregistrare n formularul p|rinte va duce la deplasare pe noile nregistr|ri corespunz|toare i n subformular. O alt| modalitate de creare a unui subformular este cea deja discutat| prin selectarea controlului Subform din cutia cu instrumente (Toolbox).

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

404

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Dac| dorim s| referim un control cu numele NumeControlSF al subformularului care are numele de control NumeControlSubformular atunci putem folosi formele de scriere: Forms![NumeFormular]![NumeControlSubformular].Form.!E NumeControlSF Forms("NumeFormular")("NumeControlSubformular").Form.E Controls("NumeControlSF") Observai c| sintaxa este destul de complicat|, pentru ca s| nelegei motivul acestei scrieri trebuie s| tii c|: caracterul punct (.) se folosete numai pentru a prefaa propriet|i sau metode i nu obiecte ale unei colecii; caracterul semn de exclamare (!), n momentul prelucr|rii expresiei, se transform| ntr-un set de paranteze rotunde i de ghilimele n jurul obiectului, astfel scrierea: Forms!NumeFormular!NumeSubformular este echivalent| cu urma 7 toarele: Forms("NumeFormular")!NumeSubformular Forms("NumeFormular")("NumeSubformular") Dac| dorim s| set|m o proprietate a unui subformular, de exemplu pe Visible, atunci scriem: Forms("NumeFormular")("NumeSubformular").Visible = True

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Private Sub Form_Current()

If (Me!sf1.Form.RecordsetClone.RecordCount <= 0) Then E Forms!FFirma!IDPolita = "" End Sub

Ad|ugarea, prin cod, de date n dou| tabele aflate n relaie one-to-many

Pn| acum majoritatea codului a fost orientat pe sincronizarea ntre formulare. Ad|ugarea de date ntr-un formular este o operaie care trebuie s| decurg| sigur i f|r| erori. n aces scop scrierea unui cod care s| genereze setul de date care se dorete a fi introdus n tabele devine esenial|. n formularul FFirma, la ap|sarea butonului Adauga, se va realiza introducerea

sau suna la:

Tratarea -iilor except

n cazul formularului FFirma un caz particular este cel n care subformularul sf1 nu are nregistra 7 ri. Secvent -a 7 de cod care urmeaza 7 se va atas - a evenimentului On Current. Ea va fort -a disparit -ia ntregistra 7 rilor afis - ate n subformularul sf2.

0264-401667

NU COPIA !.

405

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Dataazi

http://www.east.utcluj.ro/mb/mep/antal

automat| de date n tabelele TPolite i TRate. O singur| nregistrare va fi ad|ugat| n TPolite i una sau mai multe n TRate. Precum se observ| n figura anterioara 7 , unele date sunt preg|tite n avans (data primei rate care este data curent| i data urm|toarei rate care este la o lun| de la 7 rul de rate al data curent|; numele firmei care n acest formular nu se poate modifica; numa poliei care trebuie s| fie cel puin 1) i pentru a ndruma utilizatorul cu privire la valorile care trebuie introduse, ns| exist| posibilitatea modific|rii lor n funcie de necesit|i.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Dataaluna Dataaan

Datauzi Datauluna Datauan

Firma

Rate Polita Data

n continuare se vor prezenta dou| moduri de scriere a codului care realizeaz| nscrierea n tabele, primul folosind DAO i al doilea folosind ADO. Pentru p|strarea simplit|ii codului am preferat s| nu lucrez cu tranzacii dei problema se preteaz| la o astfel de programare ntruct aciunile de ad|ugare trebuie f|cute ntr-o anumit| ordine (pentru p|strarea integrit|tii refereniale) i nu se pot ntrerupe pentru a se face individual i independent. n figura de mai sus au fost scrise numele controalelor folosite n procedurile vor fi prezentate. Pentru controalele care au valori iniiale i restricii severe de valori care pot fi trecute n locul celor init -iale prezint propriet|ile care trebuie s| fie setate. Fereastra propriet|ilor unui control este "mai ciudat|" ntruct exemplul a fost scris n Office XP.

0264-401667

NU COPIA !.

sau suna la:

Dup| completarea tuturor controalelor formularului FNou, la ap|sarea butonului Nou, noile -i ca 7 , n figura de mai sus, date vor fi generate i ad|ugate n cele dou| tabele. Observat 7 rii controlul de tipul Text Box, cu numele Firma, apare invalidat, ca urmare a seta proprieta 7tii Enable la No. De asemenea, cele doua 7 subformulare, corespunza 7 toare polit -elor si ratelor vor avea setate, la nivel de formular, proprietatea Allow Additions la No. Aceasta va opri introducerea directa 7 a datelor de la tastatura 7 n aceste subformulare act -iunea fiind 7 , exclusiv, doar prin folosire formularului FNou. posibila

Pt. cumparare viziteaza:

406

Formulare, subformulare, programare cu DAO i ADO - cursul 15

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

Prima variant| de cod prezentat| folosete DAO. Principiul de funcionare a codului va r|mne acelai i n cazul implement|rii cu ADO. Variabilele da i du sunt folosite pentru stocarea datei de azi i a datei pentru urm|toarea rat|. Din diferana acestor date se poate calcula num|rul de zile ntre rata curent| i cea care urmeaz|. Pentru realizarea operaiilor

0264-401667

NU COPIA !.

sau suna la:

407

Formulare, subformulare, programare cu DAO i ADO - cursul 15

1 Public Sub NoucuDAO() 2 3 4 5 6 7 8 9 10 11 12 13

Dim db As DAO.Database Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset Dim t As String Dim da As Date Dim du As Date

Dim Rate As Integer, c As Integer Dim d As Integer

Dim IDPolita As Long

On Error GoTo eroare

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

aritmetice cu date VBA are funcii speciale, n cazul acesta diferen| dintre dou| date este calculat| folosind funcia DateDiff() n linia 33. n liniile 14 i 16 funcia DateSerial() este folosit| pentru a crea o valoare de tipul dat| plecnd de la o dat| "spart| n zi, luna i an". Liniile 35-46 adaug| o nregistrare n tabelul TPolite, iar liniile 50-66 adaug| una sau mai multe nregistr|ri n tabelul TRate prin intermediul ciclului while controlat prin num|rul de rate stocate n variabila Rate. n DAO, ultima nregistrare ad|ugat| se poate g|si prin folosirea propriet|ii LastModified (vezi linia 44), aceasta ntoarce un Bookmark prin care se poate g|si valoarea lui IDPolita care se genereaz| automat (ntruct are tipul Autonumber). Prin aceast| valoare se creeaz| leg|tura ntre TPolite i TRate, deci n cmpul cheie str|in| din TRate aceast| valoare va trebui s| fie aceeai pentru toate ratele asociate unei anumite polite.

Pt. cumparare viziteaza:

14 da = DateSerial(Forms!FNou!Dataaan, Forms!FNou!Dataaluna,E 15 Forms!FNou!Dataazi) 16 du = DateSerial(Forms!FNou!Datauan, Forms!FNou!datauluna,E 17 Forms!FNou!Datauzi) 18 19

If (da >= du) Then

20 MsgBox "Data PRIMEI RATE trebuie sa fie mai mica (<)E 21 decit data RATEI URMATOARE", vbCritical, "Eroare la E 22 introducerea datelor" 23 24 25 26

Exit Sub

End If

If IsNull(Forms!FNou!Rate) Then

0264-401667

NU COPIA !.

sau suna la:

408

Formulare, subformulare, programare cu DAO i ADO - cursul 15

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Exit Sub End If

d = DateDiff("d", da, du)

t = "TPolite"

Set db = CurrentDb Set rs1 = db.OpenRecordset(t)

rs1.AddNew

rs1!Data = Forms!FNou!Data

rs1!IDFirma = Forms!FFirma!IDFirma rs1.Update

rs1.Bookmark = rs1.LastModified IDPolita = rs1!IDPolita rs1.Close

Rate = Forms!FNou!Rate

Pt. cumparare viziteaza:

rs1!Polita = Forms!FNou!Polita

http://www.east.utcluj.ro/mb/mep/antal

27 MsgBox "Numarul de rate trebuie obligatoriu E 28 completat", vbCritical, "Eroare la introducerea numarului E 29 de rate"

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

c = 1

t = "TRate"

Set rs2 = db.OpenRecordset(t) While (Rate > 0) rs2.AddNew

rs2![Data ratei] = da If (Rate > 1) Then

rs2![Denumire rata] = "Rata " + Str(c) c = c + 1

Else

rs2![Denumire rata] = "Expira" End If rs2![IDPolita] = IDPolita

0264-401667

sau suna la:

409

Formulare, subformulare, programare cu DAO i ADO - cursul 15

62 63 64 65 66 67 68 69 70 iesire: 71 72 73 eroare: 74 75

rs2.Update Rate = Rate - 1 da = DateAdd("d", d, da) Wend rs2.Close Forms!FFirma!sf1.Requery Forms!FFirma!sf2.Requery

Exit Sub

MsgBox Err.Description Resume iesire

76 End Sub

Secvena de cod care urmeaz| realizeaz| aceeai aciune cu cea anterioar|. Exist| ns| o foarte mare diferen| fa| de cea anterioar| datorit| modului de lucru a metodei Update din ADO. Dac| n cazul lui DAO nregistrarea curent| trebuia g|sit| prin folosirea lui LastModified, aici, nregistrarea curent| r|mne curent| i dup| apelarea metodei Update. Din acest motiv n linia 45 s-a scris IDPolita = rs1!IDPolita imediat dup| aplicarea metodei Update.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

2 3 4 5 6 7 8 9 10 11 12

Dim rs1 As ADODB.Recordset Dim rs2 As ADODB.Recordset Dim t As String Dim da As Date Dim du As Date

Dim Rate As Integer, c As Integer Dim d As Integer

Dim IDPolita As Long

On Error GoTo eroare

sau suna la:

1 Public Sub NoucuADO()

0264-401667

NU COPIA !.

410

Formulare, subformulare, programare cu DAO i ADO - cursul 15

13 da = DateSerial(Forms!FNou!Dataaan, Forms!FNou!Dataaluna,E 14 Forms!FNou!Dataazi)

17 18

If (da >= du) Then

19 MsgBox "Data PRIMEI RATE trebuie sa fie mai mica (<)E 20 decit data RATEI URMATOARE", vbCritical, "Eroare la E 21 introducerea datelor" 22 23 24 25

Exit Sub End If

If IsNull(Forms!FNou!Rate) Then

29 30 31 32 33 34 35 36

Exit Sub End If

d = DateDiff("d", da, du)

t = "TPolite"

Set rs1 = New ADODB.Recordset

37 rs1.Open t, CurrentProject.Connection, adOpenKeyset,E 38 adLockOptimistic, adCmdTable 39 40 41 42 43 44 45 46 47 48

rs1.AddNew

rs1!Polita = Forms!FNou!Polita rs1!Data = Forms!FNou!Data

rs1!IDFirma = Forms!FFirma!IDFirma rs1.Update

IDPolita = rs1!IDPolita rs1.Close

0264-401667

NU COPIA !.

rs1.CursorLocation = adUseClient

Pt. cumparare viziteaza:

26 MsgBox "Numarul de rate trebuie obligatoriuE 27 completat", vbCritical, "Eroare la introducerea numaruluiE 28 de rate"

http://www.east.utcluj.ro/mb/mep/antal

15 du = DateSerial(Forms!FNou!Datauan, Forms!FNou!datauluna,E 16 Forms!FNou!Datauzi)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

411

Formulare, subformulare, programare cu DAO i ADO - cursul 15

49 50 51 52 53

Rate = Forms!FNou!Rate c = 1 t = "TRate" Set rs2 = New ADODB.Recordset

rs2.CursorLocation = adUseClient

54 rs2.Open t, CurrentProject.Connection, adOpenKeyset, E 55 adLockOptimistic, adCmdTable 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

While (Rate > 0) rs2.AddNew

rs2![Data ratei] = da If (Rate > 1) Then

rs2![Denumire rata] = "Rata " + Str(c) c = c + 1

Else

rs2![Denumire rata] = "Expira"

End If

rs2![IDPolita] = IDPolita rs2.Update

Rate = Rate - 1

da = DateAdd("d", d, da) Wend

Set rs2 = Nothing

Forms!FFirma!sf1.Requery Forms!FFirma!sf2.Requery

77 iesire: 78 79

Exit Sub

80 eroare: 81 82

MsgBox Err.Description Resume iesire

sau suna la:

Set rs1 = Nothing

0264-401667

rs2.Close

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

412

Formulare, subformulare, programare cu DAO i ADO - cursul 15

83 End Sub

Crearea interog|rilor aplicaiei

Aplicaia va avea dou| interog|ri (Restantieri i Restantieri1) care sunt prezentate n figurile care urmeaz|. Pe baza primei interog|ri se va crea un formular cu numele FRestantieri (prezentat n modul proiectare) pentru afiarea celor care au restant -e la plata ratelor.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

413

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Butonul Tipareste va realiza afiarea raportului TFirme.

n cele ce urmeaz| vor fi create dou| rapoarte i un meniu principal pentru aplicaie. Observai c| nu exist| nc| butoane pentru deschiderea rapoartelor aceast| operaie devenind posibil| prin intermediul sistemului de meniuri. Cele dou| rapoarte care vor fi create sunt prezentate n modul proiectare:

http://www.east.utcluj.ro/mb/mep/antal

Crearea rapoartelor aplicaiei

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

414

Formulare, subformulare, programare cu DAO i ADO - cursul 15

ncepei realizarea unui meniu Toolbar nou cu numele Meniu. Creai pe rnd articolele de meniu Fisiere, Formulare, Rapoarte. Clic pe File din lista Categories a lui Commands, apoi clic pe meniul Fisiere, el se va desf|ura, f|r| sa 7 conin| articole. Folosind tehnica drag-and-drop tragei articolele prezentate n figura care urmeaz| din lista Commands pe suprafaa liber| a meniului pn| cnd va fi Clic pe butonul din dreapta si modificat -i pe Name: la Fisiere

drag-and drop

deforma:

. Editai fiecare articol al meniului Fisiere realiznd clic

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

pe articol i selectnd din lista ap|rut| pe Properties pentru a rescrie textul meniului (proprietatea Caption) din limba englez| n limba romn|.

Uneori ntre articolele aceluiai meniu pot sa 7 apar| linii de separaie orizontale. Acestea sunt afiate la activarea propriet|ii Begin a Group Ea face ca articolul curent sa 7 fi separat, de cel anterior, printr-o linie orizontal| gri.

Articolelel unui meniu pot fi precedate de un simbol grafic. Exista 7 cteva simboluri predefinite care se pot selecta din Change Button Image. Daca 7 acestea nu sunt suficiente, noi simboluri pot fi create prin selectarea lui Edit Button Image ... .

0264-401667

NU COPIA !.

sau suna la:

415

Formulare, subformulare, programare cu DAO i ADO - cursul 15

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Proprietatea Caption

Aducei meniul la forma urm|toare

Pt. cumparare viziteaza:

, observai c| pe lng|

Modificai numele articolelor din meniurile Formulare respectiv Rapoarte dup| cum urmeaz|: FFirme $ Firme, FFirma $ Polite/Rate, FRestantieri $ Restantieri, RTFirme $ Firme, TFirme $ Restantieri. Selectai propriet|ile meniului Meniu, apoi realizai set|rile din figura care urmeaz|. Cea mai important| dintre ele este tipul meniului care de la Toolbar a fost schimbat n Menu Bar. Dup| realizarea set|rilor meniul se poate trage (prin drag-and-drop) deasupra meniului Access-ului, iar celelalte meniuri pot fi ascunse astfel nct aplicaia s| aib| un singur meniu.

0264-401667

NU COPIA !.

sau suna la:

rescrierea textelor n limba romn| au fost definite meniurile Formulare i Rapoarte, acestea nca nu conin articole. Selectnd din Commands pe All Forms respectiv pe All Reports completai cele dou| meniuri astfel:

416

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Meniul aplicat -iei

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Meniu

Pt. cumparare viziteaza:

n final, din meniul Tools selectai Startup i realizai set|rile din figura ala 7 turata 7.

0264-401667

NU COPIA !.

sau suna la:

417

Formulare, subformulare, programare cu DAO i ADO - cursul 15

Din acest moment la fiecare pornire a aplicaiei ecranul va fi de forma:

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

sau suna la:

Observai c| fereastra bazei de date nu mai este afiat|. Dac| aplicaia este pornit| innd ap|sat| tasta Shift efectul este numai cel de deschidere a bazei de date f|r| aplicarea set|rilor din Startup. Acest mod de pornire va fi folosit dac| dorim s| mai aducem mici modific|ri bazei de date finale.

0264-401667

449

Anexa 1 - Lista principalelor instruct -iuni VBA

Dei n cadrul lucr|rii au fost prezentate i utilizate cele mai populare instruciuni VBA lista lor este mult mai lung|. n cele ce urmeaz| mi propun s| prezint, ntr-o form| foarte sumar|, un set mai extins al intruciunilor VBA f|r| a le acoperi pe toate fiind omise cele "obscure" sau rar utilizate.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Instruciune
AppActivate

titlu, asteptare

Activeaz| o aplicaie n curs de execuie cu titlul sau ID de task specificat n titlu. Emite un semnal sonor folosind difuzorul. Apelarea procedurii nume. ntruct acelai lucru se poate obine numai prin folosirea lui nume instruciunea Call este folosit| destul de rar. Schimb| directorul curent la cel specificat n cale. Schimb| discul curent la cel specoficat n disc. nchide unul sau mai multe fiiere de intrare/ieire deschise cu instruciune Open i identificate prin listanrfiiere.

Beep Call

nume, listaargumente

ChDir

cale disc

ChDrive Close

listanrfiiere

Const

NUMECONSTANTA

Declar| o variabil| constant| cu numele NUMECONSTANTA. Schimb| data sistemului la data.

Date

= data

http://www.east.utcluj.ro/mb/mep/antal

ANEXA 1 - Lista principalelor instruciuni VBA

Descriere

Pt. cumparare viziteaza:

NU COPIA !.

Dim

numevariabil|

Declar| o variabil| cu numele numevariabil|.

Do ... Loop

Reia un grup de instruciuni ct timp o condiie logic| are valoarea True.

DoEvents

Transfer| controlul sistemului de operare pentru ca acesta s| poat| prelucra eventualele evenimente asincrone ap|rute (ap|sare de taste, clic de mouse). Termin| o procedur|, funcie sau o structur| de control.

End

cuvntcheie tablou

Erase

Elibereaz| memoria dinamic| alocat| unui tablou sau reiniializeaz| un tablou de m|rime fix|. Seteaz| pe Err (starea erori curente) la num|reroare.

Err

= num|reroare

sau suna la:

Declare

nume

Declata o procedur| dintr-un DLL (Dynamic Link Libray).

0264-401667

450 Error

Anexa 1 - Lista principalelor instruct -iuni VBA

num|reroare

Simuleaz| o eoare prin setarea lui Err la valoarea num|reroare. Ieirea dintr-o procedur|, funcie sau o structur| de control. Copiaz| fiierul cu numele surs| n cel cu numele destinaie. Parcurge toi membrii unei colecii. Reia parcurgerea unei instruciuni sau al unui grup de instruciuni pn| cnd un contor ajunge la o valoare impus|. Declar| o funcie definit| de utilizator. Citete un fiier de intrare/ieire deschis prin instruciunea Open n variabila numevariabil|.

Exit

cuvntcheie surs|, destinaie

FileCopy

For Each ... Next For ... Next

Function Get

#nrfiier, numevariabil|

GoSub ... Return

GoTo

linie

If ... Then ... Else

Input

#nrfiier, list|variabile

Kill Let

cale

numevariabil| = expresie

Pt. cumparare viziteaza:

Face ramificarea i revenirea dintr-un subprogram n cadrul unei proceduri. Salt necondiionat la linia de program linie. Execut| una dintre cele dou| seciuni de cod n funcie de rezultatul unui test logic. Citete date n list|variabile dintr-un fiier de intare/ieire.

terge fiierul specificat n cale.

Line Input

#nrfiier, var

Citete a linie dintr-un fiier de intrare/ieire n variabila var.

Load

ncarc| n memorie un formular definit de utilizator f|r| al face vizibil pe ecran.

Lock

#nrfisier, domeniunreg varsir = sir

Permite controlul accesului la un fiier de intrare/ieire.

LSet

Realizeaz| alinierea la stnga a unui ir ntr-o variabil| String.

LSet

var1 = var2

Copiaz| o variabil| cu tipul definit de utilizator ntr-o alt| variabil| cu tipul definit de utilizator diferit. nlocuiete caracterele dintr-o variabil| de tipul String prin caracterele dintr-un al ir.

Mid

0264-401667

NU COPIA !.

Seteaz| valoarea variabilei numevariabil| egal| cu cea a lui expresie. Let este opional i n practic| aproape c| nu se mai folosete.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

sau suna la:

451 MidB

Anexa 1 - Lista principalelor instruct -iuni VBA

nlocuiete date, la nivel de octet, ntr-o variabil| de tipul String prin caracterele unui alt ir. cale Creeaz| directorul (directory sau folder) specificat n cale. Redenumete un fiier sau un director. Specific| o rutin| de tratare a erorilor. Face ramificarea pe o linie pe baza valorii unei expresii. Deschide un fiier de intrare/ieire. La nivel de modul determin| valoarea implicit| de nceput pentru limita de jos a tablourilor. La nivel de modul determin| modul implicit de comparaie ntre iruri.

MkDir

Name

numevechi As numenou

On Error On ... Gosub, On ... GoTo

Open

cale, etc.

Option Base 0|1

Option Compare Text|Binary

Option Private

Print

#nrfiier

Private

numevariabil|

Property Get

Pt. cumparare viziteaza:

Option Explicit

Foreaz| programatorul s| declare toate variabilele folosite ntr-un modul. Specific| caracterul privat al unui modul acesta neputnd fi accesat de procedurile din afara modulului. Scrie date ntr-un fiier de intrare/ieire. Declar| variabila cu numele numevariabil| privat| ea putnd fi utilizat| numai n modulul n care s-a declarat.

Property Set

Seteaz| o referin| la un obiect ntr-o proprietate procedur| .

Public

numevariabil|

Face variabila cu numele numevariabil| disponibil| n toate procedurile unui modul. Scrie date din numevariabil| ntr-un fiier de intrare/ieire.

Put

#nrfiier,numevariabil| num|r

Randomize

Iniializeaz| generatorul de numere aleatoare. Dac| num|r este omis de fiecare dat| se obine o nou| valoare. Realoc| memoria unui tablou alocat dinamic.

ReDim

numevariabil|

sau suna la:

Property Let

Atribuie o valoare unei propriet|i ntr-o proprietate procedur| .

0264-401667

Declar| o proprietate procedur|.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

NU COPIA !.

452 Rem

Anexa 1 - Lista principalelor instruct -iuni VBA

comentariu

Reset

nchide toate fiierele de intrare/ieire deschise cu Open. Dup| o eroare, reia execuia programului din linia care a cauzat eroarea. vezi Gosub ... Return.

Resume

Return RmDir RSet

cale

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

terge directorul specificat n cale.


Realizeaz| alinierea la dreapta a unui ir ntr-o variabil| de tipul String. Salveaz| o setare n Registry-ul Windows-ului pentru aplicaia cu numele numeaplicaie.

varsir = sir

SaveSetting

numeaplicaie, etc.

Select Case

SendKeys

sir, durat|

Set

varobiect = obiect

SetAttr

cale, atribute

NU COPIA !.

Static

Stop Sub

Trece codul VBA n starea de suspendare. Declar| o procedur|.

Time Type

= timp

Seteaz| timpul systemului la timp.

numevariabil|

Declar| un tip de dat| definit de utilizator (numai la nivel de modul).

Unload

Descarc| un formular definit de utilizator din memorie. Anuleaz| controlul accesului la un fiier de intrare/ieire.

Unlock

#nrfiier, domeniunreg

While ... Wend

Reia o poriune de cod ct timp o condiie este True.

0264-401667

numevariabil|

Pt. cumparare viziteaza:

Seek

#nrfiier,poziie

Seteaz| poziia curent| ntr-un fiier de intrare/ieire. Execut| un grup de instruciuni dintre mai multe grupuri pe baza valorii unei expresii. Transmite o "ap|sare de tast|" definit| prin sir aplicaiei active. Atribuie pe obiect unei variabile de tipul Object cu numele varobiect. Atribuie atributele specificate prin atribute unui fiier specificat prin cale.

sau suna la:

Declar| o variabil| cu numele numevariabil| care va reine valorile stocate n ea tot timpul ct codul VBA se execut|.

http://www.east.utcluj.ro/mb/mep/antal

Spune lui VBA c| linia care urmeaz| este un comentariu. Caracterul apostrof ( ' ) are aceeai semnificaie fiind i mult mai des folosit.

453 Width

Anexa 1 - Lista principalelor instruct -iuni VBA

#nrfiier, width

Atribuie o l|ie unei linii de ieire ntr-un fiier de intrare/ieire. Execut| un grup de instruciuni pentru un obiect specificat. Scrie date ntr-un fiier de intrare/ieire.

With ... End With

Write

#nrfiier

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

0264-401667

NU COPIA !.

sau suna la:

454

Anexa 2 - Lista principalelor funct -ii VBA

F|r| a se dori un grupaj de cele mai utile funcii, n cele ce urmeaz| doresc s| prezint cteva din grupurile de funcii VBA folosite mai des la scrierea aplicaiilor Access. Explicaiile sunt sumare, dar dac| numele unei funcii a fost identificat n listele prezentate se poate folosi fiierul help VBA pentru explicaii mai detaliate i exemple de utilizare ale ei.

Funcie
CBool(expresie) CByte(expresie) CCur(expresie)

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Funcii de conversie

Valoare ntoars|

expresie convertit| la o valoare Boolean. expresie convertit| la o valoare Byte. expresie convertit| la o valoare Currency. expresie convertit| la o valoare Date. expresie convertit| la o valoare Double. expresie convertit| la o valoare Integer. expresie convertit| la o valoare Long. expresie convertit| la o valoare Single. expresie convertit| la o valoare String. expresie convertit| la o valoare Variant.

CDate(expresie) CDble(expresie) CInt(expresie) CLng(expresie) CSng(expresie) CStr(expresie) CVar(expresie)

CVErr(nreroare)

o valoare Variant sau un subtip Error care conine nreroare.

Funcii pentru dat| i timp


Funcie
Date

Valoare ntoars|

Data curent| a systemului ca Variant. Data curent| a systemului ca String.

Date$()

DateAdd(interval,

num|r, dat|)

Valoarea Date derivat| prin adunarea a num|r de intervale de timp (intervalul de timp poate fi o zi, o lun|, un an etc.) lui dat|.

DateDiff(interval, DatePart(interval,

data1, data2, ...) data, ...)

Num|rul de intervale de timp ntre data1 i data2. Un interval (zi, lun| , an etc.) a lui data.

0264-401667

CVDate(expresie)

NU COPIA !.

expresie convertit| la o valoare Date. Exist| numai din motive de compatibilitate cu versiunile anterioare.

http://www.east.utcluj.ro/mb/mep/antal

ANEXA 2 - Lista principalelor funcii VBA

Pt. cumparare viziteaza:

sau suna la:

455 DateSerial(an,

Anexa 2 - Lista principalelor funct -ii VBA

luna, zi)

Valoare de tipul Date specificat| prin an, luna i zi.

Day(data) Hour(timp) Minute(timp) Month(data) Now Second(timp) Time Time$ Timer

Ziua pentru data specificat|. Ora pentru timp-ul specificat. Minutul pentru timp-ul specificat. Luna pentru data specificat|.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Data i ora curent| a sistemului. Secunda pentru timp-ul specificat. Ora curent| a sistemului ca Variant. Ora curent| a sistemului ca String. Num|rul de secunde trecut de la miezul nopii.

TimeValue(timp) Weekday(data) Year(data)

Funcii pentru tratarea erorilor


Funcie
Erl

Pt. cumparare viziteaza:

TimeSerial(ora,

minut, secunda)

Valoare Date definit| prin ora, minut i secunda. Valoare Date a irului timp.

Ziua din sapt|mn| corespunz|toare lui data. Anul pentru data specificat|.

Valoare ntoars|

Num|rul de linie n care cea mai recent| eroare a ap|rut.

http://www.east.utcluj.ro/mb/mep/antal

DateValue(data)

Valoare Date a irului data.

NU COPIA !.

Err

Error(num|reroare)

Mesajul de eroare, de tipul Variant, care corespunde lui num|reroare. Mesajul de eroare, de tipul String, care corespunde lui num|reroare.

Error$(num|reroare)

Funcii pentru manipularea fiierelor i directorilor


Funcie Directorul curent ca i Variant. Directorul curent ca i String.

Valoare ntoars|

CurDir(disc)

CurDir$(disc)

sau suna la:

Codul numeric a erorii ap|rute n cursul execuiei programului.

0264-401667

456 Dir(cale,

Anexa 2 - Lista principalelor funct -ii VBA

atribute)

Dir$(cale,

atribute)

Numele fiierului sau directorului, ca i String, specificat prin cale care satisface atributele opionale atribut (de exemplu vbHidden). ntoarce Null dac| directorul sau fiierul nu exist|.
True

EOF(nrfiier) FileAttr(nrfiier,

dac| cap|tul fiierului specificat prin nrfiier a fost

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

atins.

tipntors)

Modul (intrare, ieire, ad|ugare, binar etc.)n care a fost deschis fiierul (dac| tipntors = 1) sau handle-ul fiierului (dac| tipntors = 2) specificat prin nrfiier. Data la care fiierul specificat prin cale a fost creat sau modificat ultima oar|.

FileDateTime(cale)

FileLen(cale)

FreeFile(num|rdomeniu)

Urm|torul num|r de fiier disponibil pentru instruciunea Open. Un ntreg reprezentnd atributele fiierului specificat prin cale. Poziia curent| de citire/scriere, ca i Long, ntr-un fiier de intrare/ieire deschis. M|rimea, n octei, a fiierului identificat prin num|rfiier.

GetAttr(cale) Loc(nrfiier)

LOF(num|rfiier)

Seek(num|rfiier)

Shell(cale,

stilfereastr|)

Execut| aplicaia din cale i ntoarce ID-ul de task al acesteia.

Funcii financiare

Funcie

Valoare ntoars|

DBB(cost,

salvare, viaa, perioad|, factor)

Deprecierea unui obiect ntr-o perioad| specificat| folosind metoda de calcul cu pant| dubl| (doubledeclining method).

FV(rata,

nper, plata, pv, tip)

Valoarea viitoare a unei investiii sau a unui mprumut.

IPmt(rata,

plata, mplata, pv, fv, type)

Plata dobnzii pentru o perioad| specificat| a unui mprumut.

0264-401667

NU COPIA !.

Poziia curent| de citire/scriere, ca i Variant, ntr-un fiier de intrare/ieire deschis.

Pt. cumparare viziteaza:

Lungimea, n octei, a fiierului specificat prin cale.

http://www.east.utcluj.ro/mb/mep/antal

Numele fiierului sau directorului, ca i Variant, specificat prin cale care satisface atributele opionale atribut (de exemplu vbHidden). ntoarce Null dac| directorul sau fiierul nu exist|.

sau suna la:

457 IRR(valori,

Anexa 2 - Lista principalelor funct -ii VBA

estim|ri) rata_financiar|, rata_reinvestiie)

Rata intern| de plat| pentru o serie de plai i facturi.

MIRR(valori,

NPer(rata,

plata, pv, fv, tip)

NPV(rata,

val1, val2, ...)

Pmt(rata,

nper, pv, fv, tip)

PPmt(rata,

per, nper, pv, fv, tip)

PV(rata,

nper, plata, fv, tip)

Rata(nper,

plata, pv, fv, tip ,estimare)

SLN(cost,

slavare, via|)

Funcii matematice
Funcie
Abs(num|r)

Valoare ntoars|

Valoarea absolut| a lui num|r. Arctangenta lui num|r.

http://www.east.utcluj.ro/mb/mep/antal

Rata modificat| intern| de plat| pentru o serie de plai i facturi. Num|rul de perioade pentru o investiie sau un mprumut.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Valoarea net| prezent| a unei investiii pentru o serie de pl|i i facturi cu o rat| de reducere. Plata periodic| pentru un mprumut sau o investiie. Plata principal| pentru un mprumut sau o investiie. Valoarea prezent| a unei investiii.

Pt. cumparare viziteaza:

Rata dobnzii periodic pentru un mprumut sau o investiie. Deprecierea folosind metoda liniei drepte (straight-line depreciation) a unui obiect pentru o perioad|.

NU COPIA !.

Cos(num|r) Exp(num|r) Fix(num|r) Hex(num|r) Hex$(num|r) Int(num|r) Log(num|r) Oct(num|r) Oct$(num|r)

Cosinusul lui num|r.

e (baza logaritmului natural) ridicat la puterea lui num|r.

Partea ntreag| a lui num|r. Dac| num|r este negativ ntoarce primul num|r negativ mai mare sau egal cu num|r.

Valoarea hexazecimal| a lui num|r ca i Variant. Valoarea hexazecimal| a lui num|r ca i String.

Partea ntreag| a lui num|r. Dac| num|r este negativ ntoarce primul num|r negativ ntreg mai mic sau egal cu num|r. Logaritmul natural a lui num|r.

Valoarea octal| a lui num|r ca i Variant. Valoarea octal| a lui num|r ca i String.

sau suna la:

Atn(num|r)

0264-401667

458 Rnd(num|r) Sgn(num|r) Sin(num|r) Sqr(num|r) Tan(num|r)

Anexa 2 - Lista principalelor funct -ii VBA

Un num|r aleator.

Sinusul lui num|r.

Rad|cina p|trat| a lui num|r. Tangenta lui num|r.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Funcii pentru prelucrarea irurilor


Funcie
Asc(ir) AscB(ir) AscW(ir)

Codul ANSI al primului caracter din ir. Octetul corespunz|tor primei litere din ir. Caracterul Unicode al primului caracter din ir. Caracterul, c| i Variant, care corespunde codului ANSI specificat prin codcaracter. Caracterul, c| i String, care corespunde codului ANSI specificat prin codcaracter. Octetul care corespunde codului ANSI al lui codcaracter. Caracterul Unicode care corespunde codului ANSI al lui codcaracter.

Chr(codcaracter)

Chr$(codcaracter)

ChrB(codcaracter)

ChrW(codcaracter)

InStr(start,

ir1, ir2)

InstrB(start, LCase(ir) LCase$(ir) Left(ir,

ir1, ir2)

Poziia, n octei, corepunz|toare primei apariii ale lui ir2 n ir1 ncepnd cu start.

ir converit n litere mici ca i Variant. ir converit n litere mici ca i String.

lungime)

lungime caractere din stnga lui ir ca i Variant. lungime caractere din stnga lui ir ca i String. lungime octei din stnga lui ir ca i Variant. lungime octei din stnga lui ir ca i String.

Left$(ir, LeftB(ir,

lungime) lungime)

LeftB$(ir,

lungime)

0264-401667

NU COPIA !.

Poziia, n caractere, corepunz|toare primei apariii ale lui ir2 n ir1 ncepnd cu start.

http://www.east.utcluj.ro/mb/mep/antal

Semnul lui num|r.

Valoare ntoars|

Pt. cumparare viziteaza:

sau suna la:

459 Len(ir) LenB(ir) LTrim(ir) LTrim$(ir) Mid(ir,

Anexa 2 - Lista principalelor funct -ii VBA

Num|rul de caractere din ir.

Un ir Variant far| spaiile din partea stng|. Un ir String far| spaiile din partea stng|. lungime caractere, ca i Variant, ale lui ir plecnd de la nceput. lungime caractere, ca i String, ale lui ir plecnd de la nceput. lungime octei, ca i Variant, ale lui ir plecnd de la nceput. lungime octei, ca i String, ale lui ir plecnd de la nceput. lungime caractere din dreapta lui ir ca i Variant. lungime caractere din dreapta lui ir ca i String. lungime octei din dreapta lui ir ca i Variant. lungime octei din dreapta lui ir ca i String.

nceput, lungime) nceput, lungime) nceput, lungime)

Mid$(ir, MidB(ir,

MidB$(ir, Right(ir,

nceput, lungime) lungime)

Right$(ir, RightB(ir,

lungime) lungime)

RightB$(ir, RTrim(ir)

lungime)

RTrim$(ir)

Un ir String far| spaiile din partea dreapt|.

Space(num|r)

Un ir, ca i Variant, cu num|r spaii. Un ir, ca i String, cu num|r spaii. Reprezentarea n format de ir, ca i Variant, a lui num|r.

Space$(num|r) Str(num|r) Str$(num|r)

Reprezentarea n format de ir, ca i String, a lui num|r. O valoare care indic| rezultatul comparaiei lui ir1 cu ir2.

StrComp(ir1,

ir2, comp)
caracter)

String(num|r,

caracter, ca i Variant, repetat de num|r de ori.

0264-401667

NU COPIA !.

Un ir Variant far| spaiile din partea dreapt|.

http://www.east.utcluj.ro/mb/mep/antal

Num|rul de octei din ir.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

sau suna la:

460 String$(num|r, Trim(ir) Trim$(ir) UCase(ir) UCase$(ir) Val(ir)

Anexa 2 - Lista principalelor funct -ii VBA

caracter)

caracter, ca i String, repetat de num|r de ori. Un ir, ca i Variant, f|r| spaiile din stnga i dreapta lui ir. Un ir, ca i String, f|r| spaiile din stnga i dreapta lui ir.

ir converit n litere mari ca i Variant. ir converit n litere mari ca i String.

Num|rul coninut n ir.

Alte funcii

Funcie

Choose(index,

arg1, arg2, etc,)

CreateObject(clasa) Environement(ir

| num|r)

Format(expresie,

sirformat)

Pt. cumparare viziteaza:

Array(listaargumente)

Un tablou Variant coninnd valorile din listaargumente. Selecteaz| i ntoarce o valoare a unui argument dintr-o list| de argumente. Un obiect Automation de tipul clasa. O valoare String care reprezint| variabila de mediu a sistemului de operare specificat prin ir sau num|r. expresie ca i Variant converit| conform lui sirformat.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Valoare ntoars|

NU COPIA !.

GetAllSettings(numeap,

sectiune)

Extrage din Registry toate set|rile pentru seciunea sectiune.

GetObject(cale,

clasa)

Obiectul Automation specificat prin cale i clasa. Extrage o setare din Registry.

GetSettings(numeap, IIf(expr,

etc.)

partetrue, partefalse) #nrfiier)

ntoarce partetrue dac| expr este True, altfel partefalse. num|r caractere Variant ale fiierului de intrare/ieire specificat prin nrfiier. num|r caractere String ale fiierului de intrare/ieire specificat prin nrfiier.

Input(num|r,

Input$(num|r, InputB(num|r,

#nrfiier) #nrfiier)

num|r octei Variant ale fiierului de intrare/ieire specificat prin nrfiier.

sau suna la:

Format$(expresie,

sirformat)

expresie ca i String converit| conform lui sirformat.

0264-401667

461 InputB$(num|r,

Anexa 2 - Lista principalelor funct -ii VBA

#nrfiier) etc.)

num|r octei String ale fiierului de intrare/ieire specificat prin nrfiier. Cere utilizatorului introducerea unei informaii.
True True True True True

InputBox(ntrebare,

IsArray(numevariabil|) IsDate(expresie) IsEmpty(expresie) IsError(expresie)

dac| numevariabil| este tablou. dac| expresie poate fi convertit| la o dat|. dac| expresie nu a fost iniializat|. dac| expresie este o valoare de eroare.

IsMissing(numeargument)

dac| numele numeargument nu a fost transferat unei proceduri.


True True True

IsNull(expresie)

dac| expresie este irul nul (""). dac| expresie este un num|r. dac| expresie este un obiect.

IsNumeric(expresie) IsObject(expresie)

LBound(numetablou,

dimensiune)

Cea mai mic| valoare de indice posibil| pentru tabloul definit prin numetablou. butonul pe care utilizatorul l-a selecata din fereastra de dialog.

MsgBox(ntrebare,

etc.)

Partition(num|r,

strat, stop, ...)

ntoarce un ir care indic| locul n care num|r apare ntr-un grup de domenii. ntoarce codul RGB al culorii care corespunde lui culoare (un num|r ntre 1 i 15).

QBColor(culoare) RGB(rou,

verde, albastru)

Tab(n)

Poziioneaz| ieirea pentru instruciunea Print# sau pentru metoda Print. Un ir care specific| tipul de dat| al variabilei numevariabil|.

TypeName(numevariabil|)

UBound(numetablou, dimensiune) VarType(numevariabil|)

Cea mai mare valoare de indice posibil| pentru tabloul definit prin numetablou.

O constant| care indic| tipul de dat| al variabilei numevariabil|.

sau suna la:

Switch(expr1,

valoare1, etc.)

Evalueaz| expresiile (expr1 etc.) i ntoarce valoarea asociat| (valoare1 etc.) primei expresii care se evalueaz| ca True.

0264-401667

Culoarea care corespunde componentelor rou, verde i albastru.

http://www.east.utcluj.ro/mb/mep/antal

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

NU COPIA !.

462

NU COPIA !.

Acest curs este proprietatea lui ANTAL Tiberiu Alexandru.

Pt. cumparare viziteaza:

http://www.east.utcluj.ro/mb/mep/antal
Anexa 2 - Lista principalelor funct -ii VBA

sau suna la:

0264-401667

S-ar putea să vă placă și