Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Bazele programarii in Microsoft Access. Introducere VBA - Visual Basic for Application

Bazele programarii in Microsoft Access. Introducere VBA - Visual Basic for Application


Programarea bazelor de date automatizeaza anumite procese de prelucrare a bazelor de date si creeaza legaturi intre obiectele din baza de date.

Programarea bazelor de date constituie, de fapt, procesul de stocare (folosind o modalitate standard) a unei varietati de informatii, astfel incat sa fie posibila o accesare si o intretinere facila a datelor.


Informatiile stocate intr-o baza de date, spre deosebire de un document creat cu un procesor de texte, respecta de obicei un format standard.


Datele incluse in aceste resurse pot fi stocate cu usurinta in interiorul unei baze de date, cum ar fi: Agenda telefonica, agenda de adrese, informatii contabile, catalog de fise de biblioteca..etc.



In Microsoft Access, programarea este procesul de adaugare de functionalitati la baza de date, utilizand:


- macro-instructiuni Access sau

- codul VBA - Visual Basic for Application.


Microsoft Access este un pachet de programe performant pentru bazele de date relationale, facilitand crearea de baze de date complexe, cu acces partajat.

Este un program de gestionare a bazelor de date folosit pe scara larga.


Rolul principal al acestui program este de a accesa si de a stoca datele.


Unul din cele mai apreciate calitati ale acestui program este interfata grafica usor de inteles, care permite crearea interogarilor, formularelor si a rapoartelor, facilitate care lipseste din multe alte programe de acest gen.

In majoritatea aplicatiilor de baze de date au loc foarte multe actiuni pe care nu le vedem pe ecran.

Calculele, validarea datelor, efectele grafice si comunicarea intre obiectele bazei de date sunt tratate de secvente de cod scrise special pentru aceste operatii si memorate in module.


Daca tabelele, interogarile, formularele si rapoartele reprezinta componentele principalele ale unei baze de date Access, modulele constituie liantul care le uneste.


Aceste secvente de cod scrise special pot apatine sistemului Access si se numesc macro-comenzi, fiind generate de "generatorul de macro-comenzi".

Macro-comenzile reprezinta o modalitate usoara de gestionare a activitatilor de programare.

Se creeaza rapid legaturi intre intre obiectele bazei de date.

Argumentele pentru fiecare actiune se afiseaza in "Generatorul de Macrocomenzi".


Daca aceste secvente de cod sunt scrise folosind coduri VBA - Visual Basic Access (prin intermediul Editorului Visual Basic) se numesc "cod VBA" sau "cod functie" sau "procedura".


Actiunile macro-comenzilor Access reprezinta doar un subset de comenzi existente in VBA.

Dar, generatorul de comenzi (prin care se compun macro-comenzile Access) ofera o interfata mai strucurata decat Editorul Visual Basic, permitand sa se adauge programarea pentru controale si obiecte, fara sa fie nevoie sa se introduca codul VBA.

Macro-urile pot indeplini multe functiuni, dar uneori sunt depasite de situatie si atunci folosim procedurile.

Iata cateva situatii in care procedurile sunt inevitabile:


-Cand avem multe macrouri in baza de date, aceasta este greu de intretinut, pentru ca macrourile sunt obiecte separate de formulare sau rapoarte.

Procedurile scrise in Visual Basic sunt incluse in definitia formularelor si rapoartelor, astfel ca, atunci cand un raport sau un formular este mutat dintr-o baza de date in alta, procedurile legate de evenimente se muta automat odata cu el.


-Visual Basic dispune de multe functii incorporate, dar ne permite sa construim si functii proprii.

Aceste functii sunt necesare atunci cand vrem sa facem calcule pentru care in Microsoft Access nu exista functii incorporate sau cand calculele depasesc capacitatea unei expresii.

Functiile create de noi in Visual Basic pot fi incorporate in expresii diferite.

- Cu functiile Visual Basic se pot masca anumite mesaje de eroare cu care un utilizator nu ar sti ce sa faca.

Cu functiile freate putem detecta cand apare o eroare si putem da un mesaj pe intelesul utilizatorului sau putem actiona astfel incat sa corectam eroarea.


-Cu Visual Basic se poate actiona asupra articolelor, cate unul pe rand, ceea ce cu macrouri nu se poate face.


-In VBA se pot plasa valori pentru argumentele functiilor chiar in timpul rularii, ceea ce nu se poate face cu argumentele unui macro; mai mult, functiile accepta argumente sub forma de variabile (exista si variabile obiect), ceea ce permite o achimbare dinamica a argumentelor lor.



Codul VBA este continut in module de clasa ( module care contin cod numai pentru anumite obiecte Access: formulare, tabele, rapoarte), si in module standard (care nu sunt legate de obiecte specifice si contin cod "global", care se utilizeaza in toata baza de date).




Modulele pot fi structurate pe functii si subrutine.


