Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Obiecte de tip modul. Aplicatii

Informatica


Obiecte de tip modul. Aplicatii

Tipul Variant



Într-o variabila de acest tip puteti stoca text, date numerice sau orice alt tip de date predefinit în Access. Spre exemplu:

Dim varOrice As Variant

varOrice = 32

varOrice = varOrice & " este un numar întreg"

În prima linie de cod declaram variabila varOrice ca fiind de tipul Variant, apoi îi atribuim valoarea 32. În cea de-a 3-a linie de cod am folosit caracterul & pentru a concatena 32 cu un sir de caractere. Astfel, variabila noastra contine sirul de caractere "32 este un numar întreg". Access a facut implicit conversia de la tipul întreg la sir de caractere. Iata un alt exemplu:

varOrice =

varOrice = varOrice + "10"

Cea de-a doua linie de cod va face ca valoarea lui varOrice sa fie 12.5, prin conversia sirului de caractere "2,5" la numarul real 2.5. Acelasi efect îl vor avea si urmatoarele liniii de cod:

varOrice = 2.5

varOrice = varOrice + 10

De aceasta data, sirul "10" va fi convertit la numarul întreg 10.

Atunci când lucrati cu variabile de tipul Variant, este bine sa stiti urmatoarele:

Access va converti variabila la tipul de date corespunzator valorii atribuite;

atunci când doriti sa concatenati doua siruri de caractere, folositi operatorul & în loc de +;

Când folositi operatorul + pentru lucrul cu variabile de tip Variant, Access va actiona astfel:

daca ambele valori sunt numerice, se va efectua o adunare;

daca ambele contin siruri de caractere, ele vor fi concatenate;

daca una este o valoare numerica si cealalta este un sir de caractere, Access va încerca s-o converteasca în valoare numerica si sa faca adunarea; daca nu reuseste, va rezulta o eroare.

Pentru a determina ce tip de date contine o variabila de tip Variant la un moment dat, apelati functia predefinita VarType. Aceasta va returna una dintre valorile prezentate în tabelul urmator:

Valoarea returnata

Tipul de date

Constanta intrinseca

vid (variabila este neinitializata)

VbEmpty

Null

VbNull

Integer

VbInteger

Long

VbLong

Single

VbSingle

Double

VbDouble

Currency

vbCurrency

Date

vbDate

String

vbString

Object

vbObject

eroare



VbError

Boolean

vbBoolean

Variant (numai pentru matrice)

vbVariant

obiect DAO

vbDataObject

Decimal

vbDecimal

Byte

vbByte

matrice

vbArray

Atunci când o variabila este declarata, ei i se atribuie valoarea initiala 0, daca variabila este de tip numeric, sau (sirul vid), daca este de tip sir de caractere. Variabilelor de tip Variant însa, nu li se atribuie la declarare nici o valoare, cu alte cuvinte sunt "vide" (a nu se confunda cu 0, Null sau ). Aceste variabile ramân vide pâna în momentul când li se atribuie o valoare. Puteti testa daca o variabila de tip Variant a fost sau nu initializata cu ajutorul functiei IsEmpty, care returneaza valoarea True daca variabila este "vida". Pentru a "vida" din nou o variabila, trebuie sa-i atribuiti ca valoare o alta variabila de tip Variant care nu a fost înca initializata:

Dim varOrice As Variant

acum varOrice este vida

varOrice = 0

If IsEmpty(varOrice) Then

am testat daca varOrice este vida (si nu este)

Dim varCeva As Variant

varOrice = varCeva

acum varOrice este vida din nou

O alta valoare speciala pe care o poate avea o variabila de tip Variant este Null (daca veti încerca sa atribuiti valoare Null unei variabile de orice alt tip decât Variant, veti obtine o eroare). Daca folositi valoare Null într-o expresie, întreaga expresie va avea valoarea Null. De exemplu:

Dim varOrice As Variant

varOrice = Null

varOrice = varOrice + 2.5

Dupa cea de-a treia linie de cod, varOrice va avea tot valoarea Null. Daca înlocuiti aceasta linie cu:

varOrice = varOrice  & "ceva"

varOrice va avea valoarea "ceva". Deci, operatorul & este singurul care nu propaga valoarea Null într-o expresie.

Puteti testa daca o variabila are valoare Null cu ajutorul functiei IsNull

Variabilele de tip Variant sunt foarte utile, deoarece, pe lânga faptul ca nu trebuie sa va bateti capul cu alegerea unui tip de date, sunt singurul tip de variabile carora li se poate atribui valoare Null. Astfel, daca unei anumite variabile îi veti atribui valori dintr-un câmp al unei tabele care poate contine si valoarea Null, acea variabila trebuie sa fie de tip Variant. Folosirea acestui tip de variabile are însa si dezavantaje, printre care încetinirea executiei aplicatiei si chiar posibila aparitie a unor erori.

Option Explicit

În exemplul de mai jos vom vedea ce se poate întâmpla în cazul în care nu am stabilit aceasta optiune în cadrul sectiunii Declaration a unui modul:

