|
Microsoft Office Access |
|
|
OLE automatizacijaNivo:
Automatizacija je termin koji se odnosi na proces tokom kojeg jedna programska komponenta komunicira sa programskom komponentom drugog programa koristeći Microsoft Component Object Model (COM). Ova metoda se često koristi u programima koji razmenjuju informacije između komponenti programa, kao što je Visual Basic ili Visual Basic for Applications, jezik koji se koristi u Microsoft Office programima i dostupan je u većini Office programa. U procesu automatizacije koristi se termin binding koji se odnosi na povezivanje, gde razlikujemo rano povezivanje i kasno povezivanje. Binding je proces pozivanja odgovarajućih funkcija koje je programer napisao u programskom jeziku koje zapravo implementiraju funkciju. Proces opvezivanja se lako razume na primeru pripreme teksta za knjigu gde sam tekst menja program. Pisac knjige često može navesti reference tipa "Pogledajte stranu X za više informacija". Strana X nije poznata sve dok se knjiga ne "prelomi" i pripremi za štampu, a neposredno pre štampe sve reference "X" se moraju zameniti stvarnim brojevima stranica knjige, tj. sve se mora "povezati". Povezivanje programa funkcioniše na veoma sličan način. Program se sastoji od delova koji se moraju uklopiti pre nego što program postane čitljiv ili upotrebljiv. U osnovi, povezivanje je akcija tokom koje se funkcije zamenjuju adresama u memoriji na koje će program "skočiti" kada se funkcija pozove. Uzmimo primer u kome ćemo pomoću Accessa pokretati Excel i razmenjivati podatke između dva programa. U ranom povezivanju potrebno je uključiti referencu za aplikaciju kojom će se manipulisati, što ćete učiniti tako da u meniju Tools VBA prozora odaberete References, a zatim uključite aplikaciju iz liste, npr. Microsoft Excel 8.0 Object Library. Nova instanca Excela se pokreće upotrebom sledećeg programskog koda: Dim oXL As Excel.Application Set oXL = New Excel.Application Kasno povezivanje koristi klauzulu CreateObject za kreiranje instance aplikacije objekta kojom možete upravljati:
Dim oXL As Object
Set oXL = CreateObject("Excel.Application")
U oba slučaja treba proveriti da li je Excel već pokrenut i, eventualno, iskoristiti već pokrenutu instancu programa. Ako program vrati grešku, uz pomoć koda za kontrolu greške možete preusmeriti program na deo koji kreira novu instancu programa. Obe metode imaju svojih prednosti. Kod ranog povezivanja, program se izvršava neznatno brže jer se može kompajlirati pre izvršavanja, nasuprot kasnom povezivanju kod kojeg se program kompajlira kako se izvršava. Zahvaljujući ovoj osobini, program možete proveriti odabirom stavke menija Debug / Compile u VBE okruženju, čime nalažete Accessu da kompajlira program. Tokom ovog procesa, kompajler je u mogućnosti da ukaže na sintaksne greške programa koje se inače mogu javiti kod kasnog povezivanja. Kod programiranja automatizacije upotrebom ranog povezivanja na raspolaganju vam je pomoćna tehnika IntelliSense koja se odnosi na postupak tokom kojeg ukucate reč i tačku, a zatim u padajućoj listi vidite dostupna svojstva i metode dostupne upravo ukucanoj ključnoj reči. Reč možete obeležiti i pritiskom na taster F1 pristupiti opisu objektnog modela aplikacije (Object Browser i VBA sistem pomoći). Konačno, na raspolaganju su vam sve generičke (mnemoničke) konstante pokrenute aplikacije. Na primer, ako automatizujete Word iz Accessa, možete koristiti:
Dim objWord As Word.Application
Set objWord = New Word.Application
With objWord
.Visible = True
.Activate
.WindowState = wdWindowStateMaximize
.Documents.Open ("c:\Dokument.doc")
End With
Tokom pisanja ovog programa, čim otkucate .WindowState = , videćete u padajućoj listi sve dostupne konstante i prosto odabrati wdWindowStateMaximize. Kod kasnog povezivanja, ekvivalentna naredba ima oblik .WindowState = 1. To znači da morate znati, gledajući u Wordov objektni model (Object Browser) da konstanta wdWindowStateMaximize odgovara brojčanoj oznaci 1. U praksi, to je sporo, naporno i podložno greškama. Sve navedeno govori u prilog ranom povezivanju koje je, čini se, daleko lakše za implementaciju u odnosu na kasno povezivanje. Međutim, kasno povezivanje ima jednu veliku prednost: program ne zavisi od verzije programa koji pokrećete. Ako u vašem programu referencirate biblioteku verzije Excela 8, a korisnik ima biblioteku verzije 9 ili 10 tj. noviju verziju Excela, program neće raditi. U ovom slučaju, program će verovatno raditi uz proceduru za presretanje grešaka; kod ranog povezivanja može se desiti da program čak ne može da se pokrene. Preostale prednosti nemaju nekog velikog značaja, ali ih valja pomenuti: što više referenci je uključeno u program, datoteka je veća i sporije se izvršava; određena programska okruženja ne dozvoljavaju kreiranje referenci ka drugim aplikacijama. Koji od ova dva metoda odabrati? Zbog svojih prednosti i mana možda je najbolje - oba! Sledeći program demonstrira jedan takav pristup. Tokom razvoja možete koristiti rano povezivanje, a kasnije (u finalnoj verziji programa) preći na kasno povezivanje.
Sub Povezivanje()
Dim ref As Reference
' 0 za kasno povezivanje
' 1 ako postoji referenca
#Const ExcelRef = 0
#If ExcelRef = 0 Then ' kasno povezivanje
Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Set objXL = CreateObject("Excel.Application")
' Ukloniti referencu ako postoji
On Error Resume Next
Set ref = References!Excel
If Err.Number = 0 Then
References.Remove ref
ElseIf Err.Number <> 9 Then
MsgBox Err.Description
Exit Sub
End If
' Presretanje greške:
' On Error GoTo ErrorHandler
#Else
' Referenca za verziju Excela se mora navesti
Dim objXL As Excel.Application
Dim objWkb As Excel.Workbook
Dim objSht As Excel.Worksheet
Set objXL = New Excel.Application
#End If
End Sub
|
|
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. |