Grupurile de functii si subrutine scrise in limbajul standard Visual Basic Applications asigura toate functionalitatile unei baze de date.


Cand se inregistreaza o procedura, aplicatia creeaza un "proiect VBA"; acesta este un container care include atat documentul utilizat pentru crearea procedurii cat si un obiect special, numit modul, care contine instructiunile procedurii.

O procedura obisnuita are urmatoarele elemente:


- sub: este un cuvant cheie care marcheaza inceputul unei proceduri (subrutine); de aici

numele procedurilor - proceduri Sub;


- numele procedurii: dupa cuvantul Sub se scrie numele ales al procedurii, urmat de

paranteze rotunde pentru valori de intrare sau argumente;


- comentariile: folosite numai pentru prezentare;


- instructiunile procedurii: seria de instructiuni; liniile de cod in VBA sunt doar texte;


- End Sub: aceste cuvinte marcheaza finalul procedurii.


Astfel, structura unei proceduri VBA este:



Sub NumeProcedura (argument 1, argument 2, ..)

[instructiuni VBA]

End Sub



Unitatea de baza pentru programarea in VBA este procedura, reprezentata de un bloc de cod dintr-un modul.


Exista doua tipuri de proceduri:


Sub procedura si

Function procedura: functii definite de utilizator.

O procedura Function nu poate sa modifice mediul de lucru, dar poate retutna o valoare.

Structura unei astfel de proceduri Function este aratata mai jos:



Function NumeProcedura (arg 1, arg 2, ..)

[instructiuni VBA]

NumeProceduta = valoareDeRaspuns

End Sub



Practic, prin includerea modulelor de cod intr-o baza de date, aceasta se transforma dintr-un depozit de stocare a informatiilor intr-o aplicatie, adica un mediu in care utilizatorii efectueaza operatii cu datele.

Asa cum s-a precizat mai sus, modulele Access sunt de doua tipuri:

- module standard, de sine statatoare, care au atribute, nume si pot exista independent de orice obiect din baza de date;


- module de clasa: sunt containere cu proceduri asociate obiectelor de pe formulare sau rapoarte. Ele se copiaza sau se sterg odata cu formularul sau obiectul de care apartin.



Obiectele Access (formulare, rapoarte, tabele) si controalele (butoane si casete de text) au proprietati eveniment variate la care se poate atasa macro-comenzi sau proceduri.


Evenimentul este o actiune recunoscuta de un obiect (cum ar fi un clic de mouse), pentru care se poate prevedea un cod (procedura) cu care obiectul sa raspunda in caz ca acea actiune se produce.


Fiecare proprietate eveniment se asociaza cu un anumit eveniment (clic - mouse, deschidere formular, modificare a datelor, etc).

Evenimentele pot fi provocate si de factori externi: evenimente sistem, macro sau proceduri atasate la alte evenimente.



Baza de date devine tot mai complexa prin adaugarea de macro-uri sau proceduri mai multor priprietati eveniment ale mai multor obiecte, existand posibilitatea de a rezolva totul prin programarea bazelor de date.

Alegerea unui macro sau a unei proceduri depinde de modul cum s-a ales implementarea bazei de date.

Daca baza de date este partajata cu alte persoane, fiind amplasata pe un server, este bine de evitat de folosit VBA din motive de securitate.

VBA nu este compatibil cu caracteristica de "public" a retelei Web, trebuind folosite macrocomenzi.


Macrocomenzile sunt necesare pentru urmatoarele actiuni:



- atribuirea unei actiuni (sau set de actiuni) unei taste: se creeaza un grup de

macrocomenzi numit Autokeys;


- efectuarea unei actiuni (set de actiuni) cand se deschide prima data o baza

de date, etc.



Principalele actiuni si rolul indeplinit de macrocomenzi sunt redate in lista urmatoare:

AddMenu: adauga un meniu in bara de meniu a unui formular sau raport;

Beep: emite un sunet de avertizare;

Copy Object: creeaza o copie a bazei de date;

Delete Object:sterge un obiect specificat sau selectat;

Echo: ascunde sau afiseaza rezultatul actiunii unei macrocomenzi;

FindRecord: cauta prima sau urmatoarea inregistrare care indeplineste o anumita

conditie

MsgBox: determina aparitia unei casete de mesaj;

OpenForm:deschide un formular intr-unul din modurile specifice: Design View,

Datasheet, Print Preview, Form View;

OpenQuery: deschide sau lanseaza in executie o interogare;

OpenTable:deschide un tabel intr-una din modalitatile posibile;

OpenReport: deschide un raport;

PrintOut: tipareste obiectul specificat;

RunCode: lanseaza in executie o procedura VBA;

RunMacro:lanseaza in executie o macrocomanda.

Privitor la VBA, o caracteristica importanta a sa este faptul ca este un limbaj de programare orientat obiect.

Obiectele VBA sunt doar o modalitate comoda de stocare si de ascundere intr-un program a datelor si a codului sursa.


