VISOKA ŠKOLA ZA EKONOMIJU I INFORMATIKU PRIJEDOR
Lazo Roljić Zoran Novaković
BAZE PODATAKA
Prijedor, 2008.god.
Biblioteka: Udžbenici Autori: Lazo Roljić Zoran Novaković
Naziv: BAZE PODATAKA
Recenzenti: Prof. dr Ratko Lončarević Prof. dr Krsto Bošmkal Izdavači: Visoka škola za ekonomiju i informatiku Prijedor & M Power Banja Luka
Za izdavača: Prof.dr Aleksandar Đokić
Tiraž: 300 Prvo izdanje Prijedor, 2008. ISBN 978-99955-20-06-9 Zabranjeno fotokopiranje, preštampavanje i drugi oblici umnožavanja ove knjige. Sva prava zadržavaju izdavač i autor.
3
Sadržaj SADRŽAJ.....................................................................................................3 UVOD ...........................................................................................................7 1.
PROGRAM MICROSOFT ACCESS ......................................................9
2.
POKRETANJE ACCESSA ..................................................................10
3.
REŽIMI RADA ACCESSA ...................................................................12
4.
ZATVARANJE APLIKACIJE MS ACCESSA ......................................13
5.
OTVARANJE POSTOJEĆE BAZE......................................................14
6.
KREIRANJE NOVE BAZE ..................................................................15
7.
ZATVARANJE BAZE PODATAKA I PROGRAMA ACCESS..............18
8.
KOMPONENTE PROZORA APLIKACIJE ACCESS-A .......................18 8.1 Linija za naslove ............................................................................19 8.2 Linija menija ...................................................................................19 8.3 Traka sa alatima prozora aplikacije ................................................23 8.3.1 Prikaz ili sakrivanje linije sa alatima aplikacije Accessa........24
9.
PROZOR BAZE PODATAKA..............................................................25 9.1 Traka sa alatima baze podataka-Database Toolbar .......................25 9.2 Lijevo okno prozora baze podataka-Left Pane ...............................26 9.3 Desno okno prozora baze podataka-Right Pane ............................26
10. OBJEKTI BAZE PODATAKA..............................................................27 10.1 Promjena vrste pogleda na objekte baze .....................................32 11. TABELE - OSNOVNI OBJEKT BAZE PODATAKA ............................33 11.1 Načini kreiranja tabele..................................................................36 11.2 Pojam, važnost i definisanje primarnog ključa ..............................43 11.2.1 Vrste primarnih ključeva .....................................................44 11.2.2 Definisanje primarnog ključa i indeksa................................44 11.2.3 Strani ključ..........................................................................45 11.3. Određivanje svojstava polja tabele..............................................50 11.4. Povezivanja tabela u bazi podataka ............................................54 11.4.1 Tipovi relacija .....................................................................57 11.4.2 Postavljanje relacija............................................................58 11.5. Obezbjeđivanje integriteta baze podataka...................................60 11.5.1 Integritet entiteta.................................................................60 11.5.2 Referencijalni integritet .......................................................60 11.5.3 Postavljanje referencijalnog integriteta između dvije tabele......61 11.6. Vrste i formati podataka ..............................................................68 11.7. Analizator tabela .........................................................................70 11.7.1 Pokretanje čarobnjaka za analizu tabela ............................70
4
12. PREGLEDANJE SLOGOVA TABELE ................................................73 12.1 Korištenje statusne oblasti za navigaciju po slogovima u tabeli ....74 12.2 Prikazivanje slogova pomoću linije za skrolovanje .....................75 12.3 Korišćenje tastature za navigaciju po slogovima tabele................76 12.4 Selektor slogova tabele ................................................................76 12.5 Unošenje ili dodavanje sloga u tabelu u pogledu Datasheet View ......77 12.6 Promjena dimenzije kolona u tabeli ..............................................78 12.7 Podešavanje visine reda tabele....................................................80 12.8 Editovanje slogova tabele u pogledu Datasheet View .................80 12.9 Editovanje sadržaja polja .............................................................81 12.10 Isjecanje, kopiranje i lijepljenje slogova u tabeli..........................81 12.11 Korišćenje osobine Undo ...........................................................83 12.12 Provjera spelovanja (pravilnog pisanja) podataka......................83 12.13 Brisanje slogova tabele ..............................................................84 12.14 Pretraživanje podataka u tabeli ..................................................86 12.14.1 Pronalaženje određenog teksta u tabeli............................86 12.14.2 Korišćenje specijalnih znakova za pretraživanje ...............87 12.15 Preporuke za ispravno konstruisanje tabela ..............................87 APLIKACIJA BAZE PODATAKA U MS ACCESSU - I DIO .......................92 13. UPITI ..................................................................................................100 13.1 Vrste prikaza upita .....................................................................101 13.2 Kreiranje upita u dizajnerskom prikazu .......................................106 13.3 Kreiranje upita korišćenjem čarobnjaka - Simple Query Wizard-a ....111 13.4 Selektovanje polja koja će biti prikazana u upitu.........................113 13.5 Tipovi upita.................................................................................115 13.6 Kreiranje selekcionog upita samo za regledanje-tipa Snapshot...118 13.7 Kreiranje upita za izračunavanje zbirnih vrijednosti ...................119 13.8 Kreiranje akcionih upita .............................................................120 13.8.1 Upit za pravljenje tabela (Make-table query).....................121 13.8.2 Upit za ažuriranje (Update query) .....................................122 13.8.3 Upit sa unakrsnim prikazom podataka (Crosstab Query) ..124 13.8.4 Upit za dodavanje slogova - Append query ......................128 Zadatak 8: Dodavanje sloga podataka tabeli pomoću upita........133 13.8.5 Upit za brisanje slogova - Delete query, ...........................134 13.8.6 Kreiranje parametarskih upita (Parameter Query)............137 13.8.7 Pravljenje upita s poljem za izračunavanje .......................140 13.9 Funkcije u Accessu ....................................................................147 13.9.1 Funkcija odlučivanja .........................................................147 13.9.2 Funkcija za testiranje praznih polja...................................148 13.9.3 Datumska funkcija DateDiff ..............................................148 13.9.4 VBA kód funkcije DateDiff.................................................150 13.9.5 SQL/Upit funkcije DateDiff ...............................................150 13.9.6 Upiti sa izračunskim poljem ..............................................151 13.9.7 Korištenje Expression Buildera .........................................152
5
14. OBRASCI ...........................................................................................154 14.1 Namjena obrazaca .....................................................................154 14.2 Načini prikaza podataka u obrascu ............................................155 14.3 Tipovi obrazaca..........................................................................155 14.4 Metode i prikazi kreiranja obrazaca............................................156 14.5 Sadržaj obrasca .........................................................................158 14.6 Kontrole na obrascu ...................................................................159 14.7 Osobine obrasca........................................................................162 14.8 Postupak kreiranja obrasca........................................................165 14.9 Kreiranje obrasca u dizajnerskom prikazu..................................166 14.9.1 Dodjeljivanje izvora podataka obrascu .............................170 14.9.2 Crtanje labele i određivanje svojstava ..............................174 14.9.3 Crtanje Text box, Combo box i List box objekata..............175 14.9.4 Kreiranje komandnog dugmeta........................................180 14.9.5 Pretvaranje text box-a u combo box .................................180 14.10 Kreiranje obrasca pomoću čarobnjaka Form Wizard ..................184 14.11 Kreiranje obrasca pomoću čarobnjaka AutoForm.......................188 14.12 Izračunavanje vrijednosti u obrascu .........................................191 14.13 Sortiranje i filtriranje podataka u obrascu .................................191 14.14 Dorada obrasca u dizajnerskom prikazu ..................................193 14.15 Kreiranje i ugradnja podobrasca...............................................200 14.16 Postupak umetanja podobrasca u glavni obrazac ....................201 APLIKACIJA BAZE PODATAKA U MS ACCESSU - II DIO ...................213 15. KOMANDNA TABLA APLIKACIJE....................................................219 15.1 Kreiranje komandne table ..........................................................220 15.1.1 Kreiranje komandne table pomoću čarobnjaka.................223 15.1.2 Podešavanje automatskog starta komandne table ...........224 15.1.3 Podešavanje otvaranja komandne table...........................225 16. IZVJEŠTAJI.......................................................................................226 16.1 Planiranje izvještaja ...................................................................227 16.2 Vrste objekata na izvještaju........................................................227 17. KREIRANJE IZVJEŠTAJA.................................................................228 17.1 Kreiranje izvještaja u dizajnerskom prikazu ................................231 17.2 Sortiranje i grupisanje podataka na izvještaju.............................234 17.3 Postavljanje u izvještaj sistemskog datuma, vremena i broja strane .237 17.4 Dodavanje polja za izračunavanje međurezultata.......................237 17.5 Izračunavanje zbira za izvještaj..................................................240 17.6 Pravila kod izračunavanja ..........................................................241 17.6.1 Operatori ..........................................................................242 17.6.2 Funkcije............................................................................243 17.6.3 Izrazi ................................................................................244 17.7 Kreiranje izvještaja korišćenjem Report Wizard-a.......................244 17.8 Automatsko kreiranje izvještaja tipa Columnar ...........................256 17.9 Automatsko kreiranje izvještaja tipa Tabular ..............................257 17.10 Ugradnja podizvještaja u glavni izvještaj ..................................258 17.11 Pregledavanje, štampanje i eksportovanje izvještaja................262
6
17.11.1 Pregledanje izvještaja prije štampanja-Print Preview......262 17.11.2 Štampanje izvještaja.......................................................263 17.11.3 Eksportovanje izvještaja .................................................264 17.11.4 Čuvanje izvještaja...........................................................264 17.12 Modifikovanje izvještaja............................................................264 17.12.1 Promjena dimenzija polja................................................265 17.12.2 Sortiranje podataka ........................................................265 17.12.3 Dodavanje ili brisanje polja .............................................267 17.12.4 Paleta alata Toolbox.......................................................267 17.12.5 Dodavanje novog tekstualnog okvira text box-a) u izvještaj..268 17.12.6 Poravnavanje objekata na izvještaju...............................268 18. MAKROI (MACROS) ..........................................................................273 18.1 Kreiranje i editovanje makroa .....................................................275 18.2 Pokretanje makroa ....................................................................277 18.3 Objašnjenje nekih makronaredbi i primjeri upotrebe...................286 19. MODULI..............................................................................................291 19.1 Vrste modula..............................................................................293 19.2 Pisanje korisničkog kôda............................................................295 19.3 Izgled i sastav modula................................................................297 19.4 Osnova koncepta VBA ...............................................................298 19.5 Pozivanje VBA editora................................................................300 19.6 Elementi glavnog prozora editora ...............................................301 19.6.1 Početni izgled prozora editora ..........................................302 19.6.2 Prozor projekta .................................................................303 19.6.3 Prozor osobina .................................................................305 19.6.3.1 Konfigurisanje osobina vizuelno..............................307 19.6.3.2 Konfigurisanje osobina programski .........................307 19.7 Opcije prikaza komandi u editoru ...............................................309 20. PROGRAMIRANJE U VBA PROGRAMSKOM JEZIKU.....................311 20.1 Vizuelno programiranje ..............................................................311 20.2 Događaj......................................................................................312 20.3 Faze pisanja VBA programa.......................................................313 21. PRETVARANJE MAKROA U VBA KÔD............................................320
7
Uvod Pred vama se nalazi prvo izdanje knjige Baze podataka-Škola Accessa. Knjiga je namijenjena studentima koji u okviru nastavnog plana i programa izučavaju predmete Baze podataka i Projektovanje informacionih sistema, kao pomoć u savladavanju i praćenju predavanja i vježbi iz tih predmeta. Mogu je koristiti i studenti drugih fakulteta koji slušaju predmet Informatika po ECDL Modul 5 programu, kao i za predmet Informacioni sistemi po ECTS programu. Po njoj se mogu pripremati studenti svih fakulteta koji po nastavnom programu izučavaju predmete Baze podataka, Menadžment informacionih tehnologija, Poslovna informatika, Upravljački informacioni sistemi i Poslovni informacioni sistemi. Da bi mogao pratiti predavanja i raditi vježbe iz ovog predmeta, od čitaoca se zahtjeva da ima solidno znanje i iskustvo u obradi teksta (korišćenje MS Word-a) kao i u kompjuterskom tabelarnom izračunavanju (korišćenje MS Excel-a) i da je već proučio sadržaj knjige Osnove baza podataka, od istog autora, koja je prethodila ovoj knjizi, ili neku drugu uvodnu literaturu iz osnova o bazama podataka. Radi lakšeg razumijevanja tematike i savladavanja gradiva, izložena materija podijeljena je po grupama tema: - Teoretski koncept logičke i fizičke baze podataka, - Osnovni pojmovi, principi i standard relacionih baza podataka, - Radno okruženje MS Access-a - Organizacija tabela (Tables) i njihovo kreiranje i povezivanje - Upiti (Queries) i njihovo kreiranje i korišćenje - Obrasci (Forms) i izvještaji (Reports) i njihovo kreiranje i korišćenje - Stranice za pristup podacima na web-u (Data Access Pages) - Makroi (Macros), Moduli (Modules) i VBA programiranje i - Kreiranje aplikacija Access relacione baze podataka. Izloženim gradivom nastojalo se čitaoca uputiti u osnovne pojmove vezane za relacione baze podataka i kroz nekoliko primjera u svakom poglavlju dati mu uvid u kreiranje jednostavnih aplikacija MS Accessa1. Sastavni dio knjige su dvadesetak praktičnih vježbi, u kojima se na jednostavnim primjerima pokazuje kako se praktično primjenjuje pređeno gradivo, kao i desetak zadataka za samostalnu vježbu sa prikazanim rješenjima, u kojima se čitaocu pokušava nametnuti samoprovjera pređenog
1
MS Access®© je softverski proizvod firme Microsoft®-USA, koji je registrovan i Copyright zaštićeni proizvod.
8
gradiva. Neki od zadataka imaju i nešto detaljnija uputstva koja olakšavaju njihovo rješavanje, dok su drugi klasično postavljeni. Nadamo se da će studentima ova knjiga pomoći u lakšem savladavanju gradiva i da će pomoću nje ostvariti uspjeh na ispitu s kojim ćemo svi biti zadovoljni.
9
1. PROGRAM MICROSOFT ACCESS Kako smo u knjizi Uvod u baze podataka naveli, baza podataka je kolekcija povezanih podataka sa višestrukom namjenom. To je skup podataka koji se odnose na jednu temu ili namjenu. Možda je bazu podataka lakše shvatiti kao skladište opšte namjene za smještaj i obradu bilo koje vrste informacija, prema vašoj želji. Na primjer, u bazu podataka možete smještati imena i adrese. Takođe biste mogli da skladištite podatke o vašoj biblioteci, videoteci, fonoteci, zalihama i naudžbama vašeg preduzeća, uplatama i isplatama kućnog budžeta, iz blagajne ili sa žiro računa banaka, kao i svih oblika evidentiranja i prikazivanja ostalih podataka o poslovanju. Baza podataka je više od samih podataka. Ona sadrži objekte koji će vam pomoći pri upravljanju podacima, kao što su obrasci (za unos ili ažuriranje podataka) i izvještaji (za prikaz i/ili štampanje probranih grupa podataka u odgovarajućem obliku) kao i jedna ili više tabela u koje skladištite podatke koji su značajni za vas. Komercijalna definicija za Microsoft Access je da je to moćan vizuelni softverski alat sa kojim se izrađuju aplikacije baza podataka u Windows okruženju. Korisnici Windows-a mogu takođe koristiti Access da manipulišu podacima i generišu izvještaje. Uže stručna definicija, međutim, je da je Microsoft Access program za kreiranje i upravljanje relacionom bazom podataka. Kao što smo ranije naveli, relaciona baza podataka je vrsta sistema za organizovano čuvanje podataka u tabelama na nekom memorijskom mediju. Ona koristi istovjetne vrijednosti iz dvije tabele za stavljanje u odnos (relaciju) informacije u jednoj tabeli prema informacijama u drugoj. U takvu bazu podataka informaciju smještamo (memorišemo) samo jednom, što je čini brzom i efikasnom. MS Access je programski sistem za organizovanje relacione baze podataka i rad s podacima u njoj omogućuje sistem za upravljanje relacionom bazom podataka – RDBMS (Relational Data Base Management System). To je kompjuterski program koji podržava pristup bazama podataka na način da omogućava izgradnju baza podataka, unošenje podataka u njih i manipulisanje sa podacima. Pod manipulisanjem podacima podrazumijeva se pretraživanje i prikazivanje podataka iz baze, unošenje novih podataka, te mijenjanje ili brisanje postojećih podataka, tj. ažuriranje2 podataka. Kako su datoteke same po sebi baza podataka, DBMS sistem obavlja sve ove poslove, tj. strukturisanje podataka, smještanje podataka i povezivanje slogova. Uobičajeno je da se naredbe za manipulisanje podacima nazivaju upitima (engl. queries), jer oni vrše “propitivanje” baze, bez obzira da li se usput vrši i ažuriranje podataka. U početnim verzijama nesavršen, program je danas prerastao u najozbiljnijeg konkurenta za razvoj aplikacija kod kojih je osnova baza podataka. Dok se nekada programirala svaka operacija nad bazom, u
2
Ažuriranje podataka predstavlja izmjenu ili brisanje sadržaja zapisa ili polja ili upisivanje novog zapisa.
10
Accessu je većina stvari automatizovana i uz oslanjanje na usluge operativnog sistema često se do gotove jednostavne baze dolazi koristeći isključivo rad sa mišem bez napisane ijedne linije programskog kóda. U Accessu svaki podatak ili polje se tretira kao objekat (Object) koji ima skup osobina (Properties). Zato kažemo da je Access objektni program za rad bazom podataka i da se formiranje baze naziva objektno programiranje baze. Microsoft Access omogućuje relativno laku izradu aplikacije za rad s bazama podataka, jer sadrži dosta čarobnjaka koji mogu na osnovu samo nekoliko vaših odgovora da izrade jednostvne objekte, koje kasnije možete po volji nadograđivati pomoću brojnih alata. Daje potpunu slobodu određivanja tipova podataka, načina njihovog čuvanja i izgleda prilikom prikaza i ispisa, te omogućuje lako povezivanje srodnih informacija. Dakle, prednosti su grafički interfejs koji omogućuje izradu aplikacije bez pisanja složenog koda, te spremanje svih podataka u jednu datoteku što olakšava prenos baze na druge računare. Nedostatak mu je sporiji rad u mreži računara i sa bazama podataka velikim dimenzija.
2. POKRETANJE ACCESSA Microsoft Access pokreće se kao i svaki drugi program u Windowsu. To se može ostvariti na nekoliko načina:
(1) izborom komandi Start→All Programs→Microsoft Office→Microsoft Office Access 2003
Slika 1. Meni Start-All Programs
11
Start.
(2) klikom na ikonu programa Microsoft Office Access 2003 u meniju
Slika 2. Ikone prečica u Meniju Start
(3) Da biste otvorili Microsoft Access uz pomoć prečice na desktopu računara: dva puta kliknite na ikonu prečice Microsoft Access-a na desktopu Windows-a
.
(4) Access automatski pokrećete dvoklikom na bilo koju ikonu fajla u MS Accessu
.
Drugi korak nakon startovanja programa je otvaranje postojeće baze podataka ili kreiranje nove baze. Ako prvi put pokrećete MS Access, ili ako je MS Access već pokrenut, otvaranje baze podataka vršite izborom iz menija opcije: File→Open Database ili klikom na dugme Open na liniji alata:
Slika 3. Alat File-Open
Kreiranje nove baze podataka vršite izborom iz menija opcije: File→New
Slika 4. Meni File-New
Ili klikom na ikonu New na liniji alata
12
Slika 5. Alat File-New
3. REŽIMI RADA ACCESSA -
Access ima tri osnovna radna režima: Režim za pokretanje (Startup mode) omogućava da konvertujete, šifrirate, dešifrujete i popravite podatke iz baze, izborom komandi iz podmenija Database Utilities i Security, menija Tools, prije otvaranja baze podataka. Ove komande su dostupne samo ako baza podataka nije otvorena.
Slika 6. Meni StartUp moda Accessa
Slika 7. Opcije menija Tools-Security
13
-
-
Režim projektovanja (Design mode) omogućava da napravite i modifikujete strukturu tabela i upita, razvijate obrasce za prikaz i uređivanje podataka, kao i da formatirate izvještaje za štampanje. Ovaj režim se koristi kada pravimo novu bazu podataka ili kada je otvorena neka postojeća baza podataka. Režim izvršavanja (Run mode) prikazuje dizajn tabela, obrasca i izvještaja u posebnim prozorima za dokument. Makroe izvršavate tako što jedan od njih izaberete, a zatim izaberete režim izvršavanja. Ovaj režim se ne primjenjuje na VBA module, jer se funkcije izvršavaju kada se pojave kao elementi upita, obrazaca ili izvještaja. Režim izvršavanja za tabele i upite naziva se tabelarni pogled (Datasheet View), za obrasce pogled Form (Form View), za strane za pristup podacima (Data Access Pages View)) pogled Page, a za izvještaje pogled Print Preview. Dugmad za izbor režima rada na Liniji alata prozora Database
Glavna forma aplikacije
Linija menija Linija alata Prozor Database Traka sa objektima Ikone tabela
Slog na kojem se trenutno radi Poruka o statusnoj liniji Otvaranje podorme podataka
Izbor sloga na kojem se trenutno radi
Traka za pomjeranje kroz polja
Slika 8. Osnovni prikaz prozora aplikacije Accessa za tabele
4. ZATVARANJE APLIKACIJE MS ACCESSA Aplikacija se zatvara klikom na opciju Exit u padajućem meniju File ili klikom na dugme u gornjem desnom uglu prozora aplikacije.
14
Slika 9. Meni File-Exit
5. OTVARANJE POSTOJEĆE BAZE U prozoru aplikacije Accessa okvir za komunikaciju Open otvaramo klikom na opciju (naredbu) Open u padajućem meniju File ili klikom na ikonu Open na liniji sa alatima ili kombinacijom tastera Ctrl+O. Zatim, u polju Look in: pronalazimo folder u kojem se nalazi baza koju želimo da otvorimo, označimo je i kliknemo na dugme Open
da je otvorimo.
Slika 10. Prozor Windows Explorera u prozoru aplikacije Accessa
15
Drugi način je da otvorimo Windows Explorer – alat za rad sa fajlovima, u kojem pronađemo folder u kojem se nalazi baza koju želimo da otvorimo, a zatim je dvoklikom na ikonu baze otvaramo.
6. KREIRANJE NOVE BAZE Da bismo kreirali bazu podataka moramo prvo pokrenuti Microsoft Access. Nakon pokretanja Accessa na jedan od prva dva prethodno opisana načina otvara se prozor aplikacije Accessa:
Slika 11. Prozor aplikacije nakon startovanja Accessa
To automatski otvara okno za zadatak (Task Pane) Getting Started, u kojem biramo šta želimo da radimo u Accessu - da napravimo novu bazu (Create a new file...) ili otvorimo postojeću (Open). Mi ćemo napraviti novu bazu i to na jedan od tri načina: (1) kliknućemo na Create a new file..., (2) u meniju File izabrati opciju New..., ili (3) na liniji alata kliknuti na ikonu New
.
Nakon toga, u prozoru aplikacije Accessa, desno, otvara se okno New File (slika 12), u kojem nas Access, u okviru New, „pita“ da li želimo da pravimo potpuno novu (praznu) bazu podataka sasvim iz početka „Blank database...“, praznu HTML stranicu za pristup podacima - „Blank data access page...“, novi Access projekat baze podataka korišćenjem postojećih podataka iz neke baze - „Project using existing data..“, novi Access projekat baze podataka korišćenjem potpuno novih podataka - „Project using new data...“, ili želimo da pravimo novu bazu podataka na osnovu podataka iz neke postojeće baze podataka - „From existing file...“.
16
Slika 12. Okno-alatna traka New File
Pored toga, u okviru Templates Access nam nudi da pribavimo neki unaprijed pripremljeni šablon baze podataka on-line na Internetu, na lokalnoj mreži ili na nekom drugom mjestu – „Search online for:“ , neki od šablona baze podataka unaprijed napravljenih koji su dostupni online na sajtu MS Officea – „Templates on Office online“, ili neki šablon na korisnikovom računaru – „On my computer...“. Nakon što odaberemo jednu od ponuđenih opcija, u našem slučaju Blank database..., otvara se okvir za komunikaciju File New Database, koji nas, pored ostalog, „pita“ za ime nove baze podataka - „File name“ i nudi nam da izaberemo neki od postojećih foldera ili da kreiramo novi folder, ikona New , u kojem ćemo da smjestimo taj naš fajl baze podataka – „Save in:“.
Slika 13. Prozor File New Database
Daćemo ime bazi (imenovaćemo bazu) ili ćemo prihvatiti ponuđeno ime (db1) i sačuvati je na željeno mjesto na hard disku ili na nekoj drugoj eksternoj memorijskoj jedinici. Postupak završavamo klikom na dugme Create . I tek sada smo spremni i u mogućnosti smo da kreiramo bazu podataka.
17
Vjerovatno ste u toku opisa ove procedure primijetili da je postupak čuvanja (Save) nekog dokumenta u MS Accessu nestandardno drugačiji od ostalih aplikacija MS Officea (MS Word, MS Excel, MS Power Point i dr.). Za razliku od ostalih programa iz paketa MS Office samo MS Access zahtijeva upisivanje (spremanje, čuvanje) nove baze (datoteke, fajla) na samom početku rada, dakle snimamo (Save) „praznu“ datoteku u koju se (tek) kasnije unose (ažuriraju) sve promjene i to izborom opcije Save iz menija File ili klikom na ikonu na liniji alata, a može i kombinacijom tastera na tastaturi Ctrl+S. Novonastale promjene moguće je takođe sačuvati i klikom na ikonu za izlaz iz pojedinih prozora (objekata) baze kada Access automatski zahtijeva da se izmjenjena ili ažurirana baza sačuva. To je zato jer kod programa za rad sa bazama podataka integritet podataka je na prvom mjestu. To znači da svaki podatak koji unesemo, izmijenimo ili obrišemo trenutno se sačuva na disk, a naredba Save pri tom nema isto značenje kao u drugim programima. Aktiviranjem naredbe Save snima se oblik prozora u kome radimo, a ne sami podaci. Otuda zahtjev za snimanjem datoteke ne predstavlja iznenađenje, već razumnu pojavu. Kompletna baza podataka sa svim objektima i korisničkim interfejsom snima se u jedinstvenu datoteku sa ekstenzijom (sufiksom) .mdb. Ukoliko želite postojeću bazu da sačuvate na disketi, USB disku ili na nekom drugom mediju, to ne možete uraditi direktno naredbom Save As, kako ste to naučili u drugim MS Office aplikacijama, nego to možete obaviti iz Windows Explorera kopiranjem (Copy) sačuvane datoteke ili njenim slanjem na drugi uređaj (Send To). Dakle, nakon izbora opcije otvaranja nove baze, davanje imena i njenog smještanja na disk, ili otvaranje neke postojeće baze, u prozoru aplikacije Accessa otvara se prozor baze podataka, kao na slici dole (slika 14)
Slika 14
18
U slučaju izboraTemplates → On my computer... u desnom okviru prozora (Task Pane), umjesto Blank Databases..., dobivamo okvir za komunikaciju Templates kao na slici dole (slika 15)
Slika 15. Ponuda postojećih šablona baze podataka na korisnikovom računaru
7. ZATVARANJE BAZE PODATAKA I PROGRAMA ACCESS Bazu podataka zatvaramo iz menija File naredbom Close ili klikom na dugme prozora Database. Klikom na prozora MS Access zatvaramo kompletan program MS Access.
8. KOMPONENTE PROZORA APLIKACIJE ACCESS-A Poslije pozdravnog ekrana aplikacije, pojavljuje se prozor zadatka (projekta). Na desnoj strani prozora nalazi se Task Pane (okno zadatka) koji nam daje mogućnost izbora vrste baze: kreiranja nove baze-New ili otvaranja neke postojeće. Tom prilikom otvara se glavni prozor Access-a, koji je u mnogo čemu sličan prozorima Word-a, Excel-a i Power Point-a. Prozor aplikacije Access-a prikazan je na narednoj slici (slika 16).
19
Slika 16 Odzivni aplikacije Access-a
ekran-Prozor
Slika 17: Prozor baze podataka
Sastavni dijelovi prozora Accessa, koji se mogu uočiti na ekranu, su: linija za naslove (Title bar), linija menija (Menu bar), traka sa alatima (Tool bar) i u centru ekrana je prozor baze podataka (Database window). Sastavni dijelovi prozora baze podataka su: linija za naslove, traka sa alatima, lijevo okno (Objects) sa dugmadima za izbor objekta i desno okno sa ponudom opcija načina pravljenja objekta izabranog u lijevom oknu. Primjetite na gornjim slikama da i prozor aplikacije Accessa (slika 16) i prozor baze podataka (slika 17) imaju liniju za naslov (titlle bar) i liniju alata (tool bar). Uvjerićete se, a sada samo da istaknem, da alati na jednoj i drugoj liniji imaju potpuno različite funkcije.
8.1 Linija za naslove U samom vrhu glavnog prozora Accessa nalazi se linija za naslove (naslovna traka) na kojoj se nalazi ime baze koja se obrađuje.U našem primjeru na slici 16. naziv baze je db1. To je, podrazumijevajući naziv koji Access daje svakoj bazi koju prvi put kreiramo i kojoj nismo mi promijenili ime.
8.2 Linija menija U liniji menija (Menu bar) ispisani su svi meniji koji se mogu koristiti (raspoloživi su) u MS Access-u. Sistem menija i paleta alatki funkcioniše na sličan način kao i ostalim programima Microsoft Office-a, dok se sve ostalo smatra radnom površinom u kojoj se razvija i radi MS Access aplikacija. Na samom dnu prozora MS Access-a smještena je statusna linija (Status bar) preko koje se korisniku proslijeđuju dodatne informacije o tekućem objektu i informacije koje se odnose na tastere: Insert, Num Lock, Caps Lock, Scroll Lock,...
20
Slika 18. Linija menija
Sadržaj opcija svakog menija može se ispisati ako lijevim tasterom miša kliknemo na odgovarajući meni. Na donjoj slici vidite sadržaj menija File.
Slika 19. Sadržaj opcija menija File
Primijetite da se u liniji opcija menija sa lijeve strane (opcija) nalaze ikone alata koje na liniji alata zamjenjuju komande menija. File meni, osim standardnih stavki kao kod svih Windows aplikacija, sadrži još i stavke: - Get External Data omogućuje uvoz (Import) ili povezivanje (Link Tables) tabela iz druge MS Access baze ili nekog drugog kompatibilnog izvora podataka. Koristeći isti dijalog može se uvesti i bilo koji objekat iz druge MS Access baze. Linkom povezana MS Access tabela ne može se otvarati u dizajn modu (u tom modu joj se može pristupiti samo otvaranjem matične baze (one u kojoj se tabela nalazi). - Save As... i Export omogućava čuvanje nekog od MS Access objekata, pod drugim imenom u tekućoj ili drugoj bazi, kao i u obliku tabele u formatu druge aplikacije. - Database properties je spisak svojstava MS Access baze podataka. Može da sadrži informacije o autoru, nazivu, predmetu, ključnim riječima aplikacije, statistike i spisak objekata u bazi, kao i mogućnost kreiranja korisnički definisanih (Custom) svojstava baze.
21
Edit meni sadrži standardne stavke za pokretanje komandi ažuriranja (Cut, Copy, Paste, Undo, Delete, Rename) za rad sa objektima iz baze, kao i mogućnost kreiranja prečice (Shortcut-a) na dati objekat. Za sve ove alate na raspolaganju su i odgovarajuće stavke PopUp (brzog) menija koji dobijate desnim klikom na objekat, pa ih koristite za brzi i kvalitetniji rad, jer MS Access, kao i OS Windows predstavlja objektno orijentisano radno okruženje.
Slika 20. Sadržaj opcija menija Edit
View meni sadrži stavke izbora tipa objekta u prozoru baze podataka, određivanje tipa ikona i njihov raspored, kao i pregled svojstava (Properties) objekta i programskog kóda objekta (forme i moduli). Preko stavke Toolbars omogućen je pristup korisničkom podešavanju sistema menija i paleta alata.
Slika 21. Sadržaj opcija menija View
Insert meni sadrži opcije za kreiranje novog objekta u bazi, kao i automatsko generisanje forme ili izvještaja na osnovu selektovane tabele ili upita (kao izvora podataka). Tools je daleko najznačajniji meni, a u svom prvom dijelu sadrži poznate Microsoft Office alate Spelling i AutoCorrect. Spelling izvršava pravopisnu provjeru (engleskog) teksta dok AutoCorrect automatski ispravlja neke karakteristične greške (po želji).
22
Slika 22. Opcije menija Tools
Korišćenje AutoCorrect-a je slično na nivou cijelog Microsoft Office-a, pa ga ovdje nećemo posebno objašnjavati. Database Utilities sekcija ovog menija, nudi mogućnost konvertovanja (Convert) fajla iz ranijih verzija MS Access-a u fajl novog formata, a (u verziji MS Access 2000) baza se može konvertovati i u fajl starijeg formata (za MS Access 97), mada ne funkcioniše korektno u slučaju aplikacije, ipak, predstavlja alat od izuzetnog značaja. Compact obezbjeđuje sažimanje baze (kao i opravke fajla poslije neregularnih izlazaka iz aplikacije-Repair). Sažimanje se može uporediti sa defragmentacijom diska, s tim da se odnosi na MS Access-fajl. Radi se o slijedećem: u toku rada na dizajnu baze, kao i u slučajevima većih zahvata na brisanju i dodavanju slogova, obrisani objekti izazivaju fragmentaciju fajla (samim tim on nepotrebno zauzima više prostora na disku), te ga sažimanje svodi na optimalnu veličinu. Ovo se preporučuje kod velikih izmjena u fajlu. Repair se automatski startuje ako MS Access otkrije da nešto nije u redu prilikom otvaranja baze, dok je u verziji MS Access 2000 ovaj alat integrisan uz Compact. Ako se baza ponaša nepredvidljivo, ovaj alat se uvijek može startovati i manuelno iz menija, a daje dobre rezultate samo u slučaju dobrog relacionog modela (sa što manje propusta u optimizaciji) i uključenog referencijalnog integriteta u što većem broju relacija. Window meni sadrži stavke za aranžiranje prozora na ekranu (objekti koji se obrađuju).
23
Slika 23. Opcije menija Window
Help meni ima uobičajene alate za pomoć.
Slika 24. Opcije menija Help
8.3 Traka sa alatima prozora aplikacije Access ima 29 standardnih traka sa alatima (Toolbars) koje se biraju po potrebi, a nakon otvaranja Accessa vidljiva je standardna (Standard Toolbar). Bilo koja operacija koja se može uraditi kada se klikne na dugme na liniji alata može da se uradi i izborom opcija iz menija, ali je korišćenje linije sa alatima mnogo brži način. Linije sa alatima izabiraju se (aktiviraju se) izborom opcije Toolbars→Customize... iz menija View, zatim klikom na tabulator Toolbars i čekiranjem željene linije sa alatima. Na donjoj slici vidimo da su u našem slučaju aktivne linije alata Database i Menu bar.
Slika 25: Okvir za dijalog sa opcijama izbora traka sa alatima
24
Iscrtana dugmad na liniji alata predstavljaju brzu i laku prečicu do određenih akcija. Na primjer, ako želite da sačuvate tabelu uz pomoć menija vi ćete prvo kliknutli na File, a zatim na Save. Korišćenje linije sa alatima da izvedete operaciju čuvanja dokumenta uštedjeće vam jedan klik. Kliknete jedanput na to dugme da sačuvate tabelu.
Slika 26. Traka sa alatima
Neke komande u meniju imaju sličice ili ikone povezane s njim. Ove sličice mogu se takođe pojaviti i kao prečice u liniji alata, kao što je to pokazano (uokvireno) na slici 26.
8.3.1 Prikaz ili sakrivanje linije sa alatima aplikacije Accessa Linije sa alatima (Toolbars) mogu se postavljati i sklanjati (sakrivati) sa ekrana. To je moguće izvesti na slijedeće načine: - U dizajn pogledu (Design View) otvorene baze podataka, ili prije otvaranja baze podataka, iz menija View izabiremo opciju Toolbars → Customize... koja otvara padajući meni ugrađenih traka sa alatima (slika 27), ili - Isti meni dobivamo desnim klikom na prazan prostor za prikaz linije sa alatima i izbor opcije Customize.... (slika 28).
Slika 27. Izbor iz menija View opcije za sklanjanje ili postavljanje traka sa alatima
Slika 28. Izbor iz brzog menija opcije za sklanjanje ili postavljanje traka sa alatima
Slika 29. Okvir Customize za Izbor mogućih traka sa alatima
25
Izborom opcije Customize... otvaramo okvir (slika 29) u kojem možemo označiti trake sa alatima koje želimo da prikažemo u padajućem meniju i koji nam služi za postavljanje i sklanjanje traka sa alatima.
9. PROZOR BAZE PODATAKA Otvaranjem Microsoft Accessa, odnosno pokretanjem postojeće ili izborom kreiranja potpuno nove baze podataka, odmah se susrećemo sa prozorom Database (glavnim prozorom baze podataka) koji se nalazi u središtu glavnog prozora aplikacije Accessa.
Slika 30: Izgled prozora baze podataka
9.1 Traka sa alatima baze podataka-Database Toolbar Traka sa alatima za bazu podataka nudi operacije koje mogu biti izvedene sa različitim objektima baze podataka, uključujući dugmad da se otvori neki objekt (Open), da se kreira novi objekt (Design) i da se obriše neki objekt (alat ).
Slika 31: Traka alata baze podataka
Namjenu preostalih četiri alata možete, kao što vjerovatno znate, utvrditi sami ako pri startovanom Accessu mišem pokažete na nekog od njih na traci, nakratko sadržite pokazivač miša nad njim i pojaviće vam se tzv. „tultip“ (engl. Tooltip). Tekst tultipa će vam objasniti namjenu tog alata.
26
9.2 Lijevo okno prozora baze podataka-Left Pane
Slika 32: Lijevo okno prozora baze podataka
Objekti baze podataka kreiraju se i otvaraju prvo izborom nekog od objekata izlistanih u lijevom oknu prozora baze podataka, a zatim izborom opcije kreiranja objekta ili izbora već postojećeg objekta, u desnom oknu.
9.3 Desno okno prozora baze podataka-Right Pane
Slika 33: Sadržaj desnog okna kada je u lijevom oknu izabrana opcija Tables
Izborom bilo koje od prvih četiri opcije u lijevom oknu -- Tables, Queries, Forms ili Reports – otvara se u desnom oknu dodatni izbor opcije načina kreiranja koji je povezan sa izborom objekta u lijevom oknu. Izborom dugmeta Tables u lijevom oknu, na primjer, ispisuju se u desnom oknu najmanje tri opcije: 1) Create a table in Design view-opcija kreiranja tabele manuelno u dizajn pogledu, 2) Create a table by using wizard-opcija kreiranja tabele pomoću čarobnjaka za tabele i 3) Create table by entering data-opcija kreiranja tabele odmah-unošenjem podataka. Desno okno takođe, u obliku ikone, prikazuje svaki objekat koji ste već kreirali u bazi podataka. Prozor baze podataka je osnovna cjelina za sve operacije sa primjerima gotovih baza ili sa bazama podataka koje sami napravite. Gotovo sve operacije koje radite sa MS Access-om počinjete sa izborom opcije iz glavnog prozora baze podataka. Iz lijevog okna, obilježenog kao Objects,
27
možete odabrati bilo koji objekat (tabele, upiti…). Odabiranjem objekta odlazite u kategoriju odabranog objekta. Na primjer, ako odaberete Tables vidjećete kategoriju Tables.
Slika 34. Ponuda opcija u desnom oknu kategorije Tables
Zadatak 1 Ispišite sadržaje menija File, Edit, View, Insert, Tools, Window i Help iz glavne linije Access menija. Pošto je ovdje meni iscrtan, možete dole ispod svakog da ispisujete sadržaj svakog od njih. Pri tome se služite startovanim Accessom. Slika 35: Linija menija
Identifikujte operacije koje se izvode sa svakim od dugmadi u glavnoj liniji menija Accessa. Slika 36. Traka alata
Neka dugmad na traci alata se pojavljuju takođe uz opcije izlistane u meniju. Za svako dugme u glavnoj traci alata Accessa identifikujte u meniju gdje se ta operacija može izvesti.
10. OBJEKTI BAZE PODATAKA Baza podataka u MS Access-u se čuva kao “mdb” fajl i može da sadrži slijedeće vrste objekata: Tabela (Table) je osnovni tip objekta u bazi i predstavlja izvor podataka. To su prvi objekti koji se kreiraju u bazi. U tabelama se čuvaju podaci, organizovani u polja (kolone, eng.Fields). Sva definisana polja čine slog (zapis, red, eng. Record). Kvalitetna organizacija podataka u tabelama baze, kao i njihovim dobrim vezama (relacionom modelu) je preduslov za pravljenje uspješnog informacionog sistema.
28
Upit (Query) je tip objekta za pretraživanje, upisivanje i brisanje podataka.Upiti se prave nad tabelama ili drugim upitima, u cilju njihovog ažuriranja kroz obrasce ili pregleda kroz izvještaje (na ekranu ili štampaču). Upiti mogu da izvlače podatke iz jedne tabele, ili da se vrši spajanje podataka ili više tabela ili drugih upita. Izrada formi i izvještaja zahtijeva kombinovanje upita i tabela, pa se njihovo kreiranje može znatno ubrzati samo pod uslovom da su izvori podataka (tabele i upiti) dobro kreirani. Obrazac (Form) omogućava unos i prikazivanje podataka u formatu koji podsjeća na obrasce u kojima treba popuniti prazna mjesta. Obrasci mogu biti jednostavni, nad jednom tabelom ili složeni sa podobrascima (engl. subforms), potom im se mogu dodati funkcionalnosti automatskog pretraživanja i filtriranja, kao i dodatna grafička rješenja. Izvještaji (Reports) služe za pregledanje i štampanje podataka. Kao i obrasci, izvještaji mogu da budu jednostavni, ali i veoma kompleksni. Primjeri izvještaja su: spiskovi, hronološki pregled poslovanja, cirkularna pisma, naljepnice sa adresama i fakture. Izvještaji podatke uzimaju iz tabela, ali češće iz upita. U izvještajima se podaci predstavljaju u obliku koji je lak za pregled, razumljiv i gdje se mogu brzo uočiti greške. Web stranice za pristup podacima (Data Access Pages), omogućuju kreiranje složenih obrazaca na Intranetu kompanije koji su povezani s podacima u bazi. Hiperveze omogućavaju pristup podacima koji su objavljeni na Webu, direktno iz MS Access obrazaca. U praksi se rijetko koristi jer za ovakvo objavljivanje podataka postoje mnogo bolji alati i tehnologije od MS Accessa. Makro (Macro) je niz MS Access komandi koji se koristi kada nekoliko komandi (određenim redoslijedom) treba pozvati na više mjesta u aplikaciji, a obično na obrascima. Kada se pokrene makro, izvršavaju se sve naredbe makroa u redoslijedu u kom su akcije navedene. Bez pisanja programskog koda se tako mogu definisati makroi koji automatski otvaraju obrasce za bazu podataka, štampaju izvještaje, obrađuju podatke. Makroi olakšavaju sastavljanje skupova tabela upita, obrazaca i izvještaja u kompletne aplikacije za korisnike koji ne znaju ništa o MS Access-u. Makroi se izbjegavaju u profesionalnim MS Access aplikacijama, jer se oni ne mogu kompajlirati, pa ne daju mogućnosti kreiranja aplikacije. Modul (Module) kao i makro omogućava automatizaciju, ali mnogo napredniju, jer se u njemu, kao razvojna platforma, koristi VBA, u obliku procedura tipa Sub i Function, koje su na raspolaganju cijelom projektu. Za razliku od makroa moduli omogućavaju precizniju kontrolu nad preduzetim akcijama i zahtijevaju iskustvo u programiranju u VBA (Visua/ Basic for Applications). Ukoliko pravite novu bazu podataka koristićete osnovne funkcije (objekte) Accessa u sekvencama koje idu odozgo na dole, kako je to simbolički prikazano na slici 37.
29
Organizacija podataka
Tabela
Tabela
Funkcije za podršku
Tabela
Makro
Modul Upit
Bezbjednost
Forma
Izvještaj Štampanje
Slika 37: Osnovni objekti i funkcije za podršku Accessa.
Kako se na slici 37 vidi, na osnovu tabela prave se upiti, a na osnovu upita (i/ili tabela) prave se obrasci (forme) i izvještaji. Međutim, obrasce i izvještaje moguće je praviti i direktno na osnovu tabela, ali i u kombinaciji tabela i upita. Za kompleksnije pretraga za podacima i njihovo prikazivanje u izvještajima koriste se objekti: makroi i moduli VBA kóda. Slično prethodnom prikazu sa slike 37, na narednoj slici (slika 38) još jednom je simbolično prikazan odnos objekata u bazi podataka MS Accessa ali posmatrano odozdo prema gore.
↔ Forme i Izvještaji ↔ Upiti
↔ Tabele
Slika 38: Odnos među objektima baze podataka u Accessu
Koncepcijski, Access je dizajniran u hijerarhijskom obliku u pet nivoa (slika 39). Najniži nivo u hijerarhiji predstavljaju objekti: tabele, upiti, obrasci i
30
izvještaji, koji korisniku daju mogućnost da ih sam oblikuje po svojim željama i potrebama. Pri tome možemo koristiti različite vrste podataka-numeričke, tekstualne, vremenske i grafičke. Jednostavno procesiranje podataka je izvodljivo uz upotrebu funkcija i formi (obrazaca). Makroi omogućavaju automatsko izvršavanje funkcija bez programiranja. Programski jezik VBA (Visual Basic for Application) je za upotrebu veoma zahtjevan, jer su postupci procesiranja veoma kompleksni. Najviši nivo predstavlja Windows API (Application Programming Interface), koji poziva funkcije ili biblioteke napisane u drugim programskim jezicima, kao što su C, Java i Visual Basic. To znači veliku povezljivost sa drugim programima. Koncept Accessa omogućava da na svakom nivou korisnik može da kreira ili koristi sve elemente nivoa koji su ispod tog nivoa u hijerarhiji na kojem se nalazi.
TABELE, UPITI, FORME, IZVJEŠTAJI Slika 39: Hijerarhijska koncepcija Accessa
MS Access je multifunkcionalni program. Sastoji se od mnoštva povezanih alata za generisanje, organizovanje, izdvajanje, prikazivanje, štampanje i objavljivanje podataka. Kako smo već naveli, razvijena baza podataka u Accessu sastoji se od slijedećih elemenata, tj. objekata: tabele, upiti, obrasci (forme) i izvještaji, a može još da sadrži: Data Access strane (Data Access Pages), makroe (Macros) i/ili VBA module (Visual Basic for Application – programski jezik za programiranje operacija u MS Office aplikacijama). Kombinovanjem ovih komponenata i njihovo povezivanje i sinhronizovanje čini bazu podataka. Što su komponente bolje postavljene u međusobne odnose to je baza podataka efikasnija i brža. Baza podataka ne mora da ima svaki od sedam nabrojanih objekata, to zavisi od problema koji ona obrađuje i posla za koji je napravljena. Jedan ili više tih objekata formira se kada se kreira (dizajnira) sama baza podataka. Ove komponente su smještene u jednom fajlu baze podataka.
31
Slika 40: Skica organizacije i podjele funkcija objekata baze podataka
Da bi se okvalifikovala kao potpun sistem za upravljanje relacionom bazom podataka, aplikacija mora da izvršava slijedeće četiri osnovne funkcije, od kojih svaka ima sopstvenu prezentaciju za korisnika: Organizacija podataka – obuhvata izradu i rukovanje tabelama koje sadrže podatke u konvencionalnom tabelarnom formatu koju Access naziva tabelarni pogled (Datasheet View). Povezivanje tabela i izdvajanje podataka – povezuje više tabela prema relacijama između podataka radi izrade privremenih tabela, koje sadrže izabrane podatke. Access koristi upite da bi povezao tabele i izabrao podatke koji će se čuvati u privremenoj tabeli, koja se naziva objekat Recordset. Objekti Recordset nazivaju se virtuelne tabele, jer se čuvaju u memoriji računara umjesto u datotekama baze podataka. Unos i uređivanje podataka – zahtjeva projektovanje i implementaciju obrazaca za pregled, unos i uređivanje podataka kao alternativu tabelarnom prikazu. Obrasci su ti koji umjesto aplikacije omogućavaju da kontrolišete prikazivanje podataka. Prikazivanje podataka – zahtijeva izradu izvještaja koji mogu da sumiraju podatke u skupovima zapisa (Recordset). Njih možete da pregledate, štampate ili objavljujete na Internetu ili intranetu. Makroi su sekvence aktivnosti, koje automatizuju operacije nad bazom podataka koje se ponavljaju. Pri radu sa bazama podataka Access za automatizaciju koristi Visual Basic for Application (VBA). Moduli su funkcije i procedure koje su napisane u programskom jeziku VBA. Funkcije VBA se koriste da bi se izvršavala složenija izračunavanja od onih koja se mogu lako izložiti pomoću niza konvencionalnih matematičkih simbola, ili za izračunavanja koja zahtijevaju donošenje odluka. VBA potprogrami napisani su za izvršavanje operacije koje prevazilaze mogućnosti standardnih aktivnosti makroa što je jedan od razloga da se u Accessu napušta podrška makroima. VBA podprogrami se izvršavaju tako što se pridružuju odgovarajućim događajima, kao što je pritisak na dugme pomoću miša, koji se dešava kada je aktivni objekat neki obrazac ili izvještaj.
32
Bezbjednost baze podataka sprječava neovlašćene osobe da slučajno ili namjerno pregledaju, mijenjaju, brišu ili uništavaju podatke koji se u njoj nalaze. Bezbjednost sačinjavaju funkcije koje su dostupne kao stavke menija i preko VBA potprograma. Pomoću funkcija bezbjednosti podataka može se dopustiti drugim osobama da u višekorisničkom okruženju koriste vašu bazu podataka. Pristup možete dodijeliti grupi korisnika ili pojedincima, ali i ograničite njihove mogućnosti za pregled ili modifikacije svih ili samo nekih tabela u bazi podataka. Štampanje dopušta da odštampate praktično sve što možete da pregledate u radnom režimu programa Accessa. Mogućnost objavljivanja unaprjeđuju distribuciju informacija preko intranet korporacije i javne Internet mreže u obliku Word Wide Web strana. Access uvodi stranice za pristup podacima (DAP – Data Access Page). One vam dopuštaju da napravite aplikaciju za prikazivanje i ažuriranje podataka na stranicama, koje koriste prednosti jezika Dynamic HTML (DHTML) i Extensible Markup Language (XML).
10.1 Promjena vrste pogleda na objekte baze Kada otvorite bazu podataka ili neki Access-ov objekat, pojavljuje se prozor baze podataka (Database Window) koji prikazuje prečice za stvaranje novih objekata baze podataka i otvaranje postojećih objekata. U tom prozoru takođe možete birati koji od dva osnovna pogleda (Design View i Datasheet View) želite da prikažete za odabrani objekat u bazi.
Slika 41:Prozor baze podataka sa ispisanim tultipom prve opcije
na
Pokretanje Design View-a (dizajnerskog pogleda) vršimo klikom na ikonu, a pokretanje Datasheet View-a (tabelarnog pogleda) klikom ikonu.
33
Dizajnerski pogled (Design View) je prozor koji pokazuje dizajn objekata baze podataka: tebela, upita, obrazaca, izvještaja, stranica za pristup podacima, makro naredbi i VBA modula. U tom pogledu moguće je stvarati nove objekte baze podataka i mijenjati dizajn postojećih. Ovaj pogled koristimo za kreiranje odnosno za uređivanje i održavanje baze. Na slici dole prikazan je Design View tabele Studenti_EF (slika 42). Tabelarni pogled (Datasheet View) je pogled koji krajnji korisnici baze koriste za rad s podacima u bazi kao što je unos podataka, sortiranje podataka itd. Tabelarni pogled na bazu studenti_EF prikazan je na donjoj slici desno (slika 43).
Slika 42: Dizajnerski pogled na tabelu (Design View)
Slika 43: Tabelarni pogled (Datasheet View)
Korišćenje Accessa je jednostavno za pojedine korisnike jer omogućuje dizajniranje objekata pomoću čarobnjaka, a pored toga ima i veoma razrađen i urađen meni za pomoć. Korisnik može objekte da uređuje po svojoj želji jer ima na raspolaganju veliki izbor boja, sjenila, dugmadi i ostalog. Jedna od značajnih osobina Accessa je da objekte povezuje i prikazuje ih grafički. Tabele su međusobno povezane preko ključnih polja tzv. ključeva. Ključevi unikatno (jednoobrazno) definišu svaki slog, zato ključno polje ne smije biti prazno.
11. TABELE - OSNOVNI OBJEKT BAZE PODATAKA Tabele (Tables) su glavna komponenta Microsoft Accessa jer se u njima nalaze svi podaci sadržani u bazi podataka. Prema tome, one su primarni izvor podataka. Za bolju organizaciju podataka poželjno je imati više tabela. U tabelama se, po osmišljenim principima i vezama, čuvaju podaci kojima raspolaže korisnik i one su prvi objekti baze podataka koje treba kreirati. Podaci u tabeli su smješteni u polja (kolone, eng. Fields), a sva definisana polja čine slog (zapis, red, eng. Record)3. Kvalitet baze podataka
3
Možemo reći i ovako: slog ili zapis je skup informacija opisan jednim ili većim brojem svojstava (polja).
34
i informacionog sistema leži u kvalitetnoj organizaciji podataka u tabelama baze, kao i njihovim dobrim vezama (relacionom modelu). Tabela je kolekcija podataka o konkretnoj stvari ili pojmu, kao što su proizvodi ili dobavljači. Korišćenje posebne tabele za svaki pojam ili stvar znači da vi te podatke smještate samo jedanput, što vašu bazu podataka čini mnogo efikasnijom, a redukuju se i greške kod unošenja podataka. Da bismo „utvrdili gradivo“, navešću vam jedan primjer onoga što nije tabela kao relacija u terminologiji baza podataka: Pjesma moje mladosti 456.780 KM
Banja Luka
Vedrana Mišković
$5,678.00
Nad lipom 65
123,56 čega? ®
21. MAJ 2007. Olovka piše srcem!
Hhh“!
%&/++*
?ŠĆ_-
Slika 44.Tabelarni prikaz koji nije tabela u konceptu baze podataka
Pojedine tabele se obično kreiraju za određene teme (naslove), kao što su studenti, knjige, proizvodi, računi, dobavljači i slično. Tabele se mogu povezati jedna s drugom da bi se pristupalo različitim tipovima informacija. Radi toga što se podaci unose samo jedanput, vjerovatno nećete čuvati istu informaciju u dvije različite tabele. Na taj način vaša baza podataka postaje mnogo efikasnija. Kolone i redovi u Access tabeli slični su (podsjećaju) onim u Excel-ovom radnom listu (Spreadsheet).
Slika 45: Izgled tabele Accessa
Pojedina polja u nekom adresaru, na primjer, mogu se sastojati od: imena, adrese ulice, grada, poštanskog broja i telefonskog broja. Jedan red je neki unos (engl. entry) koji koristi sva ta polja.
Slika 46: Hijerarhija organizacije podataka u Accessu
Gornju sliku možemo interpretirati na slijedeći način: datoteka baze podataka sastoji se od tabela koje su sačinjene od polja, u kojima se nalaze
35
podaci istog (određenog) tipa. Tabela je organizovana u kolone (polja - eng. columns, fields) i redove (slogove, eng. records). Svako polje u tabeli sadrži isti tip podatka za svaki slog. Svaki slog sadrži sve informacije o, u našem primjeru, pojedinoj osobi iz tabele (Kontakti). Da bismo ukazali na pojam tabele u Accessu pokazaćemo primjer onog što nije tabela: Svaki red ili slog tabele sačinjen je od kolona koje smo nazvali polja (engl. Fields), na primjer, u tabeli Kontakti: Prezime, Ime, Telefon, Adresa, Grad, Drzava, Post_Br, koji u sebi sadrže određeni dio informacije. Koristeći odvojene tabele za pojedine teme znači da podatke spremamo samo jedanput i tako baza postaje efikasnija i smanjujemo greške pri unosu. Tabela: Kontakti Prezime
Ime
Telefon
Adresa
Grad
Drzava
Simić
Dejan
319111
Krsto
419222
Banja Luka Trebinje
BiH
Mijanović
BiH
75513
Đumišić
Damir
345876
Oslo
Norveška
28806
Mrđanović
Jasmina
5676788
Vidovdanska 95 Hercegnovska 14 Gudjersson Alle 6 Kisačka 11
Post_ br 78000
Novi Sad
Srbija
21000
Podaci u redu Simić Dejan u gornjoj tabeli predstavljaju jedan slog. I podaci u redu Mijanović Krsto su takođe jedan slog baze podataka. I ostali redovi tabele su takođe slogovi baze podataka. Tabele su isključivi nosioci podataka, odnosno podaci se (fizički) mogu nalaziti isključivo u tabelama. Svi drugi objekti manipulišu podacima iz tabela. Ispravno kreirana tabela donosi uštedu u prostoru, povećava brzinu rada i eliminiše kasnije mukotrpno prepravljanje svih ostalih objekata vezanih za tabelu, ako se uvidi da je tabela pogrešno kreirana. -
Osnovne karakteristike tabela su: ne postoje dva jednaka reda, tj. redovi se razlikuju među sobom, ne postoje dvije jednake kolone, tj. u jednoj koloni postoji samo jedna vrsta podataka, kolone imaju svoj naziv redoslijed redova nije bitan redoslijed kolona nije bitan.
U relacionoj algebri4 umjesto termina tabela koristi se termin relacija, redovi se zovu n-torke, a kolone se zovu atributi, pa to u literaturi pojedini
4
Relaciona algebra je oblast matematike (proceduralni upitni jezik) u kojoj se operacije (selekcije, projekcije, unije, razlike, Dekartovog proizvoda, presjeka, dijelenja i spajanja) nad jednom ili dvije relacije (nad skupovima-tabelama, koje se ovdje zovu relacije) obavljaju slično kao što se u algebri operacije (sabiranja, oduzimanja, množenja i dijeljenja) obavljaju nad brojevima ili varijablama.
36
autori miješaju ili koriste naizmjenično, nekad tabela, a nekad relacija, nekad atributu, nekad polja. Tako se može reći da se relaciona baza podataka sastoji od relacija, a jedna tabela predstavlja relaciju. Takođe, engleski termin relationship, koji u prevodu znači vezu-odnos, mnogi autori prevode (pogrešno) kao relacija (eng. Relation), što dodatno može da zbuni neke neiskusne korisnike Accessa. Mi ćemo, stoga, ovdje prikazati bazu podataka i u toj notaciji, a onda ćemo prihvatiti da, u ovoj knjizi dalje, relaciju zovemo tabela, a vezu ili odnos između tabela ćemo prihvatiti da (pogrešno, ali ipak zbog većine) nazivamo relacija. Ime relacije: STUDENT Redovi Maticni broj Prezime i Ime Godina studija —> 0604986100014 Zovkić Milutin III mgt —> 1212986117221 Petrašević Sara III inf —> 2103985271210 Samarđić Siniša IV fin Slika 47. Prikazivanje podataka u tabelama
Primjer sa slike 47 mogao bi se prikazati pomoću šeme iz relacione algebre kao: STUDENT (Maticni broj, Prezime i Ime, Godina studija), pri čemu je podatak ispred zagrade naziv relacije, podaci u zagradi su nazivi atributa, a podvučeni podatak je ključ za jednoznačnu identifikaciju redova.
11.1 Načini kreiranja tabele Početni korak za kreiranje tabele je komanda New u prozoru baze podataka (kada je u okviru Objects aktivna karticaTables). Ovim se otvara dijalog New Table, koji nudi pet načina u kreiranju tabele i to:
Slika 48. Okvir New Table za dijalog oko izbora načina (prikaza) kreiranja tabele
37
Datasheet View omogućava direktno unošenje podataka u tabelu, pri čemu program sam određuje tip polja. Ime polja se daje opcijom Rename Column iz menija koji se dobija desnim klikom na naslov kolone. Ovaj način se koristi u dva slučaja i to: a) kada još nije poznata struktura tabele i b) kada je potrebno ubaciti kopirane podatke iz nekog drugog programa (npr. MS Excela). MS Access će svim poljima dati imena kao Field1, Field2, itd, a na osnovu sadržaja unijetih po poljima, pokušati da odredi neka svojstva polja, kao što je maksimalna dužina i format podatka. Ovdje se podrazumijeva da su sva polja tekstualnog formata i opciono unijete dužine u samom MS Access-u. Ovaj pristup u kreiranju tabele treba izbjegavati, jer se njime skoro ništa ne definiše. Design View vodi u standardno kreiranje tabele detaljnim izborom svojstava polja podataka, kao što su imena polja, tip podataka i veličina polja, određivanje primarnog ključa, indeksiranje, graničnih uslova za unos podataka i slično. Poznavanje ovog pristupa je od najvećeg značaja, a ujedno je to najkompleksniji, najčešći i najdetaljniji pristup. Table Wizard prepušta formiranje tabela čarobnjaku (Wizard-u), koji to čini pozivajući se na biblioteku već formiranih tabela. Ova mogućnost je korisna kada želimo da kreiramo neke standardne objekte, kao što su adresari, podsjetnici, računi, izvještaji, fakture, evidencije troškova i slično. Ovaj pristup je koristan u učenju i savladavanju "tajni" MS Access-a, ali je njegov nedostatak u tome što nudi mnogo toga, a korisnik najčešće ne može da pronađete baš ono što mu treba. Import Table daje mogućnost uvoza tabele iz nekog drugog izvora podataka koji je kreiran prema nekom od standarda za datoteke i baze podataka. Može biti riječ o MS Access bazi, ali i mnogo drugih organizovanih tabela, kreiranih programima kao što su: MS Excel, dBASE, Cliper, FoxPro,..., kao i fajlove tekstualnog formata, gdje je za pojedine kolone (polja) potrebno definisati širinu svake kolone pojedinačno. Treba imati na umu da se na ovaj način stvara kopija importovane tabele, pa se u slučaju rada u lokalnoj mreži ili u informacionom sistemu može desiti decentralizacija (rasipanje) podataka, odnosno ponavljanje istih podataka na više mjesta, što za održavanje takvog sistema može biti fatalno. Link Table daje mogućnost povezivanja sa tabelom (obično više njih) iz druge MS Access baze (rijetko kada se koristi neki drugi format baze), pri čemu tabela ostaje u matičnoj bazi, a linkom se omogućuje veza na nju u cilju pregleda i ažuriranja podataka. U ovoj situaciji, pristup dizajnu (kreiranju) tabele nije moguć iz baze koja ima link na datu tabelu, već samo iz matične (izvorne) baze. Dizajnu tabele se ne može pristupiti dok se svi aktivni linkovi na odnosnu tabelu ne isključe, što znači da pri dizajnu tabele niko (kroz mrežu) ne može da je ažurira. Kako mrežne aplikacije uglavnom rade sa više tabela i više baza, u ovoj situaciji je potrebno uputiti korisnike da privremeno ne otvaraju podatke koji se nalaze u ovoj tabeli (jer će biti upozoreni da to trenutno nije izvodljivo), a poslije izvršenih ispravaka u dizajn pogledu nastavljaju sa uobičajenim radom. Ujedno ovo predstavlja i jedinu situaciju u kojoj, korisnik baze podataka kroz računarsku mrežu, smije
38
da bude ometan u njenom korišćenju. Mnogi će vam priznati da bez Link-a nema ni mrežne orijentacije baze podataka i da je to tek kamen temeljac za dobar informacioni sistem. U kompleksnijim bazama podataka se obavezno praktikuje da ni sve potrebne tabele ne budu u odnosnoj bazi, jer MS Access omogućava njihovo povezivanje (Link) kroz baze. Ovo je od ključnog značaja za projektovanje aplikacija za korišćenje u lokalnoj mreži ili informacionom sistemu. Održavanje i razvoj ovakvih sistema je mnogo lakši za programera, a korisniku daje mogućnost kontinuiranog rada bez obzira na zahvate na administriranju. Nakon ovog uvodnog „traktata“ o tabelama spremni smo da kreiramo (dizajniramo, oblikujemo) tabelu, stoga odaberemo Tables iz grupe objekata (Objects) i izaberemo ˝New˝ (slika 49).
Slika 49. Početak kreiranja nove tabele
Slika 50. objekta
Opcije
prikaza
kreiranja
Sada nam se, kao što je prikazano na slici 50, nudi da izaberemo jedan od pet načina prikaza kreiranja tabele. Da podsjetimo, to su: - Datasheet View – Prebacuje nas na datasheet view (vidimo tabelu sa njenim kolonama i redovima i podacima u njima). Ova metoda omogućuje nam direktan upis podataka u tabelu. - Design View – Najpogodnije za stvaranje tabele tj. kolona u tabeli (dajemo kolonama imena, tip podataka i ostale osobine…). - Table Wizard – Čarobnjak koji nas vodi kroz proces pravljenja tabele i to tako da izabiremo kolone koje će biti u tabeli iz velikog izbora gotovih polja (kolona). - Import Table – Čarobnjak koji uvozi tabele i objekte iz nekog vanjskog fajla u našu bazu koju trenutno kreiramo. - Link Table – Čarobnjak koji kreira tabelu koja je ˝linkovana˝ (znači da ta tabela nije u našoj bazi već u nekoj drugoj ali je možemo pozvati iz naše baze) sa nekom tabelom u vanjskom fajlu. Mi ćemo odabrati Design View pošto kreiramo tabelu od početka. Nakon odabira javlja nam se Design View prozor. Svaki red u Design View-u predstavlja jedno polje u tabeli koje ima svoje : -
Field Name – Ime polja, može sadržavati razmake
39
-
Data Type – Tip podataka za određeno polje (vidi sliku 52). Ovo polje mora biti izabrano.
Slika 51. Izgled tabele u dizajn pogledu
Svakom polju tabele u Accessu dodijeljuje se određeni tip podatka (Data Type): - tekst, - memo polje (polje u koga se može unijeti tekst proizvoljne veličine), - broj, - datum/vrijeme, - logičko polje, - valuta (currency-polje za unos brojeva u novčanom formatu, - posebno polje u kome se automatski po započetom unosu sloga inkrementira broj (polje AutoNumber), - hiperlink polje (pokazivač na adresu na Internetu), - OLE objekt polje (polje sa objektom povezanim iz drugog programa) i - Look Up polje (polje čiji prikazani sadržaj se nalazi u drugoj tabeli).
Slika 52. Padajuća lista za izbor tipa podatka u polju Data Type
-
Takođe, svako polje ima i određena svojstva (Field Properties), kao: format polja (Format) tekst zaglavlja... (Caption...) podrazumijevana vrijednost (Default Value) zahtijeva li se unos (Required) itd...
40
Uvijek kada mišem pokažemo neko polje u sekciji Field Name, u dnu prozora tabele u dizajn pogledu pojave se podaci o svojstvima (osobinama) tog polja, kako je pokazano na slici 53.
Slika 53. Izgled polja u tabulatoru General, sekcije Properties
Kompletan pogled na prozor tabele u dizajn pogledu dat je na narednoj slici.
Slika 54. Izgled tabele u pogledu za dizajniranje (Design View)
Pri kreiranju baze podataka veoma je bitno postaviti tip polja, jer su brzina rada, organizovanost podataka i veličina same baze u direknoj vezi sa ispravno postavljenim tipom polja. Na primjer, za datum tipa 01/01/2006 tip polja ćemo postaviti na Date/Time (datum/vrijeme); za isključivo numeričke vrijednosti postavljamo tip polja na Number; za kombinovani alfanumerički unos tip polja postavljamo na Text kod koga se predviđa maksimalni broj karaktera u unosu, itd. U narednom tabelarnom prikazu navedeni su neki najčešće korišteni tipovi podataka i njihova tipična primjena.
41
Tip podatka Text Memo Number Date/Time Currency AutoNumber Yes/No OLE Object
Tipična primjena Tekst ili brojevi sa kojima se ne izvode računske operacije (do 255 znakova) Duži tekst i brojevi, kao što su napomene ili opisi (do 64000 unakova) Brojevi koji će se koristiti za matematska izračunavanja (dužina zavisi od tipa) Datumi i vrijeme Tip podatka valuta (15 decimalnih mjesta) Jedinstveni sekvencijelni cijeli broj koji se automatski umeće pri svakom dodavanju sloga Bulova cifra (istina/laž). Koristi samo jedan bit. Link na objekt kao što su Word dokumenti, Excel radni listovi, slike itd.
Tabelarni prikaz 1: Lista i opis glavnih tipova podataka u Accessu
Izabiranje tipa podatka. Postoje neka praktična pravila kojih se je dobro pridržavati, a koja mogu pomoći kod izbora tipa podatka za neka polja: 1. Nemojte koristiti numerički tip podatka sve dok to polje ne počnete da tretirate kao broj, odnosno da planirate da se nad njim izvode matematske operacije. Na primjer, vi možete da neku osobu memorišete pod njenim ličnim (matičnim) brojem (na primjer “64912”) kao integer-om (cjelobrojnom vrijednošću). Međutim, lični broj zaposlenog je u stvari sekvenca od numeričkih znakova, a ne broj. Ukoliko još u sebi sadrži crtice za razmak, vodeće nule ili prazne znakove, tada je izbor tipa podatka number zaista neodgovarajući. Ima i izuzetak od ovog pravila, koji slijedi. 2. Kao i većina sistema baza podataka, Access omogućuje specijalni podtip numeričkog podatka nazvan AutoNumber. AutoNumber predstavlja cjelobrojni tip podataka koji se samostalno inkrementira (povećava za jedan) pri unosu svakog novog sloga. Ovim se osiguravamo da ne mogu postojati dvije iste vrijednosti sloga, tj. da su slogovi jedinstveni. Šta podrazumijevamo pod jedinstvenošću sloga? Na primjer, u našoj tabeli kontakata vrlo je vjerovatno da možemo imati dvije osobe koje imaju isto ime i prezime te dodjeljivanjem različitog ID_ kontakta svakom od njih osigurali smo da se ne miješaju podaci ove dvije osobe, a istom logikom i ostalih. AutoNumber je Long Integer broj koji Access automatski uvećava svaki put kada se nekoj tabeli doda neki slog. Polja koja se automatski inkrementiraju su pogodna da služe kao primarni ključevi ako ne postoji neko drugo pogodnije polje. To jeste, automatski brojevi (AutoNumbers) mogu služiti kao zamjenski (surrogate) ključevi. Dakle, obavezan je unos naziva polja (Field Name) u tabeli i tip podatka (Data Type), a polje za opis podatka (Description) nije obavezno popunjavati, ono više služi projektantu tabele za podsjetnik. Vrijednost koja je tu unesena će biti vidljiva samo u statusnoj liniji (status bar-u) pri dnu ekrana kada radimo sa tim poljem u formi ili tabeli u Datasheet View-u.
42
Nakon što ispunimo ime polja i njegov Data Type otvore se nove opcije koje pobliže opisuju to polje. Lista osobina polja koja se pojavi u kartici General u slučaju izbora tipa polja Text data je narednoj slici.
Slika 55. Lista svojstava polja tipa Text • -
-
-
-
Field Size – Memorijska veličina polja. Zavisi od tipa podataka, može biti i manja od maksimalne kod nekih tipova. Format – Format u kojem će se podatak prikazati pri gledanju (možemo ga mijenjati kod polja tipova: brojevi, Date/Time, valuta i Yes/No polja.). Decimal Places – Namješta broj decimalnih mjesta za numerička polja. Input Mask – Ograničava nam mogućnost unosa tj. osigurava upis uvijek u istom obliku (najkorisnije kod datuma). Čarobnjak za masku za unos podatka (Input Mask Wizard) radi samo sa tekstualnim i datumskim tipom podataka. Caption – Tu upisujemo ime polja koje će se koristiti u Datasheet View-u ili u labelama u obrascima (npr. imamo polje čije je ime Š_zap, a mi želimo da se, radi lakšeg snalaženja, prikazuje ime Šifra Zaposlenog). Default Value – Vrijednost koja će biti automatski upisana u polje ako ga mi pri unosu ostavimo nedirnuto. Validation Rule – Omogućuje nam ograničavanje vrijednosti polja (recimo da vrijednost uvijek mora biti manja od 100). Validation Text – Tekst koji se javlja ako Validation Rule nije ispunjen.
43
-
Required – Ako je ova opcija uključena konkretno polje obavezno mora imati neku vrijednost u sebi (slično sa „obavezno popuniti“).
11.2 Pojam, važnost i definisanje primarnog ključa Gotovo svaka tabela mora sadržavati barem jedno polje koje ima jedinstvenu vrijednost za svaki slog. Na primjer, u tabeli „Osobe“ možda ćete željeti da svakoj osobi dodijelite njegov JMB - jedinstveni matični broj i na taj način u tabeli imate polje ID#, ili možete izabrati da upotrebite registarski broj lične karte ili pasoša svake osobe. Takvo jedinstveno identifikaciono polje nazivamo polje primarnog ključa. Primarni ključ (Primary key) je jedno ili više polja koja su jedinstvena za neku tabelu, odnosno pomoću kojih se može jednoznačno definisati red (slog) tabele. Pomoću primarnog ključa polja tabele možemo dovoditi u vezu (postavljati u relacije). Korištenje Primary key-a ubrzava proces pretraživanja i spajanja podataka u tabelama. Svi podaci u ovim poljima su kontrolisano različiti (znači da ne možemo unositi iste vrijednosti više puta) i vrijednost ne može biti Null (prazno polje). Primarni ključ upotrebljava se za povezivanje tabela. Primarni ključ je kolona ili skup kolona koji jednoznačno određuju ostatak podataka u svakom redu. Na primjer, kolona IDVlasnika u tabeli VlasniciAntikviteta jednoznačno određuje određeni red. Ovo znači dvije stvari: - nijedna dva reda ne smiju imati istu vrijednost u koloni IDVlasnika, - kao i da čak ukoliko dva vlasnika imaju isto ime i prezime, kolona IDVlasnika obezbjeđuje da oni neće biti pomiješani jer se za manipulisanje njima u cijeloj bazi koristi kolona IDVlasnika, a ne njihova imena. Primarni ključ treba definisati prije unosa podataka, jer on mora biti jedinstven. Kod naknadnog definisanja primarnog ključa u tabelama u kojima već postoje podaci može doći do problema uslijed eventualne pojave istih vrijednosti u polju ključa. Inače, kod dodavanja novih zapisa u tabele polje primarnog ključa ne može ostati prazno, niti se može duplirati. Polja koji su dobri kao kandidati za da budu primarni ključ su polja koja sadrže: jedinstveni matični broj građanina (JMBG), matični broj radnika, identifikacioni broj kupca, šifra proizvoda itd. Polja koja nisu dobri kandidati da budu primarni ključ su prezime ili ime, jer uvijek je moguće da bude više lica sa istim prezimenom i imenom. Osobine polja koja su označena kao primarni ključ su: Unique (True): Polje je jedinstveno, tj. u polju nisu dozvoljena dupliciranja. To znači da, ako je, na primjer, polje JMBG označeno kao primarni ključ (Primary Key), ne možete da imate dva različita sloga sa istim jedinstvenim matičnim brojem građanina.
44
Ignore Nulls (False): Ignorišu se null polja. To znači da slog ne možete da sačuvate (Save) sve dok se u ključno polje ne unese podatak. Uz to: Tabele će automatski biti sortirana po primarnom ključu iako je vi lako možete presortirati po nekom drugom polju. Da biste kontrolisali unos podataka tabela se može povezivati sa drugom tabelom koristeći primarni ključ.
11.2.1 Vrste primarnih ključeva AutoNumber Primary key – Za polje primarnog ključa koristimo tip AutoNumber, najčešće korišteno za identifikacione brojeve, npr. kupaca, narudžbi itd. Access će u slučaju da mi ne definišemo Primary key automatski izabrati AutoNumber polje za Primary key. - Single-field Primary key – Za primarni ključ koristimo samo jedno polje u tabeli, vrijednosti takođe ne mogu biti Null ili se ponavljati. - Multiple-field Primary key – Za primarni ključ koristimo više polja u slučaju kada ne možemo sa sigurnošću tvrditi da samo jedno polje opisuje tu tabelu. Najčešća situacija u kojoj imamo tabelu sa ovakvim primarnim ključem je u n:n (many-to-many) relacijama. -
Polje primarnog ključa ne treba da kreiramo za tabelu koja nikada nije bila niti je primarna tabela. Primarna tabela sadrži informacije koje predstavljaju objekte iz realnog svijeta, kao što je osoba, čitalac, knjiga ili faktura i samo jedan slog jedinstveno je povezan sa tim objektom. Korišćenje polja ključa je prost metod za sprječavanje izrade duplih slogova u tabeli. Access traži da definišete primarni ključ ako želite da napravite relaciju jedan prema jedan ili da ažurirate dvije ili više tabela u isto vrijeme. Primarna tabela koja učestvuje u relacijama koje postavljate sa okvirom za dijalog Relationship mora imati primarni ključ. Drugim riječima, ako tabela treba da bude strana „jedan“ relacije „jedan-prema-više“, tada ona mora imati primarni ključ. Access smatra da je tabela bez primarnog ključa čudo; zato kada uradite promjene na tabeli i vratite se na dizajn pogled (Design View), dobijete poruku da niste napravili polje primarnog ključa. Ukoliko prilikom kreiranja tabele ni jedno polje niste postavili za primarni ključ, Access će automatski pri spremanju tabele (Save) postaviti polje s oznakom ID i tipa AutoNumber za primarni ključ
11.2.2 Definisanje primarnog ključa i indeksa U Design View-u označimo polje koje želimo definisati kao primarni ključ (u slučaju da želimo izabrati više polja držimo taster Ctrl i označavamo polja koja želimo), a zatim stisnemo desni taster miša i odaberemo Primary key ili, ako ga želimo definisati pomoću tastature, stisnemo 'Shift + k'.
45
Neko polje ne mora biti Primary key da bi bilo posebno za tu tabelu već ga možemo definisati kao Indexed Value. To definišemo tako da u Design View-u pod opcijom Indexed odaberemo Yes (No Duplicates). Indeks je poseban popis pokazivača na podatke u bazi. Indeksiranjem se omogućava da se, u daljem korišćenju tabele kao izvora podataka, može brže sortirati, pretraživati i obrarađivati u svakom drugom obliku - po polju podataka koje je indeksirano. Indeksiranje se preporučuje za polja sa numerički tipom podataka i to samo u situacijama kada se nad njima planira neki oblik pretraživanja. U bazama s velikom količinom podataka indeksiranje polja znatno ubrzava ove operacije jer se umjesto svih podataka u bazi pretražuju samo indeksi. Međutim, uključivanje indeksiranja po polju podatka može dovesti do znatnog uvećanja fajla baze podataka, a dešava se obično kod tabela koje imaju veliki broj slogova podataka (u desetinama hiljada i više). Sličan primjer indeksiranja imamo kod traženja nekog pojma u knjizi. Ako u knjizi postoji indeks pojmova (obično na kraju knjige), traženi pojam ćemo vrlo brzo pronaći, jer su tu tačno navedene stranice gdje se on nalazi i nije ga potrebno tražiti prelistavajući cijelu knjigu. Indekse za određenu tabelu pregledavamo tako da na traci sa alatima odaberemo Indexes dugme . Njih takođe možemo stavljati u relacije sa drugim poljima u drugim tabelama.
11.2.3 Strani ključ Strani (spoljni, vanjski, sekundarni) ključ je kolona u tabeli koja je primarni ključ u drugoj tabeli, što znači da sve vrijednosti u koloni stranog ključa moraju imati odgovarajuće podatke u drugoj tabeli u kojoj je ta kolona primarni ključ. U terminologiji relacionih baza podataka, ova veza se naziva referencijalni integritet. Na primjer, u nekoj tabeli Antikviteti obadvije kolone IDKupca i IDProdavca predstavljaju sekundarne ključeve za primarni ključ tabele VlasniciAntikviteta (tj. kolonu IDVlasnika; u cilju izlaganja pretpostavljamo da neko mora biti vlasnik antikviteta prije nego što može da kupuje ili prodaje komade antikvitetnog nameštaja), pošto se u obje kolone ID brojeva koriste za identifikaciju vlasnika ili kupaca i prodavaca, a kolona IDVlasnika je primarni ključ tabele VlasniciAntikviteta. Drugim riječima, svi ovi ID brojevi se koriste za ukazivanje na same vlasnike, kupce i prodavce antikviteta, bez potrebe za korišćenjem njihovih stvarnih imena.
Vježba 1: Kreiranje tabele baze podataka Startujte program Access na vašem računaru. Ako odberete File/New, na ekranu ćete vidjeti prozor "New File" kao, na primjer, što je prikazano na slici dole. Iz ponuđenih opcija izaberite "Blank Database".
46
Slika 56. Okno New File
Ako ste već imali MS Access program otvoren, onda otidite u meni File i izabrati opciju "New" da biste kreirali novu, praznu, bazu podataka. Pojaviće vam se drugi prozor, kao na slici dole. Ž
Slika 57.
Sada treba da izaberete disk jedinicu i folder na koji ćete smjestiti datoteku (fajl) i dajte joj ime. U gornjem primjeru biće vam ponuđeno podrazumijevajuće (default) ime "db1." Promijenite ga u "XXXdbase1" pri čemu XXX neka budu vaši inicijali imena i prezimena. Kliknite na dugme "Create" da napravite vaš fajl baze podataka. Ugledaćete slijedeći prozor:
47
Slika 58. Opcije prikaza kreiranja tabele u prozoru baze podataka
Kao što možete vidjeti, fajl baze podataka u Accessu ima mnogo komponenata. Svaka sekcija u gornjem prozoru to pokazuje. Kao što takođe znate, baza podataka sastoji se od jedne ili više tabela koje su veoma slične spredšit tabeli Excela. Svaki red u tabeli predstavlja jedan poseban slog baze podataka, a svaka kolona predstavlja polje. To je pokazano na narednoj slici.
Slika 59. Worksheet prikaz jednog sloga tabele Student_Info
Konkretan slog može biti pronađen brzo ako važna polja obilježimo kao ključeve. Vaš zadatak sastoji se u slijedećem: treba da definišete polja koja će biti korištena da se mogu pratiti podaci o studentima na vašem fakulteta. U to treba da uključite slijedećih sedam polja: - ime - prezime - ime oca - grad - adresa - broj telefona - e-mail adresa - datum rođenja - medicinske informacije. Kliknite u sekciju "Table" u gornjem prozoru, a zatim kliknite na "Create Table in Design View" da biste kreirali vašu tabelu. Ugledaćete slijedeći prozor:
48
Slika 60. Dizajnerski prikaz tabele
Gornja tabela omogućuje vam da definišete šest polja koja ćete koristiti za prikupljanje informacija o studentima. Na primjer, u prvi red, u koloni Field Name, trebali biste kucati „Prezime“. U drugoj koloni možete da izaberete jedan od tipova podataka: text, memo, number, date/time, currency, autonumber, yes/no, OLE object, hyperlink i lookup wizard. Za prvo polje koristite tip podatka "text". Ovaj tip se uvijek postavlja kao podrazumijevajući dok ga ne promijenite. Da biste izabrali neki drugi tip, kliknite u ćeliju Data Type i iz padajućeg menija koji se pojavi izaberite odgovarajući tip. Treća kolona "Description" u gornjem prozoru je opciona. Ona se može koristiti da se obezbijede neke dodatne informacije o polju koje hoćete da uključite. Struktura tabele se obično zadaje u obliku kao što je prikazano dole. Field Name Data Type Description ID_kontakta Autonumber Ime Text Prezime Text Telefon Number Telefonski broj (kućni, na poslu ili mob) Grad Text Adresa Text e - mail Text fax Number Broj faxa Tabelarni prikaz 2. Oblik zadavanja strukture tabele
Zatim, trebaćete da postavite primarni ključ za bazu podataka. To je polje čija vrijednost jedinstveno identifikuje svaki slog u tabeli. S obzirom da je to baza podataka o informacijama o studentima, postavite da polje „Prezime“ bude primarni ključ. Da biste to uradili postupite na slijedeći način: - otidite u meni "Edit" - izaberite opciju "Primary Key". Ugledaćete simbol ključa koji će se pojaviti lijevo od imena polja koje ste izabrali.
49
Slika 61: Opcije izbora uključenja primarnog ključa
Definišite primarni ključ za vašu tabelu - kliknite mišem na sivu kućicu lijevo od naziva polja Id_kontakta - označiće se cijeli red - kliknite na ikonu Primary key koja se nalazi na alatnoj traci aplikacije Accessa ili izaberite opciju menija Edit → Primary Key. Unesite šest preostalih polja koje smo vam naveli i bilo koje još koje biste htjeli uključiti. Promijenite tip podatka prema zahtjevu polja. Na primjer, za polje za datum rođenja koristićete tip podatka "date/time", a za polje za email adresu koristićete tip podatka "hyperlink". Napominjemo da kada unosite podatak u polje za e-mail vi morate neposredno ispred adrese da unesete "mailto:" da bi to program prepoznao kao neki e-mail hiperlink i otvorio vaš program za e-mail. Pri tome, pazite da između tog teksta i e-mail adrese ne bude prazan znak (blank). Kada biste u to polje, na primjer, ukucali samo "
[email protected]", tada bi to program vidio kao adresu web stranice i kada biste kliknuli na nju taj link ne bi propisno radio. Ako ste kreirali i definisali sva polja za vašu bazu podataka, onda uradite slijedeće: - Zatvorite prozor "Table1". - Pojaviće se padajući meni koji će vas pitati da li želite da sačuvate promjene kod kreiranja tabele Table 1. Kliknite na Yes. - Zatim ćete ugledati pop-up prozor "Save As". Promijenite ime tabele da bi ono ukazivalo (asociralo) na sadržaj tabele. Ja sam, na primjer, tu tabelu nazvao "Tab_kontakti."
Slika 62. Dijalog za spremanje tabele -
Ako ste unijeli novo ime, kliknite na dugme OK. Tabela koju ste upravo kreirali, pod novi imenom, trebala bi da se pojavi u sekciji Table u glavnom prozoru baze podataka.
50
Zadatak 2: Kreirajte na svom računaru bazu podataka koja će imati slijedeće tabele: Studenti, Ispiti i Predmeti i u svaku od njih unesite odgovarajuće podatke tako da imaju izgled sličan datom na slici dole.
11.3. Određivanje svojstava polja tabele Kako smo već vidjeli, svaka tabela sadrži određeni broj kolona koje smo nazvali polja. Tabele obično sadrže više polja. Svako polje ima jedinstvena svojstva (Field Properties). U prethodnom primjeru napomenuli smo da se tabela može sastojati, na primjer, od polja: Prezime, Ime, Ime oca, Telefonski broj, Datum rođenja itd. Neka polja sadrže karaktere-tekst, druga sadrže brojeve, treća datume itd. Svojstva polja definišu se prilikom kreiranja tabele. Ove opcije su prikazane u donjem dijelu okvira za dijalog u području Field Properties.
Slika 63 Tabela kartice svojstava polja tabele
51
Opcije formatiranja se mijenjaju zavisno od vrste polja i ima ih toliko mnogo da ćemo nabrojiti samo neke: Field Size - sadrži dužinu tekstualnog polja. Ukoliko je tip polja Numeric, možete da izaberete jednu od nabrojanih vrijednosti. Određuje najveći mogući broj znakova koje korisnik može unijeti u polje (može se dodijeliti samo polju vrste Text). Format - Padajući popis dostupnih formata za određenu vrstu polja. Određuje način na koji će vrijednost biti prikazana. Izaberite jedan od ponuđenih formata sa liste.Takođe, možete stvoriti i korisničke formate. Input Mask - omogućava da se prilikom unosa podataka koristi maska koja olakšava unos podataka. Za kreiranje maske možete koristiti Input Mask Wizard. Caption - tekst koji se prikazuje, umjesto naziva polja, na formama, izvještajima, itd. Na primjer, ako se neko polje tabele zove 'ID', a u svojstvu Caption je upisano 'Identifikacioni broj', onda će u izvršnom modu (u datasheet prikazu) biti naziv polja 'Identifikacioni broj', a ne 'ID'. Decimal Places - Za numerička polja (polja vrste Number) možete podesiti broj decimalnih mjesta koja će se prikazati. Default Value - Određuje vrijednost koju polje dobija automatski prilikom kreiranja novog sloga. Korisnik kasnije može da promijeni vrijednost polja. Ako će polje najčešće sadržavati određenu vrijednost (na primjer, za sve zaposlene isti pozivni broj grada), unestite vrijednost uz ovu opciju i uštedićete na vremenu. Vrijednost unesena uz pomoć ove opcije, uvijek se prikazuje u novom slogu i možete je izbrisati i ukucati novu vrijednost kada ona ne odgovara sadržaju. Required - Sadrži pravila i ograničenja koja moraju da se poštuju prilikom unosa podataka. Na primjer, ako unosite količinu artikala koji su primljeni u magacin, logično je da vrijednosti moraju da budu veće od nule. Odaberite Yes ili No kako biste Accessu rekli kada ovo polje može ostati prazno kod unošenja novog sloga. Ovo polje obavezno mora da sadrži vrijednost. Nije moguće kreiranje novog sloga ako je ovo polje prazno. Validation Text - sadrži poruku koja će se prikazati korisniku prilikom unosa podataka ako naruši pravila definisana u polju. Na primjer: "Broj artikala mora biti veći od nule!'. Allow Zero Length - primjenljivo za Text i Memo polja. Omogućava da sadržaj polja bude Space karakter(i). Indexed - kao što je opisano, određuje da li će indeks biti kreiran nad tim poljem i na koji način. Unicode Compression - omogućava da polja koja su tipa Text, Memo i Hyperlink zauzimaju manje memorijskog prostora. Svojstava ima previše, njihov broj i vrsta parametara polja zavise od tipa podatka koji selektovano polje sadrži, tako da ih nećemo sve
52
objašnjavati. Uočite da klikom na pojedino svojstvo u desnom dijelu okna dobivate njegov kratki opis. Na primjer, tip polja 'Text' ima jedne parametre, a tip 'Number' druge. Na narednoj slici prikazani su parametri za tip polja 'Text':
Slika 64. Lista svojstava za polje tekstualnog tipa
Ako kliknete lijevim tasterom miša na desnu ivicu polja koje sadrži vrijednost parametra, desiće se jedna od slijedeće tri varijante: 1. Pojaviće se ikona za padajuću listu , koja označava da postoji lista sa koje možete da izaberete vrijednost parametra:
Slika 65. Izbor iz padajuće liste vrijednosti parametra Required
2. Pojaviće se ikona sa tri tačkice , koja startuje Expression Builder koji možete da iskoristite za unos vrijednosti parametra. Expression Builder (editor za unošenje matematskih i logičkih izraza) će
kasnije biti detaljnije objašnjen.
53
Slika 66. Dugme za poziv Expression Builder-a
3. Neće se pojaviti ikona, parametre morate da ukucate korišćenjem tastature.
Slika 67. Primjer slučaja unošenja parametra sa tastature
Vrlo često ćete u neku tabelu trebati unositi podatke datumskog tipa (Date/Time). Postavlja se pitanje kako će osoba koja unosi podatke (vi ili neko drugi) znati kakvog formata treba biti datum kojeg unosi. U takvim slučajevima nam pomaže tzv. ulazna maska (input mask). Ulazna maska predstavlja uzorak koji nas vodi prilikom unosa podataka i sprječava moguće pogreške bez stvaranja nekih posebnih pravila provjere korisničkog unosa. U ovom slučaju ulaznu masku ćemo kreirati korištenjem čarobnjaka. Izaberite u dizajn modu neko polje datumskog tipa, kliknite desnim tasterom miša i U kartici General kliknite na svojstvo Input Mask i potom na dugme koje će se pojaviti pored tog svojstva.
Slika 68. Kartica (tabulator) General okvira Field Properties
Slika 69. Dugme za otvaranje dijalog Input Mask
54
Pojaviće vam se dijalog čarobnjaka za stvaranje maske za unošenje podataka.
Slika 70. Okvir dijaloga čarobnjaka za izbor maske za unos datumskih podataka
Izaberite Short Date i potom kliknite na dugme Edit List. Zatim popunite otvoreni dijalog kao na slici ispod.
Slika 71. Dijalog za definisanje korisničkih ulaznih maski
Nakon klika na dugme Close u listi čarobnjaka bi vam se trebala pojaviti ulazna maska koju ste upravo kreirali.
Slika 72. Izgled definisane ulazne maske
Izaberite tu masku i kliknite na Finish.
11.4. Povezivanja tabela u bazi podataka Namjena ključeva (primarni i spoljni) je da podaci iz više tabela mogu da se kombinuju, bez potrebe da se podaci ponavljaju u svim tabelama – u ovome se sastoji snaga relacionih baza podataka. Da bismo vam mogli
55
predočiti na šta se odnosi pojam relacije poslužićemo se jednim primjerom. Rekli smo da su podaci u relacionim bazama podataka sačuvani u vidu tabela. Neka nam se u jednoj tabeli nalaze podaci o narudžbama, a u drugoj podaci o kupcima (naziv, adresa, matični broj itd). Umjesto da se uz svaku narudžbu ponovno navode svi podaci o nekom kupcu, ta informacija se dobije uključivanjem samo jednog polja kojeg možemo nazvati identifikacioni broj kupca. To polje je jedinstveno za svakog kupca tako da ne može doći do zamjene informacija. Ono će se nalaziti u tabeli kupci i u tabeli narudžbe. Na ovaj način izbjegavamo redundanciju podataka. Tako, na primjer, možete da pronađete imena onih koji su kupili stolicu bez moranja da navedete njihova puna imena, na primjer, u tabeli Antikviteti ili adresu i broj telefona u tabeli Kupci. To ime možete da saznate povezujući one koji su kupili stolicu sa imenima, na primjer, u tabeli VlasniciAntikviteta, preko kolone IDVlasnika, koja uspostavlja odnos između podataka u ovim dvima tabelama. Ili, drugi primjer, zamislite da imate listu kontakata koja sadrži popis od recimo 300 osoba i da svaka od njih ima po tri telefona (kućni, posao i mob) i da vam zatreba lista samo brojeva mobilnih telefona. Nameće se zaključak da bi puno elegantnije rješenje bilo kada bi podatke podijelili u dvije tabele. Jedna tabela bi sadržavala telefonske brojeve, a druga sve ostale podatke o osobama. Još ih je potrebno povezati po nekom ključu i problem je riješen. Došli smo do relacione baze podataka. Imamo dvije tabele i jednu relaciju. Baza podataka može (često i treba) da sadrži više tabela koje se preko relacija (Relationship) međusobno povezuju. Na primjer, u bazi podataka Biblioteke-čitaonice članove čitaonice ćemo držati u jednoj tabeli, knjige u drugoj, a iznajmljivanja/vraćanja knjiga u trećoj. Veze se uspostavljaju samo među istovjetnim podacima, a najčešće između šifara. Veza (Relationship) je po definiciji povezivanje, a u kontekstu relacione baze podataka je povezivanje dvije tabele preko vrijednosti primarnog ključa. To znači da je vrijednost primarnog ključa sačuvana (sadržana) u obadvije tabele. Povezane tabele sadrže iste vrijednosti s jedne strane (u jednoj tabeli) u obliku primarnog ključa i s druge strane (u drugoj tabeli) u obliku spoljnjeg (stranog, vanjskog, sekundarnog) ključa. Spoljni ključ - Pored primarnog ključa, tabela može da ima i spoljni ključ. Ponekad se dešava da jedna tabela ne može da egzistirati bez druge, na primjer stavka fakture ne može da postoji bez fakture. Recimo da tabela Fakture ima ovu šemu: Fakture (BrojFakture, Datum, Partner). BrojFakture je primarni ključ jer određuje jedinstvenost sloga. Faktura ima svoje stavke, pa iz toga proizilazi da tabela FaktureStavke ima ovakav oblik (šemu): FaktureStavke (BrojFakture, BrojStavke, Artikal, JedinicaMjere, Kolicina).
56
Kako stavka bilo koje fakture ne može da postoji bez fakture kojoj pripada, tako ni tabela FaktureStavke ne može da egzistira bez relacije Fakture. Ove dvije relacije povezane su preko ključa BrojFakture koji je zajednički za obadvije tabele. Na osnovu njega se zna koja stavka pripada kojoj fakturi. Zato se kaže da, u ovom slučaju, relacija FaktureStavke nasljeđuje atribut BrojFakture od relacije Fakture i on je za relaciju BrojFakture spoljni ključ. Spoljni ključ (Foreign key) je polje koje jednoznačno određuje slog iz druge tabele. U jednoj tabeli možemo imati više stranih ključeva. Drugim riječima preko stranih ključeva ostvarujemo veze između tabela u relacionim bazama podataka.
Zadatak 3: Kreirajte tabelu KUPCI(Naziv, Lice, Adresa, Mjesto, Telefon). Složen ključ čine polja Naziv i Mjesto, jer se u istom mjestu (gradu) ne smije pojaviti kupac sa istim nazivom firme, ali se dozvoljava da ista firma postoji sa istim imenom u više mjesta. Relacije postavljamo zato da bismo se mogli efikasno koristiti tabelama tj. podacima u njima. Relacije su zapravo način govorenja Microsoft Accessu kako da ponovno spoji podatke iz tabela. Tek nakon što smo postavili relacije možemo kreirati upite, forme i izvještaje za prikazivanje podataka iz više tabela odjedanput. Da bismo mogli npr. u jednoj formi prikazati podatke iz više tabela koje govore o istom predmetu, sva polja koja govore o istom predmetu moraju biti koordinisana. Ta koordinacija se postiže pomoću relacija. Tabela radnici ID_radni k
Im e
Prezim e
Datum_ r
Norm a
Stimulacij a
Zaposle n
Strani ključ
Tabela preduzeca Preduzece
Sjediste
Adresa
e-mail
Z_racun
Primarni ključ
Slika 73: Veza primarnog i stranog ključa
Povezivanjem tabela dobivamo mogućnost izdvajanja podataka iz dvije ili više tabela tako što, koristeći „upit“ (query), prikazujemo slogove koji su sastavljeni od polja iz povezanih tabela, a fizički se ne moraju ponovno snimati. Ovo predstavlja glavnu snagu relacionih baza podataka.
57
Kod definisanja tabela primarne ključeve povezujemo sa stranim ključevima i na taj način Accessu objašnjavamo način združivanja tabela s potrebnim podacima. Povezane tabele sadrže iste vrijednosti, u jednoj u obliku primarnog ključa, a u drugoj u obliku stranog ključa, što znači da polja koja sadrže ključeve moraju biti istog tipa. Postoje pravila koja osiguravaju pravilno unošenje, ažuriranje i brisanje ovih vrijednosti čime štitimo integritet podataka u bazi. Jedno od osnovnih pravila zaštite integriteta podataka u bazi je pravilo preferencijalnog integriteta. Ono je vrlo jednostavno i kaže: spoljni ključ u povezanoj tabeli mora odgovarati primarnom ključu osnovne tabele. Kada u Accessu aktiviramo održavanje relacionog integriteta, to znači da će on voditi računa o integritetu podataka u bazi pa neće dozvoliti, na primjer, da lice (iz tabele radnici) bude zaposleno (povezano) s nepostojećim preduzećem (iz tabele preduzeća). Na primjer, u našem budućem primjeru, šifru čitalaca u tabeli
čitaoci_osnovni_podaci i šifru čitalaca u tabeli izdavanje_knjiga valja međusobno povezati relacijom jedan prema više - jedan čitalac može uzeti više knjiga, ali se jedna ista knjiga ne može nalaziti kod više čitalaca istovremeno). Na ovaj način se izbjegava višestruki unos podataka za čitaoca pri svakoj njegovoj posjeti biblioteci, a mogućnost grešaka pri unosu adrese ili naziva čitaoca je praktično anulirana. Povezivanjem tabela dobivamo mogućnost izdvajanja podataka iz dvije ili više tabela na način da, koristeći „upit“ (query), prikazujemo slogove koji su sastavljeni od polja iz povezanih tabela, a fizički se ne moraju ponovo unositi. Upravo ovo predstavlja osnovnu snagu relacionih baza podataka.
11.4.1 Tipovi relacija Relacije između tabela određuje polje iskorišteno kao primarni ključ jedne tabele i strani ključ druge tabele. Odnosi između raznih objekata u bazi predstavljeni su relacijama (Relationship). Postoje četiri tipa relacija između tabela, a to su: - jedan prema jedan (one-to-one) 1:1 - jedan prema više (one-to-many) 1:M - više prema jedan (many to one) M:1, i - više prema više (many-to-many) M:M. Najčešća veza je 1:M (jedan fakultet-više studenata, jedno preduzeće-više zaposlenih), kod koje jednoznačna vrijedost primarnog ključa može povezivati jedan, više ili čak ni jedan slog u povezanoj tabeli. Jednom slogu iz jedne tabele pripada više slogova u drugoj tabeli, ali jednom slogu iz te druge tabele pripada tačno jedan iz prve (npr. jedna osoba može imati više telefona, ali svaki broj telefona je pridružen samo jednoj osobi) – ovo je najčešći tip veze koji susrećemo.
58
Veza 1:1 (jedno preduzeće-jedan zaposleni) nije česta. Kod ove veze jednoznačna vrijednost primarnog ključa može povezivati samo jedan spoljni ključ. Da bismo dobili ovu vezu, moramo postaviti jedinstveni indeks (index) na spoljni ključ. To je relacija koja jednom slogu iz jedne tabele pridružuje tačno jedan slog iz druge tabele i obrnuto (npr. svakom studentu ćemo pridružiti samo jedan broj – matični broj studenta); ovakav tip veza je vrlo rijedak, jer sve takve veze možete staviti u jednu tabelu. Ovo je najmanje korištena relacija. U njoj svaki red iz Tabele A može imati samo jedan odgovarajući red u Tabeli B. Koristimo ih kada želimo podijeliti velike tabele na dva dijela ili ako želimo pratiti nečije sudjelovanje u nekom događaju gdje svako može vršiti samo jednu funkciju. Relacija više prema jedan (M:1) dozvoljava da u novoj tabeli imate više od jedne vrijednosti u polju ključa koja odgovara jednoj vrijednosti u povezanom polju u postojećoj tabeli. U ovom slučaju su dopuštene duple vrijednosti polja ključa. MS Access ne dozvoljava direktno definisanje relacije M:M (na primjer: više radnika radi u više preduzeća, više profesora predaje na više fakulteta, itd.). Ovo je slučaj kada je slogu iz jedne tabele pridruženo više slogova iz druge tabele i obrnuto. Ovaj tip veze je moguć samo kada se definiše treća tabela tzv. spojna tabela čiji se primarni ključ sastoji od dva polja - stranih ključeva prve i druge tabele (na primjer jedna narudžba može imati više proizvoda, a istovremeno svaki proizvod se može pojaviti na više narudžbi). Ne mogu da se izraze kao jednostavne relacije između dva sudjelujuća entiteta. Njih ostvarujete tako što pravite tabelu koja ima relacije tipa više-prema-jedan sa dvije bazne tabele. Ovo je slučaj kada red iz Tabele A može imati više odgovarajućih redova u Tabeli B. Ovakav tip relacija je jedino moguć stvaranjem treće tabele tzv. Tabela ukrštanja u kojoj se primarni ključ (Primary key) sastoji od dva polja koja su strani ključevi (foreign key-evi) iz obiju tabela. Ona je zapravo sačinjena od dvije one-to-many relacije u trećoj tabeli. Access zahtijeva da dva polja koja učestvuju u relaciji imaju potpuno isti tip podatka. U slučaju tipa polja podataka Number, svojstvo Field Size dva polja mora biti jednako. Na primjer, ne može se praviti relacija između polja Autonumber (koje koristi tip podatka Long Integer) i polje koje sadrži podatak tipa Byte, Integer, Single ili Currency. S druge strane, Access omogućava da povežete dvije tabele preko polja teksta različite dužine, ali to ne treba koristiti kao pravilo, jer to može da dovede do čudnog ponašanja kada napravite upite. Po pravilu, relacije treba da koriste polja iste dužine.
11.4.2 Postavljanje relacija Access koristi grafički prozor Relationships za prikazivanje i pravljenje relacija između tabela u bazi podataka.
59
Da biste mogli postaviti relacije morate isključiti sve tabele, upite, forme i ostale komponente Accessa, ako postoje. Zatim, trebate aktivirati prozor Database, ako taj prozor nije aktivan (vidi se po boji linije za naslov), tako što ćete kliknuti na prozor Database, pa kliknuti na dugme Show Database Window na liniji alata, ili izabrati iz menija Windows opciju 1 Database. Zatim, na alatnoj traci stisnete Relationships dugme ili u meniju Tools izaberete opciju Relationships... To otvara prozor relacija na kojem izabirete tabele koje ćete stavljati u relacije. Tabele odabirete tako da stisnete desni taster miša bilo gdje u novootvorenom prozoru i odaberete Show table opciju . Tu dvoklikom na ime tabele stavljate tu tabelu u prozor odakle je možete dalje vezati za druge tabele. Nakon što ste odabrali sve tabele koje ćete staviti u relacije morate postaviti i same relacije. Njih postavljate tako da u Tabeli A označite Primary key polje (ono zatamnjeno) i dok držite taster miša prevlačite ga na polje u Tabeli B koje ima isto ime ili iste podatke tj. strani ključ. Nakon ovog postupka otvori vam se prozor Edit Relationships u kojem odabirete polja iz dvije tabele koja će biti u relaciji. Ukoliko je polje iz Tabele A primarni ključ, ili Indeks, i oba polja imaju isti tip podataka, uključujete Referential Integrety (sistem pravila koja osiguravaju da su relacije između redova valjane i da slučajno ne obrišete ili promijenite povezane podatke). Kliknete na taster Create i vaša relacija je postavljena. Sada kada su sve tabele konstruisane možete ih popuniti podacima. Za tu svrhu otvorite tabelu u Datasheet View-u i unosite podatke u tabelu. Na taj način bi vaša baza podataka bila gotova, ali da bi iz tih podataka mogli izvući valjane zaključke, zatim jednostavnije pregledati ili predstaviti podatke, morate kreirati upite, obrasce (forme) i izvještaje. O tome će više riječi biti kasnije.
Vježba 2: Definisanje polja primarnog ključa Primarni ključ je polje koje za svaki slog mora sadržavati jedinstveni unos. Najčešće je to neki identifikacioni broj (ID broj), jer ostala polja mogu sadržavati iste unose za više od jednog sloga (na primjer, dvije osobe mogu imati isto ime). Accessu morate reći koje polje želite upotrebiti kao primarni ključ, kako bi Access spriječio unošenje istih vrijednosti za više od jednog sloga u tom polju. Slijedite naredne korake kako biste podesili primarni ključ: 1. U prikazu Table Design odaberite polje koje želite za primarni ključ. 2. Odaberite Edit → Primary Key ili kliknite na dugme Primary Key na traci alata. Prikazuje se simbol ključa lijevo od imena polja, kao što je prikazano na slici 74.
60
Slika 74. Oznaka polja koje je primarni ključ
11.5. Obezbjeđivanje integriteta baze podataka Važna osobina Accessa u odnosu na druge programe za upravljanje bazom podataka je mogućnost automatskog očuvanja cjelovitosti baze podataka. Očuvanje cjelovitosti-integriteta baze podataka sprječava pravljenje „slogova siročića“ koji nemaju vezu sa primarnom tabelom. Isto tako, sprječava brisanje ili mijenjanje vrijednosti slogova u primarnoj tabeli od koje zavise povezani slogovi. Na primjer, ako je u nekom preduzeću neki radnik raskinuo radni odnos, ili je otpušten, i u (nekoj) tabeli Zaposleni njihovog informacionog sistema pokušate da izbrišete slogove za tog radnika, Access to neće dozvoliti. Pokazaće okvir sa porukom da prvo morate obrisati sve slogove koji su povezani sa slogom u primarnoj tabeli i tek onda možete da obrišete primarni slog. Integritet baze podataka sastoji se od dva elementa: 1. Integriteta entiteta i 2. Referencijalnog integriteta.
11.5.1 Integritet entiteta Integritet entiteta podrazumijeva da svaka vrijednost primarnog ključa mora biti jedinstvena na nivou cijele relacije. Osim toga, mora biti ispunjen uslov da ni jedna stavka u koloni primarnog ključa ne smije imati NULL vrijednost. Integritet entiteta zahtijeva da unutar jedne tabele svi primarni ključevi moraju da imaju jedinstvene vrijednosti. U Accessu su ugrađene dvije metode za obezbjeđivanje integriteta entiteta: - Polje ključa koristi tip podataka AutoNumber koji pravi jedinstvene vrijednosti na osnovu automatskog povećanja long cjelobrojne (long integer) vrijednosti. - Indeks na polju primarnog ključa sa svojstvom No Duplicates. Ako pokušate da unesete duplu vrijednost u polje ključa, Access javlja poruku o grešci.
11.5.2 Referencijalni integritet Referencijalni integritet odražava definisane relacije među tabelama kada se u njih dodaju ili se iz njih brišu slogovi. Referencijalni integritet zahtijeva strogo poštivanje jednog pravila: da svako polje stranog ključa u zavisnoj tabeli mora da odgovara polju primarnog ključa u primarnoj tabeli. Ovo pravilo nalaže da se spriječe slijedeće vrste transakcija:
61
-
-
Dodavanje sloga na strani “više” relacije „jedan-prema-više“, bez postojanja odgovarajućeg sloga na strani relacije „jedan“. Brisanje sloga na strani “jedan” relacije „jedan-prema-više“, bez da se prethodno obrišu svi odgovarajući slogovi na strani relacije “više”. Brisanje ili dodavanje sloga u tabeli koja je u relaciji tipa „jedanprema-jedan“ sa drugom tabelom, bez da se obrišu ili dodaju odgovarajući slogovi u povezanoj tabeli. Promjena vrijednosti polja primarnog ključa osnovne tabele od koga zavise slogovi u povezanoj tabeli. Promjena vrijednosti polja stranog ključa u relacionoj tabeli u vrijednost koja ne postoji u polju primarnog ključa osnovne tabele. Ovakav slog bi se u žargonu Accessa zvao slog siroče.
Stoga, radi održavanja referencijalnog integriteta baze podataka, projektant baze podataka treba, kadgod je to moguće, upotrebiti programske mogućnosti Accessovog Inner Join-a radi kaskadnog ažuriranja i kaskadnog brisanja slogova u bazi podataka. To se obavlja potvrđivanjem (čekiranjem) polja opcije Enforce Referential Integrity (primjena referencijalnog integriteta) u okviru za dijalog Relationships.
11.5.3 Postavljanje referencijalnog integriteta između dvije tabele Kada u prozoru sa relacijama (kao na slici dole) imate dvije ili više tabela, tada možete da definišete njihovu relaciju (ako ista već nije definisana) i referencijalni integritet. U našem primjeru, kao što vidite (slika 75), relacije su već definisane. Ako hoćete da provjerite integritet, kliknućete dva puta na relaciju, na primjer, između tabele Employees i Inventory Transactions.
Slika 75. Prozor relacija tabela baze podataka
Otvoriće se dijalog Edit Relationships, kao na slici 76, u kojem vidite da je obilježeno (čekirano) polje za uključivanje referencijalnog integriteta Enforce Referential Integrity.
62
Slika 76. Dijalog Edit Relationships
Ako, međutim, relacije između tabela nisu napravljene, treba ih napraviti, najjednostavnije je metodom prevlačenja mišem polja koja se vežu iz jedne u drugu tabelu, a nakon otpuštanja miša pojaviće se dijalog sličan kao na slici 76, u kojem trebate potvrditi polje za uključivanje referencijalnog integriteta. Ako želite da uključite još i kaskadno ažuriranje i kaskadno brisanje, tj. da si obezbijedite da se slogovi u tabelama koji se poklapaju po ključu automatski ažuriraju ili brišu kada se promijeni vrijednost primarnog ključa, potvrdićete izbor tih opcija čekiranjem polja Cascade Update Related Fields i Cascade Delete Related Records. Kaskadno ažuriranje povezanih polja-Cascade Update Related Fields. Integritet kaskadnog ažuriranja treba uključiti u situaciji kada je projektom baze korisniku omogućeno ažuriranje izvornog podatka. U bazi Kadrovi, na primjer, ova situacija se može nametnuti kada polje RadnikID u tabeli Radnici ne bi bilo tipa Auto Number. Vrijednost u polju RadnikID je izvorni (referentni) za mnoge tabele u bazi, pa ako bi se njegova vrijednost mijenjala, trebalo bi, na isti način, ispraviti (ažurirati-update) i sva polja koja imaju tu vrijednost. Dakle, ako bi se RadnikID u tabeli Radnici ispravio sa 45 na 445, to bi trebalo da se uradi i u tabelama Plate i KreditnaZaduzenja i jos drugim, ako je baza velika. Kako je broj tabela u praksi znatno veći, bolje je ovaj posao prepustiti kaskadnom ažuriranju Access-a. Ako se kaskadno ažuriranje ne obavi u potpunosti i na pravi način, bilo automatski ili ručno, doći će do situacije prividnog nepostojanja podataka ili do njihovog pojavljivanja na mjestima gdje ih ni slučajno ne bi mogli očekivati. Ovo nekontrolisano „pojavljivanje“ podataka na pogrešnom mjestu smatra se najvećom mogućom greškom u održavanju baza podataka. Kaskadno brisanje povezanih slogova-Cascade Delete Related Records. Integritet kaskadnog brisanja se zahtijeva u slučaju da se izvorni podatak ne ispravlja već briše, jer u slučaju da se izvorni podatak briše, moraju se brisati i slogovi u ostalim tabelama čija polja se referenciraju na brisano polje. Dakle, poslije brisanja radnika sa podatkom, na primjer, RadnikID=4, iz tabele Radnici, moraju se brisati i slogovi iz tabele Plate i kreditnaZaduzenja i drugim u kojima je RadnikID=4. U suprotnom bi došlo da situacije da polja i slogovi sa referencom ostanu bez izvora, a time i neupotrebljivi.
63
Ako dvije tabele povežete bez uključivanja referencijalnog integriteta, linija koja pretstavlja relaciju između njih biće u prozoru relacija iscrtana tanjom linijom od one kada je integritet uključen i neće biti oznake 1 na strani „jedan“ i oznake ∞ na strani više, kao što je to prikazano na slici 77.
. Slika 77. Izgled linija povezanih tabela sa i bez uključenog referencijalnog integriteta
Trebamo istaći da se uključivanje referencijalnog integriteta i kaskadnog ažuriranja i/ili brisanja odnosi samo na upite i da se to ni na koji način ne može povezati sa ostalim objektima baze podataka.
Vježba 3: Pravljenje tabela manuelno - bez pomoći čarobnjaka U ovoj vježbi ćete naučiti kako da napravite tabelu u pogledu (prikazu) “Design View”. To je pogled u kojem jse definisana struktura tabele. To obuhvata kreiranje imena polja (field names) i postavljanje (setovanje) tipova podataka i osobina. U tom pogledu korisnik mora postaviti dvije stvari: Ime polja (Field Name) i tip podatka koje će to polje sadržavati (Data Type. Opisi polja (Descriptions) su opcioni tj. možete ih popunjavati, a ne morate, po vašem je izboru. Tu su još opšte osobine (General Properties) koje su za svaki tip podatka opcione.
Slika 78. Dizajnerski prikaz tabele i kartice General svojstava tekstualnog polja
Ime polja (Field Name): Polje Field Name se pojavljuje na vrhu kolone. Ono se može sastojati od slova, brojeva i nekih specijalnih znakova, kao što su znak „number“ # ili znak donje crte-underscore _. Imena polja mogu biti duga do 64 znaka.
64
Opis (Description): Polje Description popunjava se opciono, po volji korisnika. Ako unesete opis polja, tada će se, prilikom unošenja podatka, tekst opisa polja pojaviti u donjem lijevom uglu ekrana. Tip podatka (Data Type): Polje Data Type određuje koji tip podatka se može biti unijet u polje (slova, brojevi, datumi, itd.) i šta se može raditi sa tim poljem (linkovanje, sortiranje, izračunavanja). Najčešće korišteni tipovi podataka su: Text, Memo, Number, Currency, Date/Time, Autonumber, Yes/No, OLE Object, Hyperlink i Lookup polje: Text: Tekstualno polje može da sadrži bilo koji tip znaka sa tastature. Maksimalno je dozvoljeno 255 znakova. Tekstualna polja mogu se pretraživati, sortirati i linkovati. Sa brojevima unesenim u tekstualna polja ne mogu se vršiti računske operacije. Kandidati za tekstualna polja su: imena, adrese, zip kodovi, telefonski brojevi, nazivi proizvoda itd. Memo: Polje tipa Memo tip može da sadrži bilo koji znak otkucan sa tastature. Maksimalno dozvoljeno veličina memo polja je 65.535 znakova. Memo polja se mogu pretraživati ali se ne mogu sortirati, linkovati niti koristiti za izračunavanja. Memo polja treba da se koriste samo za neke komentare, napomene opise i slično. Number: Polja tipa Number mogu sadržavati samo brojeve i oni se mogu koristiti za izračunavanja. Maksimalna veličina numeričkog polja zavisi od toga šta ste izabrali za Field Size u sekciji Properties u dizajn pogledu tabele. Currency: Polje tipa Currency može da sadrži samo brojeve. Brojevi u polju tog tipa mogu se koristiti za izračunavanja. Polje Currency može da sadrži do 15 cifara lijevo od decimalne tačke i 4 cifre desno. Date/Time: Polja tipa Date/Time mogu sadržavati datume ili vrijeme. Datumi i vrijeme mogu se koristiti za izračunavanja. Primjer tog tipa polja su: datum angažovanja, datum rođenja, datum narudžbe, vrijeme ulaska, itd. Autonumber: Polja tipa Autonumber su polja za brojanje koja se korisniku automatski unose u polje. Trebate znati da kad neki slog iz tabele obrišete, Access ne vrši e renumeracija i taj broj polja se više neće pojavljivati. Yes/No: Polja tipa Yes/No nude jednu od dvije mogućnosti. Primjeri ovog tipa polja su: Pacijent je alergičan na penicilin (yes or no) i Trenutno je zaposlen (yes or no). OLE Object: Polja OLE Object služe za čuvanje nestandardnih elemenata kao što su Excelove tabele, slike, muzika i tonski zapisi. Tabela može sadržavati te objekte ali se ti objekti mogu samo ispisivati u obliku obrazaca ili izvještaja.
65
Hyperlink: Hyperlink polja sadrže web adrese. Ako se ta adresa aktivira startuje se web brauzer koji korisnika odvodi na navedenu adresu. Lookup Wizard: Ovo, u stvari, nije tip polja nego metoda kreiranja padajuće liste u polju tabele. Lookup Wizard-om se kreiraju polja koja omogućavaju izbor vrijednosti iz druge tabele ili iz (ograničene) liste vrijednosti upotrebom ComboBox ili ListBox kontrole. Izborom ove stavke startuje se Lookup Wizard, kojim se definiše vrsta izvora, način popunjavanja i broj polja. U zavisnosti od izbora tipa podatka u donjem panelu Design View prozora prikazuje se dodatna lista svojstava svrstanih u dvije grupe (kartice): General i Lookup. General kartica sadrži listu opštih svojstava polja npr.: Field Size veličina polja; DecimalPlaces - određuje broj cifara iza decimalne tačke, Format definiše poseban izgled tekstualnog polja, InputMask definiše masku za unos podataka, Caption po potrebi definiše naslov polja. Default Value predstavlja vrijednost koja će se automatski upisati u polje pri popunjavanju novog sloga. Validation Rule je izraz koji definiše zahtjeve koje mora da ispuni unijeti podatak. Obično su uslovi vezani za brojevnu vrijednost i opseg kome dati podatak pripada, a može se riješiti i pitanje da li je podatak uopšte unijet, jer ako nije unijet ima problematičnu "vrijednost" Null. Validation Text je tekst poruke koja se pojavljuje ukoliko uslov Validation Rule nije zadovoljen. Kreiranjem potpune validacije izbjegavaju se komentari, koje korisnik dobija na engleskom. Reguired određuje da li je u tom polju unos podatka obavezan ili ne. Allow Zero Length je svojstvo specifično za tekstualne podatke i određuje da li je dozvoljeno postojanje stringa nulte dužine ("") u polju. Indexed je svojstvo kojim se uključuje indeksiranje na određeno polje u cilju izbjegavanja dupliciranja podataka i bržeg pretraživanja ili sortiranja po specificiranom polju. LOOKUP kartica sadrži svojstva u slučaju da se podatak u tekućem polju bira iz liste vrijednosti. Sve započinje izborom tipa kontrole koja prikazuje listu raspoloživih vrijednosti, tako da u zavisnosti od vrste podataka koje polje čuva može biti Text Box (nije Lookup polje), ComboBox, i List Box (standardno), kao i CheckBox (za Yes/No tip podataka). MS Access omogućava da se ovdje detaljnije odredi izvor podataka za odnosno polje, mada je Lookup Wizard, ipak, za početak jednostavniji. Da biste bez pomoći čarobnjaka napravili tabelu slijedite naredne korake: 1. U prozoru Database dvostruko kliknite na opciju Create table in Design view. Ostale metode: Umjesto 1. Koraka možete odabrati Insert →Table ili kliknuti na dugme New i na taj način otvoriti okvir za dijalog New Table. U otvorenom okviru za dijalog odaberite Design View i kliknite OK. 2. Otvara se prikaz Table u dizajn pogledu (Slika 79).
66
Slika 79. U prikazu Table Design možete kontrolisati cijeli proces pravljenja tabele.
Ekran koji se pojavi nakon izbora opcije pravljenja tabele u Design View, koja služi za definisanje strukture tabele, sastoji se od dva panela (kao na slici 79): - panela za polja – namijenjen unosu imena (Field Name) i tipova podataka (Data Type) pojedinačnih polja i (opciono) teksta koji dodatno opisuje polje, i - panela za svojstva polja – namijenjen definisanju svojstava (Field Properties) za svako pojedinačno polje. 3. Unesite ime polja u prvi prazan red kolone Field Name. Potom pritisnite taster Tab na tastaturi kako biste se pomaknuli u kolonu Data Type. 4. Kada se pomjerite u kolonu Data Type, prikazuje se strelica padajuće liste (popisa)., kao na slici 80. Otvorite padajuću listu Data Type i odaberite vrstu polja. Ako ne izvršite izbor, polje će po osnovnoj postavci (default) biti tekstualno polje (Text).
Slika 80. Padajuća lista za izbor tipa podatka u polju
67
Treba da napomenemo da kod dodjeljivanja imena polja trebate poštivati određena pravila. Ime polja u Accessu može biti dugačko do 64 znaka, može sadržavati razmake i bilo koje simbole izuzev: tačke (.), oznake uskličnika (!), simbola apostrofa-naglaska (`) ili uglatih zagrada ([ ]). Vjerovatno ćete željeti da upotrijebite što kraća i lakše pamtljiva imena. Takođe, nije loše izbjegavati oznake poput $, % ili #, jer svaki od tih simbola ima određeno značenje u Accessovom kódu.
Slika 81. Područje Field Properties se mijenja zavisno od vrste polja.
5. Ako imate više polja za unos, ponavljajte korake 3 - 6. 6. Kliknite na dugme Close ( ) prozora Table Design. 7. Kada ste upitani da li želite da sačuvate promjene za tabelu, kliknite Yes. Prikazuje se okvir za dijalog Save As.
Slika 82. Dijalog za unošenje imena tabele
8. U okvir za tekst Table Name: ukucajte ime tabele i zatim kliknite OK. Prelaz iz jedne vrste prikaza u drugi prikaz. Nakon što ste unijeli prvo polje možete preći u prikaz Datasheet kako biste vidjeli izgled tabele. Odaberite View → Datasheet View, ili kliknite na dugme Datasheet View na alatnoj traci. Prije nego što pređete u prikaz Datasheet možda ćete biti upitani da li želite da sačuvate svoj rad. Ako se pitanje pojavi, kliknite Yes, unesite ime i kliknite OK. Nema primarnog ključa. Kada zatvorite prikaz Table Design, možda ćete vidjeti poruku da primarni ključ nije dodijeljen.
68
Slika 83. Dijalog upozorenja da nije dodijeljen primarni ključ
U tom slučaju treba da se odredite, ako želite da Access sam dodijeli primarni ključ i da prihvatite ponudu polja primarnog ključa koju vam sugeriše Access, ili da ga definišite vi sami, potvrdite to klikom na dugme Yes. Ako, međutim, ne želite da u ovoj fazi definišete primarni ključ, onda kliknite na dugme No ili na dugme Cancel. U principu, tabela ne mora da ima primarni ključ, ali i sam Access ga preporučuje, jer ćete ga morati imati u slučaju kada budete vršili povezivanje (dovođenje u relaciju) te tabele sa ostalim tabelama u bazi podataka.
11.6. Vrste i formati podataka Svako polje u tabeli mora imati vrstu polja odnosno tip podatka kako bi Access znao kako da se odnosi prema sadržaju polja. Evo popisa tipova podataka između kojih možete birati: Text Običan tekst koji može uključivati brojeve, slova i simbole. Polje Text može sadržavati do 255 znakova ili onoliko koliko je zadato u parametru Field Length. Memo Običan tekst kojem niste odredili dužinu, pa stoga praktično nije ograničen u broju znakova (64000 znakova). Number Običan broj (ne tekst, valuta ili datum). Sadrži broj, čiji opseg vrijednosti zavisi od vrijednosti koja je zadata u polju Field Length. Access ne dopušta unos bilo kojeg teksta. Date/Time Datum ili vrijeme. Currency Sadrži numeričku vrijednost valute. Opseg vrijednosti sadrži negativne i pozitivne brojeve. Verzija MS Accesss 2000 (i više verzije) ima mogućnost da podesite tip polja da bude Euro, $, KM, dinar, kuna itd. AutoNumber Access automatski popunjava slijedne (uzastopne) brojeve za svaki slog. AutoNumber je broj (Long Integer) koji se generiše automatski. Postoje dva načina generisanja: - Inkrementiranjem (najveća vrijednost + 1) - Generisanjem slučajnih brojeva. MS Access obezbjeđuje da vrijednosti u polju koje je tipa AutoNumber budu jedinstvene. Yes/No Odgovor na pitanje. Može sadržavati jednu od dvije vrijednosti: Yes ili No, True ili False ili On ili Off.
69
OLE Object Veza s drugom bazom podataka ili datotekom. OLE je član klase računarskih operacija koje omogućuju da različite aplikacije (bilo koji dokument MS Word, MS Excel, zvuk, grafika, video snimak, ili neki drugi objekat) šalju podatke i primaju podatke iz ostalih aplikacija po dogovorenoj proceduri. Polje ovog tipa sadrži putanju fajla u kojem se nalazi dokument (Linked) ili sam dokument (Embeded). Ovu opciju ne pokriva ova knjiga. Hyperlink Veza s lokacijom na Webu. Polje ovog tipa sadrži hyperlink adresu. Lookup Wizard polje. Omogućava stvaranje popisa za odabir vrijednosti iz neke druge tabele ili popisa vrijednosti u kombinovanom okviru za svaki slog.
-
Ako izaberete tip polja Lookup Wizard, MS Access će startovati Wizard koji omogućava da napravite relaciju sa nekom drugom tabelom ili upitom. Kada završite proceduru koju zahtijeva Wizard, tip polja će biti promijenjen u isti tip kao što ima polje u tabeli sa kojim je napravljena relacija.
Vježba 4: Modifikovanje tabele baze podataka Modifikovanje podataka u tabeli podrazumijeva aktivnosti: izmjene podataka u tabeli, brisanje jednog ili više slogova u tabeli, brisanje sadržaja polja i promjena sadržaja polja. Za ovu vježbu otvorite bilo koju tabelu neke baze podataka na vašem računaru. -
-
Promjena podataka u tabeli Kliknite lijevim tasterom miša na polje u kojem želite da izmijenite podatke. Izgled kursora će se promijenti u ' | '. Unesite podatke (ili napravite izmjene), a zatim kliknite na taster Enter. Brisanje slogova Selektujte slog. Kliknite na taster Delete (Del). Na ekranu će se pojaviti okvir za dijalog:
Slika 84. Dijalog odobrenja za brisanje sloga u bazi
-
Kliknite na dugme Yes ukoliko želite da potvrdite brisanje sloga.
Međutim, pažnja: ako potvrdite brisanje sloga, u tom slučaju operacija Undo više nije moguća.
70
-
Brisanje sadržaja polja Selektujte polje (lijevim tasterom miša kliknite na lijevu ivicu polja). Kliknite na taster Delete (Del).
-
Promjena sadržaja cijelog polja Selektujte polje (lijevim tasterom miša kliknite na lijevu ivicu polja). Unesite nove podatke.
11.7. Analizator tabela Čarobnjak za analizu tabela (Table Analyzer Wizard-Analizator tabela) vam može pomoći da iz skupa podataka kreirate relacionu bazu podataka. Ako koristite analizator tabela tada ne morate da poznajete principe dizajniranja relacionih baza podataka. Čarobnjak za analizu tabela „dešifruje“ pojedinu tabelu baze podataka i preporučuje način podjele te originalne tabele u skup međusobno povezanih tabela. On može automatski da analizira nerelacionu bazu podataka i da je „normalizuje“ umjesto vas. On radi slijedeće: - analizira tabelu i kontroliše da li je ona u potpunosti normalizovana, - daje prijedloge za razdvajanje podataka u međusobno povezane tabele, - omogućuje definisanje primarnih i stranih ključeva, - omogućuje provjeru da li postoje pogrešno popunjeni slični podaci, - uz pomoć ovog alata Access automatski raspoređuje ulazne podatke u više tabela i predlaže ispravke sadržaja podataka. Normalizovana baza podataka, da vas podsjetimo, iako smo to u prvom dijelu knjige već opširno eksplicirali, ima niz prednosti u odnosu na nenormalizovanu. Prvo, ažuriranje informacija je brže i jednostavnije, jer zahtijeva promjenu znatno manjeg broja podataka. Drugo, u nju se smješta minimum informacija, zbog čega je baza podataka manja. I, konačno, relaciona baza podataka održava podatke automatski konzistentnim, jer se u njoj jedan podatak smješta samo jednom. Iako vam čarobnjak za analizu tabele može pomoći u kreiranju relacione baze podataka, ako imate iskustva sa bazom podataka, čarobnjak vam dozvoljava da modifikujete bilo koju sugestiju koju vam on dadne. Tako, vi sami možete da razdijelite tabele, rearanžirate polja u tabelama i da kreirate relacije između tabele. Možete da modifikujete sve odluke čarobnjaka i to u svakoj etapi procesa kreiranja baze podataka.
11.7.1 Pokretanje čarobnjaka za analizu tabela Da biste pokrenuli čarobnjaka za analizu tabela izvedite slijedeće korake: 1. U MS Access-u 2003 ili u MS Access-u 2002, pokažite na opciju Analyze u meniju Tools, a zatim kliknite na opciju Table. U MS
71
Access-u 2007 kliknite na tabulator Database Tools, a zatim kliknite na opciju Analyze Table u grupi Analyze. 2. Slijedite instrukcije u okviru za dijalog čarobnjaka. Napominjemo da prva dva dijaloga objašnjavaju šta je normalizacija i zašto je ona korisna, tako da ih odmah možete preskočiti. 3. Treći dijalog vas pita koju od tabela hoćete da analizirate. 4. Četvrti dijalog vas pita da li želite da bazu podataka razdijelite u tabele ručno (manuelno) ili hoćete da to za vas uradi čarobnjak. Ako ste odabrali opciju da bazu podataka u tabele razdijeli čarobnjak umjesto vas, on će to odraditi kroz slijedeći proces:
Slika 85. Analizatora
Dijalog-okvir
prvog
Slika 87. Dijalog-okvir trećeg koraka Analizatora
koraka
Slika 86. Dijalog-okvir drugog koraka Analizatora
Slika 88. Dijalog-okvir četvrtog koraka Analizatora
Ako u četvrtom koraku izaberete opciju No, I want to decide, vi ste time „obećali“ analizatoru da ćete mu „pomoći“ i sugerisati mu koje polje iz koje tabele se nepotrebno ponavlja i gdje ga treba premjestiti, i sa kojim poljem još, i on vas dalje vodi dijalozima i pitanjima da mu to „kažete“ tako što ćete vi ta polja tehnikom „drag and drop“ prevući u drugu tabelu. Kada izaberete opciju No, I wont to decide, da želite sami da odlučite koji podaci u izabranoj tabeli se ponavljaju, pojaviće se slijedeći dijalog čarobnjaka (slika 89).
72
Ostaje onda da odradite „obećanje“ i prevlačenjem ponavljajućih polja napravite novu tabelu baze. Naravno da se za ovu opciju trebaju odlučiti samo dobri poznavaoci koncepta relacione baze podataka, a početnicima ostaje da koriste isključivo prvu opciju i da se „prepuste“ čarima čarobnjaka za analizu tabela.
Slika 89. Dijalog-okvir petog koraka Analizatora
Slika 90. Dijalog-okvir šestog koraka Analizatora
Ako, međutim, izaberete prvu opciju Yes, let the wizard decide, vi svu aktivnost oko normalizacije vaše baze prepuštate analizatoru, tj. čarobnjaku.
Slika 91. Okvir dijaloga čarobnjaka za analizu tabela
1. Analizator tabela startuje sa jednom tabelom baze podataka, koja može biti bilo koji skup podataka kreiran u Accessu ili importovan (uvezen) u Access. Čarobnjak zatim razbija tu tabelu u skup manjih tabela. Svaka od tih manjih tabela sadrži minimum informacija koje su međusobno grupisane.
73
2. Čarobnjak traga za vrijednostima obilježja koje mogu jedinstveno identifikovati grupisane podatke. tj. traga za primarnim ključem svakog od tih grupisanja. Ako ne pronađe jedinstvenu vrijednost, čarobnjak kreira primarni ključ koristeći se automatski inkrementirajućim poljem tipa podatka long integer. Istovremeno, čarobnjak kreira strani ključ u povezanim tabelama. 3. Čarobnjak kreira relaciju koja kontroliše kako nove tabele zajedno funkcionišu. Te relacije forsiraju referencijalni integritet (konzistentnost podataka) sa kaskadnim ažuriranjem. Čarobnjak ne dodaje automatski kaskadno brisanje relacijama zbog rizika da ne biste mogli slučajno obrisati veliku količinu podataka. 4. Čarobnjak kreira inicijalni prijedlog i pita vas da ga potvrdite ili promijenite. 5. Ako prijedlog povrdite, čarobnjak zatim traži nove tabele za nekonzistentne podatke (na primjer, jednog istog kupca sa različitim tefonskim brojevima) i prikazuje listu slogova koje možete promijeniti ili prihvatiti. 6. Konačno, možete da izaberete da kreirate upit koji simulira izvornu jednotabelarnu bazu podataka. Čarobnjak se prvo vraća nazad u originalnu tabelu i preimenuje je dodavanjem „_OLD“ njenom imenu. Zatim, čarobnjak kreira upit korišćenjem izvornog (originalnog) imena tabele. Ovo osigurava da će bilo koja postojeća forma (obrazac) ili izvještaj baziran na originalnoj tabeli raditi i sa novom strukturom tabele.
12. PREGLEDANJE SLOGOVA TABELE Ako ste pažljivo i sa razumijevanjem pratili sadržaj prethodnih poglavlja ove knjige, onda biste trebali biti u stanju da: otvorite tabelu u Datasheet View, da upravljate (navigate) kretanjem kroz slogove i po poljima tabele i da razumijete funkciju polja za izbor sloga, o ćemu ćemo diskutovati u nastavku. Tabele u Accessu koje su kreirane održavaju se u tabulatoru Tables palete Objects. Za vaše uvježbavanje, otvorite bilo koju bazu podataka koju imate na svom računaru. Mi smo na svom računaru, ovdje radi demonstriranja, otvorili bazu podataka Contact Management, koja se sastoji od četiri tabele: Calls, Contact Types, Contacts i Switchboard Items. Tabela kada je otvorena u pogledu Datasheet mnogo podsjeća na spredšit (razastrtu tabelu) u Microsoft Excelu. Ovdje ćemo diskutovati o tabeli Contacts. Nju smo iskoristili da unesemo slogove u bazu podataka. Da biste otvorili neku postojeću tabelu (u našem slučaju: Contacts) iz objekta Tables trebate da uradite slijedeće: - Otvorite bazu podataka u kojoj se ta tabela nalazi, u našem slučaju to je baza podataka Contact Management. - u prozoru baze podataka kliknite na tabulator Tables u paleti Object.
74
Ako se prozor baze ne vidi, izaberite sa linije menija Window opciju Contact Management: Database, a u vašem slučaju to će biti opcija: vašabaza: Database .
Slika 92. Pregled tabela u prozoru baze podataka ContactManagement
-
da biste tabelu otvorili u pogledu Datasheet, dva puta kliknite na izabranu tabelu (Contacts) u desnom oknu prozora. To isto možete ostvariti tako da kliknete na naziv tabele u desnom okviru i potom kliknete na dugme Open ili, na još jedan način, da kliknete desnim tasterom miša na naziv tabele koju želite da otvorite i zatim, u brzom meniju koji se pojavi, izaberete komandu Open.
Kretanje po slogovima tabele (navigacija) može se izvesti na četiri načina: korištenjem statusne oblasti za navigaciju, korišćenjem vertikalne i horizontalne linije za skrolovanje i pomoću tastera na tastaturi.
12.1 Korištenje statusne oblasti za navigaciju po slogovima u tabeli Tabela u Datasheet prikazu izgleda kao Excelova razastrta tabela (spreadsheet). Sastoji se od kolona i redova. Imena polja, u našem primjeru: Contact ID, First Name, Last Name, Dear, Address, City, State, itd. – pojavljuju se kao zaglavlja kolone. Slogovi su predstavljeni redovima sa podacima u poljima. Broj redova koji se pojavi u tabeli biće onoliki koliko je slogova bilo dodato toj tabeli. Jedan prazan red uvijek se pojavi kao posljednji red u bazi podataka. Ovaj prazan red koristi se za dodavanje novog sloga u tabeli.
75
Slika 93. Datasheet prikaz tabele
U donjem lijevom uglu statusnog prostora u prozoru prikazuje se broj slogova u tabeli (9), kao i broj trenutnog sloga (1) ispisanog u prozoru.
Slika 94. Traka za navigaciju (kretanje) po slogovima
Da biste se iz statusne oblasti kretali po slogovima baze, uradite slijedeće: - Kliknite na strelicu u statusnom području (status area) da bi se pomjerili na prvi slog, prethodni slog, naredni slog ili poslednji slog u tabeli, - Klik na dugme za novi slog (new record) prikazaće prazan red u koji se može dodati novi slog tabeli.
12.2 Prikazivanje slogova pomoću linije za skrolovanje Vertikalna linija za skrolovanje nalazi se uzduž desne ivice ekrana i može da se koristi da se po tabeli pomjerate gore-dole ukoliko je ukupan broj slogova u tabeli veći od onog koji se vidi na ekranu. Slično se i horizontalna tabela, koja se nalazi na dnu ekrana, može koristiti da se pomjerate lijevo-desno po ekranu ako broj polja u tabeli premašuje broj polja ispisanih na ekranu.
76
Slika 95. Trake za pomjeranje vidnog polja slogova tabele
12.3 Korišćenje tastature za navigaciju po slogovima tabele Drugi način za navigaciju slogovima tabele je skrolovanje gore-dole po ekranu korišćenjem tastera PageUp i PageDown na tastaturi. Ostali tasteri takođe služe za kretanje kroz polja i slogove u tabeli, i to: Taster: Pomjera se na: Tab Naredno polje desno Shift + Tab Naredno polje lijevo End Poslednje polje u slogu Home Prvo polje sloga Down Arrow Isto polje u narednom slogu Up Arrow Isto polje u prethodnom slogu Page Down Naredni ekran sa slogovima tabele Page Up Prethodni ekran slogova tabele Ctrl + End Poslednje polje poslednjeg sloga u tabeli Ctrl + Home Prvo polje u prvom slogu u tabeli
12.4 Selektor slogova tabele Selektor slogova lociran je lijevo od svakog sloga u pogledu Datasheet i u njemu se uvijek kada izaberete dati slog prikazuje operacija koja je bila izvedena (vidjeti sliku 97).
Slika 96. Selektor sloga tabele
77
-
Selektor slogova može da ispiše neki od slijedećih simbola: pokazuje da je određeni slog izabran. Slog je sačuvan sa informacijom ispisanom na ekranu. pokazuje da je izabrani slog editovan i da promjene u njemu još nisu sačuvane. pokazuje na prazan slog u koji se mogu dodati informacije za novi slog koji se može dodati tabeli.
Slika 97. Poruke ispisane u selektoru sloga
Kao posljednji slog u tabeli uvijek se pojavi prazan slog. Da biste tabeli dodali novi slog morate koristiti ovaj red.
Vježba 5: Navigacija slogovima baze podataka -
-
Otvorite neku bazu podataka na vašem računaru (mi ćemo otvoriti bazu podataka Contact Management ). Otvorite neku njenu tabelu (Contacts) u pogledu Datasheet View. Kliknite na svako od slijedećih dugmadi u statusnom području: Status Area: Next Record, Last Record, Previous Record i First Record. Kliknite na dugme Restore Down. Vježbajte skrolovanje - kretanje kroz tabelu koristeći horizontalne i vertikalne trake za skrolovanje. Vježbajte da se krećete po slogovima tabele korišćenjem tastature. Uočite kako se kursor kreće sa sloga na slog za svaki od slijedećih tastera: o o o o o o o o o o
Tab Shift + Tab End Home Page Down Page Up Down Arrow Up Arrow Ctrl + End Ctrl + Home.
12.5 Unošenje ili dodavanje sloga u tabelu u pogledu Datasheet View Svaki slog u tabeli predstavljen je jednim redom. Imena polja predstavljena su kao kolone tabele. Da biste dodali novi slog, pomjerite se
78
na posljednji red u tabeli - to je prazan – ili kliknite na dugme new record u statusnom prostoru. Zatim, unesite tražene informacije u svako polje novog sloga. Da biste u tabelu unijeli ili dodali slog u pogledu Datasheet View trebate: - Ako tabela još nije otvorena, otvoriti neku tabelu iz baze podataka. - Kliknite na dugme New Record da bi se ispisao prazni red za unošenje podataka. - Krečući se s lijeva na desno po ekranu unosite date informacije u svako polje sloga. Ako je naziv tog polja, na primjer, Ime, kucajte ime osobe za koju unosite podatke u tabelu, itd. - Pritisnite taster Tab da biste se pomjerili s jednog polja na drugo polje ili lijevim tasterom miša kliknite u naredno polje. - Kompletirajte unose u preostala polja. - Nakon unosa podatka u posljednju kolonu tabele, pritisnite taster Tab da biste startovali s novim slogom ili kliknite ponovo na dugme New Record. Čuvanje vašeg rada: Informacije u tabeli se automatski sačuva kadgod upotrebite miša ili neki taster sa strelicama, taster Tab, ili taster Enter da biste se premjestili iz jednog reda u neki drugi red. Podatke koji su uneseni u slog, ili više slogova, možete da sačuvate i ručno, bez da pomjerate kursor izvan reda u kojem je taj slog, tako da na standardnoj liniji menija izaberete Records Save.
12.6 Promjena dimenzije kolona u tabeli Podešavanje širine kolone u Accessu slično je kao i u Excelu. Podrazumijevajuće je da je u Accessu svaka kolona široka 15.6667 znakova, ali svaka kolona može da se prošir do 363 znaka. Prilikom unosa slogova možete da zaželite da promijenite dimenziju kolona, da biste vidjeli informacije onako kako ih unosite. Širina neke kolone, na primjer Address u tabeli dole, može da bude manja od stvarne adrese. Vi možete da podesite širinu bilo kojeg polja tako da ona bude dovoljna da se vidi kompletan unos u polje.
Slika 98. Primjer tabele gdje je sadržaj polja veći od širine kolone
79
Kolonu tabele možete da podesite i ručno, tako da koristite autopodešavanje AutoFit, ili liniju menija. -
Ručno podešavanje širine kolone izvodi se na slijedeći način: Pokažete mišem na desnu stranu sivog zaglavlja kolone (Address). Pokazivač miša se promijeni u oblik alata za podešavanje, tj. u oblik dvostrane strelice, kao na slici dole.
Slika 99. Izgled pokazivača miša kao alata za podešavanje
-
Pritisnite lijevi taster miša i povlačite alat za podešavanje (dvostranu strelicu) lijevo ili desno do željene širine i onda otpustite taster miša. Na slikama dole uočite razliku dimenzije između dviju kolona.
Slika 100. Izgled kolone tabele prije i poslije proširivanja
Podešavanje širine kolone korišćenjem linije menija obavlja se na slijedeći način: - Kliknite bilo gdje u kolonu čiju širinu želite da promijenite. - Na standardnoj liniji menija izaberite Format Column Width. - Kucajte novu specifikaciju u polje Column Width. - Kliknite na dugme OK da se izmjene prihvate. Automatsko podešavanje širine kolone obavlja se na slijedeći način: - Pokažite pokazivačem miša na desnu stranu zaglavlja kolone. - Pokazivač miša prelazi u oblik dvostrane strelice kao alata za podešavanje. - Dva puta kliknite na ivicu zaglavlja kolone. - Access "automatski podešava" kolonu, tako što je učini malo širom od najšireg unosa koji se nalazi u njoj. Da biste automatskom podešavanju pristupili iz linije menija, trebate iz menija Format izabrati opciju Column Width (Format Column Width) i zatim potvrditi polje za čekiranje Best Fit.
80
12.7 Podešavanje visine reda tabele Svaki rod u Accessu podrazumijevajući je podešen na visinu od 12.75 i ona se može povećati do 1638. Promjena visine slična je podešavanju širine kolone, uz dva izuzetka: 1) promjenom visine reda vrši se promjena u svim redovima tabele i 2) na nivou reda nije moguće automatsko podešavanje visine. Da biste podesili visinu reda uradite slijedeće: - Na standardnoj liniji menija izaberite Format Row Height.
Slika 101. Opcija menija Format za podešavanje visine reda
- U polje Row Height kucajte novu specifikaciju.
Slika 102. Okvir dijaloga za unos visine reda
- Kliknite na dugme OK da se prihvate promjene.
Čuvanje vašeg rada: Ako ste mijenjali izgled tabele, prije izlaska iz Accessa bićete upozoreni da sačuvate unešene promjene.
12.8 Editovanje slogova tabele u pogledu Datasheet View Informacija u slogu tokom vremena podložna je promjenama, kada se, na primjer, neko premješta sa jedne adrese na drugu, ili ako neko promijeni svoj broj telefona. Informacija se može mijenjati u bilo kojem polju sloga tabele. Da biste editovali samo jednu riječ u polju treba da uradite slijedeće:
81
- Pokažite mišem iznad polja koje hoćete da editujete. Pokazivač miša promijeniće svoj izgled u oblik tanke vertikalne linije-u oblik linije za umetanje. - Da biste dodali neki znak informaciji u polju (na primjer, trebate da dodate neko slovo nekoj riječi), kliknite jedanput u polje gdje informacija treba da bude promijenjena. Pojavi se linija umetanja, otprilike u ovom obliku |. - Da biste prepisali preko neke riječi u polju (na primjer, "Road" trebate da zamjenite sa "Street"), dva puta kliknite (ili kliknite i prevucite miša preko riječi) na riječ u polju. Kucajte novu informaciju direktno preko markirane riječi.
Slika 103.Obilježen tekst u polju za editovanje, izmjenu ili brisanje
12.9 Editovanje sadržaja polja Ponekada ćete imati potrebu da promijenite već uneseni sadržaj nekog polja (na primjer, neko ima novu adresu). Neko popunjeno polje u Accessu možete da izaberete za editovanje na slijedeći način: - Pomjerite pokazivač miša na lijevu ivicu polja koje hoćete da editujete. - Pokazivač miša će se promijeniti u alat za izbor, u veliki krst. - Kliknite da izaberete to polje. - Kucajte novu informaciju. Tu je važno da damo jedno upozorenje. Budite oprezni dok pokušavate da editujete neko polje, da ne pomjerite pokazivač miša previše ulijevo da ne biste kliknuli na selektor sloga (pokazivač se pomjeri na strelicu koja pokazuje u desno) i time izaberete slog. U Accessu ne možete da editujete polja dok je neki slog izabran. Da biste sačuvali svoj posao, prilikom zatvaranja ekrana ili zatvaranja aplikacije nećete, kao u Excelu, Wordu ili PowerPointu, biti upozoreni da sačuvate vaše podatke koje ste već unijeli. U Accessu svaki slog se sačuva automatski kada se pomjerite na drugi slog.
12.10 Isjecanje, kopiranje i lijepljenje slogova u tabeli Operacije Cut, Copy i Paste su veoma korisne, ne samo u Accessu nego i u mnogim drugim Microsoft aplikacijama. Te operacije omogućuju vam da brzo kopirate i/ili isječete neku informaciju iz polja da biste je kasnije nalijepili u ostala polja. Te operacije štede mnogo vremena u odnosu da istu informaciju morate da kucate ili prekucavate.
82
alata.
Dugmad komandi Cut, Copy i Paste nalaze se na traci standardnih
Slika 104. Traka standardnih alata
Operacije Cut, Copy i Paste se takođe pojavljuju i u meniju Edit, kao što se vidi na slici dole.
Slika 105. Opcije menija Edit
Operacije Cut, Copy i Paste, kao što je iz Worda ili Excela poznato, mogu se takođe izvesti i pomoću tastera prečica:
Cut Ctrl + X Copy Ctrl +C Paste Ctrl + V
Da biste neke podatke iz tabele isjekli treba da uradite slijedeće: - Izaberite podatke koji se trebaju isječi iz tabele. - Kliknite na dugme Cut na standardnoj liniji alata, ili pritisnite prečicu tastera Ctrl + X, ili na liniji menija Edit izaberite opciju Cut.
Da biste podatke u tabelu kopirali, uradite slijedeće: - Izaberite podatke iz tabele koje treba da kopirate. - Kliknite na dugme Copy na standardnoj liniji alata, ili pritisnite tastere prečice Ctrl+C, ili izaberite na liniji menija Edit izaberite opciju Copy.
83
Da biste podatke u tabelu nalijepili (paste), uradite slijedeće: - U izabranoj tabeli izvedite operaciju isjecanja ili kopiranja (cut ili copy). - Pozicionirajte pokazivač miša iznad polja u koje informacija treba da bude naljepljena. - Kliknite na dugme Paste na standardnoj liniji alata (kao na slici dole), ili pritisnite prečicu tastera Ctrl + V, ili na liniji menija Edit izaberite opciju Paste.
12.11 Korišćenje osobine Undo Može se desiti da dok radite sa tabelom nešto uradite pogrešno što niste mislili da uradite, na primjer, da u ćeliju unesete pogrešan broj. Srećom, u Accessu možete da povratite jednu operaciju unazad. Operacija Undo vraća (odustaje) poslednju jediničnu akciju koju ste izveli. Određena pravila upravljaju korišćenjem osobine Undo. Prvo, slogovi treba da budu editovani u pogledu Datasheet View. Isto tako, Undo postaje beskoristan ako: - je editovano različito polje (Undo editovanja poslednjeg polja ne može se izvesti). - je editovan razlčit slog (Undo poslednjeg sačuvanog sloga ne može se izvesti). - je ispisan različiti prozor. - je primijenjen ili je uklonjen filter. Da biste uradili Undo, tj. odustali od posljednje učinjene promjene u određenom polju, koristite jednu od slijedećih metoda: - Kliknite na dugme Undo na standardnoj traci alata. - Izaberite Edit Undo Current Field/Record na liniji menija. - Pritisnite taster Esc na tastaturi.
12.12 Provjera spelovanja (pravilnog pisanja) podataka Korektno spelovanje podataka u Accessu je veoma važno. Neuredan unos podatka -- ime kupca Smithsson je pogrešno otkucano ako je ime u stvari Smithson – potencijalno može izostati iz budućih upita ili izvještaja. Osobina Spelling Check traga za greškama spelovanja u tabeli, obrascu ili upitu. Spelling Check karakteristično provjerava spelovanje slogova, polja, ili teksta u polju tabele. Da biste izvršili provjeru ispravnog pisanja-spelovanja u tabeli, trebate da:
84
- Kliknete na dugme Spelling, ili na liniji menija izaberete Tools Spelling, ili pritisnete prečicu taster F7. Nako toga otvoriće se okvir za dijalog Spelling:
Slika 106. Okvir dijaloga Spelling
- Access uvijek pošalje upozorenje kadgod pronađe riječ koje nema u datoteci Riječnik i tu nepoznatu riječ ispiše u tekstualnom okviru Not
in Dictionary. - Ako dobijete ovakvu poruku, korigujte tu riječ na jedan od slijedećih načina: o u polje Change To otkucajte riječ ispravno, ili o kliknite na dugme Ignore da biste promjenu ignorisali i pomjerili se na slijedeću riječ, ili o Obilježite ispravnu riječ na listi Suggestions i kliknite na dugme Change, ili o Kliknite na dugme Add da biste riječ dodali u korisnički rječnik. Nakon toga pojaviće se dijalog okvir (kao na slici dole) sa naznakom da je provjera spelovanja završena. Kliknite na dugme OK da zatvorite taj dijalog okvir.
Slika 107. Okvir za dijalog sa obavjesti o okončanju spelovanja
12.13 Brisanje slogova tabele Jedan ili više slogova tabele može se u svako doba obrisati iz neke Access tabele kada je ona u pogledu Datasheet View. Da biste obrisali slog u tabeli trebate: - Da se pozicionirate na slog koji treba da se izbriše.
85
- Kliknete na selektor sloga (Record Selector) lijevo od prvog polja sloga izabranog za brisanje. Uočite znak karakterističan za obilježeni slog upisan u selektor u sloga
- Pritisnite taster Delete ili kliknite na dugme Delete Record na liniji alata. - Na ekranu će se pojaviti okvir za dijalog da potvrdite da taj slog treba obrisati .
Slika 108. Okvir za dijalog potvrde brisanja sloga
- Kliknite na dugme Yes da završite operaciju brisanja. Da biste u tabeli obrisali više susjednih slogova trebate: - Kliknuti na selektor sloga lijevo od prvog sloga koji treba da se obrišu i zatim povlačite (drag) pokazivač miša prema gore ili prema dole preko više selektora sloga da biste izabrali uzastopne slogove ili, držeći taster Shift, kliknite nao polje selektora sloga svakog od susjednog sloga da biste ih obilježili za brisanje.
Slika 109. Tri sloga tabele Autor obilježena za brisanje
- Pritisnite taster Delete da obilježite slogove za brisanje, kliknite na dugme Delete Record, ili iz menija Edit izaberite opciju Delete. - Ispisaće se okvir za dijalog da potvrdite da ti slogovi treba da budu obrisani. Kliknite na dugme Yes da se operacija brisanja izvrši.
86
Slika 110. Okvir za dijalog potvrde brisanja 3 sloga
Važno je da zapamtite da se slogovi brišu trajno, tako da ni operacija Undo više ne može da ih povrati. Zato, budite obazrivi kada se ispiše okvir za komunikaciju da potvrdite da slog(ove) treba obrisati. Postupajte po onoj narodnoj „tri puta mjeri, jedanput reži“. Ako nećete to, onda uvijek pravite rezervnu kopiju tabele prije nego što iz nje hoćete da izbrišete neke slogove.
12.14 Pretraživanje podataka u tabeli Podatke u bazi možete da pretražujete direktnim traženjem određenog podatka u tabeli korišćenjem komande Find ili pravljenjem upita.
12.14.1 Pronalaženje određenog teksta u tabeli Ovaj način pretraživanja je jednostavan, ali se svodi na pretraživanje određenog teksta u tabeli, slično kao kada u MS Word-u pretražujete dokument. Otvorite tabelu, postavite kursor na polje koje želite da pretražujete, a zatim u meniju Edit selektujte opciju Find…, ili na Toolbar-u kliknite na ikonu . Na okviru za dijalog:
Slika 111. Okvir dijaloga za pretraživanje teksta
U polju Find What: unesite tekst koji želite da pronađete, podesite ostale parametre za pretraživanje i kliknite na dugme Find Next. MS Acces će pozicionirati kursor na prvi slog koji sadrži zadati tekst. Ako ponovo kliknete na dugme Find Next, kursor će se pozicionirati na slijedeći slog koji sadrži zadati tekst.
87
12.14.2 Korišćenje specijalnih znakova za pretraživanje MS Access omogućava da se prilikom pretraživanja, u tekstu koji ste zadali za pretraživanje, koriste specijalni znakovi:
?
- ako za pretraživanje zadate tekst: 'M?rko', MS Access će kao rezultat pretraživanja dati riječi 'Mirko' i 'Marko'
* - rezultat pretraživanja, ako zadate tekst: 'B*rad', MS Access će kao rezultat pretraživanja dati riječi 'Beograd', 'Biograd', ’Bosilgrad’, itd... # - služi za pretraživanje brojeva, ako zadate tekst: '199#', MS Access će kao rezultat pretraživanja dati sve godine između 1990. i 2000. [ ]
- bilo koja dva ili više karaktera između zagrada moraju da se nalaze u tekstu koji tražite. Na primjer, ako zadate tekst: 'M[ai]rko', MS Access će kao rezultat pretraživanja dati riječi 'Mirko' i 'Marko'. Karakter '!' ispred slova u zagradama označava da riječi sa navedenim slovima u zagradi ne treba da budu rezultat pretraživanja. Ako zadate tekst: 'M[!a]rko', MS Access će kao rezultat pretraživanja dati riječi 'Mirko' ali ne i 'Marko'.
12.15 Preporuke za ispravno konstruisanje tabela Od toga kako konstruišete vašu tabelu zavisiće šta od nje možete da dobijete. Stoga je od vitalne važnosti da vašu tabelu korektno konstruišete prije nego što počnete unositi podatke u nju. Proces organizovanja podataka u bazu poznat je kao “normalizacija”. Navešćemo neka pravila kojih se trebate pridržavati pri konstrukciji baze podataka. Podatke odvajajte u posebne kolone. Podatke trebate „razbijati“ u posebna polja što je više moguće. To je nužno da biste mogli koristiti alate za traženje i sortiranje podataka i za kreiranje službenih pisama i poštanskih naljepnica za adrese. Primjetite da u polje Adresa mi stavljamo broj zgrade, kuće ili ulaza u isto polje sa nazivom ulice. Za većinu korisnika to će biti prihvatljivo, ali ako biste vi bili agent za prepis nekretnina, sudski vještak, geometar ili advokat, vi biste možda htjelii da i to bude odvojeno u posebna polja. Koliko ćete koje vaše podatke odvojiti u posebna polja često zavisi od toga šta planirate da radite sa tim podacima. Na donje dvije slike prikazujemo, na prvoj, ispravan način odvajanja podataka u kolone tabele, a na drugoj slici je primjer gdje to nije urađeno ispravno.
Slika 112. Primjer ispravnog načina razdvajanja podataka u tabeli
88
Slika 113. Primjer neispravnog načina razdvajanja podataka u tabeli
Vertikalna u odnosu na horizontalnu konstrukciju. Primjer na slici dole pokazuje dva načina kako se može nizati redoslijed podataka. Primjer na slici lijevo pokazuje ispravan način kako se podaci trebaju nizati, dok onaj na desnoj strani pokazuje neispravan način.
Slika 114 Ispravan način nizanja podataka
Slika 115. Neispravan način nizanja podataka
Primjer na slici 115. je neispravan iz nekoliko razloga: - Ako je prodato nekoliko novih proizvoda, ta tabela bi se morala redizajnirati da bi se obuhvatili i novi proizvodi, dok bi kod lijeve tabele novi proizvod bio jednostavno dodat na dno liste. - Izračunavanja su više ograničena u neispravnom primjeru tabele. - Maksimalan broj kolona u tabeli (u ovoj verziji Accessa) je 255. Stoga, ako imate više od 255 proizvoda, tabela na desnoj strani će se pokazati kao neadekvatna za tu dimenziju. Nemojte u tabeli kreirati polja koja se mogu dobiti izračunavanjem pomoću postojećih polja. Izračunavanja se mogu jednostavno izvoditi u upitima, obrascima i izvještajima. Radi toga, nepotrebno je da stavljate polja u tabelu koja se mogu dobiti izračunavanjem. Na primjer, tabela dole ima četiri polja: Artikl, Cijena pakovanja, Komada u pakovanju i Cijena po komadu. Cijena pakovanja je podatak o cijeni kutije sa kesicama nekog proizvoda, a Komada u pakovanju kazuje koliko tih kesica staje u neku kutiju. Posljednje polje, Cijena po komadu je nepotrebno, jer mi tu informaciju možemo jednostavno izračunati u upitu, obrascu ili izvještaju, tako što podijelimo Cijena pakovanja sa Komada u pakovanju bez da smo zauzeli prostor u fajlu ili utrošili vrijeme za unošenje podataka u to suvišno polje.
89
Slika 116. Primjer nepotrebne (suvišne) kolone u tabeli
Odvajajte podatke u posebne tabele. Jedan od najjačih strana Accessa je njegova sposobnost da odvojene tabele povezuje (linkuje) ili dovodi u vezu (relaciju) jednu sa drugom. Ovo, kao što smo rekli, sprječava dupliranje podataka, povećavanje gubitka vremena, usporavanje traženja i razbacivanje prostora na jedinicama eksternih medija računara.
Slika 117. Primjer dupliranja (ponavljanja unošenja istih) podataka
U nekorektnom primjeru gore tabela narudžbi prati redoslijed narudžbi. U narudžbi broj 1 (Order#), bila su naručena tri različita artikla (Item), a u narudžbi broj 2 dva različita artikla. Osjenčena površina pokazuje informacije koje su bile duplirane. Ove informacije trebalo bi podijeliti u dvije posebne tabele, kao što je pokazano na slici dole.
Slika 118. Primjer ispravnog dijeljenja u više tabela podataka koji se (nepotrebno) ponavljaju
U korektnom primjeru (slika 118) podaci su podijeljeni u dvije posebne tabele. Prva tabela sadrži informacije o narudžbi, a druga tabela sadrži artikle koji su bili naručeni. Te dvije tabele mogu se dovesti u vezu preko zajedničkog polja u njima Order # . Za unošenje podataka može se kreirati obrazac koji će iz jednog ekrana unositi informacije u obadvije tabele.
90
Vježba 6. Kreiranje tabela Kreiranje tabele odvija se u nekoliko slijedećih koraka: 1. Kliknuti na dugmeTables u lijevom oknu prozora baze podataka, a zatim na dugme New na traci sa alatima u prozoru baze podataka. 2. U okviru za dijalog New Table kliknuti na opciju Design View. 3. Otvara se okvir za upis strukture tabele (Table Design). Gornji dio okvira sastoji se od tri kolone u koje se upisuju nazivi obilježja (Field Name), definiše tip polja za svako pojedino obilježje (Data Type) i upisuju komentari opisi obilježja (Description). 4. U prvi red kolone Field name upisati naziv obilježja SIFRAP (šifra preduzeća). 5. U prvi red kolone Data Type definišeti tip polja za obilježje SIFRAP. Klikom na trokutić strelice u polju Data Type na padajućoj listi javljaju se ponuđeni tipovi podataka: Text (znakovni), Number (numerički), Date/Time (datumski), Yes/No (logički) i ostali tipovi podataka. Za obilježje SIFRAP izabraće se Text. 6. U donjem dijelu prozora dizajna nabrojane su karakteristike svojstava (Properties) za upisana obilježja (vidjeti sliku). Unos i promjena podataka u poljima svojstava vrijedi za ono obilježje u kojem je kursor pozicioniran. Ta svojstva su različita zavisno od tipa podataka. Zavisno od zadatih karakteristika obilježja definišu se (popunjavaju) svojstva u dizajn pogledu ili se polja tih svojstava ostavljaju nepopunjena (nepromijenjena). 7. U našem primjeru za obilježje SIFRAP u svojstvu Field Size (veličina polja) umjesto ponuđene vrijednosti 50 (znakova) upisaće se vrijednost 8. U polju Caption može se upisati naziv obilježja koje će se javiti na maski tabele (na primjer SIFRAP, tako da u maski umjesto naziva sifrap koji je upisan u dizajnu nakon otvaranja tabele u maski (zaglavlju) piše SIFRAP. U polju Index označiće se opcija Yes (No duplicates), što znači da će se tabela indeksirati prema šifri. 8. Nakon popunjavanja svojstava za prvo upisano obilježje (u primjeru sifrap) klikne se u novi red kolone Field Name i u skladu s opisanim postupkom upisuju se podaci za slijedeće obilježje. 9. Nakon što se upišu sva obilježja i za njih definišu potrebna svojstva, označava se primarni ključ tabele koji jedinstveno identifikuje svaki slog u tabeli. Primarni ključ može da se sastoji od samo jednog obilježja ili od više obilježja čija kombinacija vrijednosti jednoznačno određuje slogove u tabeli. Primarni ključ ne dopušta da se u tabeli nađu dva ista sloga. U dizajnu tabele u primjeru će se kao primarni ključ označiti obilježje sifrap. Ključ se označava tako da se označi red obilježja sifrap i klikne na ikonu ključa na alatnoj traci aplikacije. 10. Tabela se zatvara klikom na znak x u gornjem desnom uglu. U prozoru Table Name upisuje se naziv tabele Preduzeća1.
91
Zadatak 4: Odgovorite si na postavljena pitanja. 1. Šta podrazumijevate pod pojmom baza podataka? 2. Navedite nekoliko primjera baza podataka? 3. Kako se općenito dijele baze podataka? 4. Šta je to podatak, a šta informacija? 5. Navedite nekoliko primjera podataka i informacija! 6. Nabrojte tri osnovna tipa baza podataka? 7. Šta je relaciona baza podataka? 8. Kako su podaci organizovani u relacionoj bazi podataka? 9. Šta je slog, a šta polje? 10. Koji je drugi naziv za slog? 11. Šta predstavlja polje u tabeli, a šta slog? 12. Navedite jedan RDBM sistem? 13. Koji je upitni jezik danas najzastupljeniji? 14. Navedite neke od primjera za prelazak na poslovanje s računarom podržanim bazama podataka? 15. Nabrojte i objasnite osnovne preporuke pri dizajniranju baze podataka po ECDL - u! 16. U čemu leži prava snaga baza podataka? 17. Nabrojite osnovne objekte Access baze podataka? 18. Kratko opišite ulogu svakog objekta u bazi. 19. Šta je primarni, a šta strani ključ? Navedite i engleske nazive. 20. Na koji način se uspostavljaju veze među tabelama? 21. Koje su tri vrste veza u relacionim bazama podataka i kako ih označavamo? 22. Jedna vrsta veze od te tri nije direktno dopuštena. O kojoj je riječ i kako taj problem rješavamo?
92
Aplikacija baze podataka u MS Accessu I dio Da bismo utvrdili stečena znanja i vještine i da bismo ujedno praktično nadopunili izloženu materiju, ovdje ćemo započeti izgradnju aplikaciju baze podataka u MS Accessu. Aplikacija će biti demonstrirana u dva nastavka: (1) dio o kreiranju i povezivanju tabela i (2) dio o kreiranju upita, obrazaca i izvještaja, i oni će biti prikazani na kraju svakog od poglavlja o tim objektima baze podataka. Ovdje izlažemo prvi dio aplikacije Accessa za izradu relacione baze podataka knjige telefonskih kontakata. Vaš zadatak je da startujete Access instalisan na vašem računaru i da pratite i ponavljate korake koje ćemo ovdje navoditi. Krenimo sa stvaranjem naše male relacione baze. Za početak, ta baza se sastoji od dvije tabele (entiteta): telefon, koja reprezentuje brojeve telefona osoba i osoba, koja predstavlja sve ostale podatke vezane uz pojedinu osobu – adresa, grad, mail, i dr. Složili smo se da uz jednu osobu može biti vezano više telefonskih brojeva. Upoznajmo se šta je to model entiteti - relacije za tu bazu i prikažimo ga:
Model entiteti – relacije naše baze
Objašnjenje načina stvaranja modela entiteti – veze, kao i pravila i konvencija koji su vezani uz te modele je vrlo široka tema, koja prelazi okvire ove knjige. Ona se u okviru predmeta Baze podataka na nekim fakultetima za informatiku i menadžment predaje gotovo pola semestra. Stoga ćemo ovdje dati samo kratke upute koje vam mogu biti dovoljne pri stvaranju i razumijevanju takvih modela: - Nacrtate sve entitete (tabele) koji čine vašu bazu, - U njima navedete svojstva koja ih opisuju, - Primarni ključ označite sa znakom number #, - Svojstva koja su obavezna označite sa znakom • , - Svojstva koja su opciona označite sa znakom ο , - Za vrstu relacije upotrebljavajte slijedeće oznake (1:1 za one to one; 1:n za one to many i n:n za many to many relaciju); vodite računa s koje strane ide n kod 1:n veze, - Vezu koja ne mora dati ni jedan rezultat označite isprekidanom linijom (npr. osoba ne mora imati telefon), a vezu koja obavezno daje neki rezultat označite s punom linijom,
93
- Ispod linije koja označava vezu navedite ključ po kojem su entiteti povezani. 1. Kreirajte novu bazu na nekom folderu, recimo Vjezbe_Acc i nazovite je relacije_vj01 2. Kreirajte dvije tabele, tabela osoba i tabela telefon, na osnovu slijedećih šema, koje usput prikazujemo i grafički:
Tab_osoba(ID_kontakta, Grad, Adresa)
Tab_telefon(ID_telefona, ID_kontakta)
Ime,
Prezime,
Tel_broj,
3. Kreiraćemo i vezu (relaciju) među tabelama. Veze se kreiraju klikom na dugme Relationships na alatnoj traci prozora aplikacije Accessa. Otvoriće vam se okvir za dijalog u kojem određujete šta ćete povezivati - u ovom slučaju mi ćemo se ograničiti samo na tabele:Tab_osoba i Tab_telefon.
U okviru za dijalog uočite tri kartice: Tables, koja prikazuje (nudi na izbor) raspoložive tabele, Queries, koja prikazuje raspoložive upite i Both, koja prikazuje i tabele i upite. Na ponuđenoj listi označite tabele između kojih želite stvoriti vezu (možete koristiti CTRL za označavanje na preskok ili SHIFT za označavanje niza) - kliknete na Add kako bi tabele bile dodate u prozor za stvaranje relacije. Tabelu (i/ili upit) možete dodati i brzim dvoklikom na njeno ime. Postupak zatim ponavljate potreban broj puta dok ne uključite sve željene objekte - ovaj dijalog zatvarate klikom na dugme Close. Mi ovdje imamo samo dva objekta za povezivanje i to su dvije navedene tabele. 4. U otvorenom prozoru Relationships tabele možete prevlačiti principom drag 'n' drop, i mijenjati im dimenzije i položaj kao i bilo kojem objektu u Windowsu - postavite ih na željenu poziciju.
94
Izgled prozora za stvaranje veza
Okvir dijaloga za uređivanje veza
Vezu ostvarujete na način da odvučete polje po kojem su entiteti povezani iz jedne tabele u drugu. Prikazaće vam se okvir za dijalog Edit Relationships za uređivanje te veze. Na samom vrhu tog dijaloga navedene su tabele (upiti) koje su u vezi, a odmah ispod naziv polja po kojem su povezani. Kao što znamo, u jednoj tabeli to polje je primarni ključ, a u drugoj spoljni. Posebno su nam interesantne opcije određene s poljima za čekiranje (check box-ovi). Prva od njih je nametanje pravila referencijalnog integriteta (Enforce Referential Integrity). Ova pravila nam osiguravaju da ne možemo imati unose koji nemaju svog para. To bi kod nas značilo da ne možemo unijeti broj telefona koji ne pripada ni jednoj osobi – tj. to bi bilo kao da smo unijeli broj telefona, a nismo unijeli podatke o osobi kojoj taj broj pripada. Prije uključivanja preostale dvije mogućnosti potrebno ih je dobro i razumjeti. Opcija kaskadnog ažuriranja povezanih polja (Cascade Update Related Fields) osigurava da se pri promjeni primarnog ključa u glavnoj tabeli automatski promijene polja povezanih slogova u drugoj tabeli s novom vrijednosti. Posljednja opcija kaskadnog brisanja povezanih slogova (Cascade Delete Related Records) omogućava automatsko brisanje svih slogova nakon brisanja glavnog (primarnog) sloga – to znači, kada obrišemo osobu iz tabele Tab_osoba automatski se brišu svi njezini brojevi telefona. Na samom dnu nalazi se oznaka tipa veze - u ovom slučaju one – to – many. 5. Uključite sve tri opcije 6. Kliknite na dugme Create kako bi kreirali vezu Da niste uključili opciju nametanja referencijalnog integriteta ne biste dobili vezu koja s jedne strane ima oznaku 1, a s druge ∞ iz čega je direktno vidljivo o kojoj vezi se radi. Veze koje se baziraju na spajanju primarnih ključeva dviju ili više tabela automatski se proglašavaju one – to – one vezama, jer drugačije nije ni moguće. Korisno je istaknuti da prilikom realizovanja relacija many – to – many nećete biti u stanju direktno to ostvariti, već ćete morati stvarati jednu dodatnu tabelu tzv. tabelu za premoštavanje, čime se veza many – to – many razbija na niz one – to – many relacija. Pored nametanja referencijalnog integriteta možete uticati i na tip veze preko dugmeta Join Type…
95
Izgled prozora relacija nakon uspostavljene veze između tabela
Napomena: Ono što nismo naglasili u prethodnim izlaganjima, a veoma je važno kod toga kakvog tipa podatka može biti primarni, a kakvog strani ključ. Strani ključ u tabeli ne može biti tipa AutoNumber kao i primarni ključ, jer je on vezan s vrijednošću koja dolazi iz primarne tabele – može biti bilo koja vrijednost uz mogućnost ponavljanja - biće tipa Number, a dužine Long Integer! 7. Sačuvajte napravljene veze. 8. Zatvorite prozor s vezama. 9. Može da vam se desiti da pogrešno napravite relaciju, pa je trebate obrisati da bi je ponovo napravili ili da je preuredite. Brisanje relacije možete vršiti na više načina. Otvorite prozor s relacijama (Tools Relationships…), označite vezu koju želite obrisati i pritisnete taster DELETE ili napravite desni klik mišem na vezu i iz brzog menija izaberete Delete. Uređivanje je slično. Nakon što ste otvorili prozor s vezama napravite brzi dvoklik na vezu koju želite urediti ili napravite desni klik mišem na vezu, te iz brzog menija izaberete Edit Relationship… 10. Otvorite tabelu Tab_osoba u izvršnom modu i unesite proizvoljne podatke za nekoliko osoba 11. Uočite znak plusa “+” koji se javlja pored polja ID_kontakta - kliknite na znak plusa osobi kojoj želite unijeti broj telefona - unesite nekim osobama i više brojeva (kućni, posao, mobitel)
Unošenje podataka u povezane tabele
12. Sačuvajte načinjene promjene u tabeli Tab_osoba. 13. Otvorite sada tabelu Tab_telefon u izvršnom modu - imaćete prikaz sličan ovom na slici ispod:
96
Worksheet prikaz tabele Tab_telefon
14. Prikaz je prilično nerazumljiv jer iz ID_kontakta ne možemo vidjeti o kojoj osobi je riječ. Međutim, MS Access posjeduje korisno svojstvo koje se naziva pogled među tabelama (lookup), a omogućuje nam da izbjegnemo baš ovakve situacije. Do njega dolazimo preko kartice Lookup u dizajn modu tabela. Bilo bi ugodnije za rad i korisnije da umjesto ID_kontakta imamo ime i prezime osobe. Drugim riječima za svaki ID_kontakta u tabeli Tab_telefon vezaćemo i prikazati pripadno (korespondentno) ime i prezime.23 15. Otvorite tabelu Tab_telefon u dizajn modu 16. Kliknite na polje koje predstavlja strani ključ (ID_kontakta) 17. Prebacite se u karticu Lookup i promijenite Display Control iz Text box u Combo box - automatski će vam se otvoriti nova svojstva za oblikovanje. Osnovna razlika između Text boxa i Combo boxa je što prvi može prikazati samo jednu vrijednost, a drugi više njih. To je upravo ono što mi želimo - želimo vidjeti ime i prezime osobe. 18. Izvor podataka koji će se prikazivati određuje se svojstvom Row source - kliknite na strelicu pored i za izvor izaberite tabelu Tab_osoba.
Izbor izvora podataka koji će se prikazivati
19. Svojstvo Bound Column označava za koju kolonu se vezuju podaci - ostavite vrijednost 1, jer je ID_kontakta upravo u prvoj koloni 20. Column Count označava koliko kolona uključujemo – trebamo uključiti ID_kontakta + ime + prezime. Kako su to uzastopne kolone i ujedno je riječ o prve tri kolone, dovoljno je postaviti da se broje samo tri kolone. 21. Column Heads određuje hoće li se u našem combo boxu prikazivati zaglavlja kolona iz izvorne tabele (roditeljske – parent tabele) postavite na No.
97
22. Pod Column Widths zapravo leži iluzija koju ćemo stvoriti. Postavićemo širinu prve kolone na nula, a ostale dvije na 4 cm (upisujete samo brojeve bez jedinica). Na ovaj način nećemo vidjeti prvu kolonu ID_kontakta već samo ime i prezime. Nama se prikazuje ime i prezime osobe, a računar radi s brojem – ID_kontakta. 23. List Width određuje širinu liste (combo boxa) - postavite je na 6 cm (možete ostaviti i automatsku širinu određenu po default-u) 24. Limit to List određuje može li korisnik unijeti vrijednost koja nije u listi. Kada se Bound Column (vezana kolona) ne prikazuje kao prva kolona combo box automatski djeluje kao da je zabrana na unos postavljena - ostavite Yes.
25. Prebacite se na karticu General i pod Caption upišite Ime i prezime
26. Sačuvajte promjene načinjene u dizajn modu 27. Otvorite tabelu u izvršnom modu da vidite napravljene promjene.
Rezultat promjene pogleda među tabelama
98
28. Za sada smo zadovoljni s našom bazom, ali recimo da nas zanima informacija da li je riječ o kućnom ili poslovnom broju, te da se kasnije informacije mogu izdvajati i po broju mobitela. Očigledno je potrebno dodati još jednu tabelu koja će definisati vrstu telefonskog broja. Tabela će imati samo dva polja (id_vrste_tel_broja i vrsta_tel_broja), a biće povezana s tabelom Tab_telefon preko ključa id_vrste_tel_broja). 29. Skicirajte novi model entiteti – veze. Kreirajte novu tabelu koju ćete nazvati Tab_vrsta_tel_broja u kojoj će vam polje id_vrste_tel_broja biti primarni ključ, a vrsta_tel_broja polje s tekstualnim tipom podataka dužine 15 znakova. Šema ove tabele je: Tab_vrsta_tel_broja(id_vrste_tel_broja, vrsta_tel_broja) 30. U tabelu Tab_vrsta_tel_broja redom unesite podatke - mob; kućni; posao. U tabeli Tab_telefon dodajte polje koje predstavlja strani ključ - id_vrste_tel_broja (vodite računa kojeg tipa podataka to polje treba biti u toj tabeli) Sada kada ste kreirali novu tabelu i u Tab_telefon dodali strani ključ, preostaje nam još da uspostavimo nove veze. 31. Preko menija Tools - Relationships… otvorite prozor relacija. 32. Otvorite dijalog za dodavanje tabela u taj prozor - klikom na ikonu Show Table… s alatne trake Relationship ili napravite desni klik mišem bilo gdje na površinu relacionog prozora i iz brzog menija izaberite opciju Show Table…
Dodavanje nove tabele u relacioni prostor za stvaranje veza
33. U otvorenom dijalogu izaberite novostvorenu tabelu i dodajte je u relacijski prostor klikom na dugme Add. 34. Kreirajte vezu između tabela Tab_telefon i Tab_vrsta_tel_broja povlačenjem pripadnog polja iz jedne u drugu tabelu. 35. U dijaloškom okviru Edit Relationships koji vam se pojavi, uključite opciju nametanja referencijalnog integriteta (Enforce Referential Integrity)
99
Izgled relacionog prostora nakon načinjenih promjena
36. Sačuvajte načinjene promjene u relacionom prostoru (CTRL + S). 37. Otvorite li tabelu Tab_telefon u izvršnom modu vidjećete da je nužno mijenjati pogled među tabelama Tab_telefon i Tab_vrsta _tel_broja. Prisjetimo se da se promjena pogleda radi preko kartice Lookup u Design modu tabele. Otvorite tabelu Tab_telefon u dizajn modu i kliknite na polje id_vrste_tel_broja 38. U kartici Lookup napravite promjene prema donjoj slici:
Promjena pogleda među tabelama
39. Prebacite se u karticu General i pod Caption stavite naziv vrsta_telefona 40. Sačuvajte načinjene promjene i zatim tabelu otvorite u izvršnom modu. 41. Popunite podatke za vrstu telefona i zatim sačuvajte načinjene promjene.
Slika 36 Izgled tabele Tab_telefon nakon promijenjenog pogleda
100
42. Popunite bazu kontakata proizvoljnim podacima tako da imate podatke bar za 15 osoba 43. Nakon popunjavanja dodatnim podacima zatvorite bazu 44. Kopirajte vašu bazu relacije_vj1 u novi folder baze, koji ćete napraviti unutar vašeg foldera primjeri_Acc 45. Preimenujte kopiranu bazu u upiti_vj2 Ovim smo s aplikacijom došli do dijela kada iz naše baze želimo izvlačiti neke informacije i vršiti razne manipulacije s tačno željenim skupom podataka. Tu sada na scenu stupaju upiti, obrasci i izvještaji, dakle objekti Accessa o kojima ćemo detaljnije govoriti u narednim poglavljima. Stoga će nastavak izrade ove aplikacije uslijediti nakon obrade tih poglavlja.
13. UPITI Pored tabela, razvijena baza podataka u Accessu sastoji se još od slijedećih objekata: upiti (Queries), obrasci (Forms) i izvještaji (Reports), a može još da sadrži: Data Access stranice (Data Access Pages), makroe (Macros) i/ili VBA module (Visual Basic for Application - programski jezik za programiranje operacija u MS Office aplikacijama). Organizacija podataka u relacionim bazama u vidu odvojenih tabela koje su povezane nekim ključem može se nekom na prvi pogled činiti prilično nepregledno i nespretno, pogotovo kada se želi doći do neke složene informacije ili kada želimo istovremeno raditi s podacima koji su smješteni u više različitih tabela. Međutim, upravo su upiti namijenjeni za ispunjavanje takvih ili sličnih zadataka i predstavljaju koristan alat, puno korisniji od klasičnih filtera podataka. Upiti korisniku omogućavaju povezivanje podataka iz jedne ili više tabela, sortiranje podataka na novi način, izračunavanje novih polja na bazi poznatih i filtriranje nekog skupa podataka po tačno željenim kriterijima, pa čak i puno više od toga. Upit je komponenta baze podataka kojom se koristimo kada želimo pronaći, izbaciti i promijeniti određene podatke iz jedne ili više tabela. Njih možemo koristiti kao podlogu za izvještaje ili forme. Upite koristimo kada želimo da nađemo neki podatak ili grupu podataka iz jedne ili više tabela na osnovu nekog uslova ili parametra (vrijednost koju unosimo svaki put prije pokretanja izvještaja). Upit je tip objekta za postavljanje pitanja o podacima iz tabela (ili upita), a u cilju njihovog ažuriranja pomoću obrazaca ili pregleda pomoću izvještaja (na ekranu ili stampaču), pa se oni mogu definisati kao posredni izvori podataka. Odgovor na svaki upit može biti samo nova tabela. Ta tabela je rezultat upita (dynaset) i dinamičke je prirode. Vrijednosti upita nisu fiksne nego se mijenjaju u zavisnosti od promjene podataka u tabelama na kojima postavljamo upit i koje se povezuju u upit. Na primjer, u upit se mogu povezati tabele o preduzećima i zaposlenima. Ako se, na primjer, u preduzeću zaposli novi radnik evidentiranje zapošljavanja tog radnika u tabeli zaposleni automatski će se evidentirati i u upitu (i obrnuto).
101
Na primjer, upiti mogu da daju informacije (odgovore na pitanja) kao što su "koliko kupaca je iz Banjaluke i Prijedora, koja su njihova imena i brojevi telefona", s tom razlikom što naš nalogodavac govori našim jezikom, a upit jezikom SQL. Upiti se mogu koristiti za spajanje (engl. join) kolona iz više (relacijama povezanih) tabela. Jedan upit bi mogao, na primjer, da spoji tabele kupaca, narudžbi, stavki narudžbi i proizvoda da bi odgovorio na pitanje "koji kupci su naručili koje proizvode i kolika je vrijednost njihovih narudžbi". Upiti služe kao posredni izvori podataka za izbor (selekciju) podataka na specifičan način. To podrazumijeva: filtriranje, grupisanje, pretraživanje, sumiranje podataka iz jedne tabele ili povezivanje više tabela po određenim kriterijumima. To su zadaci tzv. selekcionih upita. Ali, upiti, kao što ćemo kasnije vidjeti, mogu biti i akcioni, tj. da služe za kreiranje novih tabela, dodavanje novih slogova ili brisanje postojećih slogova i da vrše izmjene sadržaja pojedinih polja. Svaki dalji rad u upravljanju bazom podataka zasniva se na kreiranju ostalih objekata (forme i izvještaji) koji bez upita ili tabela, jednostavno, ne mogu funkcionisati. Jednom kada kreirate upite s njima možete raditi kao s ostalim tabelama u bazi. Zbog toga se često upiti nazivaju i virtualne tabele. Skup slogova koji nastaju kao rezultat pokretanja upita naziva se recordset (zabilježeni skup slogova). Ako ga možete uređivati onda se naziva dynaset (dinamički skup slogova), a ako ne snapshot (snimka slogova).
13.1 Vrste prikaza upita Upiti se koriste da se podaci u bazi podataka na različite načine pregledaju, mijenjaju i analiziraju. Upiti se mogu koristiti i kao izvor slogova za obrasce i izvještaje. Upitima se mogu spojiti podaci iz slogova iz više tabela i sortirati ih po određenom redoslijedu. Njima se mogu izvoditi i operacije nad grupama podataka. Upiti definišu akcije nad izvornim tabelama pa oni i sami postaju logičke, kažemo privremene ili virtuelne tabele, za razliku od realnih, fizičkih tabela. U upitu osnova ne mora biti isključivo tabela, čak šta više, to može biti i drugi upit ili tabela i upit ili više tabela i više upita. Upite koristimo za izdvajanje slogova ili dijelova slogova iz jedne ili više povezanih tabela ili za uređivanje slogova. Pojednostavljeno rečeno: pomoću upita možemo da sastavimo informaciju čiji se dijelovi mogu nalaziti u više povezanih tabela i/ili jednog ili više upita. Sjetite se da smo spomenuli kako upite možemo smatrati virtualnim tabelama. To će značiti da će raspored kolona u dizajnerskoj rešetci upita (kao na slici 119) odgovarati stvarnom rasporedu kolona virtualne tabele (upita). Promjenu širine kolona, zamjenu mjesta kolonama i brisanje pojedine kolone u rešetci upita vrši se potpuno analogno kao i u Excel tabelama.
102
Slika 119. Dizajnerski prikaz upita
Upiti su posebni pregledi kojima se postavlja neki zahtjev nad tabelom, više tabela, upitom ili više upita, zavisno od toga šta smo izabrali u redu Table rešetke upita, i koji izdvajaju podatke za pregled na ekranu ili štampanje putem izvještaja. Na primjer, ukoliko želite pregled svih narudžbi ostvarenih poslije mjeseca januara 2007. Godine, u kriterijum za upit (red Criteria u rešetci upita) upisaćete >31.01.2007. Meni View nudi pet vrsta prikaza upita (pogleda, modova): Design View (vizuelni dizajn), SQL View (dizajn u kódu SQL-a), Datasheet View (izvršenje, pregled i ažuriranje rezultujućeg skupa podataka), PivotTable View (pogled u obliku pivot tabele) i PivotChart View (za grafičku analizu podataka), kako se vidi na slici dole. Mi ćemo se najviše zadržati na pogledu Design View, a SQL View ćemo konsultovati samo toliko da bismo shvatili koncepciju SQL upitnog jezika.
Slika 120. Izbor vrste pogleda na upit iz menija aplikacije
Slika 121. Izbor vrste pogleda na upit s linije alata
103
Slika 122. Izgled jednog upita u pogledu PivotChart
Najjednostavnija i najčešća vrsta upita je selekcioni upit-select query. Da biste kreirali selekcioni upit morate otvoriti grupu Queries u oknu Objects i na liniji alata, u prozoru baze5, kliknuti na dugme New. Otvoriće se okvir za dijalog New Query (kao na slici 123), u kojem će vam se ponuditi da izaberete jedan od pet mogućih načina pravljenja upita.
Slika 123. Okvir dijaloga New Query
Izborom opcije Design View pri kreiranju novog upita otvara se prozor (slika 124) u čijoj liniji za naslove (Titlle bar) je ispisano ime i tip upita (Query9:Select Query), zatim dolazi prostor upita, podijeljen na gornji i donji dio. Gornji dio služi za pozivanje i prikaz svih objekata (tabela i/ili upita) koji učestvuju u upitu i veza među objektima. Donji dio se zove dizajnerska rešetka upita i u njemu se, pomoću redova rešetke kreira struktura upita.
5
Trebate strogo razlikovati liniju alata u prozoru aplikacije Accessa i liniju alata u prozoru baze podataka, jer su funkcije alata na njima međusobno potpuno različite.
104
Funkcija upita (selekcioni, akcioni ili unakrsni) određuje se, kasnije, izborom u meniju ili sa linije alata u prozoru aplikacije, ali u startu svaki novi upit se otvara kao selekcioni. Uz to, otvara se i okvir dijaloga Show Table za izbor objekata za gradnju upita.
Slika 124. Okvir dijaloga Show Table
Objekti koji su izabrani za gradnju upita smještaju se u gornji prostor upita, a klikom na dugme Close zatvara se okno za dijalog Show Table.
Slika 125. Objekti aplikacije izabrani za gradnju upita
U redu Field dizajnerske rešetke upisuje se naziv obilježja. U redu Table upisuje se naziv tabele (ili upita) kojoj obilježje pripada. U redu Sort označavaju se opcije običnog ili inverznog sortiranja za obilježje prema kojem se upit sortira. U redu Show znak kvačice u kvadratiću označava prikaz tog obilježja u upitu. U redu Criteria upisuje se uslov selektovanja podataka. Access sada od vas očekuje da mu „saopštite“ iz koje tabele, ili upita, ćete koristiti koja polja za pravljenje vašeg upita, ovdje nazvanog Query1. Na slici 126 demonstriramo izgled ekrana kada je u izradi jednog selekcionog upita u ponudi više tabela potencijalnih „učesnika“ (Calls, Contact Types, Contacts, Switchboard Items). Na slici 127 pokazujemo okvir Query Properties za izbor osobina upita, koji se dobija izborom iz menija View opcije Properties, kao na slici 128, ili klikom na alat Properties liniji alata prozora aplikacije Accessa.
na
105
Slika 126. Izgled ekrana nakon izbora dizajna Queries →New
Slika 128. Izbor opcije Properties iz menija View
Slika 127. Prozor Properties upita
Slika 129. Izbor opcija New Query
Da objasnimo opcije koje se nude (na slici 129) kao načini kreiranja novog upita: Design View je manuelni dizajnerski način kreiranja upita. Izborom ove opcije prikaza startuje se ekran za dizajniranje upita. Otvara se prazan prostor za upit u koji sami morate postavljati polja koja želite da budu u njemu. Simple Query Wizard je standardni "čarobnjak" za kreiranje jednostavnih upita (npr. grupisanje i sortiranje određenih polja, slogova odabranih tabela ili ranije formiranih upita po nekom kriterijamu). Ovaj čarobnjak ubrzava i pojednostavljuje proces izbora polja u upitu. Početnicima u korišćenju Accessa preporučuje se da izaberu ovu opciju. Crosstab Query Wizard omogućuje kreiranje upita tipa unakrsnih tabela. U toku dijaloga omogućeno je vezivanje nekih od agregatnih funkcija (Sum, Min, Max, ...) za polja koja postavite u presjeke redova i kolona, kao i sumiranje po redovima.
106
Find Duplicates Query Wizard kreira upit koji pretražuje izabranu tabelu (ili upit) i nalazi slogove sa jednakim vrijednostima u jednom ili više definisanih polja. Find Unmached Query Wizard pomaže da se kreira upit koji traži slogove koji postoje u jednoj tabeli, a ne slažu se sa poIjima druge tabele na koje bi trebalo da se referenciraju. Reference (a zatim i relacija) se ne mogu ostvariti dok se ne obezbijedi potpuno slaganje po ovim poljima, pa se ovaj alat koristi kada se pojave problemi sa uspostavljanjem relacije (uključivanje referencijalnog integriteta preko referentnih polja) između dvije tabele. Ovaj čarobnjak traži redove iz jedne tabele koji nisu povezani ni sa jednim redom u drugoj tabeli.
13.2 Kreiranje upita u dizajnerskom prikazu Upite možete kreirati ili pomoću čarobnjaka ili manuelno-u dizajnerskom prikazu. U dizajnerskom prikazu vi određujete sa kojim podacima želite da radite, i to iz kojih tabela ili upita, a zatim možete da definišete kriterijume u tabeli upita i to sve samo pomoću miša. Na Design prozoru selektujte tabulator Query, a zatim selektujte opciju Create query in Design view. Klikom na ikonu New , na ekranu će se pojaviti novi prozor i okvir za dijalog. Novi prozor omogućava da se upit detaljnije specificira, a okvir za dijalog da selektujete sve tabele koje želite da budu uključene u upit.
Slika 130: Dijalog za izbor tabela za kreiranje upita
U okviru za dijalog selektujte tabelu ili upit koji želite ba bude uključen u novi upit, a zatim kliknite na dugme Add. Ponovite istu operaciju za sve ili još neke ostale tabele i/ili upite. Na prozoru, koji se ranije pojavio u pozadini okvira za dijalog, prikazaće se sve selektovane tabele, i/ili upiti, kao i relacije koje ste ranije pri kreiranju tabela uspostavili između tabela:
107
Slika 131: Selektovane tabele i/ili upiti i relacije za izradu konkretnog selekcionog upita
Na narednoj slici prikazana je situacija kada jedna od selektovanih tabela (i/ili upita), na primjer, nema uspostavljenu relaciju sa drugim tabelama ili upitima (tabela Proizvodi):
Slika 132: Jedna od selektovanih tabela (i/ili upita) nema uspostavljenu relaciju
Da biste ponovno uspostavili relaciju između tabela (i/ili upita), kliknite lijevim tasterom miša, zadržite ga pritisnutog na polje (atribut) koje treba da ima vezu sa drugom tabelom, a zatim pomjerite kursor miša (koji će se promijeniti i izgledati kao pravougaonik) na polje u drugoj tabeli sa kojom želite da uspostavite vezu. Na prozoru će se pojaviti linija koja označava relaciju između dvije tabele:
Slika 133: Ponovno uspostavljena relacija jedne tabele
108
Kliknite dva puta na liniju koja označava relaciju, ili desni klik mišem na liniju i iz brzog menija izaberite opciju Join Properties,
Slika 134: Dijalog za izbor opcije Join Properties
Na ekranu će se prikazati okvir za dijalog Join Properties na kojem možete da podesite vrstu uspostavljene relacije:
Slika 135: Dijalog za podešavanje svojstava relacije
Upit se najčešće kreira i testira u dizajnerskom prikazu (manuelno). U gornjem panelu upita na slici 133. prikazane su tabele (i/ili upiti) koji sačinjavaju upit koji se dizajnira, dok se u donjem panelu ubacuju polja koja čine upit. Pri kreiranju novog upita automatski se otvara dijalog za izbor tabela (i/ili upita) koje će ga sačinjavati, a inače se može pozvati preko Show Table tastera. Željeni objekat se selektuje i klikom na Add prebacuje u gornji panel. Polja koja će se naći u upitu, biraju se prenošenjem iz gornjeg panela na slobodno mjesto (Field) ili dvostrukim klikom na njega u gornjem panelu. Donji dio upita u dizajnerskom pogledu tehnički se naziva rešetka upita pomoću primjera (QBE grid-rešetka Query by Example), ali se obično jednostavno zove dizajnerska rešetka. Ona predstavlja dizajnersko vizualno sredstvo za definisanje podataka koje projektant baze želi da mu upit izabere. Svaki red u dizajnerskoj rešetci ima specifičnu svrhu, kako je to pokazano u narednom tabelarnom prikazu: Red dizajnerske rešetke Funkcija Field Ispisuje ime polja koje želimo da uključimo u upit. Table Ispisuje ime tabele od koje dolazi to polje. Total Izvodi se proraračun u upitu. Sort Određuje redoslijed sortiranja prikaza u upitu. Show Pokazuje ili sakriva polje. Criteria Kazuje Accessu kriterij po kome će upit izabrati slogove. Or Služi za dodatne kriterije. Tab. prikaz 4: Funkcije redova dizajnerske rešetke
Naravno, nisu svi redovi prikazani odjednom, nego, kao što ćemo kasnije vidjeti, to zavisi od tipa upita koji pravimo. Ako je u View meniju čekirana opcija Table Names, u donjem panelu se prikazuje i polje Table, u kome stoji ime objekta iz koga potiče dato polje.
109
Ako upit treba da sadrži neke sumirajuće funkcije ili matematičke izraze, izborom opcije Totals, koji se obavlja klikom na dugme Sum na liniji alata u prozoru aplikacije, u donjem panelu pojavljuje se i polje Total, koje nudi funkcije: Group By, Sum, Avg, Min, Max, Count, StDev, Var, First, Last, Expression, Where. Pomoću upita sa totalima ne mogu se mijenjati podaci u tabelama kao sa akcionim upitima. Opcija Sort daje mogućnost sortiranja po izabranom polju (ili poljima) po rastućem (Ascending) ili opadajućem (Descending) poretku, a sa Show se bira da li će po izvršenju upita dato polje sa podacima biti vidljivo. U redu Criteria rešetke upita upisuju se granični uslovi za prikaz podataka iz odgovarajućeg polja. Uslova može da bude više i ako se oni upisuju jedan ispod drugog (Or), čine logičku OR operaciju, to znači da će biti izabrani oni slogovi kod kojih je u nekom polju ispunjen „taj ili taj uslov“. Ako se oni upisuju horizontalno po poljima reda Criteria, tada uslovi u više polja čine logičku AND operaciju, to znači da će se u upitu prikazati slogovi kod kojih su ispunjeni uslov „za to I to polje“. Kriterijum najčešće čine logički i relacioni operatori, ali može biti i kombinacija konstanti, operatora, funkcija, literara, imena polja, kontrola i svojstava (properties) uz standardne džoker znake * i ?. Expression Builder je alat za pravljenje matematskih izraza koji vam može pomoći u korišćenju funkcija MS Access-a i SQL-a, u kreiranju izraza (formula), ali je njegova osnovna namjena da vas uputi u osobine funkcija i objekata koji vam stoje na respolaganju. On se iz upita u dizajn prikazu pokreće klikom na alat Build na traci sa alatima prozora aplikacije. O njemu će više riječi biti u jednoj od narednih vježbi. Radi jednostavnosti rada odabraćemo standardni čarobnjak-Simple query wizard, alat za pravljenje jednostavnih upita. Nakon izbora ove opcije pojavljuje se okvir za dijalog prvog koraka čarobnjaka:
Slika 136.
110
-
-
Vaš zadatak dalje je da: iz polja Tables/Queries odabirete tabelu, ili upit, iz kojeg želite vidjeti polja,a iz liste Avaliable fields: odabirete polja iz te tabele (ili upita) koja će se nalaziti u upitu tako da označite polje i kliknete na dugme za . Ova dva koraka možete ponavljati sve dok ne prebacivanje odaberete sva polja iz svih tabela (i/ili upita) koje želite. Sva polja odjednom iz odabranog objekta se izabiru (prebacuju) klikom na dugme . Kliknete na taster . Otvoriće se okvir za dijalog drugog koraka čarobnjaka:
Slika 137. Okvir za dijalog drugog koraka čarobnjaka
U polje na vrhu prozora upisujete naziv (title) upita, a pri dnu ekrana birate da li želite da vidite rezultate upita (Open) ili želite još da dotjerate dizajn upita (Modify). Nakon ovog koraka čarobnjaka upit bi prikazao sva odabrana polja i podatke iz svih slogova za odabrana polja. Da bi gledali određene slogove morate još postaviti kriterije po kojima će slogovi biti prikazani, stoga odabirete drugu opciju (Modify the query design) i otvara se Design View pogled upita sa već odabranim poljima.
Slika 138. Selekcioni upit u dizajnerskom prikazu
111
U redu Field rešetke upita, iz padajuće liste , upisuje se polje čiji će se sadržaj prikazati u upitu, a u polju reda Table naziv tabele iz koje je to polje. To isto postiže se brže ako dva puta brzo kliknemo na polje u prikazu objekta u gornjem panelu upita. U redu Sort rešetke upita, iz padajućeg menija (kada se mišem pozicionirate u desni dio tog polja pojaviće se strelica padajućeg menija), izabirete uzlazno ili silazno sortiranje vrijednosti tog polja u upitu. Preko check box-a u redu Show rešetke upita određujete hoće li se dotično polje prikazati u upitu (hoće li ono biti vidljivo). Svi kriteriji koji se nalaze u istom redu Criteria rešetke upita odgovaraju vezanju s logičkim i (AND), dok redanje kriterija u svim redovima ispod odgovara vezivanju s logičkim ili (OR). Kako smo već istakli, pri kreiranju složenih upita ne morate se ograničiti samo na upite iz tabela, već ih možete kreirati i iz drugih upita, te kombinovano iz tabela i upita. Sjetite se priče s početka o slogovima koje daju upiti (recordset). Rekli smo da postoje dva tipa recordset-a: dynaset, koje možete uređivati, i snapshot, koje ne možete uređivati. Pri kreiranju upita trebate voditi računa kakav tip slogova želite da korisnik dobije. Ukoliko mu želite omogućiti da mijenja podatke i unosi nove, recordset ćete postaviti da bude tipa dynaset, a u protivnom snapshot. I još jedno pojašnjenje, ako upitom želite korisniku omogućiti da samo pregledava određene podatke, onda pravite Select Query. Ako upitom korisniku želite omogućiti da utiče na te podatke da ih mijenja, da ih briše, dodaje nove slogove ili općenito vrši neke promjene u objektima, onda pravite Action Query.
13.3 Kreiranje upita korišćenjem čarobnjakaSimple Query Wizard-a Na Design prozoru selektujte tabulator Query. Kliknite na ikonu New: . Na ekranu će se prikazati prvi okvir za dijalog na kojem treba da selektujete opciju Simple Query Wizard:
Slika 139: Dijalog za izbor opcije pravljenja upita
112
a zatim kliknite na dugme OK. Na slijedećem okviru za dijalog selektujte tabelu nad kojom želite da kreirate upit:
Slika 140: Dijalog za izbor tabele i polja koja će učestvovati u upitu
a zatim selektujte polja koja želite da upit sadrži:
Slika 141: Izabrana su polja za upit iz tabele Proizvodi
Kliknite na dugme
i na ekranu će se pojaviti slijedeći okvir za
dijalog:
Slika 142: Dijalog za izbor između zbirnog ili detaljnog upita
113
Ponovo kliknite na dugme okvir za dijalog :
, na ekranu će se pojaviti slijedeći
Slika 143: Dijalog za izbor imena upita
Odredite ime upitu i kliknite na dugme prikazan rezultat vašeg upita:
. Na ekranu će biti
Slika 144: Gotov upit u pogledu Worksheet
Ovaj primjer ilustruje samo osnovne principe kreiranja upita. Trebate znati da uvijek možete upit da izmijenite, dodate novu tabelu, napravite nove relacije ili zadate druge kriterijume. Pri tome trebate da vodite računa da se dizajnerske izmjene koje biste htjeli obaviti u povezanim tabelama mogu vršiti tek kada se ukinu (obrišu) relaciju između njih, a onda ih, nakon izvršenih izmjena u tabelama, trebate ponovno napraviti (vratiti). O pravljenju i brisanju veza (relacija) između tabela, već smo govorili, a više riječi biće u jednoj od narednih vježbi.
13.4 Selektovanje polja koja će biti prikazana u upitu Nakon što ste izabrali tabelu/tabele čija polja će učestvovati u upitu, kliknite dva puta mišem na polje koje želite da bude u upitu ili izaberite polje sa liste (Field) dole u rešetki upita.
114
Slika 145: Izbor tabela i/ili upita za izradu upita
Slika 146: Jedan način izbora polja tabele za upit
Kada ste odabrali objekte čija polja će „učestvovati“ u gradnji upita, o tome smo već govorili i pokazali vam ranije, preostaje da u rešetku upita unesete polja iz tih objekata koja će činiti strukturu upita. Ako nećete da ih upisujete ručno, što je veoma zamorno, i ne preporučuje se zbog mogućnosti pravljenja greške pri unosu, ima više lakših načina da ta polja, i nazive objekata iz kojih polja potiču, unesete u dizajnersku rešetku. Jedan način da odjednom izaberete više ili sva polja iz jednog objekta (tabele, upita) koja će učestvovati u upitu je da držite pritisnut taster Shift i redom klikčete polje po polje - izabirete ih. Drugi način je da pomoću tastera Shift markirate polja koja želite da učestvuju u upitu, a zatim ih mišem prevučete dole u rešetku upita (metoda drag and drop - metoda prevlačenja i spuštanja). Jedan način da sva polja iz nekog objekta prebacite u dizajnersku rešetku upita je da dva puta brzo kliknete na zvjezdicu u tom objektu. U rešetci upita u polju Field upisaće se imeTabele.*, što znači da su unešena sva polja iz tabele imeTabele, a u red Table rešetke biće unešen naziv tabele (imeTabele) iz koje ta polja potiču.
Slika 147. Prikaz unošenja svih polja iz nekog objekta
Redoslijed polja u upitu može da se mijenja na isti način kao što se mijenja redoslijed kolona u tabeli, prevlačenjem.
115
Ako želite da slogovi budu sortirani, u polju Sort selektujte način (Ascending - rastući niz ili Descending - opadajući niz) na koji će oni biti sortirani.
Slika 148: Izbor opcije sortiranja prikaza podataka iz polja prezime
Ako check box (kućica za ovjeru polja ) Show nije selektovan, to polje neće biti vidljivo kada startujete upit, ali možete da ga koristite za definisanje kriterijuma. Na slijedećem primjeru upit će prikazati samo polja ProizvodiID i Naziv, ali samo one slogove u kojima je vrijednost polja Kolicina veća od 2 ili jednaka 2 i to samo proizvode čiji naziv počinje sa slovom N. Operator Like u SQL-u služi za upoređivanja tekstualnih nizova.
Slika 149: Unošenje kriterija selekcije podataka iz polja Naziv i Kolicina
13.5 Tipovi upita Kada je otvoren prozor za dizajn upita, u meniju Query nalaze se naredbe za dizajniranje šest tipova upita: upit za odabir podataka (Select Query), upit s unakrsnim tabelarnim prikazom podataka (Crosstab Query), upit za pravljenje tabela (Make-Table Query), upit za mijenjanje podataka (Update Query), upit za umetanje redova (Append Query) i upit za brisanje redova (Delete Query).
116
Slika 150. Opcije menija Query
Slika 151. Izbor tipova upita sa alatne trake
Isti meni možete takođe dobiti ako kliknete na ikonu Query Type na alatnoj traci ili desnim tasterom miša na gornji panel upita i iz brzog menija (koji se pojavljuje nakon klika desnim tasterom miša) odaberete podmeni Query Type.
Slika 152. Izbor tipa upita iz brzog menija
Nakon što odaberete jedan od tipova upita (selekcioni, unakrsni, parametarski ili akcioni), otvoriće se okvir za dijalog za taj upit, u kojem treba da odaberete tabelu (više tabela i/ili upita) na osnovu koje želite da napravite upit. Selekcioni upit - Select Query, je najčešći i najjednostavniji tip upita, kojim se pregledaju i analiziraju podaci iz tabela. Podaci mogu da potiču iz jedne ili iz više tabela ili drugih upita. Ovi upiti, kao rezultat, vraćaju podatke iz jedne ili više tabela, zasnovane na određenim kriterijumima postavljenim prilikom dizajna. Rezultat upita Access prikazuje u tabeli (datasheet), u kojoj možete podatke i da mijenjate. Osim funkcije pregledanja i analiziranja podataka, pomoću ove vrste upita podatke možete grupisati i nad njima vršiti matematičke operacije, kao što su: sumiranje sadržaja polja, prebrojavanje slogova, izračunavanje srednje vrijednosti i dr. Akcioni upit - Action Query, je specijalni tip upita koji jednom operacijom mijenja veću grupu podataka. Ovi upiti iz tabela upita prave (make) nove tabele ili prave velike izmjene u nekoj tabeli. Takvi upiti dopuštaju da dodate (append) ili obrišete (delete) slogove iz tabele ili da
117
napravite izmjene (update) u slogovima na osnovu izraza koji unosite pri kreiranju upita. Osnovni tipovi akcionih upita su: - Upit za pravljenje tabele-Make Table Query, omogućava kreiranje novih tabela izborom polja iz postojećih. Ovim upitom se kreiraju nove tabele i to od dijela ili svih slogova jedne ili više tabela. Najčešće se koriste za kreiranje tabela koje će se "izvesti" (eksportovati) u druge Access baze podataka ili za kreiranje izvještaja koji će prikazivati podatke u određenom vremenskom trenutku ili za kreiranje "backup" (rezervnih) kopija postojećih tabela. - Upit za brisanje podataka - Delete Query, briše slogove podataka iz jedne ili više tabela u skladu sa navedenim uslovom. Recimo, možete obrisati podatke iz tabele Proizvodi kojima je, na primjer, istekao rok ili za koje nema narudžbi. Sa ovim upitima možete izbrisati samo cio slog, ali ne i sadržaj određenog polja nekog sloga. - Upit za dodavanje podataka u tabele - Append Query, dodaje izabrane podatke jedne tabele drugoj. Ovim upitima u jednu ili više tabela dodajemo nove slogove i to na kraj datih tabela. Na primjer, ovim upitom možemo dodati nove kupce u tabeli Kupci. - Upit za ažuriranje tabela - Update Query, mijenja sadržaj odabranih polja u jednoj ili više tabela. Na primjer, jednim "update" upitom možete, na primjer, povećati cijenu za 5%, proizvodima u tabeli Proizvodi. Znači, ovim upitima mijenjamo podatke u poljima postojećih tabela. S obzirom da se akcionim upitima mijenjaju podaci u poljima u tabeli (Update Query), umeću redovi u tabelu (Append Query) i brišu redovi tabele (Delete Query), dakle vrši izmjena podataka u tabeli, to je, radi sigurnosti, prije pokretanja akcionih upita dobro je napraviti rezervnu kopiju tabele nad kojom će upit biti izvršen. To učinite tako da otvorite prozor Database, označite tabelu, u meniju Edit odaberete naredbu Copy, a zatim naredbu Paste, te u dijaloškom okviru upišete novo ime tabele. Unakrsni tabelarni upit - Crosstab Query, je upit gdje su podaci grupisani po kolonama i redovima, na način koji je uobičajen za unakrsne tabele, u Excelu poznate kao pivot tabele. Takvi upiti nam služe za grupisanje informacije po dvije ili više kategorija. Pogodni su za sumiranje velikog broja informacija u preglednom obliku. Korisni su za analiziranje podataka i izradu grafikona ili dijagrama na osnovu sume vrijednosti numeričkih polja većeg broja slogova. Unakrsni tabelarni upit prikazuju sumirane podatke (zbir, ukupni broj ili srednju vrijednost) i to iz jednog polja i grupiše ih, po jednom osnovu, ispod - lijevo tabele, i po drugom osnovu, u naslovnoj liniji (redu) tabele. Kod unakrsnog upita možete imati više zaglavlja redova (Row Heading) po kojima se vrši grupisanje po redovima, samo jedno zaglavlje za kolonu (Coloumn Heading) i samo jednu vrijednost koju prikazujete kao rezultat (Value)! Ove upite možete kreirati pomoću čarobnjaka Crosstab Query Wizard ili "manuelno" u dizajn modu. Osim toga, podatke možete prikazati "unakrsno" i bez "unakrsnog" upita, a pomoću čarobnjaka za pivot tabele (PivotTable Wizard).
118
Parametarski upiti - Parameter queries, su upiti koji prije vraćanja rezultata prikazuju dijalog prozore u koje korisnik treba da unese parametre kriterijuma, koji će uticati na rezultat upita. Parametarski upiti spadaju u grupu dinamičkih upita. Kod te vrste upita kriterij za izbor slogova nije određen pri samom kreiranju upita, već je korisniku baze ostavljena mogućnost zadavanja kriterija pri samom pokretanju upita. Kada se takav upit pokrene korisniku se javlja jedan ili više dijaloških okvira u koje ovaj upisuje željene kriterije.Možete da kreirate upit koji će tražiti od korisnika da unese i više od jednog parametra - na primjer, možete naložiti korisniku da za, recimo, neki izvještaj unese dva datuma, početni i krajnji. Posebni SQL upiti - SQL Specific Queries karakteristični su za SQL (Structured Query Language), koji se ne kreiraju u standardnom pogledu (Design View), već u SQL dizajn modu (SQL View). Tu razlikujemo dvije vrste upita, i to: - Pass-Through Query je upit koji šalje komande direktno na server SQL baze podataka (SQL database server), kao što je Microsoft SQL Sequerity Sybase SQLServer. Sa tabelama se radi na serveru, umjesto da se linkuju u aplikaciju. - Data-Definition Query je upit koji, slično tipu Action Query, mijenja i kreira nove tabele u bazi.
13.6 Kreiranje selekcionog upita samo za pregledanje-tipa Snapshot U slučaju da ste se odlučili da korisniku baze podataka omogućite samo uvid u podatke po određenim kriterijima, a ne i izmjene, kreiraćete selekcioni upit tipa snapshot. Kako to da izvedete? Pa, radite sve kao i do sada samo na kraju tip zapisa promijenite u snapshot: 1) Otvorite upit u dizajn pogledu. 2) Napravite desni klik mišem bilo gdje na površini prozora upita i iz brzog menija odaberite opciju Properties (kao na slici 153), ili na alatnoj traci u prozoru aplikacije kliknite na alat Properties . 3) Iz otvorenog prozora Query Properties promijenite Recordset Type iz Dynaset u Snapshot (kao na slici 154). 4) Zatvorite upit.
Slika 153. Brzi meni upita
Slika 154. Izbor tipa Recordset-a
119
Uočićete da vam dugme za upis novog sloga na upitu u radnom pogledu nije aktivno, a takođe vam se ne može pojaviti ni ikona koja označava mijenjanje sloga . Isto tako nema slobodnog reda za upis novog sloga pored kojeg se uvijek nalazi ikona . Dobili ste što ste htjelikorisnik samo može pregledavati podatke izdvojene nekim kriterijem. Ovakav način postavljanja upita upisivanjem primjera kriterija u pripadne redove rešetke upita naziva se Query By Example.
13.7 Kreiranje upita za izračunavanje zbirnih vrijednosti Upit za selekciju (Select Query) omogućuje izračunavanje zbirnih vrijednosti (vrijednosti podataka koji su grupisani-međurezultati). Upit za izračunavanje zbirnih vrijednosti (Total Query) uključićete tako da kliknete na dugme Totals na alatnoj traci. Nakon toga Access će u rešetku za dizajn upita dodati red Total. U redu Total svake kolone u rešetki za dizajn upita biće automatski upisano Group By, što znači da su sve navedene kolone grupisane. Da bi izvršili izračunavanje, opciju Group By zamijenite zbirnim funkcijama: Sum, Avg, Min, Max, Count, StDev, Var, First, Last. Željenu funkciju možete izabrati u padajućoj listi ili neposrednim upisom u polje reda Total. U padajućoj listi reda Total nalazi se i opcija Expression. Nju odaberite ako u tom redu želite da upotrebite izraz koji upotrebljava jednu ili više zbirnih funkcija. U upitu za izračunavanje zbirnih vrijednosti Filter možete zadati tako da za neku kolonu u redu Total odaberete opciju Where, a zatim u red Criteria upišete vrijednost po kojoj će se podaci u toj koloni filtrirati. Za kolone koje ste upotrebili za filtriranje podataka možete isključiti opciju Show, jer će oni ionako prikazivati samo jednu jedinu vrijednost.
Vježba 7: Upit za izračunavanje zbirnih vrijednosti Napravite upit koji će za svakog autora u tabeli Autori dati broj programa. Rješenje: U upit dodajte tabele Programi i Autor. Uključite red Total. U red Field dodajte kolone ime, prezime i firma iz tabele autor. Access će automatski u red Table upisati ime tabele, a u red Total, Group By. U novu praznu kolonu u red Field upišite broj programa: sif_autor, u red Table upišite Programi, a u redu Total iz padajućeg popisa odaberite zbirnu funkciju Count (kao na slici 155).
120
Slika 155. Upit za izračunavanje zbirnih vrijednosti
13.8 Kreiranje akcionih upita Ponovno pokrenete Simple query wizard i odaberete polja koja želite i odaberete Design View. Sada na traci sa alatima kliknete na Query Type dugme i odavde birate koji tip upita želite. Akcioni upiti se od ostalih upita razlikuju po uskličniku koji se u bazi nalazi desno uz ikonu upita (slika 156), a u meniju po uskličniku iza ikone opcije akcionog upita (slika 157).
Slika 156.
Slika 157.
Prije nego što počnemo sa opisom kreiranja pojedinog tipa akcionog upita, daćemo neke važne napomene u vezi njihovog korišćenja, a posebno upita za ažuriranje. Imajte u vidu da upit za ažuriranje (update query) ne možete da koristite da biste dodali nove slogove u bazu podataka ili da biste izbrisali čitave slogove iz baze podataka. Da biste dodali nove slogove koristite upit za dodavanje (append query), a za brisanje čitavih slogova koristite upit za brisanje (delete query). Međutim, upit za ažuriranje možete da koristite da biste postavili podatke u poljima na vrijednost „Null“, promjena koja ima isti efekat kao brisanje dijela sloga. Upit za ažuriranje takođe možete da koristite da biste zamijenili polja bez vrijednosti drugim podacima, promjena koja ima isti efekat kao dodavanje podataka.
121
Pored toga, upit za ažuriranje (update query) ne možete da pokrećete i na nekoliko tipova polja tabele i to: - Polja koja se dobivaju iz izračunavanja. Vrijednosti u izračunatim poljima ne ostaju trajno u tabelama. Ona postoje samo u privremenoj memoriji računara nakon što ih Access izračuna. Izračunata polja ne možete da ažurirate zbog toga što nemaju trajnu lokaciju za skladištenje. - Polja koja koriste upite za sabiranje ili unakrsne upite kao izvor slogova. - Polja za automatsko numerisanje. Po svom dizajnu, vrijednosti u poljima za automatsko numerisanje mijenjaju se samo kada dodate slog u tabelu. - Polja u upitima za združivanje. - Primarni ključevi koji učestvuju u relacijama tabela, izuzev ako ste postavili relacije za automatsko kaskadno ažuriranje kroz polje ključa i povezana polja. Kada izvodite kaskadno ažuriranje, Access automatski ažurira vrijednosti sporednog ključa u podređenoj tabeli (tabeli na strani „više“ relacije „jedan-prema-više“) kada promijenite vrijednost primarnog ključa u nadređenoj tabeli (tabela na strani „jedan“ relacije „jedan-prema-više“). I još jedno korisno upozorenje: prije pokretanja upita za ažuriranje, trebalo bi da napravite rezervnu kopiju baze podataka. Jer, kako smo prethodno već naveli, rezultate akcionog upita za ažuriranje kasnije ne možete da opozovete, zbog čega vam izrada rezervne kopije uvijek obezbjeđuju mogućnost da promjene učinjene akcionim upitom poništite.
13.8.1 Upit za pravljenje tabela (Make-table query) Nakon izbora ove opcije javlja vam se okvir dijaloga Make Table, u kojem u polje Table Name upisujete ime tabele koju ćete napraviti i pitanje da potvrdite odgovor da li je želite sačuvati u toj bazi (Current Database) ili u nekoj drugoj bazi podataka (Another Database).
Slika 158. Okvir dijaloga Make Table
Zatim, postavite kriterije i pokrenete upit klikom na dugme Run traci sa alatima.
na
122
13.8.2 Upit za ažuriranje (Update query) Ovaj upit sastoji se od istih dijelova kao selekcioni upit (Select Query), s tom razlikom što je u rešetku za dizajn umjesto reda Sort dodat red Update To, u koji se upisuju nove vrijednosti polja koje će zamijeniti postojeće. Pri tome u red Criteria potrebno je upisati podatak koji želite zamijeniti novim podatkom koji je upisan u redu Update To. Na primjer, ovaj upit možete da koristite da biste podatke u tabelama koji su zastarjeli zamijenili novim. Na primjer, ako je završila školska godina, pomoću ovog upita možete u nekoj tabeli cijeli razred učenika koji su bili u 3b zamijeniti sa 4b ili I Godina sa II Godina, itd.
Slika 159. Dizajnerska rešetka upita za ažuriranje
U taj red upisujete neki izraz na mjesto polja koje želite da promijenite (ažurirate). Nakon startovanja tog upita promijeniće se vrijednosti za sve obuhvaćene slogove. U našem primjeru (na slici 160.) u svim slogovima tabele Zaposleni u polju Plata, vrijednosti će se povećati za 100. Pri tome napominjemo da u izrazima koji se upisuju u redove rešetke, vrijednost polja piše se kao naziv polja u uglatim zagradama.
Slika 160.
Sada vam preostaje da još postavite kriterije i pokrenete upit da bi se promjene izvršile. Ako u redu Criteria ne stavite ništa, promjene naznačene u redu Update To, u polju Plata će se izvršiti u svim slogovima tabele Zaposleni.
123
Kada pokrenete upit pojaviće se okvir sa upozorenjem da ste startovali upit za ažuriranje kojim želite da mijenjate podatke u vašoj tabeli. Da li ste sigurni da hoćete da startujete baš taj upit, koji će izvršiti promjenu podataka u vašoj tabeli?
Slika 161. Okvir dijaloga upozorenja da ste startovali Update query
Ako ste sigurni da ste baš to željeli, kliknite na dugme Yes. Uslijediće novo upozorenje da ste upravo preduzeli akciju da, u konkretnom slučaju, ažurirate (u konkretnom primjeru) 1 red, i ako to potvrdite sa klikom na dugme Yes, ažuriranje će se izvršiti ali se unesena promjena više neće moći povratiti.
Slika 162. Okvir dijaloga upozorenja da ćete naredbom ažurirati red/ove
Nakon potvrde klikom na dugme Yes, u tabeli Programi (u ovom primjeru) će se izvršiti ažuriranje tog jednog reda sa novim podacima i to u poljima: naziv, verzija i godina, baš onako kako ste to i zahtijevali unošenjem podataka u ta polja u redu Update To dizajnerske rešetke upita.
Zadatak 5: Praktično provjerite moju tvrdnju netom izrečenu gore: da „ako u redu Criteria ne stavite ništa, promjene naznačene u redu Update To u bilo kojem polju dizajnerske rešetke će se izvršiti u svim slogovima tabele(a)“. Za taj pokaz imate na raspolaganju slijedeću tabelu Programi:
Rješenje: Rješenje je dato samo u obliku gotovih objekata, iz kojih ćete, siguran sam, moći prepoznati put do rješenja zadatka.
124
Ovako bi trebala da izgleda tabela nakon što startujete upit.
Zadatak 6: Da li biste znali reći kako biste vi sada, nakon klika na dugme Yes, i izvršenih promjena u slogu (ili slogovima), koje eto, više ne možete povratiti (ni sa Undo, niti sa nekim drugim alatom u Accessu i, pod pretpostavkom da niste napravili rezervnu kopiju tabele), u slučaju da ste se odjednom predomislili, ipak povratili na pređašnje stanje podatke u tabeli? (Odgovor: Pa, napravili biste novi upit za ažuriranje, samo sada sa obrnutim zahtjevom za izmjenama u redovima Update To i Criteria u odnosu na prethodni; ono što je prethodno bilo u redu Update To rešetke upita, sada biste stavili u red Criteria i obrnuto. Naravno, to možete učiniti samo kada (u konkretnom slučaju) znate sadržaje redova Update To i Criteria upita kojim su prvobitne promjene učinjene, što obično nije slučaj.
13.8.3 Upit sa unakrsnim prikazom podataka (Crosstab Query) Do sada smo radili isključivo upite za selekciju podataka i akcione upite. Međutim, u ovom trenutku nas zanimaju mogućnosti i jednog drugog tipa upita, a to su tzv. Crosstab Query (poprečni ili unakrsni upiti). Iako se unakrsni upiti ne mogu pivotirati (zakretati), rezultati nekog unakrsnog upita imaju izgled slično nekom pivot-tabelarnom izvještaju u Excelu. Unakrsni upiti nam služe za grupisanje informacije po dvije ili više kategorija. Kada kreirate unakrsni upit, obično uključujete podatke iz više tabela, a uvijek uključujete tri vrste podataka: podaci koji se koriste kao zaglavlja redova, podaci koji se koriste kao zaglavlja kolona i vrijednosti koje želite sabrati ili na drugi način izračunati.
125
Vježba 8: Izrada unakrsnog tabelarnog upita Šta bi to značilo u nekom konkretnom primjeru? Pa, evo jednog primjera: sigurno neke osobe mogu da imaju više mobitela, veći broj telefona na poslu ili veći broj kućnih brojeva. Za ilustraciju ćemo pretpostaviti da neke osobe imaju dva ili više mobitela. Ono što želimo da dobijemo kao rezultat unakrsnog upita je, recimo, da nam se iz neke kontakt liste, u kojoj su zapisana imena osoba i njihovi brojevi telefona po tipu telefona (fiksni, mobilni, office, fax), izdvoje osobe koje imaju mobitele i da se prebroji koliko mobitela imaju. Za pokaz koristićemo tri tabele prema šemama datim dole. Tab_osoba Field Name Data Type ID_kontakta Autonumber Ime Text Prezime Text Grad Text
Field Name Tel_broj
Tab_telefon Data Type Number
ID_kontakta Id_vrste_tel_broja
Description
Description Telefonski broj (kućni, na poslu ili mob)
Number Number
Tab_vrsta_tel_broja Field Name Data Type Id_vrste_tel_broja Number Vrsta_tel_broja Number
Description
1) Preko tabele Tab_osoba za nekoliko osoba unesite podatke za više mobitela 2) Prebacite se u mod za kreiranje novog upita u kojem trebaju biti uključene sve tri tabele. Da sve u ovoj vježbi ne bi bilo suviše jednostavno, polja Prezime i Ime iz tabele Tab_osoba ćete spojiti u jedinstveno polje Osoba upotrebom operatora ampersand (&). Kao i svaki drugi operator i ovaj ima svoju namjenu, a služi za spajanje (ulančavanje) dva ili više nizova znakova (stringova) - dodaje jedan string na kraj drugog. Prema tome, ulančavanje polja Prezime i Ime iz tabele Tab_osoba u novom polju nazvanom Osoba izvršićemo na slijedeći način: Uočite kako smo u gornjem izrazu, u uglatim zagradama i tačkom između, označili vrijednost u polju Prezime u tabeli Tab_osoba i u polju Ime u tabeli Tab_osoba i kako smo upotrebili znak ampersand (&) za spajanje tih vrijednosti, te kako smo u izrazu navodnicima “ “ obezbijedili da izraz neće
126
kao rezultat dati “sljepljeno” Prezime i Ime (napr. PantićŽeljko) nego propisno razmaknuto (Pantić Željko). Dakle, razmak osiguravate primjenom znaka navodnika i jednim praznim znakom između. Bez znakova navodnika s razmakom između direktno dobili bi spojene stringove. Operator & će vam više puta dobro doći u izrazima za rad sa nizovima znakova i o njemu ćemo detaljnije govoriti u poglavlju o funkcijama u Accessu. Stoga, nastavimo sa pravljenjem našeg unakrsnog upita: 3) Prvo polje u rešetki upita kreirajte na gore opisani način primjenom operatora ampersand (&) 4) Promijenite tip upita iz Select Query u Crosstab Query preko ikone . Query Type U rešetki upita pojaviće vam se još dva dodatna reda - već poznati Total i dosad nepoznati Crosstab. Total nije potrebno objašnjavati, ali koje su mogućnosti primjene reda Crosstab? U tom redu određujete šta će biti redovi, šta će biti kolona u vašem unakrsnom upitu i koja vrijednost će se izračunavati i prikazivati u kolonama, dakle to su tri obavezna parametra za svaki unakrsni upit. Za naš upit rešetka će imati slijedeći izgled:
Slika 163. Rešetka unakrsnog upita
Najvažnije za ovaj tip upita je da znate slijedeće: kod unakrsnog upita možete imati više zaglavlja redova (Row Heading) po kojima se vrši grupisanje po redovima, ali samo jedno zaglavlje za kolonu (Column Heading) i samo jednu vrijednost koju prikazujete kao rezultat (Value). Upotrebom funkcije Where osiguravate da se pretraživanje vrši po postavljenom kriteriju, ali da se to polje ne prikazuje u rezultatu upita. 5) Testirajte upit i potom ga sačuvajte pod nazivom Up_ukupno_mob U redu Crosstab dizajnerske rešetke upita određujete šta će biti redovi, šta će biti kolona u vašem unakrsnom upitu i koja vrijednost će se izračunavati i prikazivati u kolonama. Svako polje u tom upitu može da ima jedno od četiri svojstva: Row Heading - naslov reda, Column Heading naslov kolone, Value - vrijednost i Not Shown - nevidljivo polje. Pri tome, treba navesti barem jedno polje za naslov reda, barem jedno polje za naslov kolone i barem jedno polje kao izvorište prikazanih vrijednosti. Poljima određenim za naslove kolona potrebno je u redu Total pridružiti opciju Group By. Poljima određenim za naslove reda moguće je u redu Total pridružiti opcije Group By, neku od zbirnih funkcija ili izraz koji uključuje zbirne funkcije. Poljima s pridruženom opcijom Value potrebno je u
127
redu Total pridružiti neku od zbirnih funkcija ili izraz koji uključuje zbirne funkcije. I ovom upitu moguće je dodati filtere. Kolonama koje služe za filtriranje podataka u redu Total pridružite opciju Where, u redu Crosstab opciju Not Shown, a u red Criteria upišite željeni kriterij za prikaz podataka.
Zadatak 7: Napravite unakrsni tabelarni upit Koristeći tabele Program i Autor, prikazane dole, napravite unakrsni tabelarni upit. U upitu prikažite ime, prezime autora i firmu kao redove upita, a moguće tipove programa kao kolone upita, te za svakog autora izračunajte (prebrojite) koliko je programa određenog tipa napravio.
Rješenje: U red Field odvucite potrebne kolone iz tabela Programi i Autor. Za sve kolone u redu Total odaberite opciju Group By. Za kolone ime, prezime, firma u redu Crosstab odaberite Row Heading, a za kolonu tip Column Heading. U novu praznu kolonu upita ponovno dodajte kolonu tip, u redu Total za tu kolonu odaberite zbirnu funkciju Count, a u redu Crosstab opciju Value.
Slika 164.
128
Pokrenete upit, bilo klikom na dugme uskličnik ili iz padajuće liste na traci sa alatima gore lijevo, izaberete opciju Datasheet View . Rezultat unakrsnog upita dat je na slici dole.
Slika 165. Rezultat konkretnog unakrsnog upita
13.8.4 Upit za dodavanje slogova - Append query Ovim upitom dodaje se grupa slogova iz jedne ili više tabela na kraj jedne ili više tabela. Na primjer, možda htjednete da podatke o novim kupcima sačuvate u povezanoj tabeli i da te podatke dodate i u drugu tabelu. To ostvarujete sa Append upitom, pomoću kojeg možete uraditi još i slijedeće: - Da dodate podatke iz više tabela u jednu tabelu. - Da dodate podatke na bazi istih polja. Na primjer, možete htjeti da dodate kupca samo ako ime kupca već ne postoji u tabeli kupci. - Da dodate izračunsko polje. Na primjer, možete da kreirate izračunsko polje za puno ime i prezime kombinujući tekst iz polja sa imenom i polja sa prezimenom. Tada možete dodati vrijednosti punih imena i prezimena polju za puno ime i prezime u tabeli, kao što smo već pokazali u poglavlju o unakrsnom upitu. Kreiranje upita za dodavanje slogova obavlja se u slijedećih nekoliko koraka: 1. Izaberite tabelu u koju želite da dodate podatke (odredišna tabela). Ta tabela mora da već postoji u konkretnoj bazi podataka ili u nekoj drugoj bazi podataka. Tabelu izaberite iz padajuće liste u polju Table Name i kliknite na dugme OK — u našem slučaju klik je bio na tabelu Zaposleni.
Slika 166. Okvir dijaloga Append
2. Sada ste u dizajneru upita (Query Designer), tj. u dizajnerskoj rešetci upita. Izaberite polja koja želite da dodate iz izvorne tabele. Da biste izabrali polje, kliknite dva puta na ime polja na listi polja i ono će biti dodato listi polja za dodavanje. Dodavanje svih polja tabele
129
Zaposleni upitu vrši se tako što kliknete dva puta na zaglavlje liste polja tabele Zaposleni ili zvjezdica (*) i odvučete polja u rešetku upita. 3. U narednoj ilustraciji izabrana su sva polja iz tabele Zaposleni.
Slika 167.
Primjetite da je u dizajnerskoj rešetci sada dodat novi red, koji je označen kao red „Append To“. Taj red vam omogućuje da izaberete polje u odredišnoj tabeli koje želite da dodate. Ako izvorna tabela i odredišna tabela sadrže polje sa istim imenom, Access automatski dodaje tom imenu polja. U našem slučaju i izvorna i odredišna tabela imaju polja sa nazivom Prezime, Ime, Adresa, JMB i Plata. Kao rezultat Access će automatski izabrati ta polja iz padajuće liste Append To. Padajuća lista koja se koristi za izbor polja u odredišnoj tabeli ima izgled kao na narednoj slici.
Slika 168.
4. Kliknite na opciju Run u meniju Query, ili kliknite na dugme Run na liniji alata.
130
Pojaviće se poruka, kao na slici dole, koja kazuje koliko slogova će biti dodato. Ako kliknete na Yes, slogovi će biti dodati odredišnoj tabeli.
Slika 169. Okvir dijaloga upozorenja da pokrećete upit za dodavanje slogova
Postavite kriterije i pokrenite upit da bi se promjene izvršile. Append Query ne može dodavati podatke u polja tipa Auto Number i polja tabele za koja je svojstvo Limit To List postavljeno na Yes.
Vježba 9: Pravljenje upita za dodavanje slogova (Append Query) Tabeli Programi dodajte redove iz tabele Dodavac.
Upit za dodavanje (append query) može da se koristi za dodavanje slogova nekoj tabeli u bazi podataka. Prije nego što kreiramo upit za dodavanje slogova, trebamo se odlučiti koje ćemo dvije tabele koristiti za izradu upita. Jedna tabela će sadržavati slogove koje želimo da dodamo (Dodavac), a druga tabela (Programi) slogove kojima će oni biti dodati. Nakon toga dobićemo tabelu koja će po određenom kriteriju sadržavati i jedne i druge slogove. Izaberite dvije tabele koje će biti uključene u vaš append upit. Pazite da su tipovi podataka u korespondentnim tabelama jednaki. Na primjer, ako treba biti dodata informacija u polju sa datumom, vodite računa da i polje u korespondentnoj tabeli bude formatirano kao datumsko.
131
Prvih nekoliko koraka u izradi ovog upita su identični kao i kod ostalih akcionih upita: 1. Kliknite na "Queries" u meniju "Objects" 2. Izaberite "New" ili "Create query in Design view". 3. Ako ste izabrali "New" otvoriće se dijalog "New Query". U okviru dijaloga izaberite "Design View", a zatim kliknite na "Ok". 4. Ako ste izabrali "Create query in Design view", automatski će se pojaviti dizajnerski pogled na upit. 5. Bez obzira koju opciju ste izabrali, pojaviće se dijalog "Show Table". 6. U dijalogu "Show Table" izaberite tabelu iz koje biste htjeli da dodate slogove (u našem slučaju Dodavac). 7. Dva puta kliknite na tabelu da biste je dodali u vaš dizajnerski pogled. Možete dodati i više tabela i upita. 8. Kliknite na dugme "Close".
9. Otidite u meni "Query" i izaberite opciju "Append Query". Ispred nje se nalazi ikona sa znakom “+” ispred znaka uskličnika . Ova opcija takođe može da se izabere klikom na ikonu alata na padajućoj listi za izbor tipova upita u prozora baze kada je upit vidljiv u dizajnerskom pogledu. 10. Otvoriće se dijalog "Append".
Slika 170. Dijalog Append u kojem izabirete tabelu kojoj dodajete slogove
132
11. Koristeći padajuću listu u polju "Table Name" izaberite tabelu u koju želite da dodate slogove. 12. Kliknite na "Ok" 13. Kliknite i, dole, u rešetku upita odvucite polje ili polja koji će biti dodati tabeli.
14. Kliknite u polje "Append To". 15. Kliknite na strelicu prema dole da izaberete polja kojima će biti dodate informacije. Polja koja su na padajućoj listi su od tabele kojoj će podaci biti dodati. Kompletirajte ovaj korak za sva polja i informacija će biti dodata. 16. Samo ako slogovi sadrže određeni kriterij po kojem će biti dodati, kliknite u polje "Criteria" ispod polja koje će biti korišteno da se određeni podaci izdvoje. 17. Na primjer, ako je polje koje se dodaje “Datum” i slogovi koje treba da dodate su datuma između 15. jula i 31. avgusta, tada ćete koristiti polje "Criteria" da te slogove izdvojite. Informacija u polju "Criteria" za taj primjer bila bi: "Between 7/1/2005 and 8/31/2005". Tada bi se dodali samo podaci koji padaju na te datume i između tih datuma. 18. Da biste pregledali podatke prije nego što budu dodati drugoj tabeli, kliknite na ikonu spreadsheet u gornjem lijevom uglu alatne trake prozora aplikacije.
19. Prethodni pregled (preview) će pokazati informacije koje će biti dodate tabeli na bazi izabranog kriterija. Ako polje "Criteria" nije bilo korišteno, prethodni pregled će obuhvatiti sve slogove. Ako su se željeni slogovi pojavili, upit se može startovati. Ako se željeni slogovi nisu pojavili trebate podesiti kriterij. 20. Da se vratite u dizajnerski prikaz upita kliknite na ikonu u gornjem desnom uglu trake sa alatima prozora aplikacije. na traci sa 21. Da biste upit pokrenuli, kliknite na ikonu “uskličnik” alatima u prozoru aplikacije.
133
22. Pojaviće se okvir za dijalog, s upozorenjem da ste upravo startovali upit koji će izvršiti izmjenu u vašim podacima u tabeli. Ako klikom na dugme Yes potvrdite nastavak akcije, pojaviće se novi dijalog koji će vas obavijestiti o broju redova koji će biti dodati kako bi se programer baze podataka provjerio da li on stvarno želi da se redovi dodaju tabeli.
23. Kliknite na "Yes" da se redovi dodaju ili "No" da biste promijenili upit. na alatnoj traci 24. Da biste upit sačuvali, kliknite na ikonu flopi diska prozora aplikacije. za zatvaranje prozora upita, ili u meniju File 25. Kliknite na dugme izaberite opciju Close da biste zatvorili prozor upita i vratili se u glavni prozor baze podataka.
Ovdje treba da napomenemo, a možda ste i sami tokom realizacije vježbe uočili, da se upit za dodavanje slogova (kao i ostali akcioni upiti) ne može iz dizajnerskog pogleda startovati (Design View) jednostavnim klikom na dugme alata Datasheet view, što je bilo tipično za startovanje selekcionih upita. Kada kliknete na Datasheet view, Access u stvari samo ispiše slogove koji bi bili dodati ali te slogove ne doda odredišnoj tabeli. Samo klik na dugme Run na traci sa alatima u prozoru aplikacije Accessa će izvršiti upit za dodavanje slogova tabeli, a takođe pokrenuti (startovati) i ostale akcione upite.
Zadatak 8: Dodavanje sloga podataka tabeli pomoću upita Uz pomoć upita za dodavanje slogova tabeli Programi dobivenoj nakon starta upita za dodavanje slogova, izvedenog u Vježbi 9. dodajte
134
slijedeći slog podataka: sw proizvod Delphi4, verzije 4, čija je šifra 111, proizveo je autor 077, 2001. godine, a cijena mu je 60$. Rješenje: Postupak izrade append upita identičan je prethodno opisanom u Vježbi 9. s jednim izuzetkom, da ovdje prethodno treba da kreirate tabelu, recimo, Dodavacica i u njena odgovarajuća polja (jednog reda) unesete podatke koje želite da dodate, pazeći pri tome kako ćete da izaberemo tip podatka za svako polje. Rezultat koji se dobije nakon starta upita za dodavanje slogova prikazan je na slijedećoj slici:
13.8.5 Upit za brisanje slogova - Delete query, Ovaj upit je komanda za uklanjanje jednog ili više redova podataka iz relacione baze podataka. Broj redova koji se brišu zavisi od kriterija (koji se u SQL-u zadaje iskazom Where, koji možemo prevesti „pri čemu“). Pokretanjem ovog upita brišu se svi obuhvaćeni slogovi iz izabranih tabela. Upit za brisanje slogova tabele izrađuje se u nekoliko slijedećih koraka: 1. Da biste obrisali slogove iz jedne tabele ili iz tabele sa relacijama, prvo treba da kreirate novi upit koji sadrži tabele koje želite da koristite.
Slika 171.
135
2. U dizajn pogledu upita (Query Design view), kliknite na strelicu pored tipa upita (Query Type), a zatim kliknite na Delete Query. Ili, na liniji alata Accessa kliknite na dugme sa strelicom koja označava padajuću listu (kao na slici 171). Pojaviće se prozor koji sadrži listu tabela i rešetka. 3. Izaberite tabelu iz koje želite da izbrišete slogove. Pojaviće se red pod nazivom Delete, a u poljima iskaz Where, kao na slici 172.
Slika 172.
4. Na primjer, ako hoćete da iz tabele izbrišete sve slogove koji u polju Plata imaju iznos manji od 205 KM upisaćete to u red Criteria, kao što je pokazano na slici dole.
Slika 173.
5. U meniju View izaberite opciju Datasheet View da vidite slogove koji će biti obrisani. 6. Otvorite meni View i izaberite Design View da se vratite u upit. Napravite bilo koje izmjene ako su potrebne. na liniji alata Accessa da obrišete slogove. 7. Kliknite na Run
136
Primjer 1: Ako zaključite da je neki od podataka koje čuvate zastario i ne možete da ga zamijenite s novim podatkom, ovaj upit će vam omogućiti da brzo i lako uklonite nepotrebne podatke. Na narednoj slici (slika 174) prikazan je jedan upit za brisanje koji u polju Criteria nema kriterija za brisanje slogova i radi toga njime bi nakon startovanja obrisali sve slogove tabele Programi. Na sreću, postoji upozorenje o tome u okviru koji se pojavi nakon klika na dugme Run za start ovog tipa akcionog upita, pa možete da se odlučite za tu akciju ili ne.
Slika 174.Upit za brisanje slogova bez kriterija
Slika 174.
Vježba 10: Pravljenje upita za brisanje slogova Iz tabele Programi obrišite sve programe koji kao tip imaju Other. Rješenje: U red Field odvucite zvjezdicu (*) iz popisa kolona tabele (Access će automatski upisati Programi*). Nakon toga dodajte samo one kolone u kojima je kriterij za brisanje - u ovom primjeru to je samo kolona tip. U redu Delete odaberite Where, a u red Criteria za tu kolonu upišite kriterij po kojem će upit brisati podatke - upišite "other".
137
Svaki od upita za brisanje pokreće se naredbom Run na alatnoj traci , ili u meniju Query. Nakon toga biće prikazan okvir za dijalog u kojem se, prvo, upozorava da ste startovali upit koji će iz tabele Programi da obriše 5 slogova i koji traži da potvrdite njegovo izvršavanje.
U tabeli Programi, nakon dejstva upita prikazana je na slici dole. Vidi se das u iz tabele obrisani oni slogovi koji su zadovoljavali uslov postavljen u redu Criteria dizajnerske rešetke upita za brisanje.
13.8.6 Kreiranje parametarskih upita (Parameter Query) Podaci koje upiti vraćaju iz baze podataka ne moraju uvijek biti statički, odnosno ne moraju se uvijek vraćati isti podaci. Upiti se mogu prilagođavati u vrijeme izvršenja, tako što korisnik unosi kriterijum za pretraživanje u specijalnom okviru za dijalog. Ako želite da zadajete uslove pretraživanja u trenutku pokretanja upita, koristite patrametarske upite koji su u suštini isti kao i upiti za izbor (select query), s tim što će Access zahtijevati od vas da unesete jedan ili više kriterijuma za izbor prije nego što se upit pokrene.
Slika 175.
Naročito se koriste za dobijanje informacija o nekim aktivnostima obavljenim u određenom vremenskom periodu, na primjer, o rezultatima prodaje u jednom mjesecu, ili o nalozima za određeni period. Upit može imati parametara koliko vam je potrebno, a korisnik će ih unositi jedan po jedan. Parametar se može ubaciti u svako polje u kojem možete da zadate kriterijum u redu Criteria rešetke upita i u skoro sve tipove upita, pa i u akcioni. Parametarski upiti se mogu kreirati u rešetki za kreiranje upita, uz
138
pomoć SQL upita ili u okviru osobine Record Source nekog obrasca ili izvještaja. Parametarske upite kreiramo tako da u polje Criteria u uglatim zagradama upišemo tekst koji pobliže opisuje ono šta korisnik mora upisati da bi se onda, zavisno od toga šta je korisnik upisao, u upit izvukli slogovi koji sadrže taj upisani tekst (npr. [Prezime zaposlenog] u polje Prezime iz tabele Radnici). Da biste kreirali parametarski upit počnite sa običnim upitom za izbor i, umjesto da unosite kriterijum u ćeliju Criteria, unesite tekst (tekst treba da bude u zagradama) koji želite da se pojavi kao odziv tj. tekst koji će se pojaviti u dijalogu kriterijuma. Ovaj tekst treba da pruži dovoljno informacija korisniku šta se od njega traži. Parametarski upiti se takođe mogu koristiti za pronalaženje slogova s nizom vrijednosti, kao što je neki vremenski period. Na primjer, možete prikazati radne naloge u vašoj firmi koji su počeli da se ostvaruju u toku jula. Da biste ovo uradili, postavite u redu Criteria rešetke, u polju u kome ste zadali parametarski unos, Between … and … nekog vašeg datumskog polja. I dobićete sve zapise tj. naloge koji su se realizovali u julu ako u okviru za dijalog unesete 01.07.2007, a u drugom 01.08.2007. U najvećem broju slučajeva Access će znati koji je tip parametra u pitanju, ali u slučaju da je riječ o polju sa tipom podatka Yes/No, tip parametra se mora posebno zadati. Napomena: Ponekad će se desiti da Access zatraži da unesete parametar i kada nije riječ o polju u kome ste zadali parametarski unos. Ovo će se dogoditi ako ste pogrešno unijeli ime polja, ili ako ste promijenili ime polja u tabeli, ali ne i u ostalim objektima u bazi podataka.
Vježba 11. Kreiranje parametarskog upita Kreiranje parametarskog upita jednako je lako kao svakog upita koji koristi red Criteria dizajnerske rešetke upita. Upit može od vas zahtijevati unos jednog podatka, poput broja rezervnog dijela ili unos više podataka, poput dva datuma. Parametarski upit prikazuje različiti dijaloški okvir u koji treba upisati vrijednost za svaki parametar. Za pokaz parametarskog upita slijedeću tabelu Primici:
kreiranja koristićemo
139
1. Napravite selekcioni upit na bazi tabele Primici, a zatim ga otvorite u dizajnerskom prikazu.
2. U redu Criteria polja na koje želite primijeniti parametar upišite tekst koji želite prikazati u okviru dijaloga u uglatim zagradama, 3. Ponovite korak 2. za svaki parametar koji upit treba selektovati i primijeniti. 4. Na primjer: u red Criteria u polju Sifra_posla unesite [Unesi šifru posla:], a u polje Dobavljač unesite [Unesi šifru dobavljača:], kao što je prikazano na slici dole:
5. Pokrenite upit Pri izvođenju parametarskog upita, tekst u dijaloškom okviru pojavljuje se bez uglatih zagrada:
Rezultat parametarskog upita prikazan je dole:
140
Korištenjem prethodnih koraka možete stvoriti parametarski upit iz bilo koje od slijedećih vrsta upita: - Selekcioni upit - Unakrsni tabelarni upit - Upit s dodavanjem - Upit za pravljenje tabele - Upit za ažuriranje. Radi toga, parametarski upiti i nisu poseban tip upita.
13.8.7 Pravljenje upita s poljem za izračunavanje Kao što smo već više puta naveli, upit služi za pregledanje tj. izbor podataka iz jedne ili više tabela. Recimo želite da dobijete listu svih korisnika neke usluge ili određenih kupaca, ili listu svih korisnika koji su rođeni prije 1980, ili hoćete da pronađete sve tekstove koje je napisao određeni korisnik itd. -
Da bi se dobili ti podaci mogu da se koriste dvije stvari: da se podaci uzimaju direktno iz tabela, ili da se podaci uzimaju iz upita koji je unaprijed definisan i koji uzima podatke iz tabela.
Slika 176. Izgled tabele tblKorisnici
Postoji mnogo razloga zašto je za ovakve potrebe bolje koristiti upite nego tabele, na primjer, jedan razlog je sigurnost – korisniku dajemo mogućnost da upit samo “čita”, ali ne i tabelu, a upit je unaprijed definisan, a takođe, neka polja iz tabele ne moraju ni da se pojave u upitu, kao na primjer polje Password, tako da ćemo i mi ići tim provjerenim putem. Dakle, idemo da napravimo upit Korisnici, a potom upit Tekstovi. U početnom prozoru Access-a, kliknite lijevo na Queries i potom desno dva puta kliknite na Create Query in Design View.
141
Slika 177. Okvir dijaloga Show Table
Access će da vas pita koje tabele želite da koristite u upitu i vi dodajte SAMO tabelu tblKorisnici (u primjeru na slici ponuđena je samo jedna tabela, a u praktičnom životu ih uvijek ima dvije ili više), a potom kliknite na Close.
Slika 178. Priprema za izbor polja u upitu
Sada je potrebno da odaberete koja polja će da se pojave u vašem upitu. Pa, recimo da želite da imate sva polja iz tabele. Jednostavno u gornjem dijelu kliknite dva puta na polje IDkorisnik, zatim dva puta na polje ImeKorisnika i tako redom na sva polja, a može da ih dodate brže, sve odjednom. Sjetite se dva načina na koja se to radi. Jedan je da markirate sva polja tabele u gornjem panelu, a zatim ih prevučete dole u rešetku upita, a drugi način je da prevučete iz gornjeg panela dole u rešetku samo zvjezdicu. Dobićete nešto slično kao na slici dole:
Slika 179. Okvir liste Field tabele tblKorisnici u dizajnerskom prikazu
142
Nakon toga upit treba da sačuvate pod nazivom qryKorisnici. To ćete uraditi izborom opcije SaveAs menija File i upisivanjem naziva upita u polje okvira za dijalog Save As koji se pojavi nakon toga.
Slika 180. Dijalog Save As
Sada treba da vidimo koje podatke ovaj upit daje kada se pokrene. Idite na meni Query i odaberite opciju Run.
Slika 181: Upit u Run modu
Dobićete praktično iste podatke kao kada otvorite tabelu. Dobro, hajde sada da se vratimo nazad u dizajnerski prikaz i da napravimo neke izmjene: kliknite na View i odaberite opciju Design View. Usput, možete da odaberete i View→SQL View pa ćete moći da vidite SQL izraz koji je Access kreirao za ovaj upit na osnovu onog šta smo mi zadali u QBE rešetci upita.
Slika 182: Upit iz QBE preveden u SQL komande
Da sada zadatak malo i zakomplikujemo. U stvari, kad malo bolje razmislite, šta će vam u gornjem upitu godina rođenja? Zar ne bi bilo bolje da umjesto godine rođenja imate podatak koliko godina ima korisnik? Taj podatak možemo izračunati iz datuma rođenja, pa za njega ne treba u tabeli rezervisati posebno polje. Starost možete izračunati jednostavno prema formuli: Starost = sadašnja godina – GodinaRodjenja A, GodinaRodjenja se može izračunati iz polja DatumRodjenja.
143
Hajde da vidimo kako da promijenimo upit pa da dobivamo starost korisnika umjesto njegove godine rođenja: • U dizajnerskoj rešetci upita kliknite jednom u ćeliju gdje piše “DatumRodjenja” (desno od ćelije “Prezime”, lijevo od “Telefon” i iznad “tbl_Korisnici”) i pritisnite SHIFT+F2 i otvoriće se jedan prozor sa imenom “Zoom” u koji ukucajte: Starost: Year(Now()) - Year(DatumRodjenja) i kliknite na dugme OK.
Slika 183: Okvir za editovanje izraza
A sada pokrenite upit (Query → Run) i dobićete nešto poput:
Slika 184: Tabelarni izgled upita (Wokrksheet View)
Primjetite da više nema kolone DatumRodjenja i da ju je zamijenila kolona Starost u kojoj se vide izračunate godine za svakog korisnika. Da pojasnimo kako radi ona formula: Starost: Year( Now() ) - Year ( DatumRodjenja ) Dakle “Starost” je naziv “nove” kolone. Dalje, trenutnu godinu dobivamo pomoću funkcije Year(Now()). Funkcija Now() vraća današnji datum uključujući i dan i mjesec, ali pošto nas zanima samo godina onda koristimo Year( Now() ). Pošto je sada godina 2007, ova formula vraća 2007. Dalje, imamo Year(DatumRodjenja). DatumRodjenja je podatak koji smo unijeli za svakog korisnika i za konkretnog korisnika desa unijeli smo 15-04-1986, što je njegov datum rođenja. Pošto nam je potrebna samo godina (1986) onda koristimo opet ono Year(DatumRodjenja ), što će za slučaj korisnika desa da vrati 1986. Na kraju oduzmemo jedno od drugog i u tom slučaju imamo: Starost: 2007 – 1986 što ispravno daje 21. I tako dalje za svakog korisnika. Lijepo, zar ne.
144
E sad, bilo bi lijepo kada bi ovi korisnici bili sortirani po starosti: od najstarijeg do najmlađeg ili obrnuto. Evo kako to da uradite: Vratite se u Design pogled (View → Design view) upita i u koloni Starost postavite polje u redu Sort na Descending, kao na narednoj slici:
Slika 185.
Slika 186. Upit koji će podatke o osobama sortirati silazno po starosti
Pokrenite sada upit (Run → Query) i dobićete nešto slično kao prije, ali vidjećete da su slogovi sortirani prema polju “Starost” i to od najstarijeg prema najmlađem (desceding-opadajući redoslijed).
Slika 187: Podaci u konretnom upitu sortirani silazno po starosti lica
Naravno, možete malo da se igrate i sortirate rezultat po raznim poljima, ili po više njih. Možda nije loše otići i na View → SQL View i vidjeti kako Access mijenja SQL izraz. Prije toga da vam napomenem da se u pozadini svakog upita definisanog u Accessu, koji se još zove upit pomoću primjera ili QBE (Query-By-Example), nalazi jezik baza podataka SQL (Structured Query Language). Oba ova jezika su ravnopravni industrijski standardni kompjuterski jezici za ekstrahovanje informacija iz relacionih baza podataka. SQL-om možete zadati šta se želi dobiti kao rezultat, a sistem se sam brine kako će do tog rezultata doći. SQL se koristi kao programski jezik i interaktivni upitni jezik.
145
Sada, da biste mogli zadati upit direktno pomoću SQL naredbi, ili da biste vidjeli kako neki upit koji ste već startovali izgleda u SQL notaciji, iz padajuće liste opcija na alatnoj traci, odaberite SQL View:
Slika 188. Izbor vrste prikaza upita
Vidjećete kako vaš konkretni upit izgleda u notaciji SQL-a:
Slika 189. QBE upit preveden u SQL
Vježba 12: Izračunavanja broja godina iz datuma rođenja osobe - korišćenjem funkcije DateDif() u Excelu Ovdje obrađujemo jedan praktičan primjer izračunavanja broja godina, mjeseci i dana radnog staža na osnovu podataka o radnom odnosu iz radničke knjižice, ili iz podataka Fonda PIO, za radnika, korišćenjem funkcije DATEDIF() u Excelu (kojoj odgovara funkcija DateDiff() u Accessu). Ovaj primjer može poslužiti kao ideja (poticaj) kako da to isto uradimo i u Accessovom upitu. Za orijentaciju u način izračunavanja u našem primjeru navodimo da je prvi datum P.R.O.- početak radnog odnosa (5/1/1972) unešen u ćeliju A3, a prvi datum K.R.O. – kraja radnog odnosa, u ćeliju B3 radnog lista Excela. Da biste sami uradili ovu vježbu, startujte Excel i unesite slijedeće podatke u radnu tabelu Excel-a:
146
DATUM P.R.O.
DATUM K.R.O
5/1/1972
5/31/1974
12/13/1974
9/14/1986
12/14/1986
7/16/1987
9/15/1986
12/13/1986
5/10/1989
10/1/1989
10/4/1989
2/28/1991
STAŽ GOD.
MJ.
DANI
STAŽ
UKUPNO:
U ćelije C3:E3 unesite slijedeće formule: Formula u polju GOD. (u ćeliji C3) glasi: =IF(AND($A3"",$B3""),IF($B3>$A3,DATEDIF($A3,$B3,"y")),"") Formula u polju MJ. (u ćeliji D3) glasi: =IF(AND($A3"",$B3""),IF($B3>$A3,DATEDIF($A3,$B3,"ym")),"") i Formula u polju DANI (u ćeliji E3) glasi: =IF(AND($A3"",$B3""),IF($B3>$A3,DATEDIF($A3,$B3,"md")),""). A, zatim (vučenjem za hvataljku ćelija) prekopirajte te formule do ćelija C8:E8. U ćelije C10:E10 unesite slijedeće formule: Formula za sabiranje godina u redu UKUPNO (u ćeliji C10) glasi: =SUM(C3:C9)+TRUNC(SUM(D3:D9)/12) Formula za sabiranje mjeseci u redu UKUPNO (u ćeliji D10) glasi: =MOD(SUM(D3:D9)+TRUNC(SUM(E3:E9)/30),12), a Formula za sabiranje broja dana u redu UKUPNO (u ćeliji E10) glasi: =MOD(SUM(E3:E9),30). Rezultat koji trebate da dobijete prikazan je u narednom tabelarnom pregledu: DATUM P.R.O.
DATUM K.R.O
5/1/1972
5/31/1974
12/13/1974
STAŽ
STAŽ
GOD.
MJ.
DANI
2
0
30
2 god. 0 mj. i 30 dn.
9/14/1986
11
9
1
11 god. 9 mj. i 1 dn.
12/14/1986
7/16/1987
0
7
2
0 god. 7 mj. i 2 dn.
9/15/1986
12/13/1986
0
2
28
0 god. 2 mj. i 28 28 dn.
5/10/1989
10/1/1989
0
4
21
0 god. 4 mj. i 21 21 dn.
10/4/1989
2/28/1991
1
4
24
1 god. 4 mj. i 24 dn.
16
5
16
16 god. 5 mj. i 16 dn.
UKUPNO:
147
13.9 Funkcije u Accessu U prethodnoj poglavlju upotrebili smo jednu funkciju Accessa od velikog broja kojima raspolaže. Acess sadrži slijedeće grupe ugrađenih funkcija: - funkcije za rad sa objektima baze podataka, - matematičke funkcije, - poslovne funkcije, - finansijske funkcije, - funkcije za rad sa datumima i vremenima, - funkcije za rad sa tekstualnim nizovima. Funkcije se mogu koristiti u upitima, obrascima i izvještajima da bi se izračunali izrazi različite kompleksnosti.
13.9.1 Funkcija odlučivanja Jedna od najkorisnijih funkcija u Accessu je neposredna if funkcija (immediate if function) koja ima notaciju iif (). Sintaksa joj je slijedeća: iif ( izrazUslov; tadaCiniTo; inaceCiniOvo) pri čemu su: - izrazUslova je neki izraz čiji rezultat je vrijednost True ili False - tadaCiniTo je ono što funkcija vraća ako izrazUslova potvrdi True - inaceCiniOvo je ono što funkcija vraća ako izrazUslova potvrdi False.
Primjer1: Pretpostavimo da neka firma plaća porez na dobit po različitoj stopi, zavisno od toga da li je malo ili srednje preduzeće (MSP), ili je trgovačka radnja (TRG). Ako je u polju Status vrijednost MSP, onda je poreska stopa 10%, a u suprotnom je 5,9%. Funkcija glasi: iif ([Status]=”MSP“; 0.10; 0.059) Uočite u gornjem izrazu da je 0.10 i 0.059 način da se 10% i 5.9% iskažu kao regularni decimalni brojevi. Primjer 2: Neka je u nekoj tabeli polje Placeno tipa Yes/No. Polje Yes/No može sadržavati samo vrijednosti True ili False. U ovom slučaju sam naziv polja je dovoljan izraz uslova za primjenu funkcije iif(), kao: iif([Placeno]; „Račun“; „Faktura“) Drugim riječima, izraz kaže: „Ako polje Placeno sadrži True (ili Yes), vrati riječ Račun. Inače (ako polje Placeno sadrži False) vrati riječ Faktura.
148
13.9.2 Funkcija za testiranje praznih polja Ponekad nam je značajno da provjerimo da li je neko polje prazno ili je Null polje. Access ima funkciju IsNull() sa sintaksom IsNull [imePolja] , gdje je imePolja naziv polja koje želimo da testiramo. Primjer 1: Pretpostavimo da hoćete da vidite listu sortiranu po alfabetskom redoslijedu imena osobe, ili po imenu preduzeća ako nema imena osobe. U tom slučaju u dizajn modu (upita ili izvještaja) kreiraćemo izračunsko polje. Ovo polje, kao što znate, možemo nazvati proizvoljno i ne smije biti duplicirano, a mi ćemo ga nazvati Korisnik. U tom slučaju, izraz za to polje bi glasio: Korisnik: iif ( IsNull ([Prezime]) ; [Firma] ; [Prezime] & “, “ & [Ime]) Izraz iif() kazuje, “Ako je polje Prezime null, stavi u to polje ime firme. Inače, stavi prezime osobe iza kojeg slijedi zapeta, jedan razmak i zatim ime osobe (na primjer: Marković, Boris)”. Ako u redu Sort rešetke upita za to izračunsko polje (Korisnik) stavimo Asceding (uzlazno), slogovi će tada biti sortirani po alfabetskom rasporedu po prezimenu ili po nazivu firme (ako nema prezimena).
13.9.3 Datumska funkcija DateDiff Funkcija DateDiff vraća broj intervala između dva datuma. Sintaksa je: DateDiff(interval, datum1, datum2 [,firstdayofweek[, firstweekofyear]]) Sintaksa funkcije DateDiff ima tri dijela: Dio sintakse
Opis
interval
Obavezan. Izraz za niz, tj. interval koji želimo da koristimo da bismo izračunali razliku između datum1 and datum2. Za izbor vrijednosti ovog parametra vidjeti tabelu dole.
datum1, datum2
Obavezan. Datumi. Dva datuma koje želite da koristite u računanju.
firstdayofweek (prvidanusedmici)
Opcionalan. Konstanta koja specifikuje dan u nedelji. Ako se ne navede, podrazumijeva se Nedelja. Vidite dole sekciju sa vrijednostima.
firstweekofyear (prvasedmicaugodini)
Opcionalan. Konstanta koja specifikuje prvu sedmicu u godini. Ako se ne navede, pretpostavlja se da je to sedmica u kojoj se pojavljuje 1. Januar (prva nedelja u godini). Vidite dole sekciju sa vrijednostima.
149
Setovanja intervala. Argument intervala može imati slijedeće vrijednosti: Setovanje yyyy q m y d w ww h n s
Opis Godina (Year) Kvartal (Quarter) Mjesec (Month) Dan u godini (Day of year) Dana (Day) Dan u sedmici (Weekday) Sedmica u godini (Week of year) Sati (Hour) Minuta (Minute) Sekundi (Second)
Funkciju DateDiff možete da koristite da biste odredili koliko navedenih intervala vremena postoji između dva datuma. Kao što smo već pokazali u Excelu, funkciju DateDiff u Accessu možete takođe da koristite da biste izračunali broj dana između dva datuma, ili broj sedmica od sada pa do kraja godine. Da biste izračunali broj dana između datum1 i datum2, možete da koristite ili Dan u godini ("y") ili Dan ("d"). Ako je interval Dan u nedelji ("w"), DateDiff vraća broj sedmica između dva datuma. Ako datum1 pada u Ponedeljak, DateDiff računa broj Ponedeljaka do datum2. Ona uračuna (count) datum2 ali ne datum1. Međutim, ako je interval sedmica dana ("ww"), funkcija DateDiff vraća broj kalendarskih sedmica između dva datuma. Ona računa broj Nedelja između datum1 i datum2. DateDiff uračunava datum2 ako on pada u Nedelju; međutim, ona ne uraračunava datum1, čak iako on pada u Nedelju. Ako se datum1 odnosi na vrijeme poslije datum2, funkcija DateDiff vraća negativan broj. Argument firstdayofweek ima efekta na izračunavanja koja kao simbole intervala koriste "w" i "ww". Argument firstweekofyear je opcionalan. To je konstanta koja specifikuje prvu sedmicu u godini. Ako se ovaj parametar izostavi, Access pretpostavlja da je prva sedmica u godini ona u kojoj pada 1. januar. Ovaj parametar može da ima slijedeće vrijednosti: Izbor 0 1 2 3
Dejstvo Koristi NSL API setovanje (format podataka za međuprogramsku komunikaciju strukturisanih tekstualnih informacija) Koristi prvu sedmicu u koju pada 1. Januar (podrazumijevajuća). Koristi prvu sedmicu u godini koja ima najmanje 4 dana. Koristi prvu punu sedmicu u godini.
Ako je datum1 ili datum2 slovo iz datuma, navedena godina postaje stalni dio tog datuma. Međutim, ako je datum1 ili datum2 zapisan u navodnicima (" ") i ako izostavite godinu, u vaš kód za vrijeme umetnuće se
150
tekuća godina (current year) svaki put kada se ocjenjuje izraz za datum1 ili datum2. Ovo omogućuje da se napiše kód koji se može koristiti za različite godine. Kada se uporede 31. December i 1. Januar u susjednim godinama, funkcija DateDiff za godinu ("yyyy") vraća 1 čak iako je protekao samo jedan dan.
Primjer 1: DateDiff ('yyyy',#15/10/1998#,#22/11/2003#) vraća 5 DateDiff ('m', #15/10/2003#, #22/11/2003#) vraća 1 DateDiff ('d', #15/10/2003#, #22/11/2003#) vraća 38.
13.9.4 VBA kód funkcije DateDiff Funkcija DateDiff može da se koristi u VBA kódu. Na primjer: Dim LValue As Integer LValue = DateDiff ("d", #15/10/2003#, #22/11/2003#) U ovom primjeru funkcija pod nazivom LValue sada bi imala vrijednost 38, jer od 15.10.2003. godine do 22.11.2003. godine proteklo je 38 dana.
13.9.5 SQL/Upit funkcije DateDiff Funkciju DateDiff možete da koristite i u upitu, kao što je to pokazano na narednoj slici:.
Slika 190. Primjer upita sa dva izračunska polja i korišćenjem funkcije datediff
U Accessu funkcija DateDiff() vraća Integer (cio broj) koji predstavlja razliku između dva datuma, koristeći specifikaciju d/w/m/y (dan, nedelja, mjesec, godina).
151
Primjer1: DateDiff(“d”,Date,#4/15/95#) Ako je Date=7/19/95, gornja funkcija vraća 7 (Saturday).
13.9.6 Upiti sa izračunskim poljem Osim čistog izvlačenja informacija iz baze upite je moguće proširiti na način da izvršavaju određenu matematičku operaciju nad jednim ili više polja. Na primjer, zamislimo da nas zanimaju podaci koliko svaka osoba ima telefonskih brojeva. Potrebno je kao i do sada kreirati selekcioni upit koji će nam dati tražene informacije - tabele koje je potrebno uključiti za pravljenje upita su Tab_osoba i Tab_telefon; polja iz prve su ID_kontakta, Ime i Prezime, a iz druge Tel_broj. Da bi mogli vršiti jednostavne izračune potrebno je u razvojnom (dizajn) modu uključiti red Total u rešetki upita. Iz alatne trake s padajućim menijima iz menija View izaberite Totals.
Slika 191 Uključivanje reda za izračunavanja zbirnih vrijednosti u rešetki upita
Pojaviće vam se red Total koji je automatski postavljen na Group By (grupiši po) što znači da se slogovi grupišu po vrijednostima dotičnog polja. Kliknite na strelicu Group By polja Tel_broj i izaberite Count (prebroj) čime će vam se prebrojati telefonski brojevi za svaki kontakt koji imate u bazi.
Slika 192. Određivanje vrste izračunavanja u polju
Testirajte upit Up_ukupno_telefona.
(Run)
i
zatim
ga
sačuvajte
pod
nazivom
152
U nekim drugim slučajevima, pored prebrojavanja, moći ćete da vršite i druga izračunavanja totala i to pomoću ostalih ugrađenih funkcija Accessa. Opis osnovnih funkcija prikazan je u donjoj tabeli: Funkcija Group By Sum Avg Min Max Count First Last Expression Where
Opis Grupisanje rezultata upita po dotičnom polju Izračunava sumu svih vrijednosti u dotičnom polju i prikazuje rezultat u upitu Daje prosječnu vrijednost svih vrijednosti nekog polja Izvlači minimalnu vrijednost u polju Izvlači maksimalnu vrijednost u polju Prebrojava koliko slogova zadovoljava postavljeni kriterij Vraća samo prvi slog koji ispunjava postavljeni kriterij Vraća samo zadnji slog koji ispunjava postavljeni kriterij Želite napraviti polje za složeno izračunavanje Ukazujete Accessu da želite polje upotrebiti za definisanje uslova, ali ga ne želite prikazati u rezultatu upita
13.9.7 Korištenje Expression Buildera Izraze u obračunskom polju mogli smo pisati ručno, tako da ih unosimo sami, ili pomoću Expression builder-a (graditelj izraza) je alat za pomoć kod pravljenja matematskih izraza (formula). Taj alat u Accessu može se startovati sa mnogo mjesta gdje se pišu izrazi, kao što su osobine kontrola u obrascima i izvještajima, osobine polja u tabelama, a i u dizajnerskoj rešetki upita. On omogućuje da za vrijeme dok pišete vaš izraz jednostavno pristupite imenima polja i kontrola u vašoj bazi podataka, kao i mnogim ugrađenim funkcijama. Pomoću tog alata izraze možete da pišete potpuno iz početka ili ih možete izabrati iz nekih prethodno izrađenih izraza, recimo, za ispisivanje broja stranica, trenutnog datuma ili određenog datuma i vremena. Expression builder iz dizajnerske rešetke pozivamo tako da kliknemo desni taster miša na Criteria polje u rešetki i odaberemo Build opciju . Nakon toga nam se otvori prozor Expression builder-a koji je sačinjen od tri dijela.
Slika 193. Dijalog graditelja izraza
153
1. Gornji dio dijaloga zove se Okvir za izraz (Expression box) i u njemu gradimo izraz i vidimo ga kada ga napravimo. 2. Srednji dio dijaloga je lista operatora (+,-,/,*,&, itd) koje umećemo u izraz tako što kliknemo na njega kada se nalazimo na mjestu u izrazu gdje ga želimo ubaciti. 3. Donji dio dijaloga sastoji se od tri dijela. - Lijevi dio, u kojem se nalaze objekti baze podataka, funkcije, konstante, operatori i uobičajeni izrazi.U tom dijelu svaki alat ispred kojeg se nalazi znak „+“ aktivira se brzim klikom dva puta, a ispred kojeg se nalazi znak „-„ se izabire jednim klikom (pokazivanjem). - Srednji dio je lista specificiranih elemenata za odabrani direktorij u lijevom dijelu.Na primjer, lista polja u izabranoj tabeli (u lijevom oknu), upitu ili obrascu. - Desni dio je lista vrijednosti za element koji je izabran u srednjem dijelu. Izraz izgrađujemo kombinovanjem operatora, elemenata, funkcija i vrijednosti zavisno od potrebe. Lista izraza se nalazi u Helpu. Listu pozivamo tako da se pozicioniramo na polje Criteria i pritisnemo taster F1. Tamo su operatori složeni po svom domenu rada - za rad sa brojevima, tekstom, datumima, itd.
Zadatak 9: Provjerite naučeno odgovorima na postavljena pitanja: 1) 2) 3) 4) 5)
6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16)
Upiti za izdvajanje slogova nazivaju se? Upiti kojima korisnik na neki način utiče na podatke nazivaju se? Kakve vrste slogova mogu nastati kao rezultat upita? Red za izračune u rešetki upita uključujete preko kojeg menija? Redanje kriterija u istom redu rešetke upita odgovara njihovom povezivanju kojim logičkim operatorom? Kriteriji koji se nalaze u različitim redovima rešetke upita odgovaraju njihovom povezivanju s kojim logičkim operatorom? Jedan od ta dva logička operatora sužuje izbor podataka. O kojem je riječ? Jedan od ta dva logička operatora proširuje izbor podataka. O kojem je riječ? Kako se naziva operator & i čemu služi? Za koji tip podataka je vezana njegova upotreba? Field: Kolegij: [Tab_prof.profesor]&" "&[Tab_kolegij.naziv_kolegija] – Šta dobivamo kao rezultat ove operacije? Izvršni (korisnički) način rada (Run mod) nam služi za kreiranje objekata (DA / NE)? Korisnik radi s objektima baze isključivo u razvojnom načinu rada (DA / NE)? Koja je uloga navigacione trake? Access automatski sprema (čuva) cijelu bazu podataka (DA / NE)? Koju ekstenziju dobivaju MS Access datoteke?
154
17) 18) 19) 20)
Šta je to Recordset, šta je Dynaset, a šta Snapshot? Čemu služi graditelj izraza? Po čemu su specifični parametarski upiti? Kod kojeg upita se pojavljuje red Group By?
14. Obrasci Obrasci (Forms) su objekti namijenjeni za unos, prikaz i ažururanje podataka ili upravljanje izvođenjem aplikacije. Oni su osnova interfejsa između korisnika i aplikacije. Obrasci su objekti koji predstavljaju masku za unos podataka. Oni, kao i upiti, ne sadrže nikakve podatke, nego osiguravaju neku vrstu “prozora” kroz koji možemo vidjeti tabele i upite. To znači da se kreiraju iz tabela ili upita, odnosno kažemo da obrasci predstavljaju korisnički orijentisani interfejs prema podacima u bazi. Omogućuju kreatoru baze da odredi način i format pojavljivanja tačno željenih podataka na ekranu, i dopuštaju korisniku određene zahvate nad podacima ili dodavanje novih. Iako se unos podataka može vršiti i direktnim unošenjem u tabelu koristeći se prikazom (View) Datasheet View, upotreba obrazaca omogućava nam mnogo više. Pomoću obrasca možemo, na primjer, prikazati samo ona polja za koja dozvoljavamo unos i ažuriranje, a isto tako pomoću jednog obrasca korisnik može vršiti unos u polja više tabela istovremeno. Obrasce pravimo i zbog toga da bi korisnici podatke iz tabela i upita pregledavali na oku ugodniji način i da bi odjedanput mogli pregledavati povezane podatke iz više tabela. Nad formiranom tabelom koja sadrži podatke, na primjer, o nekom čitaocu, formiramo obrazac-masku za unos, koji ima izgled papirnog obrasca – kartice, tako da bibliotekar ne mora da poznaje rad sa Accessom, nego samo koristi elektronske obrasce i unosi podatke putem tastature, baš kao što je to ranije činio olovkom. Obrazac ne mora da sadrži ni jedno polje za unos ili prikaz podataka. On jednostavno može biti pozdravni ekran aplikacije sa prigodnim tekstom i slikom, koja se sama, poslije isteka nekog vremenskog intervala, zatvara. Takvi obrasci mogu imati oblik pozdravne slike koja se pojavljuje prilikom starta nekog većeg programa, kao što se to događa u profesionalnim programskim paketima.
14.1 Namjena obrazaca -
Općenito,obrasci se upotrebljavaju za: prikaz i promjenu podataka unos podataka u tabelu ili upit, ispis informacija kreiranje komandne table (switchboard) tj. obrasca iz kojeg se otvaraju drugi obrasci i pokreću upiti i tabele. Obrazac komandne table može da sadrži sistem menija i podmenija u kojima su korisniku
155
-
-
ponuđene opcije za rad s objektima u Accessu (na primjer unos, pretraživanje, transakcije, brisanje podataka), kreiranje okvira za dijalog (dialog boxes-a) za primanje korisničkog unosa i onda se na osnovu tog unosa nastavljaju akcije (primjer je dijalog okvir kod parametarskih upita) kreiranje vlastitih aplikacija.
Ako više osoba treba da unosi podatke u datoteku, onda je dobra ideja da se napravi obrazac koji funkcioniše kao ekranski formular ili ekran za unos podataka. Obrasci sadrže uputstva i objašnjenja koja se tiču procesa unosa podataka, a mogu da simuliraju dokumenat iz kojeg se čitaju podaci. Oni takođe mogu da se koriste i za proširivanje velikih slogova na dva ili više ekrana. Obrasci sadrže i zakonitosti podataka, pravila koja sprječavaju korisnike da prave određene greške kao, na primjer, unošenje podataka koji su izvan određenog intervala ili unošenje negativnih brojeva, ako to nije poželjno, itd. Često u bazi podataka postoje polja čije popunjavanje nije planirano u toku unošenja podataka, pa će njihove vrijednosti biti izračunate kasnije, korišćenjem definisanih matematskih i/ili logičkih funkcija. Pomoću obrasca možete takođe da ograničite ili onemogućite unos podataka u neka polja.
14.2 Načini prikaza podataka u obrascu S obzirom na način prikaza podataka obrazac može biti jednostavan ili kontinuiran. Jednostavan obrazac prikazuje podatke iz jednog sloga izvora dok kontinuirani obrazac prikazuje više slogova iz izvora (najčešće sve slogove iz izvora). Da li je obrazac jednostavan ili kontunuiran određuje se u prozoru Properties u grupi All u polju Default View. Ako je obrazac jednostavan izabire se opcija Single Form, a ako je obrazac kontinuiran izabire se Continouos Form. U jedan obrazac može se staviti više podobrazaca. Onaj obrazac u koji se stavljaju drugi obrasci naziva se glavni obrazac (Master), a oni koji se stavljaju u glavni obrazac nazivaju se podobrasci-podforme (Child).
14.3 Tipovi obrazaca Sadržaj i izgled obrasca zavisi od njegovog korišćenja u aplikaciji baze podataka. Zavisno od toga, razlikujemo tri tipa obrazaca u Accessu: - Za obradu transakcija (Transaction processing), - Za podršku odlučivanju (Decision support), i - Za održavanje baze podataka (Database maintenance). Obrasci za obradu transakcija (transakcioni obrasci) služe za dodavanje novih slogova tabelama ili mijenjanje postojećih slogova. Obično rade direktno sa tabelama kada je obuhvaćena samo jedna tabela. Ako je jedan obrazac upotrebljen za dodavanje ili izmjenu informacija u više tabela,
156
racionalno je da se napravi upit koji uključuje sva polja koja su potrebna i onda se obrazac zasniva na upitu. Važno je odmah na početku napomenuti da obrasci za svoju izradu koriste samo jedan objekat kao izvor podataka. Tako, recimo, ako bi nam u obrascu trebali biti neki podaci iz jedne ili više tabela i/ili iz tabele i upita, tada se pravi jedan objekat sa svim tim podacimanajpraktičnije je da je to jedan upit i onda se obrazac zasniva na upitu. Obrasci za podršku odlučivanju služe da daju informaciju u obliku grafikona, tabele ili pojedinačnih elemenata podataka, ali ne omogućavaju korisniku da dodaje ili mijenja podatke. Često su zasnovani na unakrsnim upitima koji daju zbirni pregled podataka u vremenskom nizu (recimo: mjesečna, tromjesečna ili godišnja prodaja kupcu sa zbirovima), zatim to su obrasci koji obezbjeđuju arhivske podatke koje rukovodioci koriste za određivanje pravaca akcije, kao i obrasci koji pokazuju neke trendove pojava koje ti podaci predstavljaju. Dakle, to su uglavnom obrasci koji prikazuju na neki način obrađene podatke iz tabela i upita. Obrasci za održavanje baze podataka omogućavaju administratorske funkcije, kao što je izrada baza podataka ili tabele baze podataka, kontrolisanje pristupa podacima od strane korisnika baze podataka, obezbjeđenje sigurnosti preko šifriranja, periodična izrada kompaktne baze podataka i izradu rezervne kopije
Slika 194. izgled jednog obrasca za obradu transakcija
14.4 Metode i prikazi kreiranja obrazaca -
Kreiranje obrasca može se obaviti: Upotrebom čarobnjaka za obrasce (Form Wizard), Alatima za automatsku izradu obrazaca (AutoForm) – slično čarobnjaku, ali bez interakcije sa korisnikom oko dizajna, Ručnom izradom u dizajnerskom prikazu (Design View) – najbolji način koji nam daje najveću slobodu pri izradi obrazaca.
157
Kreiranje obrasca počinje komandom New iz Toolbar-a prozora baze, nakon čega se otvara okno dijaloga New Form:
Slika 195. Opcije čarobnjaka za kreiranje formi
U desnom oknu dijaloga ponuđena je lista od 9 opcija metoda načina i oblika prikaza kreiranja obrasca, a u donjem dijelu očekuje se da sa padajuće liste izaberemo objekat kao izvor podataka za obrazac. Da opišemo prvo pojedinačno opcije koje se nude za načine i oblike kreiranja obrasca: Dizajnerski prikaz (Design View) - podrazumijeva kreiranje obrasca "od početka", odnosno praznog obrasca na koji se dodaju potrebne kontrole (ne preporučuje se početnicima). Čarobnjak za obrasce (Form Wizard) je mehanizam ili "čarobnjak" opšte namjene koji se preporučuje za korišćenje, što češće, jer je to najlakši način za izradu korisniku prihvatljivog obrasca. Kao i kod opcije autoform prethodno je potrebno izabrati objekt iz kojeg će se kreirati obrazac (tabelu ili upit), a ostali posao oko kreiranja obrasca se svodi na biranje ponuđenih mogućnosti i kasnije na dodavanje kontrola. Automatski obrasci (AutoForm) – su obrasci koji se prave automatski u zavisnosti od strukture polja objekta iz kojeg obrazac crpi podatke. U stvari, ovo je najjednostavniji način kreiranja obrasca. Ovim načinom obrazac se kreira iz prethodno izabrane tabele ili upita. Takav obrazac sadrži sva polja koje sadrži i objekt iz kojeg je kreiran. Međutim, takav način kreiranja obrasca često neće zadovoljiti korisnika i zato mu je na raspolaganju prihvatljivija prva opcija-čarobnjak za kreiranje obrazaca (opcija gore). Kao pomoć u kreiranju obrazaca ovog tipa Access nudi na izbor četiri različite vrste obrazaca i to: AutoForm: Columnar je automatski kreiran obrazac u kojem je svaki slog na posebnoj strani obrasca, polja su prikazana jedno ispod drugog u koloni-pa se za njih još kaže da su jednokolonski obrasci.
158
Slika 196. Obrazac tipa Columnar
Slika 197. Obrazac tipa Tabular
AutoForm: Tabular je automatski kreiran obrazac (Tabular) u kojem su slogovi prikazani tabelarno, po više njih na strani (ekranu)-tabelarni obrazac. AutoForm: Datasheet kreira prikaz podataka u obliku koji liči na tabelu u obrascu: obrazac-podobrazac. Obrazac-podobrazac prikazuje podatke iz dvije tabele ili upita. Sadržaj tih obrazaca se može povezati tako da glavni obrazac prikazuje jedan dio podataka o nekom objektu (entitetu), a podobrazac (podobrazac) drugi. Autoform: Pivot Table - Ovaj tip autoobrasca od jedne tabele ili upita kreira pivot-tabelu. Pivot-tabela je interaktivna tabela koja sumira podatke po više polja. Autoform: Pivot Chart - Ovaj tip autoobrasca kreira pivot-dijagram iz jedne tabele ili upita. Pivot-dijagram grafički analizira podatke u vidu stubičastog ili linijskog dijagrama. Chart Wizard-Izborom ove opcije pravi se obrazac koji se sastoji od grafikona. Tom prilikom ulazi se u program Microsoft Graph (koji je sastavni dio i Worda for Windows programa), koji spada u "dijeljene aplikacije", odnosno ima istu ulogu u više programa. Oblik grafikona moguće je izabrati od ponuđenih oko 15 različitih oblika grafikona. Pivot Table Wizard-je čarobnjak za pivot-tabele, koji od više tabela i/ili upita kreira obrazac za prikaz tabela za interaktivno unakrsno izračunavanje (pivot-tabelu).
14.5 Sadržaj obrasca Obrazac je podijeljen na dijelove (sekcije) koje je moguće kontrolisati npr. makronaredbama i to: - zaglavlje stranice (obrazac može biti na više stranica) - zaglavlje obrasca - detaljni red (u njemu su prikazani podaci iz tabele ili upita) - podnožje obrasca, i - podnožje stranice.
159
Prema složenosti, obrasci mogu biti jednostavni ili složeni - sa grafikom, linijama, mogućnostima automatskog pretraživanja, koje unos podataka čine brzim i lakim. Obrasci mogu da sadrže druge obrasce, nazvane podobrasci, engl. subforms, što omogućuje istovremeni unos podataka u više tabela. Uključivanje podobrazaca unutar podobrasca zove se ugnježdavanje. Ono može biti do tri nivoa: glavni obrazac, podobrazac i pod-podobrazac. Obrasci Accessa omogućavaju da se izvrše zadaci koji nisu mogli da se izvrše u objektu tabela ili upit. Obrasci, takođe, mogu da izračunavaju vrijednosti i da prikazuju međurezultate.
14.6 Kontrole na obrascu Kontrole su dijelovi obrasca koje većina korisnika vidi i radi sa njima. One se postavljaju na obrazac da bi se pomoću njega moglo upravljati. To su objekti koji mogu prikazivati podatke, primati unijete podatke, izvoditi računanja sa podacima i prikazivati rezultate računanja i dodavati vizuelne efekte koji poboljšavaju korisnički interfejs, kao što su linije, natpisi ili slike. Od objekata koji se koriste za izradu kontrola su: okviri za tekst, okviri za unos i izmjenu podataka, oznake za imena polja i okviri objekata za prikazivanje grafike. Najčešće korištena kontrola je Text Box (okvir za tekst) dok druge kontrole uključuju natpise, potvrdne okvire i kontrole podobrazaca. Kontrole mogu biti vezane, slobodne i izračunate: -
-
-
Vezana kontrola. Kontrola čiji je izvor podataka neko polje u tabeli ili upitu. Vezane kontrole koriste se za prikazivanje vrijednosti koje dolaze iz polja u bazi podataka. Vrijednosti mogu biti tekstualne, datumske, numeričke, Yes/No, slikovne ili grafičke. Na primjer, tekstualni okvir na obrascu koji prikazuje prezimena radnika može dobiti te informacije iz polja Prezime u tabeli Zaposleni. Kada neko u vezanu kontrolu unese novi podatak ili promijeni postojeći, te promjene se automatski prenesu i u tabelu. Slobodna (nevezana) kontrola. Kontrola bez izvora podataka (kao što je polje ili izraz) naziva se slobodnom kontrolom. One nisu vezane kontrole jer uvijek ostaju iste. Slobodne kontrole koriste se za prikazivanje informacija, linija, pravougaonika i slika. Na primjer, natpis koji prikazuje naziv obrasca je slobodna kontrola. Izračunata kontrola. Kontrola čiji je izvor podataka izraz, a ne polje, naziva se izračunatom kontrolom. Vrijednost koju želite koristiti kao izvor podataka u kontroli određujete definisanjem izraza. Izraz može biti kombinacija operatora (kao što su = i + ), nazivi kontrola, nazivi polja, funkcije koje vraćaju pojedinačnu vrijednost i konstante. Na primjer, slijedeći izraz izračunava cijenu artikla s popustom od 25 posto, množeći vrijednost u polju Jedinična cijena s konstantom (0,75): =[Jedinična cijena] * 0,75
160
Izraz može da koristi podatke iz polja u tabeli ili upitu koji su izvor obrasca ili podatke iz druge kontrole obrasca. Izračunate kontrole nisu vezane jer vrijednosti koje se u njima mogu dobiti ne treba da se smještaju u tabelu. Prilikom kreiranja obrasca najefikasnije je prvo dodati i rasporediti sve vezane kontrole, naročito ako one čine većinu kontrola na obrascu, a onda radi dovršenje kreiranja obrasca možete dodavati slobodne kontrole i izračunate kontrole korištenjem alata sa trake Toolbox u dizajnerskom prikazu obrasca. Kontrolu s nekim poljem vežete tako što identifikujete (navedete, pokažete) polje iz kojeg kontrola dobavlja svoje podatke. Kontrolu vezanu s označenim poljem možete kreirati povlačenjem polja iz prozora Field List (lista polja) obrasca. Prozor Field List prikazuje polja u tabeli ili upitu u podlozi (izvorišni objekat) obrasca. Kada dvaputa kliknete na naziv polja u oknu Field List, Access dodaje obrascu odgovarajuću vrstu kontrole za to polje. Osim toga, polje možete vezati s kontrolom upisivanjem naziva polja u samu kontrolu ili u okvir za vrijednost Izvor kontrole na listu svojstava kontrole. Lista svojstava definiše osobine kontrole, kao što je njezin naziv, izvor njezinih podataka te dizajn. Za otvaranje liste osobina (properties) pritisnite taster F4 kada ste u dizajnerskom prikazu obrasca. Ako nije aktiviran (klikom) ni jedan objekat na mreži obrasca, otvoriće se lista svojstava za čitav obrazac, a ako aktiviramo neki objekat, nakon pritiska na taster F4 otvoriće nam se lista svojstava za taj objekat. To prepoznajemo po nazivu okvira za dijalog i po nazivu objekta u polju okvira dijaloga osobina:
Slika 198. Okvir osobina za cijeli obrazac
Slika 199. Okvir osobina za polje List Box
Više kontrola na obrascu mogu se grupisati. To se izvodi uz pomoć dugmeta alata Select Objects sa palete alata Toolbox. Da biste napravili grupu kontrola na obrascu treba da kliknete na to dugme i držeći pritisnut lijevi taster miša prevučete ga na obrazac, te s njime iscrtate pravougaonik oko kontrola koje želite da svrstate u grupu. Kada otpustite taster miša pojaviće se dizajnerske hvataljke koje označavaju izbor. Ekran obrasca u dizajnerskom prikazu sastoji se od tri sekcije: zaglavlja (Header), tijela obrasca (Detail) i podnožja (Footer). Kontrole se mogu nalaziti u svim sekcijama obrasca. Podaci koji se prikazuju na obrascu smještaju se uglavnom u tijelo obrasca, mada se u tijelo obrasca mogu postaviti i nevezane kontrole. U zaglavlje i podnožje obrasca smještaju se obično fiksni podaci (na primjer, naziv obrasca, logo firme,
161
datum, broj stranice), tj. podaci koji se ne mijenjaju s promjenom sadržaja u tijelu obrasca.
Slika 200. Dizajnerski prikaz ekrana praznog obrasca
Poljima u obrascu moguće je postavljati inicijalne vrijednosti (default), odabrati oblik pisma (font) u kojem će se podaci ispisivati na ekranu ili štampaču, podesiti boje (color) ili pak zaključavati slogove ako se radi u mrežnom okruženju (password) i dr. Kada se pokrene aktivnost kreiranja novog obrasca, podrazumijevajuće se otvori samo sekcija Details. Da biste prikazali i ostale sekcije, u dizajnerskom prikazu obrasca treba pokazati na traku zaglavlja te sekcije i napravit klik desnim tasterom miša, a zatim iz brzog menija koji se pojavi izabrati opciju Form Header/Footer.
Slika 201. Brzi meni sa opcijom za izbor sekcija obrasca
Na isti način sekcije zaglavlja i podnožja se mogu i obrisati, a njihovim brisanjem automatski se brišu i kontrole na njima. Pored kontrola (koje dok su na paleti toolbox-u stručno zovemo alati ili dugmad, a kada ih spustimo na mrežu obrasca zovemo kontrole), za upravljanje pomoću obrasca koriste se i osobine (properties) obrasca ili objekata na obrascu. Osobine i jednih i drugih se prikazuju u pripadajućim okvirima, i karticama u njima, koji se prikazuju kada se određena kontrola ili objekat odaberu i kada je na traci sa alatima aktivno dugme Properties.
162
Okvir za dijalog izbora osobina (obrasca ili objekata na obrascu) najbrže se aktivira pritiskom na taster F4, kada ste u dizajnerskom prikazu, ili izborom opcije Properties iz brzog menija:
Slika 202. Okvir dijaloga svojstava obrasca Form → Properties
14.7 Osobine obrasca Osobinama obrasca (properties) određuje se: -
tabela ili upit iz kojeg će se koristiti podaci (Record Source). Kao izvor podataka za obrazac može se koristiti i SQL naredba. naslov obrasca (Caption) obrada podataka obrasca gdje je moguće izabrati unos, izmjenu ili čitanje podataka (Default Editing ) određivanje broja vidljivih slogova na ekranu. Moguće je odabrati: jednokolonski obrazac ( prikazuje podatke jednog sloga ) neprekidni obrazac ( prikazuje podatke više slogova ) tabelarni obrazac ( prikazuje podatke u obliku tabele ) menij koji će se pojaviti aktiviranjem obrasca ( Menu Bar ) ostalim osobinama određuje se pismo za prikaz podataka, zaključavanje slogova itd.
Slika 203. Aktiviranje okvira osobina obrasca
Slika 204. Aktiviranje okvira osobina sekcije Detail
Aktiviranje okvira sa opcijama osobina cijelog obrasca vrši se klikom na dugme select u lijevom uglu horizontalnog lenjira, odnosno u presjecištu vertikalnog i horizontalnog klizača po poljima na obrascu, kao što je pokazan na slici 203 (kružnica). Aktiviranje okvira sa osobinama sekcije obrasca vrši se klikom na dugme select lijevo od trake za naziv sekcije (slika 204).
163
Sve prethodno nabrojane i nenabrojane osobine obrasca podijeljene su u četiri kategorije, a u okviru za dijalog Form podijeljene su po karticama (tabulatorima): - Format – Osobine koje utiču na izgled obrasca; - Data – Osobine za zadavanje podataka koji se prikazuju i mijenjaju u obrascu; - Event – Ovdje se određuje kako će obrazac reagovati na događaje (events); - Other – Ostale osobine koje ne pripadaju ni u jednu od prethodnih kategorija. U narednim tabelama navešćemo neke od važnijih osobina obrasca i opisati njihovo značenje.
Slika 205. Kartica Format
Caption – naslov obrasca Default View – određuje tip pregleda podataka; da li je obrazac jednostruk (Single Form je default) ili će u jednom redu biti prikazano više redova (Continuous) ili izgled u obliku tabele (Datasheet View) Views Allowed – dozvoljen samo pogled na obrazac u prikazu Form View, a neće se moći prebaciti u Datasheet View. Scroll Bars – da li se prikazuju trake sa klizačima Record Selectors – da li se prikazuju dugmad za izbor slogova Navigation Buttons – da li se prikazuju dugmad za kretanje po slogovima Dividing Lines – da li se prikazuju linije između slogova na višestrukoj formi Auto Resize – da li se obrazac vraća na podešenu veličinu prilikom otvaranja Auto Center – da li se obrazac centrira na ekranu prilikom otvaranja Border Style – vrsta okvira (obruba, bordure) obrasca Control Box – da li se vidi kontrolno dugme na lijevoj strani naslova obrasca Min Max Buttons – da li se vide dugmići za promjenu veličine obrasca Close Button – da li se vidi dugme za zatvaranje obrasca Whats This Button – da li se vidi dugme sa upitnikom za pomoć Width – širina obrasca Picture – Slika koja se prikazuje na formi Grid X, Grid Y – finoća mreže za pozicioniranje kontrola na obrascu. Slika 206. Opis osobina na kartici Format
164
Slika 207. Kartica Data (podaci)
Record Source – tabela ili upit koji služe kao izvor podataka za obrazac Filter – filter za izbor slogova u formi, validna WHERE klauzula za SQL upit. Sadrži posljednji kriterij filtriranja. Order By – polje po kojem se sortira, validna ORDER BY klauzula za SQL upit. Sadrži posljednji kriterij sortiranja. Allow Filters – Ako je ova osobina postavljena na Yes, korisnik može filtrirati podatke, te naredbom Show All Records iz menija Records prikazati sve, a ne samo filtrirane podatke. Allow Edits – Ako je postavljeno na Yes tada korisnik može mijenjati podatke u redovima. Allow Deletions – ako je postavljeno na Yes, korisnik može brisati redove s podacima Allow Additions – ako je postavljeno na Yes, korisnik može dodavati nove redove s podacima Data Entry – određuje hoće li obrazac otvoriti prazan red u koji možete upisati nove podatke. Da bi to svojstvo postavili na Yes, svojstvo Allow Additions mora takođe biti postavljeno na Yes Slika 208. Opis osobina na kartici Data After Update –dešava se nakon ažuriranja polja ili sloga On Activate – dešava se kada obrazac postane aktivan On Click –dešava se kada se na kontrolu klikne mišem On Current – dešava se kada se promijeni aktivni slog u obrascu On Deactivate – dešava se kada obrazac postane neaktivan.
Slika 209. Kartica Event (događaj)
Slika 210. Opis osobina na kartici Event
165
Slika 211. Kartica Other (ostale)
Toolbar - Ovo svojstvo se koristi ako želite da napravite paletu alatki za obrazac. Fast Laser Printing-Linije i okvire štampa tekstualnim znacima Help File - Ime datoteke za pomoć pridružene obrascu Help Context ID- Identifikacioni broj (ID) stavke datoteke za pomoć koji se koristi pri traženju pomoći Tag - Za pridruživanje dodatnih podataka Has Module - Da li obrazac ima modul klase Allow Design Changes - Design View dozvoljava izmjene strukture samo u prikazu za oblikovanje obrasca All Views. Dozvoljava mijenjanje strukture u svim prikazima. Slika 212. Opis osobina na kartici Other
S obzirom da je obrazac podijeljen na više dijelova svaki od tih dijelova ima svoje osobine preko kojih je moguće upravljati. Pri tome detaljni red, zaglavlje i podnožje obrasca imaju podskup istih osobina dok zaglavlje i podnožje stranice imaju još poseban podskup osobina za svoje dijelove obrasca.
Zadatak 10: To da se ovdje radi o osobinama cijelog obrasca, a ne bilo kojeg od objekata ili kontrola na njemu, prepoznajemo po dvije stvari, koje? Odgovor: (1) Po nazivu okvira za dijalog osobina (plava naslovna linija) i (2) po nazivu objekta ili kontrole u polju ispod naslovne linije.
14.8 Postupak kreiranja obrasca Postupak kreiranja obrasca započinjemo, kao i kod kreiranja tabela i upita, izborom dugmeta Forms u panelu grupe Objects i zatim kliknemo na alat New na traci sa alatima u prozoru baze podataka.
Slika 213. Okvir dijaloga New Form
166
Otvori se okvir dijaloga New form sa slijedećim opcijama (da ih još jednom pregledno specifikujemo): -
-
-
Design view – izborom ove opcije kreiramo obrazac od „nule“, tj. od praznog prozora obrasca. To znači da moramo sami dodavati sve kontrole na radnu površinu. Izgled obrasca zavisi potpuno od nas i naših potreba. Form wizard – izborom ove opcije pokrećemo čarobnjak pomoću kojeg možemo izgraditi osnovne tipove obrazaca uključujući i podobrasce (subforme). Auto form : Columnar – čarobnjak koji automatski pravi obrazac, a kontrole slaže u redove. Auto form : Tabular – čarobnjak koji automatski pravi obrazac, a kontrole slaže u kolone. Auto form : Datasheet – čarobnjak koji automatski pravi obrazac u obliku tabele. Chart Wizard – čarobnjak koji radi grafove iz odabranih polja i pravi obrazac sa tim grafom. Pivot table wizard – čarobnjak koji pravi obrazac sa Excelovom pivot tabelom.
U polje Chose the table or query..., na dnu dijaloga upisuje se naziv tabele, ili sa padajuće liste se izabire izvor podataka (tabela ili upit iz naše baze, ili iz neke druge, ili iz importovane) na osnovu kojeg želimo da kreiramo obrazac. Ukoliko želimo da kreiramo obrazac sa podacima iz više tabela ili upita onda to polje ostavljamo prazno i izabiremo prikaz Design view ili Form wizard, ali za kreiranje automatskih obrazaca (Autoforms) i grafova (Chart Wizard) obavezno ga moramo ispuniti.
Zadatak11: Da li biste mogli pretpostaviti zašto u polje Chose the table or query...,u dnu okvira dijaloga New Form (slika 213), baš moramo navesti naziv izvora podataka za izradu novog obrazaca tipa Autoform? Odgovor: Obrasce tipa Autoform (sa pet podtipova), za razliku od ostalih koje kreira uz našu ili čarobnjakovu pomoć, Access automatski kreira sam i to na bazi strukture polja samo jednog izvora podataka i u tom slučaju (u programu) nema ugrađeno dovoljno vještačke inteligencije da nas pita i „da li imamo još neki izvor podataka i koji...“.
14.9 Kreiranje obrasca u dizajnerskom prikazu Da biste obrazac kreirali u dizajnerskom prikazu (Design View), u prozoru baze (Database) kliknite na New, nakon čega će se otvoriti prozor New Form (kao na slici 213). U gornjem dijelu tog prozora odaberite opciju Design View, a dole u polju iz padajuće liste (na kojoj su izlistani svi objekti sa podacima) odaberite tabelu (ili upit) prema kojoj želite kreirati obrazac. Isti efekat dobija se i izborom (dvoklikom) opcije Create form in design view u
167
desnom oknu prozora baze podataka kada je u grupi Objects u lijevom oknu prozora baze podataka izabrana ikona Form. Access će otvoriti prozor za dizajn obrasca (Form1 : Form), paletu alata Toolbox, prozor s popisom polja odabrane tabele (Field List) i okvir Form dijaloga osobina (properties) obrasca.
Slika 214. Prozor obrasca u dizajnerskom prikazu
Na radnoj površini nacrtana je mreža (grid) koja se može uključivati i isključivati na meniju View, izborom opcije Grid. Oko radne površine s lijeve i gornje strane nalazi se lenjir (ruler) koji se takođe isključuje i uključuje na meniju View izborom opcije Ruler. Toolbox je paleta alata koja služi da dodavanje objekata kontrole na radnu površinu, Field List prozor prikazuje listu polja izvora podataka za obrazac. Field list služi za prikazivanje polja izvora obrasca, a to može biti tabela ili upit. Ako već nije automatski otvoren, prozor sa popisom polja tabele na bazi koje dizajnirate obrazac otvorićete klikom na dugme Field List na alatnoj traci ili izborom menija View→ Field List, naravno kada je obrazac otvoren u dizajnerskom prikazu. Okno Form je okvir dijaloga osobina obrasca (properties). Properties definiše osobine bilo cijelog obrasca ili svakog pojedinog kontrolnog objekta koji se na njemu nalazi. Kada je uključen prozor Properties, svaki put kad je na radnoj površini odabran neki objekat (ili cio obrazac) automatski se njegove osobine prikazuju u prozoru Properties. Osobine koje se prikazuju u tom prozoru grupisane su u pet grupa: Format, Data, Event, Other i All. U zadnjoj grupi All navedene su sve osobine koje su podijeljene po prethodne četiri navedene grupe.
168
Ako nisu već prikazani, sva tri dodatna pomoćna ekrana uključuju se iz menija View, ili na alatnoj traci na vrhu ekrana izborom ikona: Properties,
za Toolbox i
za
za Field List.
Slika 215. Brzi meni za uključivanje trake sa alatima
Iako, kao što znamo, obrazac ima tri dizajnerska područja, Access će kreiranje novog obrasca započeti u području Detail (pojedinosti). Detail je centralni dio obrasca, tu je smješten najveći dio kontrola i u njemu se obično nalazi najveći dio podataka iz tabele ili upita. U područje pojedinosti (Detail) stavićete podatke iz izvorišnog objekta koje želite prikazati, a u druga dva područja obrasca stavićete podatke koji se ne mijenjaju sa promjenom svakog sloga izvora. Ako obrascu želite dodati zaglavlje i podnožje, odaberite opciju menija View → Form Header/Footer. Form Header je zaglavlje obrasca i obično se koristi za upis naziva dijela aplikacije koji se obavlja, ili kontrola koje služe za pretraživanje. U području Form Footer (podnožje) obrasca obično se nalaze polja za izraze tj. za izračunate zbirne podatke. Prilikom kreiranja obrasca možete koristiti alate iz palete alata Toolbox-a. Toolbox sadrži po jedno dugme za svaku kontrolu. U narednoj tabeli dajemo pregled svih alata za kontrolu obrasca na paleti Toolbox, sa izgledom njihovog dugmeta, te nazivom alata i opisom dejstva koje imaju na obrascu: Alat Naziv alata i objašnjenje dejstva Select Objects - označavanje, promjenu veličine i pomicanje postojećih kontrola Command Button - kreiranje dugmeta s naredbom koji omogućuje aktiviranje neke funkcije, makroa ili akcija napisanih u VBA-u. Pomoću Wizard-a u kome se nude mogućnosti biranja vizuelnih, ali i komandnih svojstava tastera olakšava se kreiranje kontrola Control Wizard - pokreće čarobnjak koji će pomoći u postavljanju svojstava odabrane kontrole Image – Ova kontrola služi za unos slike na obrazac koja može biti kao pozadina na obrascu. Label - Kreiranje fiksnog teksta – labela – za oznaku tekstualnih polja, naziva obrazaca ili kao napomene Unbound Object Frame – Kreiranje nepovezanog okvira koji služi za prikaz grafičkog ili nekog drugog objekta koji nije u okviru baze podataka, već ima zaseban fajl, napravljen u drugoj aplikaciji (možete dodavati slike, zvukove, grafikone). Ovako unijet objekat može da se mijenja. Text Box - kreiranje okvira za tekst (tekstualno polje) koji na obrascu može prikazivati tekst, brojeve, datum ili vrijeme. Ova kontrola služi za unos, ispravljanje i prikaz podataka. Najčešće odgovara jednom polju u tabeli ili upitu nad kojim je obrazac kreiran, a služi i za prikaz izračunatih vrijednosti.
169
Alat
Naziv alata i objašnjenje dejstva Bound Object Frame - Prikazuje podatke iz same baze podataka. Služi za umetanje objekata sadržanih u izvorišnoj tabeli ili upitu. U slučaju objekata koji ne mogu biti prikazani na obrascu, Access će prikazati ikonu aplikacije u kojoj je objekt kreiran. Option Group - Kreiranje okvira (Frame-a) kojim se više objekata grupiše po nekom pravilu. Ova kontrola pravi okvir na obrascu i okuplja kontrole OptionButton, ToggleButton i CheckBox na toj površini, koje služe za unos podatka biranjem neke od ponuđenih opcija. Ove kontrole mogu imati jedno od dva stanja (Yes/No, True/False, On/Off, 1/0). Page Break – Ova kontrola kod prevelikih obrazaca koji se ne mogu prikazati samo na jednom ekranu dijeli obrazac na stranice i označava prekide stranice. Toogle Button - kreiranje dugmeta za izmjenu stanja (za skretanje) koji može poprimiti vrijednost On/Off, True/False ili Yes/No. Tab Control - kreiranje kartica (tabulatora). Svaka kartica može sadržati nekoliko drugih kontrola. Kartice omogućavaju organizovanje podataka na više panela istog prozora. Kombinacija ove kontrole sa Subform omogućava pravljenje kompleksnijih, ali korisniku orijentisanih obrazaca. Option Button - kreiranje dugmeta za izbor opcije koji može poprimiti vrijednost On/Off, True/False ili Yes/No. Zove se još i radio dugme – dugme za izbor opcija koje se međusobno isključuju (samo se jedna može odabrati) Subform/Subreport - umetanje podobrasca na glavni obrazac, odnosno podizvještaja na glavni izvještaj. Ovo je korisno kada dio podataka treba prikazati na jednom mjestu. Poseban efekat se dobija kada treba prikazati više slogova jedne tabele ili upita koji odgovaraju jednom slogu na glavnom obrascu ili izvještaju. U dizajn prikazu obrasca mogu se podešavati osobine (Properties) obrasca u cjelini ili za izabrani objekat na obrascu. U Properties prozoru osobine objekata su podijeljena po karticama Format, Data, Event, Other. Check box – dugme za izbor većeg broja opcija istovremeno (ne isključuju jedna drugu). Okvir za izbor može poprimiti vrijednost On/Off, True/False ili Yes/No. Line - Crtanje linija na obrascu Combo box – padajući kombinovani popis vrijednosti uz mogućnost izbora ponuđenih i dodavanja novih. Da biste kreirali listu, osobini Row Source možete pridružiti vrijednosti. Ponuđeni elementi liste mogu pripadati nekoj tabeli ili upitu, a mogu se i programski unijeti. Za izvorište sadržaja popisa (Row Source) možete odrediti tabelu ili upit, a mogu se i programski unijeti. Rectangle - iscrtavanje praznih ili popunjenih pravougaonika na obrascu. List Box - kreiranje okvira s popisom koji sadrži popis mogućih vrijednosti kontrole. Da biste kreirali popis, osobini Row Source možete pridružiti vrijednosti. Za izvorište sadržaja popisa (Row Source) možete takođe odrediti tabelu ili upit. ListBox omogućava izbor jednog od elemenata sa liste koju prikazuje. U listu se ne mogu direktno unositi nove vrijednosti. Stvara listu –nepromijenjeni popis vrijednosti bez mogućnosti dodavanja novih More Icons - omogućuje pristup ActiveX kontrolama. Otvara popis ostalih objekata koje možete iskoristiti za kreiranje obrasca.
170
Željeno polje iz palete alata na obrazac umeće se jednostavno povlačenjem ikone alata sa palete na mrežu obrasca i njegovim spuštanjem na mrežu (drag and drop tehnika). Access će najčešće (podrazumijevajuće) upotrebiti Text Box ili neku drugu kontrolu koja se upotrebljava za taj tip podataka. Kontrolu koja će biti upotrebljena možete i sami odrediti: u Toolboxu označite željeni tip kontrole, a zatim umetnite polje. Ako ste odabrali kontrolu koja ne odgovara tipu odabranog polja, Access će upotrebiti podrazumijevajuću kontrolu za taj tip podataka.
Slika 216. Aktivirana polja kontrola
Ako je u tabeli tip podatka definisan kao Lookup, on će nakon stavljanja tih polja na obrazac automatski biti definisan i u obrascu. Ako nije definisan, morate to učiniti ovdje tako da Text Box preoblikujete u Combo Box. To ćete učiniti tako da kliknete desnim tasterom miša na Text Box i za Change To iz brzog menija odaberete Combo Box. Nakon toga potrebno je postaviti slijedeće osobine (polja Combo Box): Na kartici Data pod osobinu Control Source upišite ime tabele ili upita koji daje podatke Combo boxu, Row Source Type postavite na Table/Query (kontrola koja predaje podatke), a pod osobinu Bound Column upišite broj kolona preko kojih se ostvaruje veza. Ako želite ograničiti popis na podatke iz tog izvora (tabela ili upit), osobinu Limit To List postavite na Yes. Na kartici Format osobinama Column Count (koliko kolona se preuzima) i Column Widths (širina kolona) postavite na odgovarajuće vrijednosti.
14.9.1 Dodjeljivanje izvora podataka obrascu Može se desiti da na radnom ekranu nije prikazana lista polja iz izvora podataka, jer ga još, možda, nismo ni dodijelili obrascu koji kreiramo. Da bi se dodijelio izvor obrascu, treba se najprije selektovati cijeli obrazac (iz menija Edit izabire se opcija Select Form). U prozoru osobina (Properties), po nazivu koji je ispisan u njegovom zaglavlju, i po nazivu u polju sa padajućom listom ispod, vidljivo je da je odabran cio obrazac (Form).
171
Izvor obrascu se dodijeljuje u grupi All u prvom polju Record Source. U tom polju s desne strane nalazi se strelica prema dole kojom se otvara padajući meni. Taj meni sadrži popis svih mogućih izvora podataka za obrazac (tabele ili upiti). Izborom naziva objekta u tom meniju dodjeljuje se izvor obrascu.
Slika 217. Opcija dodjeljivanja izvora podataka za obrazac
172
Ukoliko je uključena opcija Field list prikazaće se odmah izvor obrasca u obliku pravougaonika koji sadrži popis svih polja odabranog izvora.
Slika 218. Lista polja izvora obrasca i opcija izbora izvora (Record Source) u dijalogu osobina
Polja koja se nalaze u izvoru prenose se na radnu površinu. Način na koji se polja prenose na radnu površinu poznat je kao “prevuci i otpusti” (drag and drop): naziv polja odabere se u popisu u izvoru obrasca (Field list), drži se lijevim tasterom miša i odvlači se na radnu površinu. Na mjestu gdje se želi postaviti određeni naziv otpusti se lijevi taster miša. Može se prevući više polja (ili sva) odjednom tako da se u Field List markira više (ili sva) polja i izvrši se njihovo prevlačenje i otpuštanje na površinu sekcije Detail obrasca.
Slika 219. Prevlačenje odjednom više polja iz izvora na mrežu obrasca
Hvataljke koje se na slici vide oko labela i polja kontrola pokazuju da su te labele i ta polja aktivirana i da se sada nad njima može vršiti uređivanje: promjena položaja, promjena rasporeda, promjena širine, promjena visine, dodavanje boje pozadine, promjena fonta teksta itd. Isto kao što se mogu definisati postavke jednog objekta (gore navedeni primjer labele), na isti način mogu se definisati postavke većeg broja objekata istovremeno. Pomoću miša iscrta se pravougaonik koji će
173
obuhvatiti objekte koji se istovremeno žele mijenjati. Na prozoru Properties u zaglavlju piše Multiple Selection, što označava da se radi o selektovanju više objekata.
Slika 220.Opcija određivana svojstava istovremeno za više objekata kontrole
Polje koje je preneseno na radnu površinu obrasca sastoji se od dva dijela: labele i text box-a.
Labela je je tekst koji se stavlja na radnu površinu i kao takav njegov sadržaj se ne mijenja prilikom promjene slogova izvora podatka. Osim preuzimanja labele iz izvora obrasca, labela se može i nacrtati i korištenjem Toolbox-a. Text box je dio čiji se sadržaj mijenja zavisno od sloga na kojem se u izvoru nalazimo. Najbolja razlika između labela i tekst box-ova vidi se ako se obrazac pregleda u izvršnom prikazu obrasca (Form view), tako da se iz menija View odabere pogled Form view.
Slika 221. Izgled labela, combo-box-ova i text-box-ova u prikazu Form
Traku za pomjeranje slogova i funkciju dugmadi na njoj već smo objasnili u poglavlju o tabelama i oni ovdje imaju isti izgled, oznake i funkcije. Prema onome šta se saznaje iz trake za pregledavanje slogova u gornjem primjeru, u poljima na gornjem obrascu prikazani su podaci iz 54. sloga izvora podataka (od ukupno 63 sloga).
174
14.9.2 Crtanje labele i određivanje svojstava Labele i okvire polja za prikazivanje podataka na obrascu možemo i sami nacrtati korišćenjem alata iz Toolbox-a (palete alata). Na paleti alata se +
odabere ikona alata Label . Pokazivač miša se promijeni u A . Pomoću njega na radnoj površini nacrta se pravougaonik u koji se treba napisati tekst labele.
Slika 222. Na paleti alata izabran je alat za crtanja kontrole Label
Slika 223. Pozicija sa ucrtanim poljem kontrole Label
Ako aktiviramo polje labele (dvoklik na ivicu okvira labele ili desni klik na okvir labele i izbor opcije Properties iz brzog menija) pojaviće se okvir osobina labele u čijim poljima kartice Format sada možete podešavati format labele:
Slika 224. Okvir dijaloga za podešavanje svojstava labele
Opcije Properties kartice Format (ovdje naglašavamo da je riječ o osobinama objekta labela, koje su različite od osobina obrasca ili nekog drugog objekta) imaju dejstvo kao što je prikazano na slici dole :
175
Name – dodjeljuje se (ili mijenja) ime labeli. Caption – tekst koji se ispisuje unutar labele. Visible – da li je labela vidljiva ili ne. Display When – u kojem pregledu se ispisuje labela (uvijek, na ekranu, kada se odštampa). Vertical – koliko je labela udaljena od lijevog kraja radne površine. Top – koliko je labela udaljena od gornje stranice radne površine. Width – koliko je labela široka. Height – koliko je labela visoka. Back Style – Transparent (prozirna površina cijele labele) i Normal (poprima boju). Back Color – izbor boje pozadine. Special Effect – izbor specijalnih efekata za površinu labele; udubljenje, ispupčenje od površine obrasca. Border Style – izbor vrste obruba (bordure) labele. Border Color – izbor boje obruba. Border Width – debljina obruba. Fore Color – izbor boje fonta. Font Name – izbor vrste fonta. Font Size – izbor veličine fonta. Font Weight – izbor debljine fonta (podebljanje). Font Italic – da li je tekst labele u kurzivu. Font Underline – da li je tekst labele podvučen. Text Align – poravnanje teksta labele. Kartica All kontrole Label Pregled svojstava kontrole Label Slika 225. Opcije kartice All na okviru Properties kontrole Label
Na kartici All okvira sa osobinama labele nalaze se sve opcije kojima se izabire dejstvo na dizajn labele na obrascu.
14.9.3 Crtanje Text box, Combo box i List box objekata Kontrole Text box, Combo box i List box su objekti koji se razlikuju po svom izgledu, a namjena im je ista. Text box je prikazan u obliku pravougaonika u kojem se ispisuju vrijednosti. Combo box je takođe prikazan pomoću pravougaonika, ali on sa svoje desne strane ima taster sa strelicom prema dole pomoću koje se otvara padajući meni. Combo box služi za ispisivanje odabranog teksta/predefinisanog, ali dopušta nam i unos vlastititog teksta.
176
List box je po izgledu isti kao i combo box (s desne strane ima taster sa strelicom gore i dole) samo ne možemo dodavati novi tekst. Text box se na radnoj površini crta izborom ikone iz prozora Properties, Combo box izborom ikone , a List box izborom ikone .
Slika 226. Pozicija izbora kontrole Text Box
Slika 227. Pozicija nacrtanog polja kontrole Combo Box
Nakon što nacrtamo polje Combo Box otvara se dijalog prvog koraka čarobnjaka Combo Box Wizard, u kojem treba da izaberemo način na koji će se ispisivati vrijednosti u Combo Box-u. Opcije su: (1) onako kao što su u tabeli ili upitu, (2) da ćete sami unositi vrijednosti, ili (3) neka se pronađe slog na obrascu na bazi vrijednosti koju vi izaberete u Combo Box-u.
Slika 228. Izbor načina ispisivanja vrijednosti u Combo Box-u
Zatim slijedi još 7 koraka čarobnjaka sa pitanjima koja on ne može da razluči bez vaše pomoći i za koja vi trebate da izaberete odgovor.
Slika 229. Pozicija iscrtanog polja kontrole List Box-a
177
Nakon što iscrtamo List Box, otvara se dijalog prvog koraka čarobnjaka List Box Wizard (kao na slici dole), koji nam nudi da izaberemo jednu (od tri) opciju izgleda List Box-a. Te tri ponuđene opcije su iste kao što je u svom prvom koraku ponudio Combo Box Wizard.
Slika 230. Dijalog prvog koraka čarobnjaka List Box
Nakon klika na dugme Next čarobnjak prelazi na drugi korak u kojem nas pita da mu pokažemo objekat baze podataka koji će biti izvor podataka za Combo List polje na obrascu. I ovaj dijalog je isti i kod Combo Box Wizarda.
Slika 231. Okvir drugog koraka čarobnjaka
U naredna dva koraka (treći i četvrti) čarobnjak nas pita da mu pokažemo polje iz objekta baze podataka (tabela, upit) čije će se vrijednosti ispisivati u tom polju obrasca, a u narednom koraku (četvti) čarobnjak još pita za vrstu sortiranja (uzlazno, silazno) kojim će se podaci prikazivati u tom List Box-u, a zatim još i ime labele tog polja.
Slika 232. Okvir dijaloga trećeg koraka čarobnjaka
178
Slika 233. Okvir dijaloga četvrtog koraka čarobnjaka List Box
Nakon toga, u petom koraku, čarobnjak List Box nam prikaže jedan slog iz objekta kojeg smo izabrali za izvor podataka, da eventualno podesimo širine kolone(a) koja(e) će se ispisivati u List Box-u.
Slika 234. Situacija za podešavanje širine jedne kolone polja List Box-a
Širina kolone se podešava kao u Excel-ovom Worksheet-u, pokažete mišem na desnu ivicu zaglavlja kolone i kada kursor miša pređe iz lika strelica u lik “raskršća” pritisnemo lijevi taster miša i vučemo pokazivač lijevo (ako smanjujemo širinu) ili desno (ako proširujemo kolonu).
Slika 235. Situacija za podešavanje širine više kolona polja List Box-a
U šestom koraku čarobnjak nas pita da mu iz liste raspoloživih polja izaberemo (pokažemo) ključ sloga kojeg, kada ga izaberemo u list box-u, njegovo polje u list box-u u kojem su vrijednosti, želimo da sačuvamo za kasnije, ili da ih koristimo za neke akcije u našoj bazi podataka.
179
Slika 236. Pokazivanje čarobnjaku polja izabranog sloga iz List Box-a kojeg želimo da sačuvamo za kasnije
U sedmom koraku čarobnjak nas pita da li želimo da izabranu vrijednost sačuvamo radi kasnijeg korišćenja ili da tu vrijednost sačuvamo u nekom polju, te da mu iz padajuće liste polja pokažemo to polje.
Slika 237. Okvir sedmog koraka čarobnjaka List Box-a
Na kraju, u osmom koraku, čarobnjak nas pita za ime labele List Box polja i nakon klika na dugme Finish čarobnjak završava rad izradom tog polja na obrascu.
Slika 238. Određivanje naziva labele List Box-a
180
Slika 239. Izgled obrasca u dizajnerskom prikazu
Slika 240. Izgled obrasca u Izvršnom prikazu
Polje labele sifra na obrascu vam možda izgleda nezgrapno (kao što i jeste), ali to je zato što sam, pokazujući izradu ovog tipa polja, u trećem koraku izabrao da se (umjesto jednog, eventualno dva polja tabele) prikazuju SVA polja, što, naravno, nije praktično za List Box tip polja na obrascu. Za takvu vrstu prikaza idealno rješenje je prikaz slogova u obliku subform na obrascu (obrazac u obrascu), o čemu ćemo govoriti nešto kasnije.
14.9.4 Kreiranje komandnog dugmeta Na paleti alata odaberemo ikonu alata Command Button i nacrtamo komandu na površini obrasca. Nakon toga se automatski startuje čarobnjak za izradu komandi. 1. U njemu imamo izbor više kategorija tj. područja rada komande (rad nad slogovima, obrascima itd.) i moguće akcije nad određenom kategorijom (otvori obrazac, zatvori obrazac, pokreni upit itd.). 2. Ako radimo sa obrascima prvo moramo odabrati obrazac koji će se otvoriti, zatvoriti ili štampati. 3. U slijedećem koraku biramo izgled same komande – hoće li imati sliku na sebi ili tekst. 4. I na kraju joj dajemo ime po kojem će je baza raspoznavati (uobičajeno je dati ime po akciji koju vrši)
14.9.5 Pretvaranje text box-a u combo box S obzirom da ova dva objekta imaju istu funkciju, oni se mogu međusobno zamjenjivati, najčešće se Text box mijenja u Combo box ili u List Box.
181
Pretvaranje text box-a u combo box obavlja se na način kao što je prikazano na narednoj slici (slika 241). U dizajnerskom prikazu obrasca aktivira se polje tipa text box, a zatim klikom desnim tasterom miša iz brzog menija izabiremo opciju: Change To – Combo box.
Slika 241. Situacija izbora opcije za zamjenu tipa kontrole List Box u Combo Box
Otvara se okvir dijaloga Properties, u kojem se mijenjaju polja koja su karakteristična za Combo Box (o ćemu smo već govorili u dijelu o osobinama ovog tipa kontrole): -Row Source Type: izabiremo tip izvora: može biti table/query – tabela ili upit, field list: polja iz tabele ili upita, value list: sami definišeamo listu koja se ispisuje - Row Source: naziv tabele ili upita kada je u row source type stavljena table/query ili fied list, ili vrijednosti liste odvojene tačkazarezom ako je u row source type stavljeno value list - Column Count – koliko ima kolona definisanih u listi - Column Heads – zaglavlje - Column Widths – širina kolona - Bound Column – veza između dvije vrste izvora - List Rows – koliko podataka se ispisuje u kolonama. - List Width – koliko se podataka ispisuje u jednom redu Slika 242. Neke osobine kontrole tipa Combo Box
Slika 243. Situacija osobine Row Source
promjene
182
Vježba 13: Kreiranje obrasca u dizajnerskom prikazu U glavnom meniju kliknite na Forms kao da idete praviti obrazac. Samo ovaj puta umjesto Create form by using wizard kliknite na Create form in Design view. Otvoriće vam se ovakav prozor:
Najprije raširite veličinu podloge obrasca koliko vam odgovara. To ćete napraviti tako da držeći pritisnuti lijevi taster miša na ivicu obrasca povlačite ga prema desno-dole. Zatim u Toolbox-u izaberite klasu objekta Image.
Zatim, držeći pritisnut lijevi taster miša povucite od lijevog gornjeg čoška do desnog dole. Otvoriće vam se novi prozor gdje možete izabrati sliku (fajl sa ekstenzijom .jpg, .gif, .tif, .pic itd.). Zatim, u Toolbox-u izaberite alat (klasu6) Text Box.
6
U objektnom programiranju alat, dok je na plivajućoj paleti alata Toolbox, zove se klasa. Kada se alat prevuče (drag and drop) na mrežu obrasca on dobija svojstva (properties) i postaje objekat. Objekat je kombinacija programskog koda i podataka koji mogu biti obrađivani kao cjelina. Objekt može biti dio aplikacije, kao kontrola ili forma. Cijela aplikacija takođe može biti objekt. Svi objekti stvaraju se kao jednake kopije njihove klase. Objekt poznat kao kontrola ne postoji dok ga ne kreirate na obrascu. Kad kreirate kontrolu, kreirali ste kopiju primjera klase te kontrole.
183
Umetnite 4 takva polja na obrazac. I, evo kako je to ispalo:
Zatim, dvostruko kliknite na prvo textbox polje i pojaviće vam se ovakav prozor, a potom se u drop down meniju prebacite na Form.
Zatim, u polju Record Source odaberite vašu bazu. Zatim zatvorite to i opet kliknite dvostrukim klikom na prvo Text Box polje, prebacite se na
184
"Data" tab i pod Control Source odaberite "Ime" i taj postupak ponovite za sva ostala polja s tim da ćete za svaki tex box pod Data Source odabrati drugo polje u bazi. Zatim pomoću Toolbara napravite checkbox na obrascu. To je ono polje sa kvačicom. Ponovite isti postupak kao i kod textboxa samo ovaj put pod Data Source odaberite "Zaposlen". Zatim promijenite Labele koje stoje pored TexBox-ova u Ime, Prezime, Godine, Grad, Zaposlen. Odaberite boju kakva vama odgovara za podlogu (to se radi isto kao i u Wordu). Kliknite na dugme X u uglu da zatvorite taj Design view i kad vas pita da li želite snimiti potvrdite i napišite naziv obrasca. Evo kako je na kraju ispalo
14.10 Kreiranje obrasca pomoću čarobnjaka Form Wizard Trudite se, uvijek kada je to moguće, da za kreiranje obrasca koristite čarobnjak Form Wizard. Kasnije možete da izmijenite izgled obrasca i prilagodite ga vašim potrebama. Čarobnjak će, u nekoliko koraka, u kojima šalje okvire za dijalog, pitati da mu (po)kažete: - Koja tabela ili upit su izvor podataka za obrazac - Koja njihova polja se koriste na obrascu - Kakav raspored polja na obrascu od ponuđenih opcija želite i - Kakav vizuelni izgled obrasca od ponuđenih opcija želite da bude primjenjen, a on će na osnovu vaših odgovora kreirati obrazac. Ukoliko vam prozor Database nije vidljiv na ekranu, ili je zatvoren, kliknite na taster F11 da ga povratite. Kliknite na dugme Forms u Database prozoru, a zatim na dugme New u gornjem dijelu prozora. Na ekranu će se pojaviti okvir za dijalog New Form:
185
Slika 244: Okvir za dijalog New Form
Izaberite opciju Form Wizard (kao na slici gore). U polju Tables/Queries iz padajuće liste Chose the table or query... izaberite tabelu ili upit za koju kreirate obrazac. U našem primjeru, dole, izabrali smo tabelu Knjige. 1. U narednom koraku čarobnjaka, u listi na lijevoj strani dijaloga, pojaviće se spisak polja iz navedene tabele ili upita, očekujući da mu saopštimo koja polja (Fields) ćemo izabrati da se prikažu na obrascu.
Slika 245: Dijalog prvog (od četiri) koraka čarobnjaka
2. Selektujte polje (polja) koje želite da budu na obrascu i kliknite na dugme . Ukoliko želite da se sva polja prikažu na ekranu kliknite na dugme . Sva selektovana polja će se premjestiti na listu sa desne strane dijaloga:
186
Slika 246 Polja tabele Knjiga izabrana da budu na obrascu
3. Zatim, možete da izaberete drugu tabelu ili upit i da izaberete i prebacite u desni okvir (Selected Fields:) njihova polja, itd. 4. Ukoliko ste pogrešno selektovali da neko polje bude na obrascu, na sličan način možete da ga (ih) vratite-prebacite na listu (Available Fields:) na lijevoj strani dijaloga, korišćenjem dugmeta i . 5. Kada završite sa selekcijom polja, kliknite na dugme
.
6. Na sljedećem okviru za dijalog izaberite na koji način će polja biti raspoređena na obrascu:
Slika 247. Dijalog drugog koraka čarobnjaka
7. Bilo koju od ovih stilova da izaberete, nakon klika na taster Next, pojaviće se korak čarobnjaka sa ponudom od deset stilova takvog tipa obrazaca, da odaberete jedan.
187
Slika 248. Ponuda stilova obrasca
8. Nakon što ste kliknuli na dugme Next > otvara se novi dijalog čarobnjaka. Na novom okviru za dijalog možete da zadate ime obrasca. Takođe možete da izaberete da li želite da mijenjate izgled obrasca ili da odmah krenete sa unosom podataka (Open ili Modify):
Slika 249. Dijalog četvrtog koraka čarobnjaka
9. Izaberite opciju Open (ili je ostavite izabranom, jer je to podrazumijevajuća opcija) i kliknite na taster Finish da završite kreiranje obrasca. Na ekranu će se pojaviti obrazac koji ste uz pomoć čarobnjaka kreirali:
Slika 250. Izgled gotovog obrasca
188
10. Da ste u prethodnom koraku izabrali opciju Modify, otvorio bi vam se obrazac u dizajnerskom prikazu i okvir sa listom polja izvora, kao na slici dole.
Slika 251. Obrazac u dizajnerskom prikazu i lista polja izvora podataka
14.11 Kreiranje obrasca pomoću čarobnjaka AutoForm U prozoru New form odaberete jedan od tri tipa autoformi i odaberete tabelu na osnovu koje želite da napravite obrazac tzv. ležeću tabelu i kliknete na dugme OK. Selektujte tabelu ili upit (Query) u prozoru Database. Kliknite na ikonu AutoForm: , a zatim na padajućoj listi vrsta objekata izaberite opciju Form.
Slika 252. Izbor opcije AutoForm
Čarobnjak će automatski kreirati obrazac za unos podataka, na primjer:
189
Slika: 253. Izgled automatski kreiranog obrasca Sada možete da koristite obrazac za unos podataka u tabelu. A, ako niste zadovoljni njegovim izgledom, možete da ga doradite u dizajnerskom prikazu, kako smo to prethodno u jednom od poglavlja pokazali.
Vježba14: Kreiranje obrasca pomoću čarobnjaka Obrazac ćete najlakše kreirati pomoću čarobnjaka. Način na koji se to radi prikazan je na konkretnom primjeru. Primjer 1: U bazi podataka Skola napravite obrazac za unos podataka o novom učeniku. Obrazac treba tražiti ime, prezime, pol, bivšu školu, razred i jmbg učenika. Postupak kreiranja obrasca pomoću čarobnjaka odvija se nau slijedeći način: U prozoru baze podataka, na kartici Forms, odaberite opciju Create form by using Wizard. 1. korak: U polju Tables/Queries odaberite tabelu ili upit na osnovu kojeg ćete kreirati obrazac. Odaberite, na primjer, tabelu Ucenik. U oknu Available Fields iz ponuđenih polja odaberite polja koja su vam potrebna i stavite ih u Selected Fields tako da dva puta kliknete na ime polja, ili ga označite i kliknete na dugme sa strelicom u desno (>). Sva polja iz popisa dodaćete dugmetom sa dvostrukom strelicom u desno (>>). Ako neko od polja odlučite ukloniti s popisa odabranih, to ćete učiniti tako da ga označite, a zatim kliknete na dugme sa strelicom u lijevo (=
Veće ili jednako
\ Mod ^
Cjelobrojno dijeljenje Modul Stepenovanje
Za stringove
&
Logički And Logičko I
Spajanje Or
Ostali Between ... And ...
Logičko ILI In
Like
Slično, npr [Ime] Like «Pero»
Eqv
Logička ekvivalencija
Imp
Logička implikacija
Is
Opseg vrijednosti Lista vrijednosti
Rezervisana riječ
Tabela 2. Pregled operatora u Accessu
17.6.2 Funkcije Funkcije predstavljaju već napisane kratke programe koji po definiciji uvijek daju povratne vrijednosti, koje se dobijaju određenim računskim operacijama, poređenjima ili izračunavanjima koje funkcija obavlja. Povratna vrijednost može biti različitog tipa. U Access je ograđeno stotine standardnih funkcija koje se koriste u tabelama, upitima, obrascima i izvještajima. Osnovne vrste funkcija su: - Funkcije za rad sa datumima i vremenom Now ( ) - daje tekući datum i vrijeme: 3.11.07 12:22:34. Time ( ) - daje tekuće vreme: 12:22:34 Date ( ) - daje tekući datum, npr.3.11.07 - Finansijske funkcije (SQL) Avg ( ) - izračunava prosek Sum ( ) - izračunava ukupan zbir - Matematičke funkcije Int ( ) - daje celobrojni deo ulazne vrijednosti, tj. zaokružuje na prvu manju vrijednost Fix ( ) - daje celobrojni deo negativne vrijednosti. Sqr ( ) - izračunava kvadratni koren ulazne vrijednosti. - Funkcije za rad sa nizovima znakova-stringovima Left ( ) - daje zadati broj znakova sa početka niza. Right ( ) - daje zadati broj znakova od kraja niza.
244
Len ( ) - daje dužinu (broj znakova) znakovnog niza. Lcase ( ) - pretvara slova ulaznog niza u mala.
17.6.3 Izrazi Izrazi se koriste za postavljanje određenog uslova ili izračunavanje vrijednosti određenog polja. Oni mogu biti jednostavni ili složeni. Mogu da sadrže razne kombinacije operatora, imena objekata, funkcija i konstanti. Izrazi se mogu sastojati iz slijedećih sastavnih elemenata: - Operatori (+,-,,=,*,And,Or,Not,Like,itd.) pokazuju koja će vrsta akcije biti izvršena nad jednim ili nad više elemenata izraza. - Imena objekata - predstavljaju postojeće objekte. - Funkcije - kao rezultat uvijek daju povratnu vrijednost. Mogu se koristiti ugrađene Access-ove funkcije ili samostalno kreirane. - Literali – vrijednosti koje se unose u izraz, mogu da budu brojevi, znakovni nizovi ili datumi. Access ih koristi u istom obliku u kom su unešeni, bez izmjene. - Konstante (Yes, No, Null, True, False). Access-ove tabele nude više načina pristupa i prikazivanja sadržaja objekta. Moguće je koristiti polja i njihov sadržaj, i svaki objekat tipa polje koristiti više puta. Sadržaj jednog objekta tipa polje moguće je prikazati na više obrazaca i izvještaja koristeći istu referencu, tj. ime objekta tipa polje. Znak uskličnika „!” je važan simbol koji se koristi u kombinaciji sa rezervisanim riječima. Jedna od njih je riječ Forms (obrasci). Kada iza te riječi stoji znak uskličnika, Access prepoznaje da je slijedeće ime objekta ime obrasca koji želite da referencirate. Na primjer, ukoliko se polje SifraArtikla pojavljuje na dva obrasca, [Artikl] i [StavkaKataloga], da bi se referenciralo polje SifraArtikla na obrascu [Artikl] potrebno je koristiti operator ! i rezervisanu riječ Forms: Forms![Artikl]. Znak tačka „.” je simbol koji se koristi u kombinaciji sa operatorima za izraze. Za razliku od operatora „!”, operator „.” obično identifikuje svojstvo određenog objekta. Može se koristiti i između imena tabele i imena polja ukoliko je potrebno utvrditi sadržaj nekog polja tabele. Na primjer: [StavkaKataloga].[ SifraArtikla]
17.7 Kreiranje izvještaja korišćenjem Report Wizard-a Najpogodniji način za kreiranja složenijih izvještaja je opcija pomoću čarobnjaka Report Wizard. Ako izvještaj kreirate pomoću ove opcije, kao izvore podataka možete upotrebiti više tabela i upita i odabrati izgled i format izvještaja. Izbor tabele ili upita čija će se polja nalaziti na izvještaju vrši se u podnožju početnog dijaloga za pravljenje izvještaja New Report.
245
Da biste kreirali izvještaj pomoću Report Wizarda, slijedite naredne korake: 1. Otvorite bazu podataka koja sadrži tabelu ili upit na osnovu kojih želite da napravitie izvještaj. 2. U prozoru baze podataka kliknite jahač kartice Reports. 3. Dvostruko kliknite opciju Create report by using wizard, kako biste pokrenuli čarobnjak Report Wizard (slika 307).
Slika 307. Okvir dijaloga sa opcijama načina kreiranja novog izvještaja
4. Ukoliko nema kreiranih tabela ili upita, drugi način je da u prozoru baze podataka, u okviru Objects, kliknete na dugme Reports, a zatim na dugme New. Nakon toga otvoriće se dijalog New Report, kao na slici 307. 5. Dvoklikom selektujete opciju Report Wizard, nakon čega još
treba da izaberete tabelu/e ili upit/e, ako postoje, sa poljima koja će činiti izvještaj (slika 308). 6. Ako ne postoji ni jedna tabela, ni upit, na osnovu kojih bi se mogao napraviti izvještaj, oni mogu da se dovuku sa Interneta, zatim da ih importujete iz neke druge baze u vašu bazu, ili da se preuzmu sa nekog drugog medija, ili, na kraju, da ih kreirate sami i iz početka.
Slika 308. Izbor objekta koji je osnova izvještaja
Slika 309. Izgled prvog ekrana Report Wizard-a
246
7. Nakon što se izabere tabela/upit u polju Tables/Queries dijaloga čarobnjaka Report Wizard (slika 309), potrebno je izabrati i polja koja će učestvovati u kreiranju izvještaja.
Dovoljno je da selektujete polje u oknu Available Fields dijaloga Report Wizard, kliknete na strelicu > i automatski to polje će se naći u oknu Selected Fields. Ponavljajte ovu aktivnost kako biste prebacili sva željena polja ili kliknite na dugme >> kako biste sva polja odbrane tabele prebacili u popis Selected Fields. Ako se predomislite, neko izabrano polje možete i izbaciti klikom na strelicu u suprotnom smjeru (. Report Wizard omogućuje da se na izvještaju definišu od nula do četiri polja za grupisanje. Dakle, ne morate izabrati ni jedan nivo grupisanja, a možete da izaberete najviše četiri nivoa. 10. U slučaju da ima više nivoa grupisanja, pomoću dugmadi za prioritet (Priority), može da se mijenja redoslijed polja za grupisanje. Dodijeljeni prioritet određuje nivoe u hijerarhiji grupa.
247
Slika 311. Izgled dijaloga Report Wizard / Group U gornjem slučaju grupisanje je zadato poljem Kategorija. 11. Dugme Grouping Options ... dijaloga sa prethodne slike omogućuje da se detaljnije izvrši grupisanje. U zavisnosti od tipa polja izabranog za grupisanje, lista nudi različite načine grupisanja npr. znakovni, numerički, datumski. 12. Klikom na dugme Next dobijate naredni ekran dijaloga u okviru koga se zadaje način sortiranja polja u izvještaju.
Slika 312. Treći korak čarobnjaka Report Wizard
13. Ako je bar jedno od polja izabranih za prikaz u izvještaju numeričko, u okviru ekrana za sortiranje pojavljuje se dugme Summary Options.
248
Slika 313. Treći korak čarobnjaka Report Wizard u slučaju prikaza numeričkog podatka
Klikom na ovo dugme prelazi se na dijalog u kome se može zahtijevati: - sumiranje (SUM), - izračunavanje prosječne vrijednosti (AVG), - određivanje najmanjeg (MIN) sloga i - najvećeg (MAX) sloga u grupi.
Slika 314. Dijalog Summary Options čarobnjaka Report Wizard
Ako se izabere opcija Detail and Summary izvještaj će prikazivati sve podatke, dok izborom opcije Summary Only na izvještaju se prikazuju samo sumarni podaci. Ukoliko se potvrdi polje Calculate percent of total for sums, ispod zbira grupe na izvještaju pojaviće se procenat koji predstavlja učešće zbira grupe u ukupnom zbiru izvještaja. Naredna dva dijaloga utiču na izgled izvještaja. Prvi od njih omogućuje da se zada razmještaj podataka (Layout) ako je zadano grupisanje po bilo kojem polju. Ako se ne zada grupisanje podataka ni po jednom polju, čarobnjak neće prikazati okvir za dijalog na slici 315 i bićemo
249
ograničeni na samo tri opcije rasporeda podataka na izvještaju: Columnar, Tabular i Justified.
Slika 315. Izgled dijaloga Report Wizard / Layout
Grupa opcija Layout nudi šest mogućih načina koji opisuju Access-u da li treba da: - ponavlja zaglavlje kolona ili ne, - uvuče u desno niže nivoe grupisanja, - da doda linije ili okvire između redova podataka u sekciji detail. Pošto se izabere određena opcija, slika na lijevoj strani se mijenja da bi se vidjelo djelovanje opcije. Odaberite orijentaciju ispisa izvještaja, Portrait (ispis kraćom stranicom papira) ili Landscape (ispis dužom stranicom papira). Klikom na dugme Next dobijate naredni dijalog u kojem ste upitani za stil izvještaja. Nekoliko ih je popisano i kliknete li na jedan vidjećete njegov preprethodni pregled.
Slika 316. Izgled dijaloga Report Wizard / Style
Svaki stil nudi drugačije pozadinsko sjenčenje, veličinu fonta i druge karakteristike formatiranja. Kako god se izabere opcija u desnom oknu, slika u oknu sa lijeve strane grafički pokazuje njeno djelovanje.
250
Kada ste zadovoljni s izborom, kliknite na dugme Next da pređete na posljednji ekran dijaloga čarobnjaka Report Wizard.
Slika 317. Posljednji korak čarobnjaka Report Wizard
U ovom okviru za dijalog upitani ste za dodjeljivanje naslova izvještaju. Ostaje da na pitanje “What title do you want for your report?” (Koji je naziv izvještaja?), u adekvatno polje ukucate željeni naslov izvještaja. Naslov se prikazuje u izvještaju samo jednom, a ne na početku svake strane. Čarobnjak sam nudi ime izvještaja, ali ponuđeni naslov može da se promijeni. -
Zatim se bira jedna od opcija u donjem dijelu okvira za dijalog: Preview the report - Prelazak u režim Print Preview iz koga se izvještaj može pregledati i štampati. Modify the report's design - Prelazak u režim Design View u kome uz pomoć Report Writer-a može da se mijenja struktura izvještaja.
Zatim, kliknite na dugme Finish da bi čarobnjak završio posao i da biste vidjeli izvještaj u prozoru Print Preview (slika 318).
Slika 318. Konačni izgled izvještaja dobiven pomoću Report Wizarda
Nakon što ste izvještaj pregledali, zatvorite ga, jer ćete moći ponovo da mu pristupite u sekciji Report glavnog prozora aplikacije Access.
251
Vježba 13: Kreiranje izvještaja pomoću čarobnjaka Prije kreiranja izvještaja morate se odlučiti po kojim poljima želite da su vam podaci sortirani. Jednom kad je izvještaj kreiran, ne može biti promijenjen. U tom slučaju morate kreirati novi. Napravite Access bazu podataka koja se sastoji od tabela Contact Types, Contacts, Calls i Reports sa slijedećim izgledom tabela, njihovim sadržajem i relacijama među tabelama:
Tabele su povezane slijedećim relacijama (jedan prema više):
252
1. U meniju Objects, odaberite Reports, zatim dvostruko kliknite na Create report by using wizard.
2. U meniju Tables/Queries, odaberite tabelu Contacts. 3. U meniju Available Fields, odaberite polja (odaberite minimalno dva) koja želite da prikažete u svom izvještaju. Kliknite na polje i kliknite na dugme da bi prenijeli odabrano u okvir Selected Fields. 4. Kliknite na Next kad završite.
253
5. U slijedećem Report Wizard prozoru (Do you want to add any grouping levels?/ Da li želite dodati nivo grupisanja u izvještaju?), kliknite na dugme Next (to znači da ne želimo grupisanje podataka).
6. U prozoru Report Wizard (What sort order do you want for your records?/Kako želite da se sortiraju vaši slogovi? ), u prvo polje sekcije ‘You can sort records by up to four fields, in either ascending or descending order’/‘Svoje zapise možete sortirati uzlazno i silazno najviše po 4 polja ’, odaberite polja po kojima želite da se sortiraju slogovi. 7. Kliknite na dugme Next.
8. U slijedećem prozoru Report Wizard (How would you like to lay out your report?/Kako biste željeli da izgleda vaš izvještaj?), u grupi opcija Layout, odaberite Tabular, a u grupi opcija Orientation, odaberite Landscape. 9. Kliknite na dugme Next.
254
10. U slijedećem prozoru Report Wizard (What style would you like?/Koji stil želite upotrebiti), odaberite stil. 11. Kliknite na dugme Next.
12. U slijedećem prozoru Report Wizard, u meniju What title do you want for your report?/Koji naslov želite za svoj izvještaj?, napišite naslov izvještaja ili ostavite ponuđeni, ako ste njime zadovoljni. 13. U meniju Do you want to preview the report or modify the report’s design?/Da li želite prethodno da vidite izgled izvještaja ili da mijenjate dizajn izvještaja, izaberite Preview the report.
255
14. Kliknite Finish. Dobili ste izvještaj kakav ste kreirali. 15. Izaberite dugme View da još u dizajnerskom prikazu vidite šta se iz gornjeg izvještaja nalazi u pojedinim njegovim sekcijama:
Koristimo priliku da na konkretnom primjeru još jednom podsjetimo na tipično raspoređivanje objekata po pojedinim sekcijama izvještaja. Sa gornje slike se vidi da je naziv izvještaja smješten u zaglavlju izvještaja (Report Header), a znate da će se on štampati samo jednom, i to na prvoj stranici izvještaja. U ovaj dio izvještaja smještaju se još ostali naslovi, datumi, logoi i linije. U sekciji zaglavlje strane (Page Header) smještaju se objekti koji se štampaju na vrhu svake strane izvještaja. Općenito tu se smještaju zaglavlja kolona (labele) i linije. Polja sa podacima i razna izračunavanja se obično smještaju u sekciju detalja (Detail). Access će izlistati maksimalan broj redova sa podacima koji može da stane na svaku stranicu. Razmakom između trake Detail i trake Page Footer podešava se razmak između linija (line spacing) koje se pojavljuju u sekciji Detail. Da biste promijenili razmak između redova (line spacing), kliknite na traku Page Footer i vucite je i otpuštajte pomjeranjem prema gore ili dole. Ako hoćete da smanjite razmak između linija koje se ispisuju na izvještaju, privucite traku Page Footer bliže traci Detail, a ako hoćete da povećate razmak, odvucite traku Page Footer dalje od trake Detail. Objekti smješteni u sekciji podnožja strane (Page Footer) će se štampati na dnu svake strane izvještaja. Ovdje se obično smještaju brojevi strana i imena fajlova i u nju se ne mogu smještati nikakva izračunavanja. Na slici gore se ne vidi sekcija podnožja izvještaja (Report Footer). U ovu sekciju se smještaju objekti koji se štampaju samo jednom i to na dnu poslednje stranice izvještaja. Ovdje se obično smještaju izračunavanja, kao što su ukupni zbir (grand total) neke serije podataka, a toga u ovom primjeru izvještaja nije bilo.
256
17.8 Automatsko kreiranje izvještaja tipa Columnar Otvorite prozor baze podataka i na paleti Objects izaberite opciju Reports. Zatim, Kliknite na dugme New da otvorite okvir dijaloga New Reports.
Slika 319. Dva načina pokretanja kreiranja novog izvještaja
Na ekranu će se prikazati prvi okvir za dijalog na kojem treba da selektujete opciju AutoReport: Columnar, a zatim i tabelu ili upit koji ćete koristiti u izvještaju (u ovom primjeru selektovana je tabela Posao) i kliknite na dugme OK:
Slika 320.
Access će na osnovu podataka iz tabele Posao kreirati izvještaj koji ima standardni izgled:
257
Slika 321.
17.9 Automatsko kreiranje izvještaja tipa Tabular U izvještajima tipa Tabular svi slogovi se prikazuju u obliku tabele. Za automatsko kreiranje jednostavnog izvještaja ovog tipa takođe se može koristiti redoslijed prvih nekoliko komandi iz postupka kreiranja prethodnog tipa izvještaja: U popisu objekata Object → kliknuti na Report → pa na liniji alata u prozoru baze podataka kliknuti na alat New → i u listi opcija izabrati AutoReport: Tabular. Sa padajuće liste objekata potencijalnih izvora podataka za izvještaj izaberite tabelu (ili neki upit) i kliknite na OK.
Slika 322.
258
Sačekajte dok Access kreira AutoReport i ispiše ga na ekran.
Slika 323.
Primijetite da je automatski napravljen izvještaj sličan onom koji koristi opcija Print Preview u Word-u ili Excel-u, izuzev što ovdje za prikaz naredne ili prethodne strane morate da koristite alat (dugmad) za navigaciju. Kada pokušate da zatvorite izvještaj klikom na dugme vam ponuditi da ga sačuvate.
, Access će
Slika 323.
trebati.
Kliknite na dugme Yes da sačuvate izvještaj koji će vam kasnije
17.10 Ugradnja podizvještaja u glavni izvještaj Podizvještaj je koristan za prikaz zbirnih vrijednosti ili podataka iz tabele koja je relacijom povezana s tabelom ili upitom na osnovu kojih je kreiran glavni izvještaj. Postupak ugradnje podizvještaja gotovo je identičan ugradnji podobrasca, o kojem smo već ranije govorili. Na osnovu tabele čije podatke želite prikazati u podizvještaju, kreirajte poseban izvještaj koji će vam poslužiti kao podizvještaj. Podizvještaj može biti neki drugi izvještaj, obrazac, tabela ili upit. Povećajte (proširite ili produžite) dimenzije područja glavnog izvještaja tako da u njega može da stane podizvještaj Imamo dva načina ugradnje podizvještaja u glavni izvještaj: 1.Način: Na paleti alata Toolbox odaberite alat Subform/Subreport na željenom mjestu unutar izvještaja.
i razvucite ga
259
Za svojstvo Source Object stavite ime izvještaja koje ćete prikazati kao podizvještaj, a za osobine (properties) Link Child Fields i Link Master Fields upišite kolone na osnovu kojih se ostvaruje veza između izvještaja i podizvještaja. 2.Način: Otvorite glavni izvještaj i prozor baze da budu jedan kraj drugoga. Odvucite podizvještaj na glavni izvještaj, te potvrdite vezu. Svojstvima Link Child Fields i Link Master Fields pridružite odgovarajuće podatke.
Vježba 14: Kreiranje izvještaja s podizvještajem Na raspolaganju imate dvije tabele: Kategotije i Proizvodi.
Kreirajte izvještaj sa osnovnim podacima o proizvodima po kategorijama kao podizvještajem. Povežite ga sa osnovnim (glavnim) obrascem, odnosno na osnovnom (glavnom) obrascu napravite dugme koje poziva kreirani izvještaj.
260
Rješenje: Kreiraćemo dva izvještaja, jedan kojeg ćemo nazvati Proizvodi, a kojeg ćemo kreirati čarobnjakom na bazi podataka iz tabele Proizvodi, i drugi, kojeg ćemo zvati Kategorije, i kreiraćemo ga takođe čarobnjakom, a na bazi podataka iz tabele Kategorije. Zatim ćemo o izvještaj Kategorije proglasiti glavnim, a izvještaj Proizvodi ćemo umetnuti kao podizvještaj u sekciju Detail u glavni izvještaj.
261
262
17.11 Pregledavanje, štampanje i eksportovanje izvještaja Kada se završi proces kreiranja izvještaja, jedino što preostaje jeste njegovo prethodno pregledavanje prije štampanja, njegovo štampanje, eksportovanje iz Access-a u neku drugu aplikaciju ili čuvanje na nekom mediju. To se može se izvršiti na slijedeće načine:
17.11.1 Pregledanje izvještaja prije štampanja-Print Preview
-
Da biste prethodno mogli da pregledate izvještaj: U prozoru baze podataka izaberite izvještaj koji želite da pregledate U meniju File izaberite opciju Print Preview ili koristite dugme Print Preview.
Kada se obrazac otvori u Print Preview, on se obično ispiše u 100% pogledu. Međutim, da biste dobili bolji uvid u različite karakteristike izvještaja možete da povećate njegov prozor. Na raspolaganju su vam alati na Print Preview traci u prozoru aplikacije (slika 324).
Slika 324. Traka alata Print Preview
U prikazu Print Preview, pokazivač miša je u obliku alata za zumiranje (Zoom), odnosno u obliku povećala, koji vam omogućuje da
263
povećate i smanjite prikaz. Za dodatnu promjenu veličine prikaza dokumenta možete da koristite i padajući meni (Resize drop down box), koji se takođe nalazi na traci sa alatima u prozoru aplikacije, kao na slici dole (slika 325):
Za ispis izvještaja odjednom na jednoj, dvije ili više strana, možete da koristite dugmad odgovarajućih alata: . Ako kliknete na dugme za izbor prikaza više strana otvoriće se lista za izbor broja stranica, kao na slici dole:
Kliknite na dugme prozora baze podataka da vam prozor aplikacije bude aktivan. Kliknite na dugme Officelinks i sa liste opcija izaberite „Publish it with Word“ ili „Analyze it with Excel“. Klikom na ove opcije omogučiće vam da dokument odštampate kao Word ili kao Excel dokument.
Za eventualnu pomoć kliknite na dugme upitnik (question mark). Klikom na dugme Close zatvarate izvještaj i vraćate se u prozor baze podataka.
17.11.2 Štampanje izvještaja -
-
Da biste mogli da odštampate izvještaj treba da: U prozoru baze podataka izaberite izvještaj koji želite da odštampate U meniju File izaberite opciju Print ili kliknete na dugme Print da biste odštampali jednu kopiju na posljednjem korištenom (setovanom) štampaču. Da odštampate izvještaj iz Print Preview: Kliknite na dugme Print na paleti alata Print Preview. Nakon toga neće vam se otvoriti okvir dijaloga Print nego će dokument odmah otići na štampu.
264
-
Da odštampate izvještaj korišćenjem linije menija ili palete alata: Izaberite File Print opciju na liniji menija da otvorite okvir dijaloga Print.
Slika 325 Izbor opcije Print u meniju File
-
Slika 326 Okvir dijaloga Print
Napravite neophodne promjene u sekcijama Print Range, Copies, ili Zoom u okviru dijaloga Print.
Kliknite na dugme OK da odštampate izvještaj.
17.11.3 Eksportovanje izvještaja Da biste izvještaj eksportovali u Word koristite Rich Text Format, tako da se on može eksportovati i u druge tekst procesorske programe. Rich Text Format znači da će se izgubiti linije i bordure. Zato koristite Word-ove alate za crtanje i formatiranje da ih formatirate i zamijenite.
17.11.4 Čuvanje izvještaja Struktura izvještaja može da se snimi na disk u svakom trenutku izborom opcija: File-Save, File-Save As File-Export Kada se izvještaj snima na disk po prvi put, javlja se okvir za dijalog u kome se zadaje ime izvještaja. Okvir za dijalog sam nudi ime koje čarobnjak podrazumijeva za izvještaje, a to je Report.
17.12 Modifikovanje izvještaja Da biste napravili izmjene na izvještaju potrebno je da pređete u Design View. Na Design prozoru selektujte tabulator Reports.
265
Selektujte izvještaj koji želite da modifikujete, a zatim kliknite na ikonu Design: . Izgled izvještaja u Design View-u je kao na slijedećoj slici:
Slika 327. Izgled izvještaja u dizajnerskom prikazu
17.12.1 Promjena dimenzija polja Možda želite da povećate dužinu polja tako da podaci u njima ne bude kao odsječeni. To možete da učinite tako da kliknete na polje (aktivirate ga) kojem želite da mijenjate dužinu (ili visinu) i zatim povlačenjem mišem za hvataljke mijenjate dimenzije polja.
17.12.2 Sortiranje podataka Kao što smo ranije naveli, neki izvještaj možete da ispišete sortirano po drugačijem redoslijedu i po drugom polju. Na primjer, gornji izvještaj (na slici 327) mogao bi biti sortiran po Opisu umjesto po Kategoriji. Da biste to učinili, otvorite gornji izvještaj u dizajnerskom prikazu, otidite na meni View i izaberite opciju Sorting and Grouping. To isto možete uraditi i klikom na njeno dugme na traci sa alatima, koje izgleda kao na slijedećoj slici: . Pojaviće se slijedeći prozor Sorting and Grouping:
Slika 328. Dijalog Sorting and Grouping
266
U ćeliji polja Field/Expresion uočite padajući meni u kojem možete da izaberete polje po kojem hoćete da tabela bude sortirana, a u ćeliji polja Sort Order iz padajućeg liste možete da izaberete redoslijed sortiranja (Ascending/Descending).
Slika 329. Padajuća lista izbora polja za grupisanje
Slika 330. Padajuća lista za izbor vrste sortiranja
Nakon izvršenih promjena zatvorite okvir dijaloga i pokrenite Print Preview ili Layout Preview opciju za pregled izvještaja izborom sa liste alata (u zavisnosti od toga u kojem pogledu ste prethodno bili):
Slika 331. Padajuća lista alata za izbor vrste prikaza izvještaja
Primjetićete da su efekti unešenih izmjena na dizajnu izvještaja u skladu sa vašim preferencijama (podaci su sada sortirani po polju Opis, uzlazno, jer smo to i željeli).
Slika 332. Izvještaj sa poljem Opis sortiranim uzlazno
267
17.12.3 Dodavanje ili brisanje polja Dok radite sa izvještajem u dizajnerskom prikazu možda imate potrebu da dodate neko polje u izvještaj koje u početku niste uključili, ili možda da obrišete neko polje i zamijenite ga tim novim. Da izvještaju dodate polje koje ranije niste uključili, postupite na slijedeći način: U meniju View izaberite opciju Field List To isto možete učiniti ako kliknete na ikonu Field List na traci sa alatima, koja ima slijedeći izgled: Pojaviće se prozor Field List koji u našem primjeru baze podataka ima izgled kao na slijedećoj slici:
Da biste polje dodali u dizajn izvještaja, kliknite na ime polja u prozoru Field List i prevucite ga u prozor izvještaja. Na mjestu gdje ste ga otpustili pojaviće se polje i njegova labela. U našem primjeru to je polje Kategorija_ID (slika 333).
Slika 333. Dizajnerski prikaz izvještaja
Slično kao i kod obrazaca, sada možete da mijenjate položaj polja i labela, mijenjate fontove i slično. Napravite željene izmjene. Da biste vidjeli kako izgleda modifikovani izvještaj kliknite na dugme alata Print Preview na traci alata u prozoru aplikacije.
17.12.4 Paleta alata Toolbox Paleta Toolbox sadrži alate (u obliku ikona objekata) za modifikovanje izvještaja, dodavanje novih polja, slika i drugih objekata na izvještaj. Standardni izgled Toolbox-a je kao na slici 334, a objašnjenje za svaki alat dato je ranije u poglavlju o obrascima:
268
Slika 334. Standardna traka sa alatima Toolbox i opcija njenog pozivanja iz menija View
Da biste ’uključili’ ili ‘isključili’ prikazivanje Toolbox-a na ekranu, kliknite na ikonu Toolbox , Ili u meniju View selektujte opciju Toolbox.
17.12.5 Dodavanje novog tekstualnog okvira (text box-a) u izvještaj Na paleti alata Toolbox izaberite ikonu Text Box-a:
.
Kliknite na mjesto u izvještaju gdje želite da bude novi Text Box. Ukoliko želite da promijenite sadržaj labele, kliknite brzo dva puta lijevim tasterom miša na labelu. Pozadina teksta u labeli će promijeniti boju, a zatim unesite tekst koji želite da sadrži labela. Ovako kreirano polje, logično, neće biti povezano (unbound) sa nekim poljem u tabeli ili upitu na osnovu kojeg se kreira izvještaj.
17.12.6 Poravnavanje objekata na izvještaju Pomoću dugmeta alata za poravnavanje (u lijevo, centar, u desno) možete da poravnate objekte u izvještaju. To se radi tako da se izvještaj aktivira u dizajnerskom prikazu, zatim kliknete na polje koje želite da formatirate i na paleti alata u prozoru aplikacije kliknete na odgovarajuće dugme za poravnavanje. Mi smo, na primjer, na izvještaju Posao centrirali i kolonu Sif_posao i kolonu Naziv_posla, kao što se vidi na slici 336. dole.
269
Slika 336. Izvještaj sa centriranim sadržajem kolona
Vježba 15: Kreiranje složenog izvještaja Funkcionisanje i mogućnosti izvještaja su slični kao i kod obrasca. Za razliku od obrasca izvještaj omogućava još dodatne kontrole ispisa, grupisanja i sortiranja podataka. Izvještaj je najpogodniji objekt u Accessu za ispis podataka na štampaču jer omogućava najveću fleksibilnost podataka na papiru. Jedna od većih prednosti je mogući izbor različitih načina ispisa polja, način ispisa polja koja ne sadrže nikakav podatak, stvaranje naljepnice za adrese na pismima (mailing labels), te kontinuiran prikaz podataka. -
Postupak izrada izvještaja ide ovim tokom: Kliknite na dugmad Reports i New u prozoru baze podataka U okviru za dijalog New Reports kliknite na opciju Report Wizard U prozoru Choose the Table or Query kliknite na strelicu padajuće liste i izaberite tabelu izvora podataka za izvještaj Kliknite na dugme OK.
270
-
U prvom koraku okvira za dijalog Reports Wizard kliknuti na znak >> i premjestite željena obilježja iz prozora Available Fields u prozor Selected Fields (Znak > omogućava premještanje jedno po jedno obilježje).
- Kliknuti na dugme Next
-
U lijevom prozoru (Do you want to add any grouping levels?) označite obilježje Datum by Month prema kojem će se grupisati podaci Kliknite na dugme Next.
U polju 1 za sortiranje na padajućoj listi označite obilježje Dobavljac. Ostavite dugme Ascending na istoj opciji (sortiranje A-->Z).
271
-
-
Kliknite na dugme Summary Options ... i čekirajte kolonu Sum da bi se u izvještaju ispisivao zbir za svaku grupu podataka (primici za mjesec). Kliknite na dugme Next.
U grupi opcija Layout (rasporedi ispisa podataka na izvještaju) izaberite opciju Block i ostavite izabranom orijentaciju ispisa na opciji Portrait.
272
-
Kliknite na dugme Next.
-
Označiti stil izvještaja Soft Gray. Kliknite na dugme Next.
U prozoru What title do you want for your report?, umjesto postojećeg naziva obrasca koji je unaprijed dodijeljen od strane čarobnjaka, upišite naziv „Primici po mjesecima“. -
Kliknite na dugme Finish.
273
Dobili smo izvještaj koji smo željeli, podaci su grupisani po mjesecima, izračunat je i ispisan Summary for „Datum by Month“, jer smo tako naložili u jednom koraku čarobnjaka, a grupe podataka su sortirane alfabetski od A do Z po obilježju Datum by Month.
18. Makroi (Macros) Da bi se pojedini zadaci u obradi podataka automatizovali, tj. da bi se odvijali bez intervencije čovjeka, koriste se makro naredbe, ili kraće-makroi (macros). Makro je lista aktivnosti koje se odvijaju kada se on startuje. Makroi nisu samo specifičnost Accessa, već je to opšte značenje ovog pojma i u ostalim programskim jezicima. Na primjer, možete imati makro koji, kada na obrascu kliknete na neko dugme, izvodi slijedeće aktivnosti: - memoriše slog podataka, - obavještava vas da treba da uložite papir u štampač, - filtrira slogove u izvještaju tako da se na njemu prikažu samo oni koji su ispisani i na obrascu, i - odštampa izvještaj. Većinom, makroi su kratke i jednostavne liste aktivnosti, kao u gornjem primjeru, a za kompleksnije programe koriste se VBA moduli (Modules), odnosno programi pisani u VBA (Visual Basic for Application) jeziku. Makroi se kreiraju pomoću liste aktivnosti nad objektima koje Access nudi (akcija je npr. zatvaranje nekog dijaloga ili prozora, izvršenje neke kontrole u obrascu ili izvještaju itd.). Da bi kreirali aplikacije pokretane događajima programeri sastavljaju čitav niz manjih programa-makroa, koje prikače na razne objekte aplikacije i za svaki objekt odrede događaj koji ih “okida” (najčešći događaj je klik miša). Na taj način izvršavanje aplikacije zavisi od toka izvršavanja manjih,
274
upravljivih i lako održavajućih programa, a ne o toku jednog velikog, nepreglednog i teško upravljivog programa. Kada pokrenete neki makro, Access izvršava sve naredbe tog makroa u redoslijedu u kojem su akcije navedene. Tako, na primjer, bez pisanja programskog kóda, možete definisati makroe koji automatski otvaraju obrasce za bazu podataka, štampaju naljepnice sa adresama, obrađuju narudžbenice i drugo. Oko pedesetak makro aktivnosti omogućuju: - rad sa podacima, - pravljenje menija i okvira za dijaloge, - otvaranje obrazaca i izvještaja, i - automatizaciju bilo kog posla. Pomoću makro naredbe, na primjer, moguće je sve objekte neke baze podataka spojiti u jednu zajedničku aplikaciju. Takođe, moguće je kontrolisati rad nad drugim objektima (otvaranje, zatvaranje objekata i dr.), a obrasce i izvještaje moguće je kontrolisati po dijelovima (sekcijama). Osnova programa pokretanih makroima je da se oni izvršavaju nakon interakcije korisnika sa interfejsom aplikacije - obrazaca, menija, kontrolnih dugmadi i drugo. S obzirom da događaji pridruženi objektima na obrascima praktično “okidaju” neku akciju, oni se nazivaju okidači (triggers). Da biste kreirali okidač morate si postaviti i odgovoriti na dva osnovna pitanja: 1) Šta (koja aktivnost) će se dogoditi? 2) Kada se to treba dogoditi?
Slika 337. Primjer programa pokretanog događajem (klik tasterom miša)
Makro je sačuvan u fajlu i može se, po želji, ponavljati više puta, a koristi se u slučajevima kada jednu ili nekoliko komandi (određenim redoslijedom) treba pozvati na više mjesta u aplikaciji Access-a (uglavnom iz obrasca). Riječ je o proceduralnom jeziku, kao što je i VBA, koji se sastoji od četrdesetak naredbi. Kao poseban dodatak jednostavnosti primjene makro naredbi razvijen je editor makroa (macro editor) koji pojednostavljuje specificiranje akcionih argumenata (Action Arguments). Prozor editora makroa prikazan je na slici dole:
275
Slika 338. Sadržaj (lista) komandi jednog makroa u prozoru editora
Kao što se na slici 338 vidi, u gornjem dijelu prozora editora makroa, u koloni Action, prikazuju se aktivnosti koje makro treba da izvodi, a u koloni Comment data je mogućnost da se svaka aktivnost dodatno objasni. U donjem dijelu editora makroa, u sekciji Action Arguments, se za svaku aktivnost posebno navode njeni specifični argumenti. Tako, za aktivnost MsgBox (prikaz poruke u okviru za poruku), kao što se sa slike 338 vidi, argumenti su: - Message – sadržaj poruke koja će se ispisati u okviru za tekst je „Operacija završena“ - Beep – Argument Yes je potvrda da se izvođenje ove aktivnosti poprati jednim zvučnim signalom, - Type – Argument izabranog tipa ikone tekstualnog okvira u kojoj će se poruka ispisati (moguće su opcije: None, Critical, Warning? i Information). - Title – Tekst koji će se ispisati u liniji za naslov (title bar) tekstualnog okvira.
18.1 Kreiranje i editovanje makroa -
Makro u Access-u se kreira na slijedeći način: u prozoru baze podataka, u oknu grupe objekata Objects, kliknete na Macros,
Slika 339. Pokretanje kreiranja makroa
276
-
a zatim, kliknete na dugme New, da biste otvorili prozor editora makroa Macro, u koji se unose aktivnosti koje čine makro, i argumenti, posebno za svaku aktivnost:
Slika 340. Prozor editora makroa
Slika 341. Primjer jednog makroa
-
-
-
U koloni Action kliknete na drop-down strelicu da biste otvorili listu sa mogućim akcijama, Sa padajuće liste izaberete akciju koju želite (pokazana strelicom u desno u gornjem dijelu prozora editora), nakon čega se u donjem dijelu prozora za svaku odabranu akciju otvara niz polja za izbor argumenata specifičnih za izabranu aktivnost. U koloni Comment u gornjem dijelu prozora editora upisaćete komentar na osnovu koga ćete u budućnosti lakše prepoznati o kakvoj akciji je riječ. Da biste dodali još akcija u makro, spustićete se u naredni red u koloni Action i ponoviti prethodni postupak. Napravljeni makro treba sačuvati pod imenom koje sami odredite. Kada pokrenete napravljeni makro on će sprovesti zadate akcije po redu koji ste listom aktivnosti u koloni Action odredili.
277
Slika 342. Primjer makroa za otvaranje izvještaja
Slika 343. Izvještaj otvoren makroom
18.2 Pokretanje makroa Makro se može pokrenuti direktno, ako kliknemo desnim tasterom miša na makro i iz brzog menija izaberemo opciju Run (kao na slici 344), ili
278
na liniji alata u prozoru baze kliknemo na dugme alata Run . Treći način direktnog pokretanja makroa je da dva puta kliknemo na ikonu konkretnog makroa u desnom oknu prozora baze podataka.
Slika 344. Brzi meni nakon desnog klika na ikonu makroa
Međutim, najčešći način pokretanja makroa je da se on dodijeli (prikači) nekom događaju na obrascu, na primjer događaju klik na komandno dugme, tako da navedete puno ime makroa u jednu od osobina tog komandnog dugmeta.
Vježba 19: Kreiranje makroa pokretanog klikom na dugme U ovoj vježbi kreiraćemo makro za realizaciju jedne bankovne transakcije. Prvo treba da definišemo okidač, tj. da odredimo (odgovorimo na pitanja) šta i kada će se dogoditi nakon pokretanja makroa. 1. 2.
U našem primjeru to bi bilo: Šta će se dogoditi? – Odradiće se jedna bankovna transakcija. Kada se treba dogoditi? - nakon klika na dugme Potvrdi transakciju na obrascu sa podacima o klijentu i transakciji.
Kada ste jednom odgovorili na prvo pitanje (šta će se dogoditi), trebate da kreirate makro koji će osigurati izvršavanje potrebnih koraka. Nakon toga rješavate drugo pitanje i kreiranu proceduru dodjeljujete određenom događaju na željenom objektu.
279
Na slici dole prikazan je obrazac s podobrascem za unošenje podataka o novom korisniku-komintentu banke i o samoj transakciji (obNoviKorisnik_Racun).
Slika 345. Obrazac s podobrascem
Kreiranje makroa pokazaćemo na slučaju potvrde prve transakcije Uplate/Isplate u aplikaciji Banka. Dakle, naš odgovor na prvo pitanje je - potvrda prve transakcije (koja može biti samo uplata), a na drugo - izvršava se nakon klika na dugme Potvrdi transakciju. To znači da na glavnom obrascu trebamo kreirati kontrolno dugme kojem ćemo “prikačiti” pripadni makro. U ovom primjeru ćemo, prvo, kreirati makro, a zatim ga povezati s događajem pripadnog objekta – kontrolno dugme na obrascu obNoviKorisnik_Racun. 1. Otvorite obrazac obNoviKorisnik_Racun u dizajnerskom prikazu (ili neki drugi obrazac koji imate sačuvan u nekoj bazi podataka na vašem računaru) i ostavite ga tako (slika 346).
280
Slika 346. Obrazac u dizajnerskom prikazu
2. U prozoru baze kliknite na objekt Macros - zatim na ikonu New na alatnoj traci baze. Otvoriće vam se editor za kreiranje makroa, kao na slici dole.
Slika 347. Padajući meni za izbor aktivnosti makroa
3. Iz padajućeg menija izaberite naredbu - u ovom slučaju SetValue 4. Pod Comment upišite “postavlja saldo na vrijednost prve uplate” 5. Trebate još definisati argumente te aktivnosti. Da biste ih ispravno definisali potrebno je samo slijediti upute koje se ispisuju u desnom
281
okviru od argumenta. Klikom na svaki argument u tom području prikažu se osnovne informacije o tom argumentu i načinu na koji se može popuniti njegova vrijednost. Neke argumente, kao što ćete vidjeti, biće lakše unijeti uz pomoć graditelja izraza (Expression Builder-a).
Slika 348. Postavljanje naredbi akcija i njihovih argumenata u editoru
Ukoliko vam upute nisu dovoljne, pritiskom na funkcijski taster F1 dobićete dodatnu pomoć u vezi vašeg problema. Međutim, ovdje je sve jasno - početni saldo (nalazi se na glavnom obrascu) koji je inicijalno postavljen na nulu, nakon izvršenja prve uplate, koja se upisuje u podobrascu, treba poprimiti upravo tu vrijednost. 6. Kliknite na dugme s tri tačkice (Build button) pored argumenta Item i otvoriće vam se graditelj izraza (Expression Builder). Sa izgledom i načinom korištenja graditelja izraza ste upoznati još ranije kada smo objašnjavali kreiranja izraza u izračunskim poljima upita, obrazaca i izvještaja.
Slika 349. Ekran gaditelja izraza
7. U graditelju izraza, s lijeve strane, dole, nalazi vam se popis objekata - napravite brzi dvoklik na Forms - pa na Loaded Forms kako bi pristupili trenutno otvorenim obrascima (All Forms vam daje pristup svim obrascima). 8. Dođite do obrasca obNoviKorisnik_Racuni i potom napravite brzi dvoklik na polje saldo u srednjem okviru - potvrdite sa OK. U oknu
282
gore-lijevo vidjećete i izraz koji ste tom prilikom kreirali. Na ovaj način ste osigurali da će se nova vrijednost (saldo) postavljati u to polje (obNoviKorisnik).
Slika 350. Izraz za izračunavanje salda urađen pomoću graditelja
9. Ponovite postupak i s poljem Expression, ali ovaj put dođite do podobrasca i izaberite polje uplata - u glavnom okviru Expression Buildera (slika 352) pisaće vam slijedeći izraz: Forms![obNoviKorisnik_Racun]![obPrvaTrans].Form![uplata] Izraz će takođe nakon potvrde biti upisan i u polje argumenta Expression u editoru makroa (slika 353).
Slika 351.
Slika 352.
Slika 353.
10. Potvrdite izbor i zatvorite graditelj izraza. Česta praksa je da se nakon nekakve naredbe ispiše potvrda o uspješnosti njezinog izvođenja - naredba MsgBox.
283
Slika 354.
11. Kliknite u editoru ispod naredbe SetValue i iz padajuće liste izaberite naredbu MsgBox 12. U njen komentar upišite ispisuje potvrdnu poruku o uspješno izvršenoj transakciji 13. Pod argument Message upisujete poruku koja će se prikazati korisniku – Transakcija izvršena!
Slika 355.
Slika 356.
14. Na kraju se stavlja naredba koja prekida izvršavanje makroa StopMacro Za ovu naredbu ne trebate definisati ni jedan argument, a takođe nema ni potrebe za dodatnim komentarom jer je komanda sama po sebi jasna.
Slika 357.
284
15. Sačuvajte (snimite) makro pod imenom macPrvaTrans. 16. Iako još nismo postavili kontrolu (dugme) na obrascu, možemo izvršiti provjeru funkcionisanja makroa. Na početku smo rekli da otvorite obrazac obNoviKorisnik_Racun u dizajnerskom prikazu. Da biste mogli izvršiti provjeru makroa, otvorite taj obrazac klikom na dugme Run i zatim startujte macPrvaTrans.
Slika 358.
Komande makroa izvršavaju se redom odozgo prema dole. Za snimljeni makro znamo što radi - postavlja saldo na vrijednost prve uplate, potom ispisuje poruku o izvršenoj transakciji i na kraju prekida izvršavanje samog makroa. 17. Sada je još je potrebno prikačiti taj makro na željeni objekt i definisati događaj koji ga okida. Makro ćemo pridružiti kontrolnom dugmetu, koje ćemo napraviti na obrascu obNoviKorisnik_Racun, a okidaće se na klik miša.
Slika 359.
Po poruci iz msgBox-a „Transakcija izvršena“ uvjeravamo se da makro radi korektno. 18. Obrazac obNoviKorisnik_Racun vam je još uvijek otvoren u pozadini - klikom na njega učinite ga aktivnim i stavite ga u dizajnerski prikaz (Design View). 19. Na paleti alata (toolbox-u) kliknite na ikonu za kreiranje kontrolnog dugmeta (označen na donjoj slici).
285
20. Ucrtajte dugme na željenom mjestu na obrascu 21. Zatvorite čarobnjaka koji vam se pojavi klikom na dugme Cancel 22. Desnim klikom (properties)
na
dugme
otvorite
njegov dijalog
osobina
23. U kartici Format pod Caption upišite Potvrda transakcije - ovim ste odredili tekst koji će biti ispisan na dugmetu 24. Prebacite se na karticu Event i izaberite događaj On click - iz padajuće liste izaberite prethodno kreirani makro macPrvaTrans
25. Zaključajte polje saldo da ga korisnik ne bi mogao mijenjati 26. Preko svojstava glavnog obrasca u kartici Data postavite Data Entry na Yes 27. Sačuvajte načinjene promjene 28. Zatvorite dijalog osobina i sačuvajte promjene načinjene na obrascu (CTRL + S).
286
Slika 360.
29. 30. Možete opet provjeriti da li dugme zaista vrši kontrolu događaja (event) na obrascu. Pokrenite obrazac i kliknite na dugme Potvrda transakcije. Trebali biste dobiti rezultat kao na gornjoj slici (slika 360).
18.3 Objašnjenje nekih makronaredbi i primjeri upotrebe Makroe možemo podijeliti na makronaredbe i makroprograme. Makroprogrami se sastoje od jedne ili više makronaredbi. Makronaredbe su gotove programske cjeline koje su pisane za Access aplikaciju. Makronaredbe se ne mogu mijenjati, ali se mogu koristiti kao samostalne naredbe ili ih se može povezivati u makroprogram. Tom programu dodjeljuje se određeni naziv i on se ponaša kao jedna makronaredba sastavljena od više manjih makronaredbi. U nastavku ćemo navesti i objasniti neke (od 56) makronaredbe u Accessu.
Makronaredbe za otvaranje i zatvaranje tabela, upita, obrazaca i izvještaja Zatvara neki objekt Otvara neki objekt OpenReport)
Close Open
(OpenTable,
OpenQuery,
OpenForm,
Makronaredbe za kontrolu toka programa RunCode RunMacro StopAllMacros StopMacro
izvršava VBA modul pokreće neki drugi makro. Nakon što se završi rad drugog makroa, kontrola se predaje narednoj naredbi u prvom makrou Završava rad svih trenutno aktivnih makroa Završava rad trenutno aktivnog makroa
287
Makronaredbe za pretraživanje podataka Apply Filter FindNext FindRecord GoToRecord
Filtrira prikaz podataka u tabeli, obrascu ili izvještaju Ponavlja poslednje izvršeno traženje Pronalazi slog koji odgovara uslovu koji se postavlja u okvir za unos Find kriterija Pomiče se na određeni slog i postavlja fokus na njega
Makronaredba za komunikaciju sa korisnikom Prikazuje određenu poruku koja je navedena u argumentu Message
MsgBox
Makronaredbe za kontrole prikaza i fokusa Echo Maximize Minimize Restore MoveSize
Omogućava zamrzavanje ekrana dok se izvršava makro Maksimizira odabrani prozor Minimizira odabrani prozor Vraća prvobitnu veličinu prozora Pomiče i mijenja veličinu prozora
Vježba 20. Kreiranje složenijih makroa U ovoj vježbi navešćemo dva primjera upotrebe i kreiranja makroa.
Primjer 1. Kreiraćemo makro za otvaranje tabele Dobavljac1, u bazi podataka db1-Licni budget, čiji je sadržaj prikazan na slici 361 dole.
Slika 361.
Postupak: 1. Kliknuti na opciju Macro i opciju New
288
2. U editoru makroa, u koloni Action, kliknuti na trokutić i u padajućem meniju makro naredbi označiti OpenTable
3. U donjem dijelu okvira, u prozoru Table Name, kliknuti na strelicu i označiti tabelu Dobavljac1.
4. Sačuvati makro i u prozor Macro Name okvira dijaloga Save As upisati naziv Otvaranje
Pokretanjem makroa na jedan od tri već opisana načina njihovog direktnog pokretanja, otvara se tabela prikazana na slici 361.
Primjer2 U ovom primjeru kreiraćemo makroprogram kao skup međusobno povezanih makroa i pokazati upotrebu makronaredbe ApplyFilter za pretraživanje poslovnih partnera-dobavljača. Treba filtrirati poslovne parnere u tabeli Uplatioci (sliku 362) koji su uplatili iznos veći od 5000 ili koji se bave djelatnošću koju je upisao korisnik.
289
Slika 362. Sadržaj podataka u tabeli Uplatioci
Postupak: 1. Kliknuti na opciju Macro i opciju New 2. U editoru makroa, u koloni Action, kliknuti na strelicu i u padajućem meniju makro naredbi označiti OpenTable 3. U donjem dijelu okvira u prozoru Table Name kliknuti na strelicu i označiti tabelu Uplatioci. 4. U drugom redu kolone Action kliknuti na makronaredbu Apply Filter 5. Kliknite u prozor Where Condition na dugme (Build button). 6. Dva puta kliknite na Tables 7. Kliknite na tabelu Uplatioci 8. Dva puta kliknite na obilježje Iznos_uplata 9. Kliknite na dugme (matematički operator) > 10. Upišite 5000 11. Kliknite na dugme Or (logički operator) 12. Kliknite dva puta na obilježje Djelatnost 13. Kliknite na dugme Like (matematički operator za tekstualna obilježja) 14. Otvorite uglatu zagradu upisom znaka [ 15. Upišite tekst unutar uglate zagrade Upiši djelatnost 16. Zatvorite uglatu zagradu upisom znaka ] U izrazu je upisano: [Table]![Uplatioci]![Iznos_uplata]>5000 [Table]![Uplatioci]![Djelatnost]; =[Upiši djelatnost]
Or
Napomena: Znak tačka-zapeta “;” gore označava da se izraz nastavlja, odnosno da je u istoj programskoj liniji.
290
16. Sačuvajte makro pod imenom MacFilter. 17. Pokrenite makro i u polje Upiši djelatnost dijaloga Enter Parameter Value unesite Prosvjeta.
18. Dobićete tabelu (slika 383) samo sa onim slogovima koji zadovoljavaju uslov filtera, tj. kod kojih je: ili je uplata veća od “5000” ili je djelatnost uplatioca “Prosvjeta”.
Slika 383. Sadržaj tabele nakon pokretanja makroa za filtriranje
291
19. Moduli Modul7 (Module) je datoteka koja sadrži kôd ili dijelove kôda koji pripadaju ili nekom obrascu (ili izvještaju), ili se jednostavno posmatra kao nezavisna jedinica kôda. Ovo „nezavisna“ znači da jedinica kôda može da ne pripada ni jednom određenom obrascu (ili izvještaju). Svaki obrazac (ili izvještaj) ima poseban modul. Da biste pristupili modulu obrasca (ili izvještaja), otvorite objekat u dizajnerskom prikazu i kliknite na dugme Code . Ako inicirate kodiranje nekog događaja koji se nalazi na obrascu (ili izvještaju), to će otvoriti prozor editora kôda i ispisati modul koji pripada tom obrascu (ili izvještaju). Ako kôd za taj obrazac (ili izvještaj) nije napisan, njegov modul će biti prazan.
Slika 384. Prozor kôda obrasca Form1
Ako ste pisali događaje za obrazac (ili izvještaj), ili za kontrole koje pripadaju obrascu (ili izvještaju), svi ti događaji bili bi dio modula tog obrasca (ili izvještaja). Osim modula koji pripadaju obrascima (ili izvještajima), možete da kreirate i svoj vlastiti modul koji nije vezan ni za jedan određeni obrazac (ili izvještaj). Ti moduli nazivaju se nezavisni ili standardni moduli. Modul u Accessu je objekat koji sadrži korisničke procedure pisane pomoću programskog jezika VBA (Visual Basic for Application). Modul je jedan od dva način za programiranje baze podataka pisanjem programa. Drugi način je, kao što smo ranije kazali, pisanje makro programa-makroa. Pomoću VBA se može napisati ozbiljan program koji nadmašuje jednostavne makroe sa tastature i integriše se sa drugim sistemima, kao što
Modul (Module) je opšti izraz za datoteku koja sadrži neki kod ili informaciju koju dodajete vašem projektu. Obično, modul sadrži programski kod koji vi pišete. U VB 6, moduli imaju ekstenziju imena fajla .bas a postoje čak tri vrste modula: obrasca (form), standardni (standard) i klase (class). U VB.NET, moduli obično imaju ekstenziju .vb, ali su moguće i druge, kao: .xsd za dataset modul, .xml za neki XML modul, .htm za web page, .txt za tekstualnu datoteku, .xslt za neki XSLT fajl, .css za Style Sheet, .rpt za Crystal Report, i drugi. 7
292
su baza podataka, web ili druge softverske aplikacije. Pored Accessa, on je integrisan i u ostale Microsoftove Office aplikacije: Word for Windows, Excel i PowerPoint.
Slika 385. Izgled komandi (statements) jednog modula u VBA editoru
Nezavisni modul pretstavlja kolekciju procedura, tipa Sub, i funkcija, tipa Function, koje nisu napisane za neke konkretne obrasce ili izvještaje nego se mogu koristiti u svim obrascima i izvještajima. Akcije. I makroi se mogu ugraditi u module. Kao što je poznato, makroi su sastavljeni od linija dogovorene konstrukcije sa pozivima pomoćnih procedura iz alata Accessa. Dijelovi makroa mogu se smatrati kao niz pomoćnih procedura koje su ugrađene u MS Access. Pomoćni programi u Access-u nazivaju se akcije (Actions). To su unaprijed definisane komande koje se mogu pozivati ili iz procedura Access Basic programa, ili kao niz naredbi koji se izvršava prilikom aktiviranja nekog aktivnog objekta ili događaja na objektu. Izbor ovih procedura je ograničen i uglavnom je vezan za rad na objektima tipa obrasca, izvještaja, kontrola ili upita. Akcija se mogu pozivati iz makroa kao izvršne linije nekog makroa sa nizom argumenata. Akcija se ne može prekinuti. Mnoge akcije se mogu pozivati iz Access Basic programa pod istim nazivom kao u makroima. Za poziv akcije iz Access Basic programa koristi se komanda DoCmd, iza koje slijedi naziv akcije i niz argumenata te akcije. VBA programski jezik (Visual Basic for Applications) ugrađen je unutar svake baze podataka u Accessu i njegov kôd može da se koristi kad god vam treba da: - kreirate novu funkciju - kreirate novi podprogram (sabrutinu) - definišete globalnu (public) varijablu - umetnete kôd procedure iza nekog događaja, kao što je događaj "On Click" za komandno dugme - se izvodi akcija RunCode u podprogramu. Za razliku od programa pisanog u Visual Basicu, VBA program ne može samostalno da se izvodi bez prisustva aplikacije u koju je ugrađen. Jer, kao što znamo, VBA kôd uvijek je povezan sa nekim objektom ili nekom
293
kontrolom, a oni se, na primjer u Wordu, nalaze u dokumentu (fajl tipa .doc), u Excelu se nalaze u radnoj knjizi (fajlu tipa .xls), a u Accessu se nalaze u bazi podataka (fajlu tipa .mdb). Tako, možemo reći da je VBA kôd sadržan u fajlu (dokumentu) tipa .doc, u Excelu sadržan je u fajlu (radnoj knjizi) tipa .xls, u Accessu u fajlu (bazi podataka) tipa .mdb, a u samostalnoj Visual Basic aplikaciji (standardni modul) sadržan je na nekoj formi (obrascu), tj. u fajlu tipa .bas. VB aplikacija čuva se (memoriše) u tri fajla i kada hoćete da je sačuvate, trebate da ih sačuvate sva tri u istom direktoriju. To su: fajl obrasca, tipa .frm, fajl programskog modula, tipa .bas, i fajl projekta, tipa .vbp. VBA programski jezik koristi se da se proširi funkcionalnost Accessa i čvrsto je povezan sa Windowsom. On ima potpuni pristup sistemskim datotekama Windowsa, pa možete kreirati i brisati datoteke i pretraživati foldere. Na taj način programeru je dostupan cio Windows-ov programski interfejs, tako da programi mogu biti prilagođeni onoliko koliko to želi programer baze podataka.
19.1 Vrste modula Kao i većina sistema za upravljanje relacionim bazama podataka (DBMS) i Access sadrži programski jezik za rad sa svojim bazama. To je program Access Basic koji je sličan programskom jeziku Visual Basic. Programi pisani u Access Basic programskom jeziku zovu se procedure. Više procedura može da se objedini u jedinstveni objekat koji se zove modul. Sve procedure koje se napišu unutar jedne baze podataka mogu biti sadržane samo u jednom modulu, ali ih se može razdijeliti i u više modula. Baza podataka može sadržavati više vrsta modula. Unutar svake baze podataka Access smješta kôd na dva mjesta i to u: module klase (class modules) i standardne module (standard modules). Moduli klase8 (datoteke s nastavkom .cls) su programske cjeline čiji se kôd nalazi iza obrazaca (Code-Behind Forms) ili izvještaja. Moduli klase slični su modulima obrasca, osim što nemaju vidljiv korisnički interfejs. Module klase možete iskoristiti za stvaranje vlastitih objekata, uključujući programski kôd za postupke i osobine.
8 U objektno orijentisanom programiranju objekti su instance klasa. Kao programer vi definišete klasu sa poljima podataka (data fields), osobinama (properties), metodama (methods) i događajima (events). Zatim, kreirate objekte na bazi toga što klasa ima stanje (polja, osobine) i ponašanje (metode, događaje). Posmatrajmo klasu Form kao primjer. Klasa Form definiše podatke i osobine (na primjer, Width) prozora koji će biti ispisan u aplikaciji Windowsa. Klasa Form takođe definiše ponašanje, kao što je metoda Show koja ispisuje obrazac. Sama klasa Form nije instanca obrasca. Klasa definiše kako objekat Form izgleda i šta on može da radi. Neki konkretni objekat Form bio bi niz bajtova u određenoj memorijskoj lokaciji u memoriji (memory heap). Instanca (Instance) je riječ koja se sreće u objašnjenjima objektno orijentisanog programiranja. Ona se odnosi na kopiju nekog objekta koji je kreiran da je koristi konkretan program. U VB 6, na primjer, iskaz CreateObject(imeobjekta) kreiraće neku instancu klase (tip objekta). U VB 6 i VB .NET, ključna riječ New u deklaraciji kreira neku instancu nekog objekta. Firma Microsoft-a, pojam objekat (object) definiše kao: „softverska komponenta koja izlaže svoje osobine i metode“.
294
Modul klase koristi se kod stvaranja objekata koji mogu biti pozivani od potprograma unutar vaše aplikacije. Dok standardni modul sadrži samo programski kôd, modul klase sadrži i kôd i podatke - možete ga shvatiti kao kontrolu koja nema vidljivi dio. Moduli obrasca (maske za unos podataka) su u osnovi isti kao samostalni moduli, a razlikuju se po tome što ih nije potrebno imenovati, već se pridružuju obrascu. Moduli koji nastaju na ovakav način dio su obrasca i koriste podatke koji se unose u obrasce. Obrazac (forma) pri tome funkcioniše kao korisnički interfejs. Svaki obrazac ili izvještaj koji kreirate automatski sadrži i modul klase, kao što je to ilustrovano na narednoj slici.
Slika 386. Obrazac i kôd pridruženog modula klase
Modul klase za dati obrazac (ili izvještaj) je prazan sve dok ne postavite kontrole koje zahtijevaju VBA kôd na tom obrascu (ili izvještaju). Ako želite da pregledate ili promijenite kôd modula klase nekog obrasca (ili nekog izvještaja), prvo trebate da ih otvoriti u dizajnerskom prikazu9, a zatim kliknete na dugme Code . Do liste sa modulima klasa, takođe, možete doći ako u dizajnerskom prikazu objekta, iz brzog menija (zove se još i „kontekstni“ meni), koji se pojavljuje nakon desnog klika mišem na objekat, izaberete opciju Properties, a zatim izaberete tabulator Event i potom kliknete na taster sa tri tačkice, koji se nalazi desno od strelice padajuće liste . Globalni ili standardni moduli (datoteke s ekstenzijom .bas) su samostalni objekti koji sadrže procedure iz bilo kojeg dijela aplikacije i nalaze
9
Dizajnerski prikaz (prikaz dizajna). To je prozor koji prikazuje dizajn slijedećih objekata baze podataka: tabela, upita, obrazaca, izvještaja, makroa i stranica za pristup podacima. U dizajnerskom prikazu možete da kreirate nove objekte baze podataka i mijenjate dizajn postojećih.
295
se u mapi modula na osnovnom prozoru baze podataka. Globalni (standardni, nezavisni) modul je zasebni dio programa u VBA kôdu, u kojem se nalaze globalne, odnosno javne varijable (public), i procedure tipa funkcije (function) i tipa podprograma (sub), koje mogu da se koriste u bilo kom dijelu programa baze podataka i nisu pridruženi nekom obrascu (form) ili izvještaju (report). Za razliku od modula klase, globalni moduli nemaju objekte ni osobine, nego samo programski kôd koji može da se prikaže i uređuje u prozoru Code Window u editoru VBA. Kôd u globalnim modulima je javan (public), tj. dostupan je svim objektima baze podataka, a ne samo (private) nekom obrascu ili izvještaju.
Slika 387. Prozor osobina za objekat Text Box
Lista osobina Properties omogućuje da se krećete (zumirate) po kôdu u Visual Basicu koji je pridružen datoj kontroli iz palete alata Toolbox-a (dugmetu, combo box-u, text box-u, listi, itd.). Na primjer, neke kontrole sadrže kôd koji je kreiran pomoću čarobnjaka. Kada kliknete na takvu kontrolu, a zatim na tabulator Event, u listi Properties, izaberete vrijednost osobine [Event Procedure]10. Kada kliknete na [Event Procedure] vidjećete (elipsasto) dugme sa tri tačkice . To je dugme za pokretanje graditelja kôda (Code Builder-a). Kliknite na njega da vidite kôd koji se izvodi kao odgovor na događaj koji ga pokreće.
19.2 Pisanje korisničkog kôda Da biste napisali korisnički kôd, izaberite u dizajnerskom prikazu kontrolu za koju želite da napišete kôd. Zatim, kliknite na događaj kojem želite da pridružite korisnički kôd, kliknite na dugme Build, nakon čega će se pojaviti dijalog graditelja kôda (slika 388). Opcije koje nudi dijalog Choose Builder su:
10
Event Procedure-U VB programu to je blok kôda koji se poziva kada se manipuliše nekim objektom. Manipulaciju može da učini korisnik programa preko grafičkog korisničkog interfejsa (GUI-a), pomoću programa, ili nekim drugim procesom, kao što je isticanje nekog vremenskog intervala. Na primjer, objekat Form uglavnom ima događaj Click. Događaj Click Event Procedure za obrazac Form1 bio bi naveden imenom: Form1_Click().
296
-
Expression Builder, za izbor i specificiranje korisnički definisane funkcije za event osobinu. Macro Builder, za kreiranje i specificiranje makroa za određenu osobinu (obilježje). Ovdje se Macro Builder može koristiti i za korigovanje makroa koji je već specificiran osobinom. Code Builder, za kreiranje i specificiranje događajnih procedura za tu event osobinu. Graditelj kôda može se takođe koristiti za korigovanje procedure koja je već specificirana u osobini.
U okviru za dijalog Choose Builder koji se pojavi izaberite Code Builder, ili na liniji alata u prozoru Accessa izaberite alat Build , i u okviru za dijalog Choose Builder izaberite opciju Code Builder.
Slika 388. Okvir dijaloga za izbor graditelja kôda
Nakon toga će vam se otvoriti prozor Visual Basic Editor-a, gdje ćete vidjeti modul, odnosno njegov kôd. Objekti, kao što su obrasci i izvještaji, i kontrole, kao što su komandna dugmad i okviri za tekst (Text Box), imaju različite osobine događaja (properties) kojima možete da dodijelite makroe ili procedure. Svaka osobina događaja u vezi je sa određenim događajem (event), kao što je pritisak tastera miša, otvaranje obrasca ili mijenjanje podataka u okviru za tekst. Događaje takođe mogu da pokrenu i faktori izvan programa Access, kao što su sistemski događaji, makroi ili procedure koji su dodijeljeni drugim događajima. Mada se korišćenje event procedura preporučuje kao metoda za izvršavanje Access Basic kôda, u odgovarajućim događajima u obrascima ili kontrolama mogu se upotrebiti i korisnički definisane funkcije. Za izvršenje korisnički definisane funkcije stavi se znak jednako (=) prije naziva funkcije i zagrade poslije naziva funkcije, na primjer: =imefunkcije(). Procedura je jedinica VB kôda koja sadrži niz iskaza i metoda koji izvršavaju operaciju ili izračunavaju vrijednost. U modulu mogu da postoje dvije vrste procedura: Function i Sub. Procedura tipa Function vraća neku vrijednost i poziva se iz izraza. Njene obavezne komande su Function - End Function. Procedura tipa Sub izvršava operaciju i ne vraća vrijednost. Njene obavezne komande su Sub - End Sub
297
19.3 Izgled i sastav modula Svaki modul sastoji se od deklaracione sekcije i korisničkih funkcija (slika 389). Editor VBA programskog kôda podsjeća na već postojeće editore poznatih programskih jezika, kao što je Microsoft Visual C++ ili Microsoft Visual Basic. Na primjer, kada se kursor nalazi iznad varijable u debug modu, u „lebdećem tekstu“ pojavljuje se poruka o trenutnoj vrijednosti varijable, zatim prilikom kucanja standardnih naredbi otvara se Combo Box u kome se može izabrati naredba bez daljnjeg kucanja, itd. Ispod linije alata modula na slici 389 vide se dva odjeljka: Object i Procedure, s padajućim listama. U padajućoj listi vidi se da je otvoren odjeljak opštih deklaracija modula [General] (engl. general declarations). To je znak da je ovdje riječ o standardnom modulu, tj. da varijable i procedure koje su ovdje deklarisane mogu da se koriste u cijelom programu. Kada bismo sada pogledali u prozor pretraživača projekta (Project Explorer Window) vidjeli bismo da se ovaj modul (u ovom primjeru pod imenom: Module) nalazi na listi projekata (u ovom primjeru pod imenom: Global Code).
Slika 389. Prozor editora programskog kôda (modula)
Moduli sadrže funkcije, potprograme ili pojedinačne instrukcije napisane u Access Basicu, programskom jeziku za programiranje unutar Accessa. VBA je podskup Microsoft Visual Basic-a veoma popularnog programskog jezika. Po svojoj sintaksi VBA programski jezik je vrlo sličan Visual Basic-u, ali podržava i neke posebne mogućnosti, kao što su rad sa objektima - od kreiranja i promjene do brisanja pojedinog objekta, a preko njega se obavlja i razmjena podataka s drugim aplikacijama (DDE - Dynamic Data Exchange). Access Basic, naime, predvidio je niz komandi i funkcija za povezivanje sa aplikacijama u Windows okruženju. Dinamički način razmjene podataka smatra se standardom za razmjenu podataka i zahtjeva
298
između dvije aplikacije. U okviru DDE razmjene podataka aplikacija koja započinje konverziju je klijent, a aplikacija koja odgovara na zahtjeve korisnika je server.
19.4 Osnova koncepta VBA "Softverski objekti" i "objekti" u svakodnevnom životu su prilično slični. U stvari, najveća razlika je ta što ne morate da pišete detaljne i ispravne programske naredbe da biste koristili objekte u svakodnevnom životu. Opis objekta u Opis objekta u računarstvu Opis objekta u programiranju realnom svijetu Šta je to Stanje (state) Osobine (properties) Šta ono radi Ponašanje (behavior) Metode (methods) Da malo pojasnimo ovu tabelu gore. Uzmimo neki objekat iz realnog svijeta-vaš računar, knjiga, vaš pas, odjeća koju nosite, TV, bilo šta, i da to možete opisati na slijedeći način: - Šta je to - Šta ono radi; -
Kompjuterski stručnjaci to zovu: Stanje (state) Ponašanje (behavior)
-
U Visual Basic-u i ostalim jezicima to se zove: Osobine (properties) Metode (methods).
Mnogi komjuterski stručnjaci se možda i neće potpuno složiti da su te stvari baš egzaktno takve, ali one su dovoljno bliske da vam pomognu da razumijete osnovni koncept VBA. U Wordu, u kojem se, kao i u Access-u, Excel-u, Power Point-u i još nekim drugim aplikacijama iz MS Office-a, koristi VBA, na primjer, linija menija je jedan objekat. Zaglavlje (header) i podnožje (footer) stranice (teksta) su takođe objekti. Čitav dokumenat, pojedine stranice, paragraf, rečenica i pojedini znak su takođe objekti. Svi ti objekti imaju svoje osobine (Properties). Sve te osobine su ili 'true' ili 'false'. Na primjer, izabrani tekst može imati osobinu 'bold' podešenu na 'true'. Neke od tih osobina mogu imati numeričku vrijednost (number). Na primjer, izabrani tekst može imati osobinu 'size' postavljenu na '32'. Neke od tih osobina mogu imati tekstualnu vrijednost (text). Na primjer, izabrani tekst može imati osobinu 'color' podešenu na 'wdRed'. Svi ti objekti mogu reagovati na događaje (Events). Korišćenjem miša ili tastature korisnik inicira neki događaj. Na primjer, klikom na opciju menija 'Font Size' na glavnoj liniji alata iniciraće događaj da se ispiše padajući menij u okviru za izbor veličine fonta (Font Size).
299
Suština VBA je u tome da on kontroliše ovu interakciju između objekata i njihovih osobina odgovorom na događaj koje je korisnik inicirao. Na slici dole (slika 390) prikazan je princip funkcionisanja VBA.
Slika 390. Osnova koncepta VBA
U terminologiji Visual Basica, projekat je kolekcija svih dijelova iz kojih se sastoji i na koje se poziva neki dokument MS Office-a. Projekat VBA će reagovati na definisani događaj, kao što je pritisak na taster, akcija miša, ili na događaj sa dokumentom - da ga otvori, zatvori ili sačuva. Definisani događaj će pokrenuti proceduru sa VBA kôdom, nazvanom sub, što označava sabrutinu (podprogram) unutar većeg tijela programa. Sub je niz iskaza-tvrdnji (statements) napisanih u jeziku VB, umetnutih između iskaza Sub i End Sub da izvedu neke aktivnosti, a ne da vraćaju neke vrijednosti (kao što to rade funkcije u VB-u). Procedura Sub može dobivati argumente, kao što su konstante, varijable i izrazi, koje joj preda procedura koja ju je pozvala. Ako procedura Sub nema argumenata iskaz Sub mora uključiti prazan skup u zatvorenim zagradama. VBA kôd unutar tog sub iniciraće akciju (akcije) nad osobinama objekata aplikacije Office-a. U našem primjeru (na slici 390) mi ispisujeme okvir dijaloga (dialog box) 'Object' koristeći funkciju 'MsgBox' pri čemu njenoj osobini 'prompt' postavljamo vrijednost na "Hello!". Na primjer, dokument Worda ima mnogo objekata: znakovi, riječi, paragrafi, tabele, podnožja, zaglavlja, itd. Takođe, sve aplikacija Office-a imaju mnogo objekata, kao što su: meniji, trake sa alatima, kontrole itd. U MS Accessu, kao što vam je poznato, objekti su: tabele, upiti, obrasci, izvještaji, stranice za pristup web-u, makroi i moduli. Svi ovi objekti imaju osobine koje mogu imati aktivnosti koje se nad njima izvode pod dejstvom VBA kôda.
300
Prema tome, osnova koncepta VBA je u tome da je sve u nekoj aplikaciji neki objekat, koji ima osobine, koje mogu imati aktivnosti, koje se nad njima izvode pomoću VBA kôda.
19.5 Pozivanje VBA editora Mjesto gdje se unosi VBA kôd je VBA editor, koji pojedini proizvođači softvera nazivaju još i integrisano razvojno okruženje, odnosno skraćeno IDE (IDE-Integrated Development Environment). Postoje tri načina da kreirate neki nezavisni modul: - U Microsoft Access, u prozoru Database, kliknete na Modules i zatim New. Ovim biste otvorili editor kôda (Code Editor) sa praznom datotekom. - U prozoru Editora kôda (Code Editor) ili u prozoru kôda Microsoft Visual Basic-a, u glavnom meniju kliknete na Insert -> Module. - Na traci alata Editora kôda ili Visual Basic-a, možete da kliknete na dugme Insert Module ili kliknete na strelicu dugmeta Insert Module i izaberete Module. Imena modula su kumulativna. To znači da bi se prvi modul zvao Module1; drugi bi se zvao Module2, itd. Visual Basic je vizuelni programski jezik kojim upravljaju događaji (event driven). U Visual Basic- u, programira se u grafičkoj operativnoj sredini. Korisnici mogu da kliknu na određeni objekat, tako da svaki objekat mora da bude programiran nezavisno da bi mogao da odgovori na te akcije (događaje). Visual Basic program je načinjen od podprograma, svaki ima svoj programski kôd, i svaki može biti izvršen nezavisno i u isto vrijeme svaki može biti povezan sa drugima. U uobičajenim ili “proceduralnim” aplikacijama, sama aplikacija kontroliše po kojem redu će se izvesti pojedini dijelovi programskog kôda. Izvođenje započinje prvom linijom programskog kôda i slijedi unaprijed određenu putanju kroz aplikaciju, pozivajući potprograme kad je potrebno. U aplikaciji upravljanoj događajima, programski kôd ne slijedi unaprijed određenu putanju - takve aplikacije izvode različite dijelove programskog kôda kao odgovor na događaje. Događaji mogu biti pokrenuti akcijom korisnika, porukama sistema ili drugih aplikacija, ili čak same aplikacije. Redoslijed tih događaja određuje putanju kojom će programski kod biti izveden, pa je putanja izvođenja kroz programski kôd drugačija svaki put kad se aplikacija pokrene. Editori kôda VBA i VB-a su gotovo identični. Editoru VBA možete da pristupite otvaranjem prozora Microsoft Visual Basica. Najbrži način da to uradite je da, dok je baza podataka otvorena, pritisnete tastere Alt+F11. Drugi način na koji možete pozvati editor je da, ako ste u dizajnerskom prikazu, dvostruko kliknete lijevim tasterom miša na kontrolu. Glavni prozor VB-a obično izgleda kao na slici dole.
301
Slika 391. Tipični izgled prozora VB editora
U gornjem prikazu prozora VB editora (slika 391) vidljive su i označene slijedeće sekcije: - prozor pretraživača projekta (Project Explorer window)-lijevo gore - prozor kôda (Code window)-desno gore - prozor osobina (Properties window)-lijevo dole - prozor Immediate (Immediate window)- desno dole. Za otvaranje ostalih prozora editora koji vam stoje na raspolaganju, koristite meni View da biste izabrali prozor koji još želite da bude vidljiv.
Slika 392. Opcije menija View u Accessu
Analizirajmo sada različite sekcije prozora Visual Basica (VB).
19.6 Elementi glavnog prozora editora Na slici dole (slika 393), označili smo pojedine dijelove glavnog prozora editora, odnosno ugrađenog razvojnog okruženja Visual Basic-a, kako ga još nazivaju pojedini autori.
302
Slika 393. Razvojno okruženje Visual Basica 6
Gornja slika prikazuje razvojno okruženje Visual Basic-a, koje se u terminologiji Accessa naziva editor, sa obilježenim svim važnijim labelama. Na slici nismo posebno obilježili: naslovnu liniju prozora, liniju menija i traku sa alatima, jer smo se sa njima susretali u ostalim aplikacijama MS Office-a, a oni su prepoznatljivi dio svakog glavnog prozora u Windows okruženju. Mnoge funkcije u VB-u rade slično MS Wordovoj traci sa alatima (Tool Bar), a paleta sa alatima (Tool box) je slična ostalim proizvodima na tržištu, koji rade tako da se jednom klikne na alat i zatim se on odvuče na mjesto na formi na kojoj želite da objekat bude lociran. Paleta alata Toollbox sadrži kontrole koje smještate na prozor obrasca (Default Form). Kontrole, kao što su: okvir za tekst (text box), komandno dugme (command button), labela (label), polje sa strelicom za listu opcija (combo box), okvir za crtež (picture box), okvir za grafiku (image box), mjerač vremena (timer), i drugi objekti koji se nalaze na Toolbox-u, ne pokreću se sve dok ih ne premjestite na neki obrazac. Kada ih premjestite na dizajnerski (glavni) obrazac (default form) oni su spremni da izvedu zadatak vezan za događaj koji im je dodijeljen.
19.6.1 Početni izgled prozora editora Uvijek kada se startuje Visual Basic, pokrene se neki VB projekat. Projekat Visual Basic-a je kolekcija slijedećih modula i datoteka: - Globalnog modula (global module)-koji sadrži deklaraciju i procedure. - Modula obrasca (form module) - koji sadrži grafičke elemente aplikacije VB-a zajedno sa instrukcijom - Opšteg modula (general module) – koji općenito sadrži instrukcije opšte namjene koje ne pripadaju nijednom grafiku na ekranu - Modula klase (class module) – koji sadrži definicione karakteristike klase, uključujući njene osobine i metode, i - Datoteka resursa (resource files) – koja omogućuje da se na jednom mjestu prikupe svi tekstovi i grafici iz neke aplikacije.
303
Nakon pokretanja Visual Basic-a u editoru se prikazuju slijedeći prozori: - Prazan prozor forme (Form Window) - Prozor pretraživača projekta (Project Explorer Window) i - Prozor osobina (Properties window). Uključena je takođe i paleta alata Toolbox, koja sadrži sve kontrole važne za razvoj aplikacije VB. Kao što smo već rekli, kontrole su alati, kao što su okviri, labele i drugi objekti, nacrtani na formi da bi se dobio ulaz (input) ili ispisao izlaz (output). S nekima od njih se, takođe, ostvaruje i vizualni utisak o aplikaciji.
19.6.2 Prozor projekta Ovaj prozor (Project Explorer Window) se obično nalazi u gornjem lijevom uglu glavnog prozora editora i ima izgled kao što je prikazano na slici 394.
Slika 394. Prozor pretraživača projekta
To je hijerarhijska lista objekata koje VBA poznaje. U ovom primjeru na listi se nalaze dva objekta klase MS Accessa – jedan je obrazac, nazvan frmProducts, a drugi je izvještaj, nazvan rptCategories_Report. Tu je i jedan modul, nazvan Module1. To su ujedno svi objekti koji su u Access bazi podataka u ovom projektu (u primjeru) kreirani. ikonu dugme
Kada je neka aplikacija otvorena ona se može pokrenuti klikom na na liniji alata. Da bi se napravila pauza u njenom radu pritisnite , a da bi se prekinulo njeno izvođenje koristite dugme .
Slika 395. Linija alata sa aktivnim dugmetom za start VB aplikacije
Da bi se napravila pauza u njenom radu pritisnite dugme , a da bi se prekinulo njeno izvođenje koristite dugme . Ovi alati (dugmadi na traci alata), logično, postanu aktivni tek nakon što se aplikacija pokrene.
304
Slika 396. Linija alata sa aktivnim dugmadima za zaustavljanje izvršavanja aplikacije
Kada je projekat otvoren, u prozoru projekta (Project) ispisano je ime obrasca/obrazaca koje on sadrži. Da biste neki obrazac vidjeli u dizajnerskom prikazu, izaberite željeni obrazac klikom mišem tako da markirate njegovo ime, a zatim kliknite na dugme za prikaz obrasca (View Form).
Slika 397. Prozor projekta
U primjeru prikazanom na slici gore otvoren je projekat vb5projectVbmail, a za prikaz je izabran obrazac maillist.frm. Kao što se sa slike 397 vidi, ovaj projekat koristi pet obrazaca i jedan modul. U dizajnerskom prikazu, kada je prikazan neki obrazac, kôd dodijeljen svakom objektu na ekranu može se pregledavati dvostrukim klikom na taj objekat. Da biste vidjeli kôd za taj obrazac, sa liste alata u prozoru projekta izaberite dugme View Code slici dole.
Slika 398. Prozor projekta
, kao što je to prikazano na
Slika 399. Prozor kôda nakon klika na dugme View Code
Objekti ispisani u prozoru pretraživača projekta. Naredni važan aspekt za diskusiju je to koji objekti se pojavljuju u prozoru pretraživača (eksploreru) projekta. Na prvi pogled trebali biste da pretpostavite da će se u eksploreru projekta automatski pojaviti svi obrasci, izvještaji i moduli koje ste kreirali. Ali, to nije tako. Editor VBA jedino poznaje objekte koje ste vi označili da su „modul“. Podrazumijeva se stoga (default) da će se u eksploreru projekta pojaviti svi moduli, ali ne nužno i svi obrasci i izvještaji. Neki obrazac će se pojaviti u eksploreru projekta samo onda ako je njegova osobina "Has Module" postavljena na "Yes" (vidi sliku 400).
305
Slika 400. Prozor osobina obrasca
Slično je i sa izvještajem, i on će se pojaviti u eksploreru projekta samo ako mu je osobina "Has Module" postavljena na "Yes".
Slika 401. Prozor osobina izvještaja
Sada se sigurno pitate, kako to da neki obrasci i izvještaji u bazi podataka imaju osobinu "Has Module" postavljenu na "Yes", a drugi nemaju. Odgovor je, svaki put kada u obrascu ili izvještaju pozovete graditelj kôda (Code Builder), Access njihovu osobinu "Has Module" automatski postavi na "Yes".
Slika 402. Prozor graditelja kôda
Zato, ako želite da se u editoru VBA pozivate na vaše obrasce ili izvještaje, trebate otići u prozor osobina i tamo ručno podesiti osobinu "Has Module" na "Yes".
19.6.3 Prozor osobina Svaki objekat ima osobine. Da biste neki objekat efektivno koristili treba da se upoznate sa njegovim osobinama, ili u najmanju ruku da znate kako se one koriste da se pomoću njih opiše neki objekat.
306
Prozor osobina projekta (Properties Window) obično se nalazi odmah ispod prozora projekta. U njemu se ispisuju osobine objekta koji je obilježen u prozoru eksplorera projekta (slika 404).
Slika 403. Prozor osobina u MS Accessu
Slika 404. Prozor osobina u Visual Basicu
Za vrijeme kreiranja nekog objekta pojavljuje vam se prozor koji opisuje njegove osobine (Properties Window). Prozor u kojem se ispisuje lista osobina nekog objekta je različita, zavisno da li radite u Accessu ili u Visual Basic-u. Za obrazac (Form), koji je vjerovatno najuobičajeniji objekat koji se koristi u nekoj aplikaciji, u Accessu, prozor osobina koji se pojavi ima 5 tabulatora, i to: Format, Data, Event, Other i All. (slika 403). U Visual Basic-u, prozor osobina obično se pojavi u donjoj lijevoj sekciji glavnog prozora, i to sa dva tabulatora: Alphabetic and Categorized (slika 404). Ako se prozor osobina projekta ne vidi kada se otvori glavni prozor Visual Basic-a, možete da ga otvorite izborom opcije Properties Window iz menija View (slika 405).
Slika 405. Opcije menija View editora
307
Osobine objekata su značajan dio VB editora za formiranje aplikacija. Smatraju se dijelovima aplikacije, jer se izmjenom sadržaja osobina nekog objekta mijenja izgled ili funkcija aplikacije.
19.6.3.1 Konfigurisanje osobina vizuelno Da biste vizuelno (a ne putem kôda programa) konfigurisali osobinu, morate se prvo locirati u prozor Properties. Ako radite u Microsoft Access-u, osobine su kategorisane u tri tabulatora: Format, Data, i Other, a sve te osobine su takođe predstavljene i u tabulatoru All. Svaka osobina pojavljuje se pod imenom kao u realnom svijetu, različitim riječima (na engleskom). Primjeri su: Caption, Default View ili Min Max Buttons. Nakon što ste se locirali na neku osobinu, da biste vidjeli ili promijenili njenu osobinu koristite polje desno od imena osobine. To znači da je osobina načinjena od dvije sekcije: imena osobine (property name) i vrijednost osobine (property value), kao što je to ilustrovano na slici 406.
Slika 406. Prozor osobina objekta Form
Ako radite u Visual Basic-u, koristeći prozor Properties možete da koristite isti pristup da biste promijenili osobinu. Do sada imena osobina su se pojavljivala u jednoj riječi i to u njenom zvaničnom (službenom, oficijelnom) formatu.
19.6.3.2 Konfigurisanje osobina programski Osobine objekata ili kontrola mogu se mijenjati programski. Da biste programski promijenili osobinu, u vašoj sekciji kôda kucajte: ime njenog objekta, iza njega dolazi znak tačka ".", slijedi zvanično ime osobine, slijedi znak operatora dodjeljivanja “=” i zatim slijedi željena vrijednost osobine. To znači da morate znati ime objekta čiju osobinu želite da promijenite. Morate da znate (tačno) ime osobine koju želite da promijenite, i morate da znate moguću vrijednost koju osobina može imati. Navodimo jedan primjer kôda koji sakriva (zaklanja) pravougaoni okvir (rectangle box) nakon što korisnik klikne na dugme: Private Sub cmdHide_Click() boxRectangle.Visible = False End Sub
308
Ranije smo napomenuli da se imena objekata obično sastoje od jedne riječi. U stvarnosti, Microsoft Access je veoma fleksibilan i dopušta vam da za ime nekog objekta koristite više od jedne riječi, ali su imena osobine uvijek iz jedne riječi. Ako imate objekat koji je napravljen od više od jedne riječi, i kada se u izrazu pozivate na njega, bilo u prozoru osobina ili u programskom kôdu, morate da ga stavite između otvorene ugaone zagrade "[" i zatvorene ugaone zagrade "]". Na primjer, pretpostavimo da imate okvir koji ste umjesto boxRectangle nazvali Rectangular Box. Prednji kôd bi se trebao pisati ovako: Private Sub cmdHide_Click() [Rectangular Box].Visible = False End Sub Neće vas ništa koštati da uvijek kada se pozivate na ime koje ste dali objektu, makar je ono načinjeno od jedne riječi, da ga stavite u uglate zagrade. Navodimo jedan primjer: Private Sub cmdHide_Click() [boxRectangle].Visible = False End Sub To će dati isti rezultat kao i u prethodnom primjeru.
Praktična vježba: Konfigurisanje osobina objekta 1. Da biste promijenili prikaz obrasca kada je on aktiviran, u glavnom meniju Accessa kliknite na: View -> Design View 2. Primijetite da se prozor pojavio sa naslovom koji je ispisan na obrascu. Ako ga ne vidite u glavnom meniju Accessa, kliknite na View -> Properties.
3. To je prozor osobina u MS Access-u. Uočite da je podijeljen u pet kartica osobina. 4. Da biste otvorili Visual Basic, na standardnoj liniji alata Accessa kliknite na dugme Code 5. Primijetite da je prozor Properties ispisao osobine obrasca (Form) koji je izabran u prozoru projekta (Project window) 6. U combo box-u objekta izaberite Form
309
7. Kucajte NavigationButtons = False
8. Da biste se ponovno vratili u Microsoft Access, na liniji alata (toolbar) . kliknite na dugme Microsoft Access 9. Na liniji standardnih alata (Standard toolbar) MS Access-a, kliknite na . dugme View
10. Nakon što pregledate rezultat, na liniji alata Form View u MS Accessa, kliknite na dugme View .
19.7 Opcije prikaza komandi u editoru Editor VB može da bude u jednom od slijedeća tri prikaza (moda): prikaz izvršavanja (run mode), prikaz prekida (break mode) ili dizajnerski prikaz (design mode). Kada je editor u dizajnerskom prikazu (Design mode), tada možemo da pišemo kôd programa. Prikaz izvršavanja – (Run mod) pojavljuje se kada se izvršava procedura. Da bi ste proceduru pokrenuli (ili izvršili), treba samo da smjestite kursor bilo gdje unutar kôda procedure i pritisnete taster F5, ili da iz menija Run izaberete opciju Start kako bi se procedura pokrenula (ili izvršila). Ako vam se iz nekog razloga učini da procedura “visi” i ne može da se izvrši,
310
proceduru možete da zaustavite pritiskom na kombinaciju dva tastera Ctrl+Break (držite pritisnut taster Control i pritisnete taster Break). Do prikaza prekida (Break mode) dolazi kada se procedura koja se izvršavala zaustavi zbog neke greške u kôdu ili manipulativne greške učinjene s naše strane. Zapravo, ako se u procedure pojavi neka greška, Access će zaustaviti njeno daljnje izvršavanje i ispisaće neki okvir dijaloga greške. Na slici dole dajemo jedan primjer dijaloga greške koja je nastala u toku izvođenja (Run-time error).
Slika 407. Dijalog greške
Okvir dijaloga greške nudi nekoliko opcija: da se procedura završi (End), da se pruži pomoć u vezi problema (Help), ili da se napravi prekid izvršavanja (break mode) radi dibagovanja kôda. U tom slučaju Access će zaustaviti izvršavanje procedure do tog kôda i taj kôd obojiti žuto. Editor u svojoj liniji za naslov pokazuje koji je mod trenutno aktivan. Kada je u run modu (modu izvršenja) naslov sadrži riječ “[running]”, a kada je u modu prekida riječ “[break]”. O procesu dibagovanja kôda diskutovaćemo kasnije u posebnom poglavlju knjige. Pored slučaja prijave neke greške, postoji još nekoliko načina unošenja moda prekida (break mode) u svrhu dibagovanja: - Pritisnite tastere Ctrl+Break i iz dijalog okvira koji se pojavi izaberite opciju Debug. - U kôd se umetne naredba (iskaz) Stop, što uzrokuje da Access unese mod prekida. - U liniju postojećeg izvršnog kôda umetne se linija za prekid (breakpoint). To se radi tako da se kursor postavi na tu liniju i pritisne se funkcijski taster F9 (ili se koristi opcija Toggle Breakpoint u meniju Debug). Access će staviti crvenu tačku u lijevoj margini ispred te linije i kada dođe do te linije zaustaviće izvođenje. U proceduri možete unijeti više od jedne tačke prekida. Općenito, preferiše se ovakav način unošenja tačke prekida, radije nego unošenje iskaza Stop, zato što se tačke prekida automatski uklone kada mi zatvorimo Visual Basic, i ne moramo da mislimo o tome da ih mi uklanjamo, kao što to moramo sa iskazom Stop. - Postavimo iskaz watch, koji uzrokuje da kada neki uslov postane true Access unese mod prekida. Da biste izašli iz moda prekida, izaberite opciju Reset iz menija Run.
311
Dizajnerski prikaz komandi - Za prebacivanje između dizajnerskog prikaza i korisničkog prikaza neke komande, tj. između prikaza za kreiranje ili uređivanje komande (edit) i korišćenja neke komande (use) koristi se alat na paleti Toolbox. Na primjer, ako u prikazu edit (prikaz u kojem su vidljive hvataljke oko objekta), kliknete na neki objekat, kao što je 'CommandButton', bićete automatski odvedeni u proceduru objekata 'click' u editoru VB. Ako u prikazu edit kliknete na objekat desnim dugmetom miša, pojaviće se meni u kojem možete da pristupite raznim osobinama tog objekta.
Slika 408. Izbor između prikaza edit i use
Ako isključite prikaz edit, kada kliknete na objekat pokrenućete njegovu proceduru 'click' ako je ona bila kreirana. Isključivanje i uključivanje prikaza vrši se dugmetom .
20. Programiranje u VBA programskom jeziku 20.1 Vizuelno programiranje Programiranje u Accessu je proces dodavanja funkcija bazi podataka pomoću Access makroa ili kôda pisanog u programskom jeziku Visual Basic for Applications (VBA). Na primjer, pretpostavimo da ste kreirali obrazac i izvještaj i da želite da obrascu dodate komandno dugme koje, kada kliknete na njega, otvara izvještaj. U ovom slučaju, programiranje je proces kreiranja makroa ili VBA procedure (modula), a zatim postavljanja osobina događaja na klik komandnog dugmeta tako da klik na komandno dugme pokreće makro ili proceduru. U slučaju jednostavne operacije, na primjer otvaranja izvještaja, možete da koristite čarobnjak za komandno dugme koji će obaviti cio posao, ili možete da isključite čarobnjak i da sami obavite programiranje. Pisanje procedura u MS Accessu je ogranizovano isključivo u poznatoj events-driven metodologiji upravljanja događajima. To je takva metodologija koja za generisanje odgovora na neki događaj (event) koristi
312
osobinu (property) neke kontrole, obrasca, izvještaja, stranice za pristup podacima ili odjeljka za pridruženi događaj. Kao odgovor na pojavu događaja možete da pokrenete VBA proceduru ili makro i tako pomoću njih podesite odgovarajuću osobinu za konkretni događaj. Naravno, osobina nekom događaju može se podesiti i ručno, ali tu onda nema programiranja, odnosno ono tu nije potrebno. Međuti, svako ko imalo ima iskustva u radu sa aplikacijama zna da je to strašno zamoran posao i zbog toga je, zapravo, programiranje i “izmišljeno”.
20.2 Događaj Izgled neke aplikacije Visual Basic-a određen je po tome koje kontrole su u njoj korištene, ali njen „duh“ određen je događajima. Neki događaj (event) je nešto što se može desiti nekoj kontroli. Na primjer, korisnik može kliknuti na dugme, izmijeniti text box ili povećati obrazac. Svaki put kad korisnik preduzme neku akciju, na primjer pritisne taster miša, takva akcija naziva se događaj. Basic kôd koji odgovara određenom događaju zove se procedura za obradu događaja. Tri su vrste događaja: događaji vezani za tastaturu, za miša ili za program. Lista objekta u prozoru kôda vam omogućava da izaberete objekat za koji možete da napišete proceduru za obradu događaja. Lista procedura u prozoru kôda vam omogućava da odaberete sve moguće događaje na koje objekat može da odgovori.
Slika 409. Lista objekata primijenjenih u nekoj aplikaciji (lijevo) i Lista procedura za događaj Load na objektu Form (desno)
U narednoj tabeli navodimo nekoliko češćih događaja. Događaj Activate Change
Dešava se kada: Obrazac postaje aktivan prozor Promijeni se sadržaj kombinovane liste, liste direktorijuma, natpisa Click Korisnik jednom pritisne objekat mišem KeyDown Korisnik pritisne taster MouseDown Korisnik pritisne taster miša
313
Događaji za koje se vezuju procedure podijeljeni su u nekoliko grupa po srodnosti izvora i to: - događaji koji se izvršavaju pritiskom na pojedine tastere ili na kretanje miša, - događaji koji se izvršavaju u trenucima pomjeranja fokusa (aktivan ili nije aktivan) sa ili na objekat, - događaji koji se izvršavaju prilikom otvaranja, zatvaranja ili promjene veličine obrasca, - događaji koji se izvršavaju prilikom formiranja ili štampanja izvještaja i - događaji koji se vezuju za pojavu grešaka prilikom izvršavanja programa. Događaji su uvijek na nekom trenutno aktivnom objektu. Kao i osobine (obilježja), događaji su pridodati objektu. U slučaju događaja na objektu, aktivira se procedura najavljena u odgovarajućoj osobini. Događaji na nekom objektu (ili kontroli u okviru objekta), opisuju se preko najavljene osobine (property) koja se nalazi na objektu. Svaki događaj ima svoje osobine sa nizom podataka o programskoj cjelini (ili makro cjelini) koja će se izvršavati ako se desi predviđeni događaj. Poenta pisanja programa u eventdriven načinu je odnos objekta i događaja. Nazivi osobina objekta koje sadrže informacije o događajima su veoma slični kao i sami događaji, na primjer: OnGotFocus je naziv osobine događaja GotFocus (događaj pozicioniranja aktivnosti na objekat-aktivan ili neaktivan).
20.3 Faze pisanja VBA programa Kod kreiranja aplikacije Visual Basic-a, pisanje programa sastoji se od tri koraka: (1) izbor odgovarajućih kontrola, (2) postavljanje osobina kontrolama i (3) pisanje kôda. Pisanje kôda je faza u kojoj postaje važno da se za svaku kontrolu izabere odgovarajući događaj. Da biste to uradili, dva puta kliknite na kontrolu koja će se koristiti za događaj, ili kliknite na ikonu View Code u prozoru projekta (obično na vrhu ekrana desno). Treba da se pojavi prozor kôda u kojem će ispis biti sličan ovom prikazanom na slici 410.
Slika 410. Prozor kôda
314
Padajuća lista u gornjem lijevom oknu prozora kôda prikazuje listu svih kontrola koje se koriste na odgovarajućem obrascu (slika 411), sam obrazac i posebnu sekciju koja se naziva General Declarations (slika 412).
Slika 411. Lista kontrola za konkretni projekat
Slika 412. Lista događaja za konkretnu kontrolu (Event handler lista)
Korespondentna lista u gornjem desnom oknu ispisuje listu svih događaja primijenjenih na odgovarajuću kontrolu (koja je navedena u oknu lijeve padajuće liste). Kada su događaji ispisani boldovano znači da je kôd za njega već napisan, a neboldovani događaji znače da se oni nisu koristili. Da bismo pokazali da različiti događaji mogu imati značajnu ulogu u određivanju „duha“ neke aplikaciju, napisaćemo jedan mali primjer programa.
Praktična vježba: Pisanje vlastitog događaja - kodiranje akcije klika Uradićemo, na primjer, program kojim se dodaju dva broja jedan drugom i ispisuje se odgovor. Za prvo rješenje ovog problema koristiće se događaj klika na komandno dugme, dok će drugi primjer mijenjati događaj u dva text box-a. Prije nego što bude moguće da se bilo koji događaj kodira, neophodno je da se od odgovarajućih kontrola kreira interfejs. Primjer 1: U ovom primjeru korisnik treba da unese dva broja, a zatim klikne na dugme „=“ da izazove neki odgovor. Rješenje je pokazano na naredne dvije slike, jedna je izgled obrasca u dizajnerskom prikazu, druga je slika u korisničkom prikazu, a ispod je kôd koji treba unijeti u sabrutinu Private Sub Command1_Click(), koji VB automatski kreira nakon klika na komandno dugme „=“.
Slika 413. Dizajnerski prikaz obrasca
Slika 414.Korisnički prikaz
315
U ovom primjeru interfejsa, koristićemo dva text boxa (Text1 i Text2), dvije labele (Label1 i Label2) i jedno komandno dugme (Command1). 1. Nacrtaćemo ih prevlačenjem sa Toolbox-a na obrazac.
Slika 415.
2. Otvorićemo prozor osobina i dodijeliti vrijednosti osobinama. Vrijednost osobina za Text1 i Text2 uzećemo: Text (’ ’), Font (Arial 18 Bold), Alignment (Center). Vrijednosti osobina za Label1 uzećemo: Caption (’+’), Font (Arial 14 Bold), Alignment (Center). Vrijednosti osobina za Label2 uzećemo: Caption (’ ’), Font (Arial 14 Bold), Alignment (Center). Vrijednost osobina za Command1 uzećemo: Caption (’=’), Font (Arial, 14 Bold).
Slika 416. Izgled obrasca nakon dodijeljenih osobina
3. Ideja u ovoj aplikaciji VB-a je da se u polja Text1 i Text2 unesu dva cijela broja i da se, nakon klika na komandno dugme (=), u polju Label2 ispiše rezultat sabiranja ta dva broja. 4. Sada je potrebno napisati kôd za aktivnost nakon događaja „klik na komandno dugme (=)“. Dva puta kliknemo lijevim tasterom miša na dugme, nakon čega se otvara prozor za pisanje kôda. Primijetićete da je VB automatski napravio dvije linije kôda, i da mi treba da između tih dviju linija unesemo kôd koji treba da se izvrši za aktivnost sabiranja brojeva unijetih u polja Text1 i Text2. 5. Unesite u tu liniju slijedeći kôd: Label2.Caption = Str$(Val(Text1.Text) + Val(Text2.Text))
Slika 417. Automatski unesene linije kôda
Slika 418. Kompletan kôd za događaj
316
Objašnjenje značenja unešene komande je u slijedećem: Tekst u Label2 jednak je nizu znakova (Str$) od zbira vrijednosti (Val()) cifara unesenih u Text1 i Text2.11 6. Pokrenite izvršavanje kôda: Run → Start i u obrazac u Run modu unesite dva broja i kliknite na tastern Enter.
Slika 419.
Slika 420.
7. Izvršili smo za vas i test logike rada ove aplikacije. U prvo polje unijeli smo cifru (4), a u drugo polje niz ’abc’ (slova umjesto cifara) i na osnovu rezultata vidjeli smo da funkcija Val() radi samo sa ciframa, a ostale znakove ignoriše, odnosno uzima ih kao jednake nuli. Isto tako je i sa praznim poljima.
Slika 421.
Da bi se desio događaj klika mišem jednostavno se izabere dugme i dva puta klikne, nakon čega će Visual Basic automatski generisati dvije linije kôda:
Slika 422.
Gore desno ćete primijetiti padajuću listu 'Click' koja je poznata kao rukovalac događaja (event handler). Kôd koji treba unijeti za ovaj primjer je: Label2.Caption = Str$(Val(Text1.Text) + Val(Text2.Text))
11
Funkcija Val pretvara string (niz znakova) u broj. Vraća brojeve sadržane u nizu kao numeričke vrijednosti odgovarajućeg tipa. Funkcija Val prestaje sa čitanjem niza kod prvog znaka koji ne prepoznaje kao dio broja. Simboli i znaci za koje se često smatra da su dijelovi numeričkih vrijednosti, kao što su znak za dolar ($) ili zarezi, neće biti prepoznati. Prazna mjesta, tabulatori i znaci za prelazak u novi red u argumentu se zanemaruju. Funkcija Str$ je komplement funkciji Val - pretvara broj u string.
317
Primjer 2: U ovom primjeru promijenićemo program, tako da se odgovor izračuna svaki put kada se neki od dva broja promijeni bez da se klikne na dugme „=“. Da biste to učinili, sa početnog obrasca interfejsa iz prvog primjera prvo uklonite komandno dugme „=“ i zamijenite ga sa labelom postavljenom kao „=“.
Slika 423. Dizajnerski prikaz
Zatim, pozovite prozor za pisanje kôda i u Windows Clipboard kopirajte slijedeću liniju kôda: Label3.Caption = Str$(Val(txtNumber1.Text) + Val(txtNumber2.Text))
Koristeći padajuću listu u lijevom oknu izaberite prvi text box, a zatim na padajućoj listi u desnom oknu izaberite događaj Change. Zatim, iz Clipboarda u praznu sabrutinu naljepite (paste) kôd. Sada izaberite drugi text box i učinite s njim to isto. Ista linija se pojavljuje dva puta, a to je zato što dva događaja klika mišem pripadaju dvjema odvojenim kontrolama. Konačni kôd treba da ima slijedeći izgled: Private Sub txtNumber1_Change() Label3.Caption = Str$(Val(text1.Text) + Val(text2.Text)) End Sub Private Sub txtNumber2_Change() Label3.Caption = Str$(Val(text1.Text) + Val(text2.Text)) End Sub Ponovo pokrenite program, unesite dva broja i posmatrajte šta se dešava. Svaki put kada se cifra promijeni rezultat se preračuna.
Slika 424. Korisnički prikaz
Naravno, sada nam još stoji na raspolaganju niz mogućnosti uređenja naše aplikacije, prvenstveno poboljšanjem formata objekata na interfejsu i samog obrasca (dodavanje grafičkih objekata i bojenje platna, bojenje pozadine polja za unos podataka, povećanje fonta ispisa teksta u text box-ovima i labelama, centriranje položaja ispisa, itd), ali to ćemo prepustiti vama da to uradite kao domaći zadatak.
318
Praktična vježba: Pravljenje jednostavnog VBA programa Ovdje ćemo prikazati pravljenje VBA programa na primjeru Worda for Windows. Korak 1: Pokrenite novi dokumenat u Word for Windows i sačuvajte ga kao 'Osnove VBA.doc'. Korak 2: Otvorite paletu alata sa kontrolama (View →Toolbars →Control Toolbox) i izaberite komandno dugme (Command Button) naljepljeno u vaš dokumenat.
. Ono će automatski biti
Slika 425. Komandno dugme naljepljeno u Word dokumenat
Korak 3: U klipbord kopirajte slijedeće linije (Edit→Copy):
Dim Msg as String Msg = "Pozdrav svima na svijetu!" MsgBox Msg Korak 4: Dva puta kliknite na dugme da otvorite editor VB-a. Korak 5: Nalijepite kopirani tekst (Edit→ Paste) između slijedećih dviju linija kôda koje su se automatski kreirale kada ste dva puta kliknuli na kontrolu. Private Sub CommandButton1_Click() End Sub Napomena: Ove dvije linije kôda neće biti kreirane ako se VB editor pozove (startuje) sa linije alata u glavnom prozoru VB-a!
319
Slika 426. Kôd jednostavnog VB programa
Korak 6: Izađite iz editora VB, kliknite na dugme za dizajnerski prikaz , da ga isključite, a zatim kliknite na komandno dugme. Treba da se u Message Box-u pojavi poruka u kojoj piše "Pozdrav svima na svijetu!", kao što je prikazano na slici 427.
Slika 427. Poruka u Message Box-u nakon klika na komandno dugme
Napomena: Može vam se desiti da vam ovaj program ne radi „od prve“. Ako se prilikom klika na dugme program neće da izvrši, ili vam se javi sigurnosna poruka da vršite startovanje nepoznatog ’scripta’, to je znak da je sigurnost rada u Wordu na vašem računaru postavljena na visok nivo (High Security Level) i da ga u tom slučaju treba da „spustite na niže“. To ćete ostvariti izborom opcije Options... u meniju Tools, zatim klikom na kartici Security, pa na na dugme Macro Security...., nakon čega vam se otvara dijalog za promjenu stepena sigurnosti rada sa script-ima. Promijenite nivo sigurnosti na Medium. Nakon ponovnog starta, vaš VB program će raditi. Kada se uvjerite da vam program ispravno radi, za svaki slučaj, možete da vratite nivo sigurnosti od neželjenih script-i na High ili Very High, tj. na prvobitno podešeno (setovano) stanje sigurnosti.
320
21. Pretvaranje makroa u VBA kôd VBA programiranje bi trebalo da koristite umjesto makroa ako želite da izvršite neku od slijedećih komandi: - Upotreba ugrađenih funkcija ili kreiranje vlastitih funkcija. Access obuhvata mnoge ugrađene funkcije kao što je, na primjer funkcija Ipmt, koja izračunava visinu kamate. Ove ugrađene funkcije možete da koristite da biste obavljali proračune bez potrebe za kreiranjem komplikovanih izraza12. Koristeći VBA kôd, takođe možete da kreirate vlastite funkcije da biste obavljali proračune koji prevazilaze mogućnosti izraza ili da biste zamijenili složene izraze. Pored toga, možete da koristite funkcije koje ste kreirali u izrazima da biste uobičajenu operaciju primijenili na više objekata. - Kreiranje objekata ili rukovanje njima. U većini slučajeva biće vam najlakše da objekat kreirate i mijenjate u dizajnerskom prikazu tog objekta (u kojem možete da kreirate nove objekte baze podataka i mijenjate dizajn postojećih). Međutim, u nekim situacijama možda ćete htjeti da upravljate definicijom objekta u kôdu. Koristeći VBA, pored same baze podataka, možete da upravljate svim objektima u bazi podataka. - Obavljanje sistemskih komandi. Operaciju RunApp možete da obavite u makrou da biste iz programa Access pokrenuli drugi program (na primjer MS Excel), ali ne možete da koristite makro da biste uradili mnogo toga izvan programa Access. Koristeći VBA, možete da provjerite da li datoteka postoji na računaru, da koristite dinamičku razmjenu podataka (DDE – Dynamic Data Exchange je ustanovljeni protokol za razmjenu podataka između programa koji se oslanjaju na Microsoft Windows) da biste .dll datotekama13 komunicirali sa drugim programima zasnovanim na operativnom sistemu Microsoft Windows. - Pojedinačno upravljanje slogovima. VBA možete da koristite da biste pregledali jedan po jedan slog u skupu slogova i obavljali operacije sa svakim slogom. Nasuprot tome, makroi rade sa kompletnim skupovima slogova istovremeno. VBA uključuje stotine komandi koje vam omogućavaju da obavljate mnogo složenije operacije od onih koje možete da obavljate koristeći Access makroe. Pored toga, VBA možete da pojačate koristeći nezavisne kontrole i možete da napišete funkcije i procedure za svoje posebne potrebe. VBA možete da koristite i za integraciju programa Access sa drugim programima.
12 izraz: kombinacija matematičkih ili logičkih operatora, konstanti, funkcija i imena polja, kontrola i svojstava koja daje jednu vrijednost . Izrazi mogu da obavljaju računanje, manipulišu znakovima i ispituju podatke. 13 .dll datoteka (biblioteka dinamičke veze) je skup programskih rutina koje mogu biti pozvane iz Visual Basic procedura i koje se učitavaju i povezuju u vašoj aplikaciji u vremenu izvršavanja.
321
Jedan od brzih načina da naučite programiranje u Visual Basic for Applications (VBA), kada već znate kako se može napraviti makro, jeste da najprije napravite Accessov makro, a zatim makro pretvorite u Visual Basic kôd. Svaki makro koji napravite može da se konvertuje u VBA kôd. Konvertovanje makroa u VBA kôd je lakše nego kreiranje VBA kôda od početka. Treba znati da kada neki makro konvertujete u VBA kôd da, u stvari, konvertujete sve makrou u VBA kôd. -
Da biste makro konvertovali u VBA kôd morate učiniti slijedeće: U prozoru Database kliknete na Macro object Kliknete na makro da bi ga označili Idete na menij Tools→Macro i kliknete na opciju Convert Macros to Visual Basic Kada se otvori Convert Macro dialogue box kliknite na dugme Convert da bi ga pretvorili u standardni modul Ako označite module i kliknete na dugme Design, Visual Basic će otvoriti kôd datog makroa.
Praktična vježba: Izrada i konvertovanje makroa u modul VBA kôda Da bismo demonstrirali konverziju makroa u VBA kôd napravili smo jednostavan makro koji kada se startuje šalje jedan okvir sa porukom (MessageBox). Dakle, u okviru Objects baze, u prozoru podataka kliknete na dugme Macros i izaberete alat New. Pojaviće se tabela (rešetka) za unošenje elemenata makroa. Iz padajuće liste izaberete željeni makro, u ovom slučaju MsgBox.
Slika 428.
Slika 429.
Slika 430.
Zatim u donjem dijelu tabele makroa, u polja Message, Beep, Type i Title, upišete argumente makroa. U ovom slučaju to će biti tekst koji će se ispisati u okviru za poruke-Message i naziv okna za poruke-Title, jer je Access već izabrao argumente za Beep (mogući su Yes/No) i Type (mogući su: None, Critical, Warning?, Warning!, Information).
Slika 431.
322
Kada završite sa unošenjem argumenata i komentara, zatvorite makro ili kliknite na dugme na traci sa alatima okvira Accessa da ga pokrenete.
Slika 432.
Pojaviće se okvir sa tekstom poruke makroa.
Slika 433.
Sada, da biste izvršili konverziju makroa u modul sa VBA kôdom, uradite slijedeće: u okviru baze podataka kliknite na makro koji želite da konvertujete u modul sa VBA kôdom. Zatim u prozoru Accessa izaberite u meniju Tools→Macro→Convert Macros to Visual Basic, kako je to pokazano na donjoj slici.
Slika 434. Izbor opcije za konvertovanje makroa u VBA
323
Pojaviće se okvir za dijalog koji vas pita da li želite da uključite i kôd za akciju u slučaju greške (Add error handling to generate functions) ili da dodate komentar u kôd. Ako želite da zadržite što jednostavniji kôd, možete da dečekirate prvo polje i izaberete samo drugo polje (Include macro comments).
Slika 435.
Nakon što kliknete na dugme Convert konverzija će biti izvršena. Da biste vidjeli konvertovani makro kao VBA kôd, u oknu Objects baze podataka izaberite alat Modules i u desnom oknu ćete vidjeti ikonu VBA modula, kao na slici dole.
Slika 436.
Kliknite dva puta na tu ikonu, ili na alat za dizajnerski prikaz i u prozoru VBA editora vidjećete VBA kôd makroa.
Slika 437.
,
324
CIP – Katalogizacija u publikaciji Narodna i univerzitetska biblioteka Republike Srpske, Banja Luka 004.685 (o75.9) ROLJIĆ, lAZO Baze podataka / Lazo Roljić, Zoran Novaković. – 1.izd. – Banja Luka : M Power ; Prijedor : Koledž za informatiku i menadžment „Janjoš”, 2008. (Banja Luka : M Power). – 323 str. graf.prikazi, tabele; 25 cm Tiraž 300 . ISBN 978-99955- 20-10-6 1. Novaković Zoran [autor] COBISS.BH-ID 637464