Microsoft Office Access
uređuje Branislav Mihaljev, MVP

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Accessu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Deklarisanje promenljivih u VBA

Nivo:  NIVO 2 - klinite za objašnjenje


Pre ili kasnije, dolazimo do potrebe za osvajanjem malo teoretskog znanja. U ovom slučaju, reč je o izuzetno važnom pitanju upravljanja promenljivama u toku programiranja. Recimo - zašto je deklarisanje promenljivih toliko važno?

Promenljive u VBA se dele na nivoe kojih ima tri, kao i na tipove, od čega zavisi kakav sadržaj mogu da pamte. Najniži nivo su lokalne promenljive, koje su dostupne i postoje samo u proceduri gde su definisane. Viši nivo su promenljive koje su dostupne svim procedurama u jednom modulu, a najviši nivo imaju tzv. javne promenljive koje su dostupne celoj aplikaciji.

Domen promenljive

Da bismo definisali lokalnu promenljivu, poslužićemo se "izjavom" (deklaracijom) Dim u okviru procedure. Promenljive koje će biti dostupne celom modulu se takođe definišu deklaracijom Dim, s tim što se deklaracija mora nalaziti na početku modula u sekciji Declarations. Javne promenljive se definišu u sekciji Declarations, ali se umesto Dim mora koristiti deklaracija Public.

Da bismo demonstrirali rad sa sva tri tipa promenljive, neophodno je otvoriti VBA ekran. Nad učitanom bazom u Accessu pređimo na karticu modula i zatim iz menija Insert odaberimo stavku Module; do VBA ekrana možemo stići i prečicom CTRL+G sa tastature. Napišimo funkciju u kojoj ćemo definisati vrednost jedne promenljive, a zatim testirati njenu vrednost:

Function LokalnaProm()
Dim strProm As String
strProm = "Lokalna"
Debug.Print strProm
End Function

U okviru Immediate upišimo ? LokalnaProm () i funkcija će vratiti vrednost Lokalna upravo onu koju smo definisali u funkciji. Selektujmo drugi red funkcije i komandom Cut (CTRL+X) ga uklonimo. U međuvremenu, Cliboard pamti red koji smo uklonili kako bismo ga kasnije mogli upotrebili na drugom mestu. Pokrenimo funkciju i pogledajmo rezultat. Osim korisnika ranijih verzija Accessa koje će dočekati poruka o grešci, funkcija će regularno vratiti vrednost Lokalna, iako promenljiva sada nije definisana. Šta se zapravo dešava?

Svaka promenljiva koja nije eksplicitno definisana automatski se smatra implicitno definisanom kao tip Variant, odnosno kao promenljiva koja može da primi bilo koji sadržaj. Promenljive se ne moraju eksplicitno definisati, ali imajmo na umu da svaka nedefinisana promenljiva troši više memorije i usporava VBA program. Štaviše, Access ne može da prati ispravnost naziva nedefinisanih promenljivih, pa ugrađeni modul za praćenje i automatsko ispravljanje grešaka naziva promenljivih neće raditi. Zato se eventualne slovne greška moraju ručno pronaći, jer u procesu kompajliranja programa neispravan naziv neće biti "primećen".

Od VBA programa možemo zahtevati da "ne priznaje" implicitno definisane promenljive tako što ćemo na vrhu svih modula dodati klauzulu Option Explicit. Odnosno, ako želimo da VBA u svakom novom modulu doda ovaj red, kroz dijalog Tools/Options/Editor uključimo opciju Require Variable Declaration.

Zahtevajmo sada od funkcije da nam vrati rezultat.

VBA nam prijavljuje grešku: "Promenljiva nije definisana". Upišimo na početku modula (pre svake funkcije) red koji smo izbacili - Dim strProm As String i pokrenimo funkciju. U okviru Immediate pronaći ćemo uredno ispisan rezultat: Lokalna. Ovim smo promenljivoj dodelili viši nivo - ona je postala dostupna svim procedurama i funkcijama jednog modula.

Otvorimo novi modul (dijalog Insert/Module) i prenesimo u njega sledeću funkciju (ne zaboravimo da dodamo Option Explicit pre funkcije):

Function JavnaProm()
strJavna = "Javna"
Debug.Print strJavna
End Function

Pri pokretanju funkcije sa ? JavnaProm () u oknu Immediate, dobićemo poruku o grešci kao što smo videli u prethodnom primeru. Definisaćemo ovu promenljivu javnom tako što ćemo se vratiti u prvi modul i dodati sledeći red pre funkcije:

Public strJavna As String

Vratimo se sada u drugi modul i ponovo pokrenimo funkciju. VBA ovaj put vraća rezultat: Javna. Ovakva promenljiva sada postaje dostupna celoj aplikaciji, iako smo je definisali u drugom modulu. Praktično, svaka javna promenljiva se može definisati u bilo kom modulu.

Promenljive se, osim sa Dim i Public, mogu definisati i deklaracijama Private i Static.

Deklaracija Private se koristi za deklarisanje promenljive najnižeg nivoa koje važe samo u okviru procedure ili funkcije, a ako takvu promenljivu definišemo u samoj proceduri, izjava Public ima potpuno isto značenje kao i Dim. Deklaracija Private se, recimo, u okviru procedure može koristiti radi bolje čitljivosti programa. Ukoliko je potrebno da promenljiva pamti svoju vrednost između dva pozivanja, umesto deklaracije Dim upotrebićemo Static. Ovo je pojava koja zahteva posebno objašnjenje...

Životni vek promenljive

Vreme dok promenljiva pamti neku vrednost se naziva životni vek promenljive. Životni vek zavisi od nivoa promenljivih, kako smo već opisali. Kada se definišu, promenljive imaju vrednost nula ako su brojčanog tipa, vrednost praznog stringa ako su varijabilnog tipa, odnosno onoliko ASCII znaka "0" koliko je definisano za promenljivu fiksne dužine.

Promenljive prvog i drugog nivoa, koje su "vidljive" samo u lokalnoj proceduri ili modulu, a koje su definisane deklaracijom Dim, zadržavaju svoju vrednost samo unutar procedure koja operiše sa njima. Ako je promenljiva definisana deklaracijom Static, ona zadržava svoju vrednost sve vreme dok radi program u bilo kojem modulu. Ovakva promenljiva praktično ima svoj životni vek kao i promenljiva definisana na nivou modula.

Javne promenljive, kao najviši nivo, zadržavaju svoju vrednost i nakon što se okonča rad programa. Na ovaj tip promenljivih valja obratiti posebnu pažnju i upotrebljavati ih samo kada je to potrebno, jer one troše memoriju sve vreme dok im se vrednosti ne postave na početnu vrednost.

Pogledajte i sledeći prilog na ovu temu, koji govori o matricama promenljivih.
 

 

  (C) 2000-2010 Praktikum na Webu

Branislav Mihaljev, Access bajtovi, PC 84


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana.