Baze de date
Variabile, constante si tipuri de dateVariabile, constante si tipuri de dateTipuri de variabile Variabilele permit stocarea valorilor intermediare in orice moment al executiei codului VBA pentru a putea fi folosite ulterior pentru a efecua calcule, comparatii, teste etc. Variabilele sunt identificate printr-un nume ce le permite sa faca referinta la valoarea pe care o au, si printr-un tip ce determina natura datelor pe care le pot stoca. Tipuri NUMERICE
Tipul SIR DE CARACTERE Tipul String: exista doua tipuri de astfel de siruri: sirurile de lungime variabila pot contine in jur de 2 miliarde de caractere, sirurile de lungime fixa pot contine de la 1 la aproximativ 64 Ko de caractere
Exemplu ’ sir de lungime variabila Dim Adresa As String ’ sir de lungime fixa(20 caractere) Dim Nume As String*20 Tipul BOOLEAN: variabila poate lua valoarea True (Adevarat) sau False (Fals) care este valoarea sa implicita. Ocupa doi octeti. Tipul DATE: variabila poate lua valori de data si ora incepand cu 1 ianuarie 100 pana in 31 decembrie 9999. Ocupa opt octeti. Tipul VARIANT: variabila permite stocarea valorilor de date diferite: date, numere cu virgula mobila, siruri de caractere, referinte la obiecte, etc. Ocupa 16 octeti plus unul pentru fiecare caracter daca valoarea este un sir. Tipul OBJECT: variabila permite stocarea referintei la un obiect sub forma unei adrese cu 4 octete. Acesta este un tip generic, insa pentru a obtine performante superioare este preferabila folosirea unui nume de obiect asa cum acesta este definit in zona Classes al Exploratorului de obiecte. Exemplu Deschiderea bazelor de date Access folosind tipul generic Object sau pornind de la obiectul Database. Dim dbsEmp As Object Dim dbsArt As Database Set dbsEmp = OpenDatabase(“D:Carte_VBA “ & “Angajati.mdb”) Set dbsArt = OpenDatabase(“D:Carte_VBA” & _ “Articole.mdb”) Tipul DEFINIT DE UTILIZATOR (USER DEFINED): este folosit in special pentru declararea variabilelor ce contin mai multe tipuri de informatii. Definirea acestui tip nu se poate face decat in sectiunea de declarare a modulului. Exemplu Declararea unui nou tip definit de utilizator, Angajati: Public type Angajati Matricola As String*5 Nume As String*30 Varsta As Integer Departamentul*10 End Type Utilizarea tipului Angajati: Dim NouAngajat As Angajat NouAngajat.Matricola= ”15235” NouAngajat.Nume= ”Popescu” Declararea variabilelor Exista doua modalitati de a declara variabilele: implicit si explicit. Declararea implicita In momentul in care VBA intalneste o variabila care nu face obiectul unei declaratii explicite, o va declara in mod implicit, oferindu-i un tip Variant. Tipul Variant permite stocarea succesiva a unor valori de tip diferit in aceeasi variabila. Tipul variabilelor evolueaza in functie de valoarea care ii este atribuita. Exemplu: Private Sub Atribuire() Tipul variabilei devine String var = “Buna ziua” MsgBox TypeName(var) Tipul variabilei devine Integer var = 12 MsgBox TypeName(var) Tipul variabilei devine Double var = 6.55957 MsgBox TypeName(var) Tipul variabilei devine Boolean var = True MsgBox TypeName(var) EndSub Declararea explicita Variabila este declarata inainte da a fi folosita. Este posibil sa se impuna declararea explicita a variabilelor folosind instructiunea Option Explicit din sectiunea de declarare a fiecarui model. Pentru ca aceasta instructiune sa fie definita by default in VBA, se activeza optiunea Declararea obligatorie a variabilelor din meniul Tools → Options → Edit. Declararea explicita a variabilelor se poate face in sectiunea de declarare a modulelor sau in cadrul unei proceduri sau functii. Declararea este realizata de catre una dintre urmatoarele patru instructiuni ce folosesc aceeasi sintaxa: la nivelul unei proceduri sau functii sintaxa este urmatoarea Dim <Numevariabila> [As Type] Static <Numevariabila> [As Type] la nivelul unui modul, sintaxa este urmatoarea: Private <Numevariabila> [As Type] Public <Numevariabila> [As Type] De fiecare data cand instructiunea Dim este executata, variabila este reinitializata (0 pentru tipul numeric, multime vida pentru tipul String, Empty pentru tipul Variant). Daca este necesara pastrarea valorii precedente, trebuie folosit Static in locul instructiunii Dim. Observatie: Daca nu se precizeaza nici un tip (ex: dim var), tipul Variant este atribuit implicit variabilei. Domeniul variabilelor O variabila este numita locala, a unei functii sau proceduri daca este declarata in cadrul unei functii sau proceduri cu Dim sau Static. Aceasta nu este recunoscuta in afara functiei sau procedurii. O variabila poate fi vizibila din toate procedurile sau functiile unui modul (standard, de clasa, formular sau raport) daca este declarata in sectiunea de declarare a modulului Private (sau Dim). O variabila este publica intregii aplicatii, adica este vizibila din orice loc al aplictiei, daca este declarata in sectiunea de declarare a modulului Public. Observatie: Pentru a se face referinta unei variabile publice ce se gaseste intr-un alt modul, trebuie folosita sintaxa urmatoare: Forms! <NumeFormular>.<NumeVariabila> Reports! <NumeRaport>.<NumeVariabila> Tipul TABLOU Un tablou se declara in acelasi mod ca si variabilele, cu ajutorul instructiunilor Dim, Static, Private sau Public. Un tablou este o variabila ce prezinta mai multe compartimente ceea ce ii permite sa stocheze tot atatea valori. Un tablou poate avea pana la 60 de dimensiuni. Se poate face referinta la un tablou in mod global sau in mod individual, atribuind elementelor sale notatia cu indici. Oricare ar fi tipul elementelor, un tablou necesita 20 de octeti de memorie, carora li se adauga 4 octeti pentru fiecare dimensiune si numarul de octeti ocupati de catre date. Daca tipul de date nu este specificat, elementele tabloului declarat primesc tipul Variant. Primul element al unui tabel isi atribuie indicele 0, implicit. Este posibila insa stabilirea acestei valori implicit la 1 folosind instructiunea Option Base 1 din sectiunea de declarare. In acelati timp, folosire unei clauze, To, permite definire explicita a indicilor de la inceput la sfarsit. Exemple Declararea unor tablouri diferite: ‘ 12 elemente indexate de la 0 la 11 Dim Cheltuieli (11) As Single ‘ 12 elemente indexate de la 1 la 12 Dim Plati (1 To 12) As Single ‘ 2 dimensiuni: prima indexata de la 0 la 10 si ‘a doua de la 1 la 15 Dim Facturi (10, 1 To 15) As String Option Base 1 ‘ 12 elemente indexate de la 1 la 12 Dim Plati (12) Folosirea unui tablou bidimensional. Exemplul urmator permite crearea unui tabel de inmultire: fiecare element din tabelul Multiply este egal cu rezultatul inmultirii indicilor sai. Dim Multiply(1 To 10, 1 To 10) As Integer Dim i,j As Integer ‚Initializarea tabloului For i = 1 To 10 For j = 1 To 10 Multiply(i,j) = i*j Next j Next i MsgBox (Multiply(4,7) MsgBox (Multiply(7,4) Tablouri dinamice Este vorba de tablourile ale caror dimensiuni sunt definite in momentul executiei. Aceasta permite optimizarea spatiului de memorie ocupat. Declararea tablourilor: Dim Table () Utilizare: Inaintea utilizarii, tabloul trebuie dimensionat cu ajutorul instructiunii ReDim: ReDim Table (15 To 50) Instructiunea ReDim se poate folosi pentru a modifica tabloul dinamic de atatea ori cat este nevoie. Implicit, valorile prezentate, in tablou sunt anulate. Instructiunea ReDim Preserve permite intinderea unui tablou in acelasi timp pastrand valorile existente. ReDim Preserve Table (15 To 70) Constante in VBA O constanta reprezinta o valoare numerica sau de tip sir, ce nu trebuie modificata. Instructiunea Const permite declararea unei constante si definirea valorii sale fixe. Odata declarata, o constanta nu mai poate fi modificata, nici nu mai poate primi o valoare noua. Declararea unei constante se realizeaza intr-o procedura sau in sectiunea de declarare a unui modul. Constantele la nivelul modulului sunt private, implicit. Pentru a declara o constanta publica, este necesar ca instructiunea Const sa fie precedata de cuvantul cheie Public. Exemple Declarare: Public Const Societate = „Editura Mirton” Const Black = &Ho& Utilizare: NameSocietate= Societate Form!Angajati!Prenume.BlackColor = Black Constantele intrinseci Acestea sunt constante puse la dispozitie chiar de catre aplicatii. Astfel, Access 2002 poseda propriile sale constante intrinseci care sunt vizibile in exploratorul de obiecte. O constanta intrinseca poate fi folosita intr-un macro sau in codul VBA. Constantele intrinseci sunt caracterizte de un prefix de 2 litere ce identifica biblioteca de obiecte unde constanta este definita. Constantele bibliotecii Microsoft Access primesc Prefixul „ac”; constantele bibliotecii Visual Basic au ca prefix „vb”. Exemple: acForm vbCurrency Exista mai multe categorii de constante intrinseci: constante de actiune, constante de proceduri eveniment, etc.
|