Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


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

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Optimizacija programa

Nivo:  NIVO 3 - klinite za objašnjenje


VBA optimizacija podrazumeva da se program ponaša očekivano, da se može ponovo upotrebiti na drugom mestu, da je lak za shvatanje i održavanje i, konačno, da radi optimalno brzo. Svako ko je bio u prilici da prepravi program drugog autora ili da menja proceduru kako ba radila nešto drugo shvata deo problema.

Kod pisanja procedura treba voditi računa o tome da ona ima jedinstvenu funkciju. Proceduri treba da prosledimo potrebne parametre umesto da u njoj samoj referenciramo konkretan objekat. Za primer, pretpostavimo da imamo više formi u kojim treba da se obavi ista programska operacija. Možemo napisati proceduru sa referencom na polje prve forme, iskopirati proceduru u programski modul druge forme, prepraviti je itd. ili možemo napisati jedinstvenu proceduru kojoj ćemo proslediti parametre naziva forme i polja na njoj. Loša je praksa da se kompletna procedura drži "sakrivena" iza nekog od događaja polja forme ili objekta - ovde treba pisati samo one delove programa koji se odnose na samo polje, a univerzalne procedure ćemo, po pravilu, postavljati na kartici modula. Na ovaj način ćemo brzo pronaći potrebnu proceduru kada nam zatreba na drugom mestu, a najčešće korišćene se mogu držati u zasebnom modulu kojeg po potrebi možemo "šetati" po aplikacijama.

Uz poštovanje ostalih osnovnih pravila kod kreiranja aplikacija nad bazom podataka, sledećih nekoliko manje poznatih ali efektnih saveta će u mnogome ubrzati bazu podataka.

Optimizacija formi

U Access aplikaciji najčešće korišteni objekat je forma. U aplikaciji gde se forme smenjuju, ukupno vreme potrebno za otvaranje i zatvaranje formi postaje nezanemarljivo. Kod naizmeničnog smenjivanja, preporuka je da se otvorena forma nikada ne zatvara sve do kraja rada aplikacije, odnosno da joj se u toku rada samo menja parametar vidljivosti - Visible:

Screen.ActiveForm.Visible = False

Prilikom zatvaranja forme, Access će proveriti da li je ona izmenjena i postaviti kontrolno pitanje za snimanje izmena. Zatvaranje forme možete ubrzati ukoliko naložite Accessu da ne ispituje eventualne izmene u dizajnu navođenjem parametra acSaveNo:

DoCmd.Close acForm, "ime_forme", acSaveNo

Optimizacija stringova

Često će biti potrebno da znate dužinu stringa, kako biste mogli da raščlanite njegov sadržaj. Funkcijom Len možete utvrditi dužinu stringa:

Dim lngDuz As Long
lngDuz = Len(strTekst)

VBA uvek u memoriji čuva dužinu stringa u obliku Long Integer, a ovaj broj se uvek nalazi ispred samog stringa. Funkcija Len zato veoma brzo utvrđuje dužinu stringa. Naročito efikasna, ova funkcija se može upotrebiti za utvrđivanje stringa nulte dužine (praznog stringa). Umesto da poredite promenljivu sa praznim stringom "", proverite dužinu stringa, upoređujući ga sa brojem nula:

If Len(strTekst) > 0 Then

Ovakva provera radi mnogo brže nego:

If strTekst = "" Then

I još o stringovima

Sledeća dva saveta će ubrzati operacije sa stringovima.

Funkcijom Mid možete pronaći grupu karaktera u bilo kojoj rečenici. Međutim, malo je poznato da se ovom funkcijom može zameniti deo rečenice mnogo brže od svih ostalih načina:

strTekst = "ovo je test"
Mid(strTekst, 8, 4) = "vest"

Jedina mana ovog načina menjanja karaktera je ta što tekst koji se zamenjuje i zamenjeni tekst moraju imati istu dužinu.

Operacije poređenja dva znaka, kako ste videli u gornjem primeru, veoma su spore. Da biste utvrdili da li se traženi znak nalazi u jednoj reči, uporedite njegovu ASCII vrednost sa brojem. Za primer, proverićete da li se na početku reči nalazi razmak, čija ASCII vrednost iznosi 32:

If Asc(strTekst) = 32

Ovakav način provere je mnogo brži nego ako biste upoređivali prvi znak sa " ":

If Left(strTekst, 1) = " "

Optimizacija deljenja

Prilikom deljenja dva broja, mnogi korisnici su doživeli neprijatan problem "viška" decimala. Funkcijama Fix i Int možete zaokružiti broj na jedan od dva načina:

Broj = Int(-999/10) ' Vraća -100.
Broj = Fix(-999/10) ' Vraća -99.

Umesto funkcije Fix, upotrebite obrnuti znak za deljenje dva broja (\) umesto znaka za deljenje u pokretnom zarezu (/), koji rezultat uvek vraća kao broj tipa Double, bez obzira kog tipa su deljenik i delilac. Za primer, dva broja možete podeliti na sledeći način:

Broj = -999\10 ' Vraća -99

Imajte u vidu da svaki put kada koristite vrednosti deklarisane kao Single ili Double u aritmetičkoj operaciji sa celim brojem, ceo broj i rezultat će biti takođe konvertovani u tip Single ili Double. Kod višestrukih operacija sa celim brojem, može se desiti da mali celi broj pređe u "viši nivo" promenljive (recimo iz Single u Double), pa u tom slučaju morate eksplicitno zahtevati od Accessa da konvertuje broj u "niži nivo" promenljive.

 

  (C) 2000-2009 Praktikum na Webu

Branislav Mihaljev, Access bajtovi, PC 87


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

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