VBA este un mediu de programare proiectat special pentru comenzile (procedurile) din aplicatii.

VBA permite sa se inregistreze proceduri si atasarea acestora la butoane, fie in interiorul unui document, fie intr-un meniu sau intr-o bara de instrumente.


In loc sa se scrie un program care sa manevreze unele valori ale datelor, se poate incapsula datele si codul care le manevreaza intr-un obiect; pentru a folosi datele inglobate va trebui doar sa fie permis accesul la obiect.


Printre obiectele VBA se numara butoane, elemente de meniu, domenii de celule din foile de calcul si chiar foile intregi, aproape tot ce se poate vedea pe ecran in timp ce ruleaza aplicatia reprezinta obiecte.


Descrierea unui obiect apare langa numele obiectului, in fereastra DataBase, cand se da clic pe Deatails in View Meniu.


O clasa de obiecte este o referinta catre un tip general sau o clasificare de obiecte; de exemplu, fiecare celula sau domeniu de celule dintr-o foaie de calcul reprezinta un obiect Range, un exemplu al clasei Range.




In cazul in care sunt combinate toate obiectele unei anumite clase, acel grup este cunoscut ca o colectie; toate foile de calcul se gasesc in colectia Sheets, care include toate tipurile de foi dintr-un registru de lucru (foaie de calcul, diagrama, modul, caseta de dialog).

Property sheet (foaia de proprietati) este o fereastra care utilizeaza pentru a vizualiza sau modifica diferite obiecte: tabele, interogari, campuri, rapoarte, pagini de acces la date si controale.


Datele unui obiect se numesc proprietatea acelui obiect.


Cele mai multe proprietati pot fi citite, dar nu toate pot fi scrise sau modificate.

In descrierea fiecarui obiect se gaseste o lista a proprietatilor care i se aplica.


Cu VBA se pot efectua urmatoarele actiuni:


utilizarea functiilor predefinite (de exemplu, functia IPmt - pentru plata dobanzii) sau crearea de functii noi;


crearea sau manipularea obiectelor; folosind VBA se pot manipula toate obiectele din baza de date;


efectuarea de actiuni la nivel de sistem: verificarea existentei unui fisier pe computer, schimbul dinamic de date (DDE - Dynamic Data Exchange) pentru a comunica cu alte programe bazate pe Microsoft Windows (cum ar fi Excel) si sa se apeleze la functii in biblioteca cu legare dinamica, DLL - Dynamic Linked Library a sistemului Windows.


Mediul Visual Basic for Applications

Incepand cu Microsoft Office `97, s-a incercat standardizarea programarii tuturor componentelor Microsoft Office.

Limbajul in care s-a realizat acest lucru este Visual Basic for Applications (VBA).

Mediul standard de programare in VBA este Visual Basic Editor.

Totusi, din dorinta de a mentine compatibilitatea cu codurile scrise pentru Access in versiunile anterioare, pentru Access s-a facut o exceptie si ca urmare, in Access programarea se face cu ceea ce se numeste Code Builder.

Visual Basic Editor poate fi lansat din Access (ca si din Word, Excel, Power Point).

Dupa construirea bazei de date, este construita o aplicatie VBA care permite examinarea, modificarea si suplimentarea informatiei stocate in baza de date.

VBA contine un "motor" complet de baze de date, care reprezinta in esenta, o aplicatie de baze de date cu autocontinere.

In realitate, motorul pentru baze de date folosit de Visual Basic 6 (de exemplu) este acelasi cu cel care opereaza "in fundal" in cadrul programului Microsoft Access.


De aceea,, Microsoft Access si VBA folosesc exact aceleasi fisiere (cele cu extensia .mdb)

si acelasi format de fisier.

De asemenea, o aplicatie creata cu Access poate partaja acelasi fisier ca un program VBA, cu conditia ca facilitatile de acces sa fie corect configurate.

Spre deosebire de un procesor de texte sau alte aplicatii dotate cu interfete utilizator, o baza de date lucreaza, de regula, "in fundal".

Orice interfata vizibila de catre utilizator este cel mai adesea construita pentru o anumita aplicatie.


Functionalitatea bazei de date este asigurata de un program denumit motorul bazei de date.


Desi multe programe pot fi scrise in Microsoft Access folosind limbajul VBA, sistemul Visual Basic este mai puternic; acesta permite compilarea unei aplicatii finalizate care poate fi instalata pe un sistem fara a impune executarea fundatiei Microsoft Access, destul de mare sub aspect dimensional.

Visual Basic este mai puternic si contine numeroase instrumente, care nu se afla in Microsoft Access, care simplifica procesul de creare a unei aplicatii pentru bazele de date.

Cel mai important dintre acestea este Data control, care reprezinta o componenta vizibila ce asigura conectivitatea la un fisier tip baza de date si la informatiile continute in acesta.