|
Microsoft Office Access |
|
|
Deklarisanje promenljivih u VBANivo:
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 promenljiveDa 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:
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):
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:
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 promenljiveVreme 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.
|
|
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. |