Sub AriaCercului (dblRaza As Double

Dim dblAria As Double

dblAria = 3.14 * dblRsza * dblRaza

MsgBox ("Aria = " & dblAria)

EndSub



Pentru a rula aceasta subrutina, deschideti fereastra Debug, apasând butonul Debug Window de pe bara de instrumente (fereastra Debug va va permite sa apelati procedurile direct, pentru a le putea testa). Scrieti în partea de jos a ferestrei Debug linia:

Call AriaCercului (5)

Dupa aceea, apasati pe Enter si veti vedea rezultatul 0. Este clar ca acest rezultat este eronat. Motivul este acela ca în codul subrutinei s-a strecurat o eroare: în loc de dblRaza am scris, într-un loc, dblRsza. Optiunea Option Explicit nefiind stabila, si deci nefiind necesar ca variabila sa fie declarata înainte de a fi folosita, Access a atribuit variabilei dblRsza valoarea implicita 0, care a dus la acest rezultat eronat.

Pentru ca aceasta optiune sa fie adaugata automat la orice modul nou pe care îl creati, alegeti comanda Tools/Option si, în pagina Module a ferestrei Option, validati optiunea Require Variable Declaration.

Matrice

O matrice poate fi privita ca o multime de variabile de acelasi tip, având acelasi nume si care stocheaza informatii similare. Fiecarei variabile ce compune matricea îi corespunde un indice (un numar de ordine). Daca numarul de elemente ale matricei a fost specificat la declarare, matricea se numeste statica, altfel, ea se numeste dinamica.

Matrice statice

Dupa ce ati fixat numarul de elemente în declararea matricei, acesta nu mai poate fi schimbat pe parcurs. Matricele statice se declara astfel:

Dim nume_matrice ( ip To iu ) As tip_de date

unde:

nume_matrice - este identificatorul (numele) matricei

ip - este indicele primului element

iu - este indicele ultimului element

tip_de_date - este tipul datelor stocate în matrice

exemplu:

Sub MatriceStat()

Dim i As Integer

Dim iMatrice(1 To 5) As Integer

iMatrice(1) = InputBox("Introduceti primul element", "Matrice")

For i = 2 To 5

iMatrice(i) = InputBox("Introduceti al" & i & "-lea element", "Matrice")

Next i

MsgBox ("Primul element este " & iMatrice(1))

For i = 2 To 5

MsgBox ("Al " & i & "-lea element este " & iMatrice(i))

Next i

End Sub

Indici

Nu este obligatoriu ca indicele primului element al unei matrici sa fie 1; el poate fi orice alt numar întreg, de exemplu:

Dim iMatrice(5 To 14) As Integer

este declaratia unei matrice de 10 elemente numere întregi.

Daca nu specificati indicele primului element al unei matrici, Access va considera în mod implicit ca acesta este 0. astfel, urmatoarele doua declaratii sunt echivalente:

Dim iMatrice(9) As Integer

Dim iMatrice(0 To 9) As Integer

Daca veti dori ca indicele implicit al primului element sa nu fie 0, ci altul (1, de exemplu), introduceti la sectiunea Declaration a modulului urmatoarea linie de cod:

Option Base 1

Matrice dinamice

Daca nu cunoasteti de la început numarul de elemente pe care trebuie sa le aiba o matrice, puteti sa o declarati ca fiind dinamica. Astfel de matrici se declarara tot cu ajutorul instructiunii Dim, Static, Private sau Public, dar punând doua paranteze rotunde dupa numele matricei. Apoi, cu ajutorul instructiunii ReDim, puteti fixa indicii primului si ultimului element al matricei.

Exemplu:

Sub MatriceDin()

Dim i As Integer

Dim iTot As Integer

Dim iMatrice() As Integer

iTot = InputBox("Introduceti numarul total de elemente")

ReDim iMatrice(1 To iTot)

iMatrice(1) = InputBox("Introduceti primul element", "Matrice")

For i = 2 To iTot

iMatrice(i) = InputBox("Introduceti al" & i & "-lea element", "Matrice")

Next i

MsgBox ("Primul element este " & iMatrice(1))

For i = 2 To iTot

MsgBox ("Al " & i & "-lea element este " & iMatrice(i))

Next i

End Sub

Dupa ce ati specificat, cu ajutorul instructiunii ReDim, indecsii primului si ultimului element al matricei, puteti folosi din nou aceasta instructiune pentru a modifica acesti indecsi (si, deci, dimensiunea totala a matricei). În mod normal, modicicând acesti indecsi se vor pierde valorile stocate de elementele matricei. Pentru a preveni acest lucru, folositi cuvântul cheie Preserve, astfel:

Dim iMatrice() As Integer

ReDim iMatrice(1 To 10)

si dorim ulterior sa reducem la cinci numarul de elemente fara a pierde valorile primelor 5, vom scrie:

ReDim Preserve iMatrice(1 To 5)

Detectarea matricelor

Exista trei functii care ne ajuta sa aflam daca o variabila este simpla sau este o matrice: IsArray, VarType si TypeName.

Prima returneaza valoarea True daca variabila care îi este data ca argument este o matrice si False daca nu.

A treia se aseamana cu a doua, cu diferenta ca în locul valorii corespunzatoare unui tip de date, ea returneaza chiar numele tipului respectiv.




Document Info


Accesari: 902
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )