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

 
Suština pasijansa
Suština pasijansa
 


 

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
 

Access 2007 i makro programiranje

Nivo:  NIVO 2 - klinite za objašnjenje


Verovatno su vam poznate manjkavosti Accessovog makro jezika u prethodnim verzijama ili ste barem upoznati s njima čitajući ove stranice. Da se podsetimo: makro jezik nije imao proceduru za "hvatanje" i tretiranje grešaka, što ga je činilo gotovo neupotrebljivim u okruženju gde je predviđeno da se program kontrolisano izvršava. Drugim rečima, krajni korisnik neće gledati blagonaklono na program koji prijavljuje grešku, a uz prateće opravdanje da "drugačije ne može". U makro jeziku nije bilo moguće koristiti promenljive, što veoma ograničava upotrebu programa - retko koji program ne operiše sa međurezultatima koje treba zapamtiti u određenim intervalima izvršavanja programa.

Makro jezik je u novoj verziji unapređen uvođenjem kontrole grešaka, mogućnošću deklarisanja promenljivih i opcijom za ugnežđivanje makroa. Za razliku od prethodnih verzija, sada je moguće grešku presresti i preusmeriti izvršavanje programa na drugu komandu. Za ovu namenu su uvedene tri nove akcije: OnError, SingleStep i ClearMacroError, odnosno uveden je i objekat MacroError. Akcija OnError ima nekoliko argumenata za dalju kontrolu programa u slučaju pojavljivanja greške. Argument Go To određuje naredni korak izvršavanja programa; upotrebom komande Next nalažete izvršavanje naredne naredbe. parametrom Macro Name određujete koji se makro pokreće u slučaju greške, dok parametar Fail potpuno obustavlja izvršavanje makro programa.

Termin "ugnežđeni makro" se odnosi na program koji pripada skupu osobina objekta kontrole forme ili izveštaja. Kako je to sada deo osobina objekta, kontrolu forme možete kopirati i zadržati program uz nju - do sada ste kopiranjem kontrole mogli kopirati samo kontrolu, ali ne i program vezan na neki od događaja, pa ste morali naknadno da kopirte sam program; zametan posao. Ugnežđeni makroi vas ujedno oslobađaju gomile sitnih programa za razne akcije koji se obično pridružuju događaju objekta. Ovakav makro ćete prepoznati po tekstu u polju događaja, gde piše [Embedded Macro]. U novom sistemu zaštite (po mišljenu nekih preteranom), ovakav program je dizajniran da, kada god je to moguće, bude izvršen i u režimu zaštite računara od izvršavanja Access programa tj. kada odredite da nemate poverenja u program pokrenute baze. Kompatibilnost sa prethodnim verzijama je rešena tako što se nove makro komande, u toku prevođenja baze iz novog u stari format Accessa, konvertuju u VBA module upotrebom metode RunCommand.

Access 2007 donosi promenljive u makro jezik. Za tu namenu je kreiran novi objekat TempVar koji pripada kolekciji TempVars i dozvoljava navođenje određenih akcija. SetTempVar formira novu TempVar promenljivu, dok je akcija RemoveTempVar uklanja. Za uklanjanje svih definisanih promenljivih ovog tipa, upotrebićete akciju RemoveAllTempVars.

Dostupnost ovih promenljivih je na mnogo višem nivou od samog makro programa. Njih možete koristiti iz gotovo svih objekata programa: upita, formi ili izveštaja, odnosno možete razmenjivati vrednosti upotrebom VBA jezika. U praktičnoj primeni, upotrebom TempVars promenljivih možete zameniti VBA promenljive globalnog tipa.

Osim navedenih izmena u makro programskom delu, uvedene su i izmene u dizajnerskom delu okna za izradu makroa. U toku "pisanja" makro programa, verovatno ste prebacivali kursor između okna za pisanje programa i okna za akcije kako biste videli listu raspoloživih akcija. Ovo više nije potrebno, jer sada sve akcije možete videti u novoj koloni Arguments. Nadalje, u novom, veoma oštrom sistemu zaštite, Access 2007 prikazuje samo one akcije koje se smatraju "bezbednim". Generalno govoreći, bilo koja akcija koja menja podatke, pristupa sistemu datoteka, kreira ili briše objekte, pokreće SQL naredbe ili ima bilo koju drugu interakciju sa pojedinim programima, smatra se nebezbednom.

Programerskim rečnikom govoreći: u novom Accessu, program se smatra neispravnim sve dok se ne dokaže suprotno, što je zaista teško objasniti prosečnom korisniku vaše aplikacije. Takav korisnik će vam postaviti neugodno pitanje: zašto onda ne moram da potvrđujem izvršavanje za svaki program koji koristim?

Listu svih raspoloživih akcija (skrivenih u bezbednosnom režimu rada) možete videti ako kliknete na dugme Show All Actions na glavnoj traci, pri čemu će Access prikazati sve naredbe u makro programu, uključujući i one nebezbedne, koje će obeležiti ikonom sa znakom uskličnika.

Verovatno vas zanima: zašto su načinjene ovakve izmene u makro jeziku, kada je za njega važilo opšte prihvaćeno mišljenje da je prisutan samo zbog kompatibilnosti sa prethodnim verzijama? Razlog za izmene leži upravo u novom sistemu bezbednosti: određene makro naredbe su imune na ovaj zaštitni sistem i omogućuju pokretanje programa čak i kada je bezbednost baze postavljena na najviši nivo. Doduše, malo toga možete "programirati" u ovakvom režimu rada, ali ipak imate mogućnost da u malom broju slučajeva učinite nešto više u pogledu automatizacije aplikacije.

Svakako, trebalo bi da koristite VBA kad god je to moguće, jer ima mnoge komparativne prednosti. Makro naredbe su uvek interpretirane, pa se izvršavaju jako sporo u odnosu na pretkompajlirane VBA naredbe. Savetujemo da testirate program na ciljnom računaru i merite vreme izvršavanja svakog dela programa. Kad god neko vreme čekanja pređe oko tri sekunde, korisnik će subjektivno smatrati da je vaš program spor. UZ to, novi Access je i inače mnogo zahtevniji za pokretanje, što dodatno usporava rad. Dakle, za "vožnju u petoj brzini" koristite isključivo VBA. Čak i u pogledu broja komandi (za makro jezik, to je oko 70), ova dva sistema za automatizaciju se ne mogu porediti.

Lista svih razlika bi nas odvela u opsežnu diskusiju. Navedimo neke primere nedostataka makro sistema, bez određene težine: interakcija sa drugim programima nije moguća; slanje e-maila takođe; pristup Web sajtovima ili datotekama na disku nije podržan; kontrola drugih programa, čak i uređaja (kao što je bar-kod čitač) upotrebom spoljnih biblioteka ne postoji. Kreiranje dinamičke ADO ili DAO konekcije nije moguće, kao ni upotreba komplikovanih jednačina sa mnogo promenljivih koje su u interakciji sa unosom podataka. Zapravo, poslednji primer je ponekad moguće programirati upotrebom makro jezika, ali tada ovakav program postaje ekstremno komplikovan, pa se vraćamo na početak priče o razlikama: takav program postaje dosadno spor. Dakle, i pored ovih izmena u makro jeziku, savetujemo da koristite VBA jezik kad god je to moguće, jer omogućuje doslovno punu kontrolu programa.

 

  (C) 2000-2011 Praktikum na Webu

PC 137


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

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