91

access prirucnik

  • Upload
    sisak5

  • View
    106

  • Download
    7

Embed Size (px)

DESCRIPTION

osnove accessa

Citation preview

Page 1: access prirucnik
Page 2: access prirucnik

1

SADRŽAJ :

PREDGOVOR

1. OSNOVNI POJMOVI O BAZAMA PODATAKA 2

1.1 RELACIJSKE BAZE PODATAKA 3 1.2 DIZAJNIRANJE BAZE PODATAKA 4

2. UVOD U RAD S MS ACCESSOM 8

2.1 TABLICE 12 2.2 RELACIJE U BAZI 19 2.3 UPITI 28 2.4 OBRASCI (FORMS) 39

3. PRIMJER – BANKA (UPLATE / ISPLATE) 49

3.1 PROGRAMI POKRETANI DOGAĐAJIMA UPOTREBOM MACRO NAREDBI 58 3.2 PARAMETARSKI UPITI 66 3.3 IZVJEŠĆA (REPORTS) 80 3.4 IZRADA GLAVNOG IZBORNIKA APLIKACIJE 85

Page 3: access prirucnik

PREDGOVOR

1

Dragutin Kuhar
Typewritten Text
Ova knjiga je prevestveno namijenjena učenicima osnovne škole Klinča Sela u kojoj ja predajem izbornu informatiku. Moja preporuka je korištenje ove knjige za učenike sedmih i osmih razreda, koji žele proširiti svoje znanje iz područja rada s bazama podataka. Nadam se da će se njome poslužiti i učiteljice i učitelji te da će svima, kojima dođe pod windowse, biti izvor usvajanja novih znanja i vještina ili pomoć za rješavanje nekih zadataka u ovoj domeni. Knjiga je podijeljena u tri cjeline. U prvoj sam naveo osnovne pojmove o bazama podataka. Druga cjelina se bavi relacijskim bazama, odnosno MS Access-om. Treća cjelina je jedan opsežan primjer, koji može biti od velike koristi za one koji se žele ozbiljnije uključiti. Autor
Page 4: access prirucnik

1. OSNOVNI POJMOVI O BAZAMA PODATAKA

Engleski naziv Database kod nas je doslovno preveden s baza podataka. Što nam se u stvari krije iza tog naziva?

Baza podataka je uređeni skup međusobno povezanih podataka o jednoj ili više tema, predmeta i sl. [ECDL definicija].

Ovo je samo jedna od mnogobrojnih definicija. U nešto širem smislu mogli bi kazati da je baza podataka skup zapisa i datoteka koje su organizirane za neku svrhu. Koliko kod vam izgledalo čudno s bazama podataka se susrećete svaki dan, a navest ćemo samo neke tipične primjere:

• Telefonski imenik • Osobni adresar • Red vožnje brodova, vlakova i sl. • Vaša ladica s plaćenim računima složenim po mjesecima

Primjeri su zaista brojni. No, za ilustraciju zamislimo slučaj s vašom ladicom s računima. Smatrat ćemo da su unutra složeni plaćeni računi režija (telefon, komunalije, struja, voda, stanarina), uplaćene rate kredita, plaćena polica osiguranja i registracije vozila i još primjerice račun mjesečne uplate za školu stranih jezika. Malo ćemo karikirati situaciju. Vaša mala baza podataka iz godine u godinu postaje sve veća. Odlučite vidjeti koliko ste ukupno i prosječno potrošili za sve režije u prethodne tri godine. Vadite račune režija od protekle tri godine uzimate kalkulator i izračunavate željene vrijednosti i zapisujete ih na komad papira. Možete zamisliti da je riječ o prilično zamornom poslu. Zadovoljni vraćate sve račune ponovno na mjesto, a s njima i papir s izračunima. Vi ste u ovom slučaju bili tipični korisnik i upravitelj vaše baze podataka (Database manager). Što ste kao upravitelj radili? Primili ste određeni zahtjev korisnika, dohvatili ste potrebne podatke, napravili neke zahvate nad tim podacima (obradili ih), dobili željeni rezultat kojeg ste dali korisniku i ponovno vratili podatke na staru lokaciju. Sada kad smo se upoznali s pojmom baze podataka možemo izvršiti i njihovu podjelu:

• Baze podataka podržane računalom • Baze podataka bez računalne potpore

Mi ćemo se baviti samo prvima, a primjer ove druge je naša ladica s računima. U ovom slučaju ulogu našeg upravitelja bazom podataka (Database managera) preuzima MS Access 2003. U računalnoj terminologiji možemo dati novu definiciju za računalom podržane baze podataka:

Baza podataka je skup datoteka s minimalnom zalihosti podataka organiziranih i strukturiranih po nekom pravilu tako da daju korisne informacije o nekoj temi ili se koriste u nekoj drugoj aplikaciji.

2

Page 5: access prirucnik

Logički način na koji je organizirana baza omogućuje jednostavan pristup, manipulaciju podacimai ponovno pronalaženje istih. Podaci i informacije o čemu je riječ?

PODATAK Î tekst, broj, slika, zvuk koji se mogu pohraniti na računalu. Predstavlja "sirovinu" koju treba obraditi kako bi postala informacija. Sam za sebe ne mora značiti ništa. INFORMACIJA Î značenje pridodano podatku na način da se smanjuje stupanj neodređenosti o nekoj temi, predmetu, osobi, događaju i sl.

Primjerice podaci 232, motokultivator i 12000 sami za sebe nemaju neko važno značenje, ali ako to malo posložimo na sljedeći način Î šifra proizvoda motokultivator je 232, a cijena mu je 12000kn Î dobivamo informaciju. Postoje tri osnovna tipa baza podataka:

1. Hijerarhijske baze podataka 2. Mrežne baze podataka 3. Relacijske baze podataka

Redoslijed kojim su navedene ujedno predstavlja i tijek njihovog povijesnog razvoja. U okviru ovih vježbi zanimaju nas samo relacijske baze podataka.

1.1 Relacijske baze podataka

Većina suvremenih sustava za upravljanje bazama podataka zasnovani su na relacijskom modelu baze podataka. Taj model se sastoji od većeg broja međusobno povezanih datoteka koje su strukturirane u obliku tablica. Kao i sve tablice i ove tablice u relacijskim bazama podataka se sastoje od stupaca i redaka. Redci predstavljaju zapise (slogove), a stupci polja. Relacije se odnose na veze između podataka pohranjenih u različitim tablicama.

ID_zaposlenika Prezime i ime stručna sprema godina radnog staža odjel 1 Marković Zorana SSS 12 nabava 3 Gustić Špiro NSS 10 nabava 4 Franić Branko SSS 5 prodaja 6 Velimirović Žana VSS 5 marketing

poljezapis / slog

3

Page 6: access prirucnik

Prema tome, zapis ili slog bi bio skup informacija opisan jednim ili većim brojem svojstava (polja). Iz gornjeg, jednostavnog primjera možemo vidjeti da tipovi podataka u poljima mogu biti različiti. Tipovi podataka koje ćemo najčešće koristiti su:

• Tekstualni (Text) • Brojčani (Number) • Valuta (Currency) • Datum (Date) • Vrijeme (Time) • Logički (Yes / No)

Relacijski model baze podataka u velikoj mjeri odgovara predodžbi događaja stvarnog svijeta i podacima što ih ti događaji generiraju [Panian]. Da bi mogli predočiti na što se odnosi pojam relacije poslužit ćemo se opet jednim primjerom. Rekli smo da su podaci u relacijskim bazama podataka pohranjeni u vidu tablica. Neka nam se u jednoj tablici 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 identifikacijski broj kupca. To polje je jedinstveno za svakog kupca tako da ne može doći do zamjene informacija. Ono će se nalaziti u tablici kupci i u tablici narudžbe. Na ovaj način izbjegavamo redudanciju (zalihost) podataka. Drugi razlog raširenosti relacijskih baza podataka vezan je uz razvoj programskih jezika za rad s bazama podataka (Database Language). Razvijen je veliki broj tih jezika, ali su najvažniji tzv. jezici za postavljanje upita (Query Language). Riječ je o jezicima koji korisniku omogućuju jednostavno postavljanje upita upravitelju baze podataka (database manageru) te brzo dobivanje odgovora koji je iskazan na pregledan način. Najpoznatiji takav jezik je SQL (akronim od Structure Query Language).

1.2 Dizajniranje baze podataka

Računalno podržana baza podataka Æ trebali vam to??? Koji su presudni razlozi za prelazak na poslovanje s računalom podržanim bazama podataka, preciznije za uvođenje programskog relacijskog sustava upravljanja bazama podataka kao što je MSAccess 2003? Navedimo samo neke:

• Imate previše podataka u odvojenim datotekama što otežava manipulaciju tim podacima • Ti podaci vam trebaju za razne analize Æ skupni podaci prodaje po kvartalima, trendovi

rasta cijena, što ako analiza, najbolje prodavan aranžman u sezoni i sl.; drugim riječima potrebi su vam različiti uvidi u podatke, ali vam je potrebno dugo vremena i prilično komplicirano dolazite do njih

• Potreba za dijeljenjem podataka između više korisnika uz sprečavanje višestrukih unosa (primjerice u poslovnici vaše turističke agencije u Zagrebu rezervirana je soba za neki

4

Page 7: access prirucnik

period u hotelu Ivan - Solaris, a ista soba je za isti period rezervirana dan ranije u drugoj poslovnici u Pragu)

• Podaci koji se unose u neku datoteku vezani su s podacima u drugim datotekama, a sve mogu mijenjati različiti korisnici Æ spora obrada podataka uz vrlo moguću pojavu nedosljednosti u podacima

• Želite imati Web stranicu stalno ažuriranu svježim podacima (još imamo 30 ručnih češalica za leđa, a nova cijena im je 250kn – jesu skupe, ali dobro češu)

Sada kada smo se odlučili da ćemo prijeći na računalom potpomognute baze podataka i da ćemo za relacijski upravljački sustav bazom podataka (RDBS – Relation Data Base System) izabrati MS Access 2003 možemo prijeći na izradu baza podataka. No, prije izrade vrijedno je potrošiti vremena na dizajn baze podataka i planiranje naših potreba. U stvari, dizajniranje možemo svrstati pod jednu od faza planiranja našeg informacijskog sustava temeljenog na bazi podataka. Osnovna pogreška koja se čini pri dizajniranju baze podataka je razmišljanje o podacima koje ćemo staviti u bazu ("s čim ćemo je puniti"). Puno ispravnije je razmišljati o tome koje informacije želimo dobiti na izlazu iz naše baze. Nakon što ste odlučili što želite od vaše baze, razmotrite što vam je na raspolaganju – što imate Æ na osnovu toga stvarate strukturu baze (tablice). Slijedi definiranje svih postupaka i akcija (pretraživanja po kriterijima, izračuni, sortiranja…) koji će se primjenjivati nad podacima kako bi dobili željene informacije. Tek na kraju odredite način na koji će se baza puniti podacima. Neko nepisano pravilo je da nacrtate dijagram buduće baze podataka. Ukoliko bazu radite za nekog drugog, potrebno je obaviti niz razgovora sa svim korisnicima. Nužno je da razumijete problem što bolje, želje i potrebe korisnika na svim razinama, kao i tipove podataka i dokumenata koji se traže. Sve to zapisujete u vidu bilješki na osnovu kojih stvarate dijagram buduće baze. Ponekad je potrebno dijagram par puta predočiti korisnicima da vidite jeste li dobro razumjeli njihove potrebe i jesu li vaša razmišljanja o načinu budućeg poslovanja s bazom podataka u skladu s njihovima1.

SMJEŠTAJNI KAPACITETI

(svi podaci)

REZ

ERV

AC

IJE

GO

STI

KORISNICI

Slika 1-1 Pojednostavljeni dijagram baze podataka

1 Laički pristup – za razliku od ovog postoje posebne metode pri projektiranju informacijskih sustava

5

Page 8: access prirucnik

Daljnje preporuke pri dizajniranju baze podataka [ECDL]:

1. Osiguravanje jedinstvenosti svakog zapisa Æ svaka tablica treba imati jedinstveni primarni ključ čime sprečavamo stvaranje dvostrukih zapisa

2. Neka svako polje bude jedinstveno Æ ne smije biti ponavljanja podataka u tablici 3. Učinite polja funkcionalno zavisnim Æ svako polje trebalo bi predstavljati podataka koji

se odnosi na zapis; ako ne onda je ili suvišno ili pripada nekoj drugoj tablici 4. Osigurajte nezavisnost svakog polja Æ promjena bilo kojeg polja u zapisu ne utječe na

niti jedno drugo u istom zapisu 5. Polja ne smiju sadržavati izračune ili izvedene podatke Æ primjerice u jedno polje

unosite cijenu proizvoda, a u drugom vam je sadržana stopa PDV –a; stvarnu cijenu uvijek možete izračunati iz cijene i stope PDV –a

6. Podaci trebaju biti u najmanjim logičkim jedinicama Æ npr. upisujete odvojeno ime i prezime klijenta kako bi mogli izvršiti njihovo sortiranje po abecedi

Sistematični pristup dizajniranju i izradi baza podataka poštedit će vas kasnije brojnih muka.

Baza podataka Æ skup datoteka strukturiranih, organiziranih i povezanih po određenom pravilu u jedinstvenu cjelinu radi dobivanja željenih informacija

Podatak Æ logička cjelina koja sama za sebe ne mora imati neko značenje. Može biti tekst, broj, datum, vrijeme, itd. Predstavlja "sirovinu" iz koje se dobiva informacija.

Informacija Æ skup obrađenih i povezanih podataka na način da dobivaju neko značenje ili smisao

Relacijska baza podataka Æ baza podataka izgrađena od tablica u kojoj postoje jedinstvene veze između podataka u različitim tablicama

Zapis (slog) Æ jedan redak u tablici relacijske baze (informacije)

Polje Æ jedan stupac u tablici relacijske baze (podaci)

Relacijski upravitelj bazom podataka (RDBM) Æ aplikacijski software kojim kreiramo bazu podataka i manipuliramo podacima u njoj (MS Access)

SQL Æ neproceduralni programski jezik za postavljanje upita RDBM - u

6

Page 9: access prirucnik

1. Što podrazumijevamo pod pojmom baza podataka?

2. Navedite nekoliko primjera baza podataka?

3. Kako se općenito dijele baze podataka?

4. Što je to podatak, a što informacija?

5. Navedite nekoliko primjera podataka i informacija!

6. Nabrojte tri osnovna tipa baza podataka?

7. Što je relacijska baza podataka?

8. Kako su podaci organizirani u relacijskoj bazi podataka?

9. Što je slog, a što polje?

10. Koji je drugi naziv za slog?

11. Što predstavlja polje u tablici, a što slog?

12. Koja je uloga relacijskog upravitelja bazama podataka?

13. Navedite jedan RDBM?

14. Koji je upitni jezik danas najzastupljeniji?

15. Navedite neke od primjera za prelazak na poslovanje s računalom podržanim bazama

podataka?

16. Nabrojte i objasnite osnovne preporuke pri dizajniranju baze podataka po ECDL - u!

17. U čemu leži prava snaga baza podataka?

7

Page 10: access prirucnik

2. UVOD U RAD S MS ACCESSOM

MS Access je dio MS Office paketa, tako da će vam veći dio njegovog sučelja biti poznat. Ako se prvi put susrećete s njim vjerojatno će vam se činiti kompliciraniji od ostalih aplikacija iz istog paketa što i nije čudo, jer se s njim mogu razviti prave poslovne aplikacije za potrebe malih i srednjih poduzeća. Pa krenimo redom. Access se pokreće kao i bilo koja druga aplikacija, a to vam je vrlo dobro poznato. Kada ga pokrenete pojavit će vam se njegov prozor kao na slici ispod:

Kontrolni gumbi

Traka s padajućim izbornicima Naslovna traka

Access Database alatna traka

Okno zadataka

Statusna traka

Slika 2-1 Prozor MS Access - a

Možete krenuti od potpuno prazne baze ili otvoriti već neku postojeću. Ako otvarate već postojeću bazu onda to možete učiniti na sljedeće načine:

[1] Izbornik File Æ Open… [2] Na Database alatnoj traci kliknete na ikonu Open

8

Page 11: access prirucnik

[3] U oknu zadataka Getting Started pod dijelom Open kliknite na ime željene baze ili na

ukoliko baza nije na popisu

Pri stvaranju nove baze preko File Æ New ili klikom na ikonu sa standardne alatne trake otvorit će vam se okno zadataka New File:

Slika 2-2 Izgled okna zadataka New File

Značenja naredbi iz tog okna su sljedeća:

Stvara novu, potpuno praznu bazu Stvara HTML stranicu za pristup bazi podataka Stvara novi Access projekt temeljen na postojećim podacima Stvara novi Access projekt s novim podacima

Stvaranje baze iz već postojeće

9

Page 12: access prirucnik

Pretražuje Microsoft Internet arhivu s predlošcima na temelju upisane ključne riječi

Otvara MS Office stranicu s raspoloživim predlošcima za download u vašem Internet pregledniku

Postojeći predlošci za novu bazu na vašem računalu

Interesantno je da se otvorena baza u MS Accessu ne treba spremati na već uobičajeni način, već će cjelokupnu bazu sa svim načinjenim promjenama Access automatski spremiti (naravno pod istim imenom i na istu lokaciju kako je kreirana). Ukoliko cijelu bazu želite premjestiti ili spremiti na drugu lokaciju trebate je prvo zatvoriti u Accessu, a potom preko Windows Explorera izvršiti željenu akciju kopiranja ili premještanja. Preko File Æ Save tj. Save As… ili klikom na ikonu s Database alatne trake vršite samo spremanje pojedinih objekata u bazi Æ tablice, upiti, obrasci, izvješća, moduli, … Prema tome, MS Access baza podataka će se sastojati od manjeg ili većeg broja objekata:

• Tablice (Tables) Æ osnovni građevni elementi svake relacijske baze podataka, a namijenjeni su skladištenju podataka

• Upiti (Queries) Æ koriste se za postavljanje pitanja o podacima u bazi Æ izvlačenje željenih informacija iz baze

• Obrasci (Forms) Æ možemo reći da predstavljaju sučelje prema korisniku Æ služe za interakciju korisnika s RDBM – om

• Izvješća (Reports) – prikazuju željene informacije u obliku pogodnom za ispis • Stranice (Pages) Æ vezano uz rad s bazom preko interneta Æ prikazuje Web stranice za

rada s bazom preko interneta • Makroi (Macros) Æ procedure koje olakšavaju izvođenje stalno ponavljanih ili vrlo

složenih radnji • Moduli (Modules) Æ korisnikove programske funkcije pisane u VBA programskom jeziku

(Visual Basic for Applications)

Od svih spomenutih objekata jedino su tablice namijenjene pohranjivanju podataka u bazu. Svi ostali služe za upravljanje, manipuliranje, predočavanje, analiziranje, … tih podataka. Dobro, ovdje smo već spomenuli objekte, a u našem prozoru nigdje im ni traga. Da bi mogli doći do objekata potrebno je otvoriti bazu na jedan od prethodno opisanih načina.U ovom početnom dijelu upoznavanja s Accessom poslužit ćemo se već gotovom bazom podataka Nortwind koja služi kao ogledni primjerak, a do nje možemo doći preko Help Æ Sample Databases… Æ Nortwind Sample Database. Pojavit će vam se pozdravni prozor Æ kliknite na check box Don't show this screen again kako vam se ne bi ubuduće pokazivao, a potom na OK. Nakon toga u prvi plan će se postaviti tzv. glavna Navigacijska ploča aplikacije (Main Switchboard). Možete i nju ugasiti, a

10

Page 13: access prirucnik

njezino objašnjenje dat ćemo kasnije. Konačno smo došli do željene stvari – prozora baze podataka (u ovom slučaju baze Nortwind):

Aktivni dio prozora

Alatna traka baze podataka

Traka s objektima

Slika 2-3 Izgled prozora baze

Na samom vrhu se nalazi naslovna traka s imenom baze i verzijom datotečnog formata Access baze. U desnom dijelu te trake je kontrolni gumbi. U traci s objektima postoji i kartica koja se naziva Grupe (Groups). Za sada nam je dovoljno znati da se u njoj mogu stvarati vlastite grupe većpostojećih objekata. U jednoj grupi možete imati objekte različitog tipa (npr. tri tablice, dva izvještaja i jednu formu). Bitno je istaknuti da se ti objekti fizički ne smještaju u pojedinu grupu, već se samo stvaraju prečaci na njih. Aktivni dio prozora (isprekidana linija) mijenjat će izgled ovisno o izabranom objektu u traci objekata. Alatna traka baze podataka donosi nam nekoliko zanimljivost s kojima se još niste susreli u nijednoj office aplikaciji:

gumb za otvaranje selektiranog objekta u izvršnom (korisničkom) modu, a njegov izgled se može mijenjati ovisno o tipu izabranog objekta gumb za otvaranje objekata u dizajn modu (razvojnom modu) – u modu u kojem ih možete mijenjati gumb za stvaranje novih objekata Æ otvorit će vam dijaloški okvir za izbor načina kreiranja novog objekta briše selektirani objekt

izbor načina prikaza u aktivnom dijelu prozora

MS Access prozora

• Ne miješajte Access Database alatnu traku s alatnom trakom baze podataka • Svaka Access datoteka (baza) ima ekstenziju .mdb • Postoji razlika između kontrolnih gumbi prozora baze i kontrolnih gumbi

11

Page 14: access prirucnik

Izaberite nekoliko različitih objekata, a ujedno probajte mijenjati načine prikaza u aktivnom dijelu prozora. Nekoliko objekata otvorite u razvojnom i izvršnom modu, čisto da uočite razliku. Zatvorite bazu Nortwind, ali nemojte izaći iz Accessa. Sada kad smo vidjeli od kojih objekata se sastoji MS Access baza i od kojih elemenata se sastoji prozor baze možemo krenuti dalje. Osnovu relacijske baze podataka čine tablice. Krenut ćemo od nove prazne baze u kojoj ćemo kreirati samo jednu tablicu Æ tablicu kontakt informacija (osoba, tel, fax, e – mail, ...)

2.1 TABLICE

[1] Stvorite novu bazu podataka Æ File Æ New Æ Blank Database... [2] Otvorit će vam se dijaloški okvir za spremanje baze (uočite razliku s ostalim aplikacijama iz

obitelji MS Office – pri otvaranju odmah odabirete ime i lokaciju buduće baze podataka) [3] Za lokaciju odaberite vaš USB key; kreirajte novi folder kojeg ćete nazvati

primjeri_Access, a u njega spremite bazu pod nazivom vj_1 klikom na gumb Create (ili s ENTER)

ovdje upisujete ime nove baze

Slika 2-4 Određivanje lokacije za novu bazu

Nakon što ste kliknuli na Create (ili potvrdili s ENTER) otvorit će vam se prozor baze podataka s imenom vj_1 u naslovnoj traci. Za sada vam se u aktivnom dijelu prozora ne nalazi niti jedan objekt.

[4] Ukoliko vam nije selektiran objekt Tables u traci objekata kliknite na njega

12

Page 15: access prirucnik

[5] Na raspolaganju su vam tri mogućnoati u aktivnom dijelu prozora za kreiranje nove tablice Æ kreiranje u razvojnom modu (in Design view), kreiranje pomoću čarobnjaka (using wizard) i kreiranje unosom podataka (by enetring data)

[6] Izaberite prvu mogućnost brzim dvoklikom Æ in Design view

Slika 2-5 Kreiranje tablice u razvojnom modu

[7] U otvorenom dijaloškom okviru Table redom upisujete nazive za pojedina polja vaše tablice (Field name), određujete im tip (Data type) i opcionalno dajete opis polja

[8] U prvo polje pod ime upišite ID_kontakta, a kao tip za njega odaberite AutoNumber; pod opisom napišite Æ identifikacijsko polje za jedinstvenost zapisa

Slika 2-6 izgled dijaloškog okvira Table

13

Page 16: access prirucnik

To polje će nam poslužiti kao primarni ključ (Primar key) za ovu tablicu. Tip podatakaAutoNumber je posebni tip podataka razvijen u MS Accessu i predstavlja cjelobrojni tip podatakakoji se samostalno inkrementira (povećava za jedan) pri unosu svakog novog zapisa Æ ovim sigurno ne mogu postojati dvije iste vrijednosti. Što podrazumijevamo pod jedinstvenost zapisa?Vrlo je lako shvatiti Æ u našoj tablici kontakata vrlo je vjerojatno da možemo imati dvije osobe koje imaju isto ime i prezime Æ pridjeljivanjem različitog ID_ kontakta svakom od njih osigurali smo da se ne miješaju podaci ove dvije osobe, a istom logikom i ostalih. Vrijedno je istaknuti sljedeće stvari:

Primarni ključÆ sastoji se od jednog ili više polja, a služi kako bi osigurali jedinstvenost svakog zapisa u tablici. Tip podataka u polju (Data type) Æ određuje tip podataka u polju (Tekst, Datum, Broj, Automatski inkrement...) Svojstva polja se određuju u kartici General Æ veličina (Field size), ime koje će se koristiti (Caption), indeksirano (Indexed)...

[9] Unesite dalje redom podatke prikazane donjom tablicom:

Field Name Data Type Description 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

[10] Definirajmo primarni ključ za našu tablicu Æ kliknite mišem na sivu kućicu lijevo od naziva polja Id_kontakta Æ označit će se cijeli redak Æ kliknite na ikonu Primary key

koja se nalazi na Access Database alatnoj traci (ili preko izbornika Edit Æ Primary key)

s oba načina označeno polje postavljate za

primarni ključ

Slika 2-7 Postavljanje primarnog ključa

14

Page 17: access prirucnik

U kućici pored označenog polja pojavit će se oznaka ključa koja ukazuje da je polje označeno kao primarni ključ.

� Primarni ključ može biti sastavljen od jednog ili više polja (označite ih držeći pritisnutu tipku CTRL)

� Ukoliko niti jedno polje niste postavili za primarni ključ, Access će automatski pri spremanju tablice postaviti polje s oznakom ID i tipa AutoNumber za primarni ključ

[11] Sada možemo spremiti tablicu Æ File Æ Save Æ u dijaloški okvir upišite ime tablice Tab_kontakti

Slika 2-8 Dijalog za spremanje tablice

Malo ćemo se poigrati nekim svojstvima podataka u poljima. Prvo ćemo polju koje smo proglasili za primarni ključ pod svojstvom Caption upisati Kontakt br.

[12] Kliknite u polje ID_kontakta Æ pod svojstvom Indexed izaberite Yes(No Duplicates) Æpod svojstvom Caption upišite Kontakt br.

Upisivanjem naziva pod Caption osigurali smo da će se upisani naziv (Kontakt br. ) pojavljivati na obrascima i nazivu tog polja u tablici u izvršnom modu, a ne naziv polja ID_kontakta. Polja Ime, Prezime, Grad i Adresa ćemo staviti da budu obavezna (svojstvo Required), zabranit ćemo nultu duljinu (svojstvo Allow Zero Length) i zbog bržeg pretraživanja uključit ćemoindeksiranje s dozvoljenim ponavljanjima (možemo imati više osoba istog imena, istog prezimena, istog imena i prezimena, mogu biti iz istog grada, a više osoba može živjeti na istoj adresi). Indeksiranje u tablicama nam omogućuje brže pretraživanje, dohvaćanje i sortiranje zapisa po dotičnom polju, ali može usporiti ažuriranje podataka. Za kraj ćemo polju Grad ograničiti duljinu na 40 znakova (svojstvo Field size Æ upišete željenuvrijednost) Æ kod ograničavanja duljine polja budite izuzetno oprezni.

Svojstava ima previše i ovise o tipu podataka u polju, tako da ih nećemo sve objašnjavati. Uočite da klikom na pojedino svojstvo u desnom dijelu okna dobivate njegov kratki opis. S većim brojem svojstava upoznat ćemo se tijekom ostalih primjera.

15

Page 18: access prirucnik

[13] Spremite napravljene promjene klikom na ikonu Save Æ izađite iz Design moda

U aktivnom dijelu prozora sada bi trebali imati jednu tablicu koja se naziva Tab_kontakti. Ovdje smo namjerno napravili dvije pogreške, a to je da smo polje Telefon i fax stavili da budu tipa Number. Probajmo popuniti našu tablicu s nekoliko podataka da vidimo kako će se odraziti naše greške. Pretpostavimo da smo odlučili broj telefona (faxa) zapisivati u obliku 023212457.

Slika 2-9 Izgled prozora baze podataka s kreiranom tablicom

[14] Napravite brzi dvoklik na tablicu Tab_kontakti (ili je označite, pa kliknite na ikonu Open

na alatnoj traci baze podataka) [15] Unesite proizvoljno nekoliko podataka

oznaka trenutno označenog zapisa

oznaka mjesta za novi unos traka s navigacijskim gumbima

Slika 2-10 Izgled tablice u izvršnom modu

Vrlo brzo ćete uočiti da vam se svaki uneseni telefonski broj (fax) zapisuje bez početne nule (npr. iako ste unijeli 023 zapiše vam se 23 Æ krivi podatak). Kao što smo već rekli to nam se događa jer smo odredili krivi tip podataka za ta polja Æ trebalo je umjesto Number staviti Text. Spomenutu

16

Page 19: access prirucnik

grešku ispravit ćemo otvaranjem tablice u razvojnom modu, ali prije toga spremite unesene zapise (ovaj put kombinacijom tipki CTRL + S Æ zatvorite tablicu).

[16] Otvorite tablicu u razvojnom modu Æ označite tablicu Æ kliknete na ikonu [17] Promijenite tip podataka poljima Telefon i fax u Text [18] Spremite načinjene promjene [19] Ponovno otvorite tablicu u izvršnom modu i izmijenite podatke za telefon i fax [20] Unesite podatke za još nekoliko osoba [21] Spremite tablicu

Sljedeći zapis

Skok na zadnji zapis

Unos novog zapisa

Ukupni broj zapisa

Povratak na prethodni zapis

Povratak na prvi zapis

Numerički tip podataka (Number) ćemo koristiti za polja koja se isključivo mogu tretirati kao brojevi (nad njima se mogu vršiti matematičke operacije)!

Slika 2-11 Navigacijska traka

Promjenu visine redaka i širine stupaca u tablici vršite kao i u MS Excelu. Brisanje zapisa možete napraviti na nekoliko načina. Označite zapis, a potom pritisnete tipku DELETE; označite zapis i

kliknete na ikonu Delete Record ; napravite desni klik mišem na zapis kojeg želite izbrisati i potom iz skočnog izbornika izaberete naredbu Delete Record. Više zapisa brišete istom logikom samo ih označite držeći pritisnutu tipku CTRL. Budite oprezni prilikom brisanja pojedinog zapisa jer je riječ o nepovratnoj akciji! Svaki put pri brisanju će vam se pojaviti poruka koja vas upravo upozorava na tu činjenicu Î tek nakon potvrdnog odgovora zapis biva izbrisan iz tablice:

Slika 2-12 Dijalog za potvrdu brisanja zapisa

Ako želite izbrisati cijelu tablicu označite je u aktivnom dijelu prozora baze i pritisnete tipku DELETE. Pri tom će vam se javiti sličan dijaloški okvir upozorenja kao u prethodnom slučaju.

Drugi način je preko skočnog izbornika, a treći klikom na ikonu za brisanje objekata .

17

Page 20: access prirucnik

Da bi naša tablica kontakata bila potpunija želimo dodati polje za unošenje datuma rođendana osobe koje neće biti obavezno za unos.

[22] Otvorite tablicu u Design modu [23] U prvo polje ispod polja fax upišite Datum rođenja i za tip podataka izaberite Date /

Time, a format neka bude General Date

Prvo što vam pada na pamet je kako će osoba koja unosi podatke (vi ili netko 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 spreč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.

[24] U kartici General kliknite na Input Mask i potom na gumb koji će se pojaviti pored tog svojstva

[25] Pojavit će vam se dijalog čarobnjaka za stvaranje ulazne maske Î izaberite Short Date i potom kliknite na gumb Edit list Î popunite otvoreni dijalog kao na slici ispod

Slika 2-13 dijalog za definiranje korisničkih ulaznih maski

Nakon klika na CLOSE gumb u listi čarobnjaka bi vam se trebala pojaviti ulazna maska koju ste upravo kreirali (rođendan) Î izaberite tu masku i kliknite na Finish.

[26] Spremite načinjene promjene u tablici [27] Otvorite tablicu i unesite nekim osobama datume rođenja Î uočite kako vam ulazna

maska točno diktira oblik unosa Î spremite unesene podatke

Nakon ovog uvoda o tablicama trebali bi biti u stanju samostalno kreirati tablice i raditi s njima u Accessu. Prava snaga relacijskih baza podataka direktno proizlazi iz njihovog naziva, a to je mogućnost stvaranja relacija ili veza između dvije ili više tablica. Da bi mogli stvoriti relacije potrebno je imati kreirane barem dvije tablice.

18

Page 21: access prirucnik

2.2 Relacije u bazi

Osnovna greška koju možete napraviti pri izradi baze podataka je prenijeti način razmišljanja iz Excela, jer ćete u tom slučaju svaki problem rješavati na način da ćete sve podatke nastojati utrpati u samo jednu tablicu. To je protivno osnovnoj preporuci pri izradi relacijskih baza o dijeljenju domene problema u manje cjeline tzv. entitete i stvaranju veza među njima. Sjetimo se malo našeg primjera s tablicom kontakata. Uzet ćemo samo jedan najčešći slučaj, a to je da neke osobe mogu imati veći broj telefona (kućni, posao, mobitel…). Kako bi se to odrazilo na našu tablicu Æ za svaki broj trebali bi stvoriti cijeli zapis, tj. ponoviti sve podatke osobe, a samo mijenjati brojeve telefona.

Slika 2-14 Izgled tablice nakon novih unosa

Pretpostavili smo da samo dvije osobe imaju dodatne telefonske brojeve. Već i iz ovog jednostavnog primjera možete zaključiti da nepotrebno ponavljamo veliki broj podataka kako bi dodali samo jedan novi vezan uz istu osobu (duži unos i stvaranje suvišnih podataka Æredundancija podataka). Neka nas sada zanimaju podaci baš za osobu koja ima veći broj telefona. Izvršit ćemo filtriranje podataka tablice po tom zapisu.

[1] Otvorite tablicu u izvršnom modu i dodajte dvjema osobama još brojeve mobitela (stvarate cijela dva nova zapisa)

[2] Kliknite na prezime osobe za koju znadete da ima dva unosa i potom na ikonu Filter By Selection sa Access Database alatne trake

[3] Nakon što dobijete rezultat pretraživanja po postavljenom filtru isključite ga klikom na ikonu Remove Filter Æ spremite načinjene promjene u tablici

Očigledno sve dobro funkcionira izuzev što rezultati nisu previše pregledni i što nepotrebno ponavljate veliki broj podataka. Zamislite što bi bilo da vaša kontakt lista sadrži popis od recimo 300 osoba i da svaka od njih ima po tri telefona (kućni, posao i mob). Nameće se zaključak da bi puno elegantnije rješenje bilo kada bi podatke podijelili u dvije tablice. Jedna tablica bi sadržavala telefonske brojeve, a druga sve ostale podatke o osobama. Još ih je potrebno povezati po nekom

19

Page 22: access prirucnik

ključu i problem je riješen Æ došli smo do relacijske baze podataka. Imamo dva entiteta i jednu relaciju. Entitete ćemo nazvati telefon i osoba.

ENTITET je dio stvarnog ili apstraktnog svijeta koji je opisan određenim brojem svojstava koje predstavljamo podacima (osoba, ustanova, predmet, dokument, …)

Veze koje stvarate u relacijskim bazama podataka mogu biti:

• Jedan na jedan (one – to – one) Æ odnos ili veza koja nam jednom zapisu iz jedne tablice pridružuje točno jedan zapis iz druge tablice 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 tablicu

• Jedan na više (one – to – many) Æ jednom zapisu iz jedne tablice pripada više zapisa u drugoj tablici, ali jednom zapisu iz te druge pripada toč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

• Više na više (many – to – many) Æ zapisu iz jedne tablice pridruženo je više zapisa iz druge i obrnuto. Ovaj tip veze je moguć samo kada se definira treća tablica tzv. spojna tablica čiji se primarni ključ sastoji od dva polja - stranih ključeva prve i druge tablice (primjerice jedna narudžba može imati više proizvoda, a istovremeno svaki proizvod se može pojaviti na više narudžbi)

Definiciju primarnog ključa smo već dali, tako da nam preostaje još definirati strani ključ: Strani ključ (Foreign key) Æ je polje koje jednoznačno određuje zapis iz druge tablice. U jednoj tablici možemo imati više stranih ključeva. Drugim riječima preko stranih ključeva ostvarujemo veze između tablica. Veza po primarnim ključevima bi dala 1:1 tip veze Æ izbjegavajte ovo! Krenimo mi na stvaranje naše male relacijske baze. Ta baza se sastoji od dva entiteta (telefon koji reprezentira brojeve telefona osoba i osoba koji predstavlja sve ostale podatke vezane uz pojedinu osobu – adresa, grad, mail, …). Složili smo se da uz jednu osobu može biti vezano više telefonskih brojeva. Prikažimo model entiteti - veze za tu bazu:

OSOBA #ID_kontakta • Ime • Prezime • Grad • Adresa o e – mail o fax o datum rođenja

# ID_kontakta

1:n TELEFON #ID_telefona • Tel_broj

Slika 2-15 model entiteti – veze naše baze

20

Page 23: access prirucnik

Samo 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 skripte. Dat ćemo samo kratke upute koje vam mogu biti dovoljne pri stvaranju i razumijevanju takvih modela:

o Nacrtate sve entitete koji čine vašu bazu o U njima navedete svojstva koja ih opisuju

o Primarni ključ označite s znakom ljestve # o Svojstva koja su obavezna označite sa znakom •o Svojstva koja su opcionalna označite sa znakom ο

o Za vrstu veze upotrebljavajte sljedeće oznake (1:1 za one to one; 1:n za one to many i n:n za many to many vezu); vodite računa s koje strane ide n kod 1:n veze

o 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

o Ispod linije koja označava vezu navedite ključ po kojem su entiteti povezani

[1] Kreirajte novu bazu na vašem USB – u unutar mape primjeri_Access i nazovite je relacije_vj2

[2] Stvorite dvije tablice na osnovu prethodnog modela (tablica osoba i tablica telefon)

Veze se kreiraju klikom na gumb Relationships na Access Database alatnoj traci. Otvorit će vam se dijaloški okvir u kojem određujete što ćete povezivati Æ u ovom slučaju mi ćemo se ograničiti samo na tablice:

Za stvaranje veza među upitima Za stvaranje

veza između tablica i upita

Za stvaranje veza među tablicama

Slika 2-16 Dijalog za određivanje objekata za stvaranje veza

S ponuđene liste označite tablice među kojima želite stvoriti vezu (možete koristiti CTRL za označavanje na preskok ili SHIFT za označavanje niza) Æ kliknete na Add kako bi tablice bile dodane u prozor za stvaranje veza. Tablicu (upit) možete dodati i brzim dvoklikom na njeno ime. Postupak onda ponavljate potreban broj puta dok ne uključite sve željene objekte Æ ovaj dijalog zatvarate klikom na Close gumb.

21

Page 24: access prirucnik

[3] U otvorenom prozoru Relationships tablice možete pomicati principom drag 'n' drop, a dimenzije im mijenjati kao i bilo kojem objektu u Windowsima Æ postavite ih na željenu poziciju

1 2

Povucite i otpustite kako bi

stvorili vezu

Slika 2-17 Izgled prozora za stvaranje veza (Relationships) (1) i dijalog za uređivanje veza (2)

Vezu ostvarujete na način da odvučete polje po kojem su entiteti povezani iz jedne tablice u drugu. Prikazat će vam se dijaloški okvir Edit Relationships za uređivanje te veze. Na samom vrhu tog dijaloga navedene su tablice (upiti) koje su u vezi, a odmah ispod naziv polja po kojem su povezani. U jednoj tablici to polje je primarni ključ, a u drugoj strani. Posebno su nam interesantne opcije određene s check boxovima. 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 Æunijeli broj telefona, a nismo 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 promijeni primarnog ključa u glavnoj tablici automatski zamijene polja povezanih zapisa u drugoj tablici s novom vrijednosti. Posljednja opcija kaskadnog brisanja povezanih zapisa (Cascade Delete Related Records) omogućava automatsko brisanje svih zapisa nakon brisanja glavnog (primarnog) zapisa Æ kada obrišemo osobu iz tablice 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.

[4] Uključite sve tri opcije [5] Kliknite na gumb Create kako bi stvorili 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 temelje na spajanju primarnih ključeva dviju ili više tablica se automatski proglašavaju one – to – one vezama, jer drugačije nije ni moguće. Korisno je istaknuti da prilikom realiziranja veza many – to – many nećete biti u stanju direktno to ostvariti, već ćete stvarati jednu dodatnu tablicu tzv. tablicu za premoštavanje čime se veza razbija na niz one – to – many odnosa. Pored nametanja referencijalnog integriteta možete utjecati i na tip veze preko gumba Join Type…

22

Page 25: access prirucnik

Slika 2-18 Izgled prozora relacija nakon uspostavljene veze između tablica

Strani ključ u tablici ne može biti tipa AutoNumber kao i primarni ključ, jer je on vezan s vrijednošću koja dolazi iz primarne tablice – može biti bilo koja vrijednost uz mogućnost ponavljanja Æ bit će tipa Number, a duljine Long Integer!

[6] Spremite napravljene veze [7] Zatvorite prozor s vezama

Brisanje relacije možemo vršiti na više načina. Otvorite prozor s relacijama (Tools ÆRelationships…) označite vezu koju želite obrisati i pritisnete tipku DELETE ili napravite desni klik mišem na vezu i iz skočnog izbornika 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 skočnog izbornika izaberete Edit Relationship…

[8] Otvorite tablicu Tab_osoba u izvršnom modu i unesite proizvoljne podatke za nekoliko osoba

[9] Uočite znak plusa koji se javlja pored polja ID_kontakta Î kliknite na znak plusa osobi kojoj želite unijeti broj telefona Î unesite nekima i više brojeva (kućni, posao, mobitel)

Slika 2-19 Unošenje podataka u vezane tablice

[10] Spremite načinjene promjene u tablici Tab_osoba

23

Page 26: access prirucnik

[11] Otvorite sada tablicu Tab_telefon u izvršnom modu Î imat ćete prikaz sličan ovom na slici ispod:

Slika 2-20 izgled tablice Tab_telefon

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 tablicama, a omogućuje nam da izbjegnemo baš ovakve situacije. Do njega dolazimo preko kartice Lookup u razvojnom modu tablica. Bilo bi korisno da umjesto ID_kontakta imamo ime i prezime osobe. Drugim riječima za svaki ID_kontakta u tablici Tab_telefon vezat ćemo i prikazati pripadno ime i prezime.

[12] Otvorite tablicu Tab_telefon u razvojnom modu [13] Kliknite na polje koje predstavlja strani ključ (ID_kontakta) [14] 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.

[15] Izvor podataka koji će se prikazivati određuje se svojstvom Row source Î kliknite na strelicu pored i za izvor izaberite tablicu Tab_osoba

Slika 2-21 Odabir izvora podataka koji će se prikazivati

[16] Svojstvo Bound Column označava za koji stupac se vezuju podaci Î ostavite vrijednost 1, jer je ID_kontakta upravo u prvom stupcu

[17] Column Count označava koliko stupaca uključujemo – trebamo uključiti ID_kontakta + ime + prezime. Kako su to uzastopni stupci i ujedno je riječ o prva tri stupca, dovoljno je postaviti da se broje samo tri stupca.

[18] Column Heads određuje hoće li se u našem combo boxu prikazivati zaglavlja stupaca iz izvorne tablice (roditeljske – parent tablice) Î postavite na NO

24

Page 27: access prirucnik

[19] Pod Column Widts zapravo leži iluzija koju ćemo stvoriti. Postavit ćemo širinu prvog stupca na nula, a ostala dva na 4cm (upisujete samo brojeve bez jedinica). Na ovaj način nećemo vidjeti prvi stupac ID_kontakta već samo ime i prezime. Nama se prikazuje ime i prezime osobe, a računalo radi s brojem – ID_kontakta.

[20] List Width određuje širinu liste (combo boxa) Î postavite je na 6cm (možete ostaviti i automatsku širinu određenu po defaultu)

[21] Limit to List određuje može li korisnik unijeti vrijednost koja nije u listi. Kada se Bound Column (vezani stupac) ne prikazuje kao prvi stupac combo box automatski djeluje kao da je zabrana na unos postavljena Î ostavite YES

[22] Prebacite se na karticu General i pod Caption upišite Ime i prezime [23] Spremite promijene načinjene u Design modu [24] Otvorite tablicu u izvršnom modu da vidite napravljene promijene

Slika 2-22 Rezultat promijene pogleda među tablicama

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 tablicu koja će definirati vrstu telefonskog broja. Tablica će imati samo dva polja (id_vrste_tel_broja i vrsta_tel_broja), a bit će povezana s tablicom Tab_telefon preko ključa id_vrste_tel_broja).

� Skicirajte novi model entiteti – veze � Kreirajte novu tablicu 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 duljine 15 znakova

� U tablicu Tab_vrsta_tel_broja redom unesite podatke Æ mob; kućni; posao � U tablici Tab_telefon dodajte polje koje predstavlja strani ključ Æ id_vrste_tel_broja

(vodite računa kojeg tipa podataka to polje treba biti u toj tablici)

Sada kada ste kreirali novu tablicu i u Tab_telefon dodali strani ključ preostaje nam još uspostaviti nove veze.

[25] Preko izbornika Tools Æ Relationships… otvorite prozor relacija

25

Page 28: access prirucnik

[26] Otvorite dijalog za dodavanje tablica u taj prozor Æ klikom na ikonu Show Table… s alatne trake Relationship ili napravite desni klik mišem bilo gdje na površinu relacijskog prozora i iz skočnog izbornika izaberite Show Table…

Slika 2-23 Dodavanje nove tablice u relacijski prostor za stvaranje veza

[27] U otvorenom dijalogu izaberite novostvorenu tablicu i dodajte je u relacijski prostor klikom na gumb Add

[28] Stvorite vezu između tablica Tab_telefon i Tab_vrsta_tel_broja povlačenjem pripadnog polja iz jedne u drugu tablicu

[29] U dijaloškom okviru Edit Relationships koji vam se pojavi uključite opciju nametanja referencijalnog integriteta (Enforce Referential Integrity)

Slika 2-24 Izgled relacijskog prostora nakon načinjenih promjena

26

Page 29: access prirucnik

[30] Spremite načinjene promjene u relacijskom prostoru (CTRL + S)

Otvorite li tablicu Tab_telefon u izvršnom modu vidjet ćete da je nužno mijenjati pogled među tablicama Tab_telefon i Tab_vrsta _tel_broja. Prisjetimo se da se promjena pogleda radi preko kartice Lookup u Design modu tablice.

[31] Otvorite tablicu Tab_telefon u razvojnom modu i kliknite na polje id_vrste_tel_broja [32] U kartici Lookup napravite promijene prema donjoj slici:

Slika 2-25 promjena pogleda među tablicama

[33] Prebacite se u karticu General i pod Caption stavite naziv vrsta_telefona [34] Spremite načinjene promjene i potom tablicu otvorite u izvršnom modu [35] Popunite podatke za vrstu telefona i potom spremite načinjene promjene

Combo box za izbor vrste telefona

Slika 2-26 Izgled tablice Tab_telefon nakon promijenjenog pogleda

[36] Popunite bazu kontakata proizvoljnim podacima tako da imate podatke bar za 15 osoba [37] Nakon popunjavanja dodatnim podacima zatvorite bazu [38] Kopirajte vašu bazu relacije_vj2 u novu mapu baze koju ćete načiniti unutar vaše mape

primjeri_Access

27

Page 30: access prirucnik

[39] Preimenujte kopiranu bazu u upiti_vj3

Došli smo do dijela kada iz naše baze želimo izvlačiti neke informacije i vršiti razne manipulacije s točno željenim setom podataka. Tu na scenu stupaju upiti – eng. Queries.

2.3 Upiti

Organizacija podataka u relacijskim bazama u vidu odvojenih tablica 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 pohranjeni u više različitih tablica. Međutim, upravo su upiti namijenjeni za ispunjavanje takvih ili sličnih zadaća i predstavljaju koristan alat puno korisniji od klasičnih filtera. Upiti korisniku omogućavaju povezivanje podataka iz jedne ili više tablica, sortiranje podataka na novi način, izračunavanje novih polja temeljem poznatih i filtriranje nekog seta podataka po točno željenim kriterijima, pa čak i puno više od toga. Pri tom razlikujemo dva tipa upita:

� Select Queries (Upiti izdvajanja) – samo selektiraju podatke i izdvajaju ih po korisnikovim kriterijima

� Action Queries (Akcijski upiti) – mogu mijenjati podatke u tablicama Æ umetati nove, mijenjati ili brisati već postojeće

Jednom kada kreirate upite s njima možete raditi kao s ostalim tablicama u bazi. Zbog toga se često nazivaju i virtualne tablice. Rezultati koje daju služe kao izvori podataka za obrasce (Forms) ili izvješća (Reports). Skup zapisa koji nastaju kao rezultat pokretanja upita nazivaju se recordset (zabilježeni skup zapisa). Ako ga možete uređivati onda se naziva dynaset (dinamički skup zapisa), a ako ne snapshot (snimka zapisa).

Upiti nam služe za dohvaćanje i manipulaciju informacija koje su sastavljene od cijelog ili dijela skupa zapisa jedne ili više tablica. Time nam pružaju različite poglede na isti set podataka.

Poznavanjem osnovnih pojmova vezanih uz upite možemo krenuti i na njihovu izradu u Accessu. U tom smislu koristit ćemo se kopiranom bazom upiti_vj3. Zbog važnosti koju imaju u bazama podataka nećemo ih izrađivati korištenjem čarobnjaka, premda je i to moguće. Puno je bolje naučiti njihovo kreiranje iz razvojnog moda, pa čak i kada je riječ o iznimno jednostavnim upitima. Kreiranje upita na ovaj način omogućava određivanje polja koja želite vidjeti kao i postavljanje kriterija nad poljima kako bi dobili željenu informaciju. Recimo da nas zanimaju sljedeće informacije Æ upitom želimo izdvojiti sve osobe iz Zagreba s navedenim mail adresama i brojevima mobitela.

1) Otvorite bazu podataka upiti_vj3 2) Iz trake objekata u prozoru baze izaberite Query

28

Page 31: access prirucnik

3) Kako smo rekli, upit ćemo kreirati u razvojnom (Design) modu (pogledu) Æ napravite brzi dvoklik mišem na Create query in Desgn view u aktivnom dijelu prozora baze

4) Access će nam automatski otvoriti prozor za kreiranje upita s tzv. Query mrežom i prozor Show Tables iz kojeg izabirete tablice čiji podaci će biti uključeni u upit

1

2

Dodajemo tablice čiji

podaci služe za stvaranje upita

Mreža upita za određivanje polja i kriterija koji tvore upit

Slika 2-27 Kreiranje upita preko Design pogleda

Access odmah prepoznaje koja polja su povezana na koji način temeljem prethodno uspostavljenih relacija. U ovom slučaju izabrali smo sve tri tablice iz razloga što su nam potrebna polja iz svake od njih.

5) Napravite brzi dvoklik na polje ID_kontakta iz tablice Tab_osoba ili ga odvucite na željenu poziciju u mreži upita

6) To isto ponovite s poljima Ime, Prezime, Grad i e – mail iz iste tablice 7) Iz tablice Tab_telefon izdvojite polje Tel_broj 8) Iz tablice Tab_vrsta_tel_broja u upit uključite polje vrsta_tel_broja

Uključili smo sva polja koja su nam potrebna za stvaranje upita. Slijedi nam određivanje kriterija Æželimo izdvojiti samo osobe iz Zagreba Æ pod Criteria: za polje Grad ćemo staviti "Zagreb" što je identično ispitivanju uvjeta = "Zagreb"; zanimaju nas samo brojevi mobitela, pa ćemo kriterij za polje vrsta_tel_broja postaviti "mob". U mreži tablice pod imenom polja možemo definirati i

29

Page 32: access prirucnik

zamjensko ime (alias) koje će se koristiti umjesto stvarnog imena polja u tablici. Zamjensko ime definiramo tako da ispred stvarnog imena upišemo novi naziv nakon čega slijedi znak dvotočke.

9) Postavite zamjensko ime Kontakt broj za polje ID_kontakta i Telefon za polje id_vrste_tel_broja

Sjetite se da smo spomenuli kako upite možemo smatrati virtualnim tablicama. To će značiti da će raspored stupaca u mreži upita odgovarati stvarnom rasporedu stupaca virtualne tablice (upita). Promjenu širine stupaca, zamjenu mjesta stupcima i brisanje pojedinog stupca u mreži upita vršite potpuno analogno kao i u Excel tablicama.

10) Zamijenite mjesta stupcima s poljima Ime i Prezime

Korisno bi bilo da imamo uključeno sortiranje po prezimenima i imenima.

11) Pod polja Prezime i Ime uključite uzlazno sortiranje (Ascending)

Slika 2-28 Sortiranje po polju Prezime

Preko check boxa Show određujemo hoće li se dotično polje prikazati u upitu. U ovom slučaju želimo da sva polja budu vidljiva. Nakon svih učinjenih zahvata mreža upita bi vam trebala biti popunjena na sljedeći način:

Slika 2-29 Izgled mreže upita nakon popunjavanja svih podataka

Svi kriteriji koji se nalaze u istom retku odgovaraju vezanju s logičko i (AND), ko ili (OR) dok redanje kriterija u svim redcima ispod odgovara vezivanju s logič

Pri kreiranju složenih upita ne morate se ograničiti samo na kreiranje upita iz tablica, već ih možete kreirati iz drugih upita, te kombinirano iz tablica i postojećih upita. Uostalom ovo je direktno vidljivo i iz dijaloškog okvira Show Table. Pokretanje upita iz Design pogleda direktno možete

30

Page 33: access prirucnik

izvršiti naredbom Run . Ukoliko ste zadovoljni spremanje upita vršite na način kao što ste spremali tablice. Ime upita upisujete u dijalog sličan onom pri spremanju tablica. Inače upite u izvršnom modu pokrećete potpuno analogno kao što ste otvarali tablice.

12) Spremite upit pod imenom Up_Zg_mail_mob

Zgodno je da u svakom trenutku nakon "testiranja" upita možete dodatno uključiti neku novu tablicu (upit) preko ikone Show Table , ali naravno samo dok ste u Design pogledu. Ne zaboravite i famozni desni klik! Što je još interesantnije možete po volji dodavati nova polja ili brisati stara, mijenjati kriterije, dodavati nove ili brisati stare. Nakon svake promijene snimite upit i potom ga testirate sve dok ne dođete do željenog rezultata. Budući da nam kriteriji omogućavaju stvaranje složenih upita korisno je istaknuti logičke operatore koje koristimo u njima:

Kriterij Značenje 774 Podatak koji je jednak broju 774 (isto kao = 774) > 774 Podaci koji su veći od 774 < 774 Podaci koji su manji od 774 >=774 Podaci koji su veći ili jednaki od 774 <= 774 Podaci koji su manji ili jednaki od 774 <> 774 Svi podaci koji su različiti od 774 Like "Da*" Svi podaci koji počinju s Da "Zagreb" Or "Dubrovnik" Zagreb ili Dubrovnik

between 1/6/1978 And 1/8/1978

npr. svi rođeni između 1. lipnja 1978. i 1. kolovoza 1978.

� U tablici Tab_osoba namjerno stavite datum rođenja za tri osobe da bude između 1. srpnja, 1981. i 1. rujna, 1981.

� Spremite tablicu i potom načinite upit koji će izdvojiti sve osobe rođene u tom periodu � Za polje ID_kontakta koristite zamjensko ime Kontakt broj � Napravite silazno sortiranje po prezimenima i imenima osoba koje zadovoljavaju taj kriterij � Spremite upit pod nazivom Up_period_rođ

Sjetite se početka naše priče o zapisima koje upiti daju (recordset). Rekli smo da postoje dva tipa Ædynaset koje možete uređivati i snapshot koje ne možete uređivati. Pri kreiranju upita trebate voditi računa kakav tip zapisa želite da korisnik dobije. Ukoliko mu želite omogućiti promjenu podataka i unos novih recordset ćete postaviti da bude tipa dynaset, a u protivnom snapshot. Sve je ovo priča koja vam možda na prvi pogled nije jasna, ali nakon što sami podesite tip zapisa kojeg upit daje sve će vam biti puno jasnije. U biti po predefiniranim postavkama svi upiti koje ste kreirali su stvorili dynaset zapise. Da bi se u to uvjerili pokrenite zapis Up_Zg_mail_mob u izvršnom (korisničkom) modu i probajte promijeniti neke podatke za ime, prezime, mail i broj telefona, ali ne dirajte polje Telefon. Spremite načinjene promjene i otvorite tablicu s podacima Tab_osoba Æ sve načinjene

31

Page 34: access prirucnik

promijene su i ovdje zabilježene. Ništa neočekivano. Vratimo se na naš upit i u korisničkom modu za jednu osobu umjesto mob upišite mob_posao. Spremite načinjene promijene i zatvorite upit. Sada otvorite tablicu s podacima o vrsti telefona i vidjet ćete da umjesto mob sada imate mob_posao Æ to znači da su se svim osobama koji imaju mobitel podaci mob promijenili u mob_posao Æ ovo baš i nije ono što ste htjeli.

Promjena u upitu

Uzrokovala neželjene promjene u ostalim podacima

1

2a

2b

Slika 2-30 Dynaset tip zapisa u upitima može prozrokovati i neželjene promjene

Kada bi ponovno pokrenuli isti upit ne bi davao nikakav rezultat Æ bio bi prazan. Sasvim normalno ako se zna da je uvjet koji je postavljen glasio ="mob" Æ takav podatak više nigdje ne postoji (zamijenjen je s mob_posao) i rezultat upita je prazan skup podataka. Da bi izbjegli ovakve situacije trebate voditi računa o dvije stvari:

1) Da li upitom želite korisniku omogućiti da samo pregledava određene podatke – Select Query

2) Da li upitom korisniku želite omogućiti da utječe na te podatke (mijenja ih, briše, dodaje nove itd.) – Action Query

U slučaju da ste se odlučili da korisniku želite omogućiti samo uvid u podatke po određenim kriterijima kreirat ćete prvi tip upita. Kako ovo izvesti? Pa, radimo sve kao i do sada samo na kraju tip zapisa promijenimo u snapshot. Učinimo to za naša dva upita:

13) Otvorite upit Up_Zg_mail_mob u razvojnom modu

32

Page 35: access prirucnik

14) Napravite desni klik mišem bilo gdje na površini prozora upita i iz skočnog izbornika odaberite Properties… ili na alatnoj traci Query Design kliknite na ikonu Properties

15) Iz otvorenog prozora Query Properties promijenite Recordset Type iz Dynaset u Snapshot 16) Spremite upit i to isto ponovite s drugim upitom 17) Pokrenite oba upita u korisničkom modu

Promjena tipa zapisa u Snapshot onemogućava korisniku da utječe

na podatke

Slika 2-31 Promjena tipa snimljenog zapisa u upitu

Uočite da vam gumb za upis novog zapisa nije aktivno , a također vam se ne može pojaviti ni ikona koja označava mijenjanje zapisa . Isto tako nema slobodnog retka za upis novog zapisa pored kojeg se uvijek nalazi ikona . Dobili smo što smo htjeli Æ korisnik samo može pregledavati podatke izdvojene nekim kriterijem. Ovakav način postavljanja upita upisivanjem primjera kriterija u pripadne retke mreže upita naziva se Query By Example. Osim čistog izvlačenja informacija iz baze moguće je proširiti upite na način da izvršavaju određenu matematičku operaciju nad jednim ili više polja. Primjerice zamislimo da nas zanimaju podaci koliko svaka osoba ima telefonskih brojeva. Potrebno je kao i do sada kreirati upit izdvajanja koji će nam dati tražene informacije Æ tablice koje je potrebno uključiti za stvaranje 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 modu uključiti redak Total u mreži upita. Iz alatne trake s padajućim izbornicima iz izbornika View izaberite Totals.

Slika 2-32 Uključivanje retka za izračune u mreži upita

33

Page 36: access prirucnik

Pojavit će vam se redak Total koji je automatski postavljen na Group By (grupiraj po) što znači da se zapisi grupiraju po vrijednostima dotičnog polja. Kliknite na strelicu Group By polja Tel_broj i izaberite Count (pobroj) čime će vam se pobrojati telefonski brojevi za svaki kontakt koji imate u bazi.

Redak za izračune

Ugrađene funkcije

Slika 2-33 Određivanje izračuna po nekom polju

Testirajte upit (preko ikone Run ) i potom ga spremite pod nazivom Up_ukupno_telefona. Opis osnovnih ugrađenih funkcija prikazan je u donjoj tablici:

Tablica 2-1 Ugrađene Access funkcije

Funkcija Opis Group By Grupiranje rezultata upita po dotičnom polju

Sum Izračunava sumu svih vrijednosti u dotičnom polju i prikazuje rezultat u upitu

Avg Daje prosječnu vrijednost svih vrijednosti nekog polja Min izvlači minimalnu vrijednost u polju Max izvlači maksimalnu vrijednost u polju Count pobrojava koliko zapisa zadovoljava postavljeni kriterij First vraća samo prvi zapis koji ispunjava postavljeni kriterij Last vraća samo zadnji zapis koji ispunjava postavljeni kriterij Expression želite stvoriti polje za složeni izračun

Where Ukazujete Accessu da želite polje upotrijebiti za definiranje uvjeta, ali ga ne želite prikazati u rezultatu upita

34

Page 37: access prirucnik

Ako ste bili malo radoznaliji sigurno ste malo "prošarali" po Design View alatnoj traci upita i u njoj uočili ikonu Query Type pomoću koje možete birati kakav tip upita želite kreirati.

Slika 2-34 Izbor tipa upita

Do sada smo radili isklju čivo upite selekcije (S elect Query) podataka. Me đutim, u ovom trenutku naszanimaju mogućnosti i drugog tipa upita, a to su tzv. Crosstab Query (poprečni ili kriģni upiti). Takviupiti nam sluģe za grupiranje informaci je po dvije ili viġe kate gorija. Ġto bi to zna čilo u naġemkonkretnom primjeru? Sigurno neke osobe mogu imati viġe mobitela, veći broj telefona na poslu ili većibroj kućnih brojeva. Za ilustraciju ćemo pretpostaviti da neke osobe imaju dva ili viġe mobitela. Ono ġtoģelimo dobiti kao rezultat unakrsnog upita je da nam se izdvoje osobe koje imaju mobitele i da sepobroji koliko mobitela imaju.

18) Preko tablice Tab_osoba za nekoliko osoba unesite podatke za više mobitela 19) Prebacite se na mod za stvaranje novog upita u kojem trebaju biti uključene sve tri tablice

U ovom slučaju polja Prezime i Ime iz tablice 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 tablice Tab_osoba u novom polju naziva Osoba izvršit ćemo na sljedeći način:

Field: Osoba:[Tab_osoba.Prezime]&" "&[Tab_osoba.Ime]

Razmak osiguravate primjenom znaka navodnika. Bez znakova navodnika s razmakom između direktno bi dobili spojene stringove, npr.:

StipicaStipić

Ovaj operator će vam viġe puta dobro doći. No, nastavimo mi sa stvaranjem naġeg kriģnog upita:

20) Prvo polje u mreži upita kreirajte na gore opisani način primjenom operatora ampersand (&) 21) Promijenite tip upita iz Select Query u Crosstab Query preko ikone Query Type

35

Page 38: access prirucnik

U mreģi upita pojavit će vam se joġ dva dodatna retka Æ ve ć poznati Total i dosad nepoznatiCrosstab. Total nije potrebno objaġnj avati, ali koje su mogućnosti primjene retka Crosstab? U tomretku određujete ġto će biti redci, ġto će biti stupac u vaġem kriģnom upitu i koja vrijednost će seizračunavati i prikazivati u stupcima. Za naġ upit mreģa će imati sljedeći izgled:

Slika 2-35 Mreģa kriģnog upita

Kod križnog upita možete im ati više zaglavlja redaka ( Row Heading) po kojima se vrši grupiranje po redcim a, samo jedno zaglavlje za stupac ( Coloumn Heading) 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.

22) Testirajte upit i potom ga spremite pod nazivom Up_ukupno_mob

S ovim smo završili naš prvi dio susreta s upitima. U narednim poglavljima još ćemo se vraćati na njih kako bi upoznali mnogo naprednije mogućnosti koje nam nude, ali i zbog njihove važnosti koju imaju u bazama podataka. Ne zaboravite da još niste ni zakoračili u mogućnosti SQL – a čemu će biti posvećeno cijelo jedno poglavlje. Zanima vas kako napraviti korisničko sučelje u bazi? Dobro, no nemojte žuriti jer je vrijeme da ponovimo neke stvari koje smo do sada naučili.

� Tablice, Upiti, Forme i Izvješća predstavljaju osnovne objekte Access baze podataka.

� Tablice služe za pohranu strukturiranih podataka na organiziran način Æ osnovni gradivni

element relacijske baze podataka

� Entitet Æ sve ono što postoji u stvarnom ili apstraktnom svijetu o čemu možemo bilježiti

podatke (svakom entitetu odgovara jedna tablica)

� Primarni ključÆ jedno ili više polja koja osiguravaju jedinstvenost svakog zapisa u tablici

� Strani ključÆ polje koje jednoznačno određuje zapis iz neke druge tablice

36

Page 39: access prirucnik

� Relacije Æ veze među tablicama uspostavljene pomoću ključeva

� 1:1 (one – to – one) Æ veza koja se ostvaruje preko primarnih ključeva (izbjegava se)

� 1:n (one – to – many) Æ veza koja se ostvaruje preko stranog ključa (najčešći tip veze)

� n:n (many – to – many) Æ veza koja zahtjeva stvaranje dodatne (spojne) tablice kako bi se

ta veza razbila na 1:n veze (direktno nije dopuštena u relacijskim bazama)

� Referencijalni integritet Æ onemogućava unos podataka u vezanim tablicama koji nemaju

svoj primarni ključ

� Kartica Lookup u razvojnom modu TablesÆ za promjenu načina pogleda među tablicama

� Upiti (queries) Æ najčešće za dobivanje željenih informacija iz baze po korisnikovom

kriteriju; Æ testiranje upita Æ View Æ Design View (vraća nas nazad u razvojni mod

za eventualne izmjene)

� Select Query Æ upiti za izdvajanje informacija iz baze

� Action Query Æ akcijski upiti koji vrše neku akciju nad podacima (ažuriranje, brisanje…)

� Record set Æ zapis koji nastaje kao rezultat izvođenja upita

o Snapshot – record set koji se ne može mijenjati

o Dynaset – record set koji se može mijenjati

� Obrasci (Forms) Æ sučelje prema korisniku

� Izvješća (Reports) Æ prikaz informacija u prihvatljivom i razumljivom obliku za korisnika

(pogodni za ispis)

� Æ otvara objekt u izvršnom (korisničkom) modu

� Æ otvara objekt u razvojnom (design) modu

� Æ navigacijska traka za kretanje među

zapisima

� Svi objekti i sve promjene na svakom objektu se spremaju (primjerice CTRL + S ili )

� Access automatski sprema bazu podataka pri izlasku iz baze

� Svaka Access baza podataka se prepoznaje kao datoteka s ekstenzijom .mdb

37

Page 40: access prirucnik

1) Nabrojite osnovne objekte Access baze podataka?

2) Kratko opišite ulogu svakog objekta u bazi.

3) Što je primarni, a što strani ključ? Navedite i engleske nazive.

4) Na koji način se uspostavljaju veze među tablicama?

5) Koje su tri vrste veza u relacijskim bazama podataka i kako ih označavamo?

6) Jedna vrsta veze od te tri nije direktno dopuštena. O kojoj je riječ i kako taj problem

rješavamo?

7) Upiti za izdvajanje se nazivaju?

8) Upiti kojima korisnik na neki način utječe na podatke nazivaju se?

9) Kakve vrste zapisa mogu nastati kao rezultat upita?

10) Redak za izračune u mreži upita uključujete preko izbornika?

11) Redanje kriterija u istom retku mreže upita odgovara njihovom povezivanju kojim logičkim

operatorom?

12) Kriteriji koji se nalaze u različitim redcima mreže upita odgovaraju njihovom povezivanju s

kojim logičkim operatorom?

13) Jedan od ta dva logička operatora sužuje izbor podataka. O kojem je riječ?

14) Jedan od ta dva logička operatora proširuje izbor podataka. O kojem je riječ?

15) Kako se naziva operator &?

16) Za koji tip podataka je vezana njegova upotreba?

17) Field: Kolegij: [Tab_prof.profesor]&" "&[Tab_kolegij.naziv_kolegija] Æ Što

dobivamo kao rezultat ove operacije?

18) Izvršni (korisnički) način rada nam služi za kreiranje objekata (DA / NE)?

19) Korisnik radi s objektima baze isključivo u razvojnom načinu rada (DA / NE)?

20) Koja je uloga navigacijske trake?

21) Access automatski sprema cijelu bazu podataka (DA / NE)?

22) Koju ekstenziju dobivaju MS Access datoteke?

38

Page 41: access prirucnik

2.4 Obrasci (Forms)

Obrasci kao i upiti ne sadrže nikakve podatke, nego osiguravaju neku vrst "prozora" kroz koji možemo vidjeti tablice i upite. To znači da se kreiraju iz tablica ili upita. Odnosno kažemo da obrasci predstavljaju korisnički orijentirano sučelje prema podacima u bazi. Omogućuju vam kao kreatoru baze da odredite način i format pojavljivanja točno željenih podataka na zaslonu, kao i da dopustite korisniku određene zahvate nad podacima ili dodavanje novih.

? ?

Tab_1 Tab_2 Tab_3 Tab_4

obrasci

upiti

tablice

korisnici

Slika 2-36 Veze između tablica, upita i obrazaca

Obrasce je moguće napraviti na tri načina:

� Upotrebom čarobnjaka za obrasce (Form Wizard) � Alatima za automatsku izradu obrazaca (AutoForm) – slično čarobnjaku, ali bez pitanja � Ručnom izradom – najbolji način koji nam daje najveću slobodu pri izradi obrazaca

39

Page 42: access prirucnik

Napravit ćemo obrazac koji nam daje pregled kontakt informacija o osobi i mogućnost mijenjanja istih, odnosno unosa novih. Da bi obrazac mogli napraviti prvo je potrebno pripremiti potrebne informacije, tj. u ovom slučaju kreirati upit koji će izvlačiti imena i prezimena osoba i njihove telefone. Preko File Æ New Æ From existing file… otvorite bazu upiti_vj3 i u otvorenom dijalogu kliknite na gumb Create New Æ stvorit će vam se nova baza na istoj lokaciji s imenom upiti_vj31 koja je potpuna kopija vaše baze iz treće vježbe. Na kraju vježbe u kojoj ćemo se upoznati s obrascima samo ćemo preimenovati ovu bazu.

[1] Napravite upit koji će vam davati sve informacije o osobama i svim njihovim telefonskim brojevima Æ nazovite ga Up_svi_telefoni

[2] U prozoru baze u traci s objektima kliknite na Forms (Obrasci)

Prvo ćemo korištenjem čarobnjaka za izradu obrazaca kreirati obrazac koji nam daje pregled vrsta telefonskog broja i mogućnost unosa novog ili brisanja već postojećeg.

[3] Napravite brzi dvoklik na Create form by using wizard [4] Otvorit će vam se dijalog Form Wizard koji vas kroz nekoliko jednostavnih koraka vodi do

gotovog obrasca Æ u prvom koraku iz padajuće liste izaberite tablicu Tab_vrsta_tel_broja i iz nje izaberite oba polja za buduću formu

Prebacuje samo jedno

polje

Prebacuje sva polja tablice

ili upita

Birate iz jedne ili više tablica

ili upita

1

Slika 2-37 Dijalog čarobnjaka za izradu obrazaca

[5] Izaberite sva polja iz te tablice

40

Page 43: access prirucnik

[6] U sljedećem koraku čarobnjak vas pita kakav izgled da primjeni na vašu buduću formu Ænudi se nekoliko mogućnosti, ali vi za sada izaberite tabularni prikaz (Tabular)

[7] Dotjerivanje obrasca predefiniranim stilovima se vrši u sljedećem koraku (probajte mijenjati stilove i izaberite koji vam se najviše sviđa)

[8] U posljednjem koraku obrascu dodjeljujete ime Æ Ob_vrsta_tel Æ Finish

2

3

4

Slika 2-38 Koraci u stvaranju obrazaca primjenom čarobnjak za obrasce

Sada nam preostaje kreirati i drugi obrazac na potpuno isti način, ali ovaj put iz upita Up_svi_telefoni.

[9] Otvorite čarobnjak za izradu obrazaca [10] U prvom koraku iz padajuće liste izaberite upit Up_svi_telefoni i sva polja iz tog upita

Drugi korak će vam se malo razlikovati od prethodnog iz razloga što čarobnjak na osnovu podataka koje ste izabrali određuje način koji se njemu čini najprikladniji da podaci budu prikazani na obrascu. To podrazumijeva i tip obrasca koji će predložiti. Razlog zbog kojeg čarobnjak nudi ovakvo rješenje leži u činjenici da stvarate obrazac iz upita koji je nastao kao rezultat izdvajanja podataka iz više tablica Æ Tab_osoba i Tab_telefon .

[11] Izaberite Obrazac s podobrascima, a način prikaza po tablici Tab_osoba [12] Izgled podforme određujete u trećem koraku Æ izaberite tabularni prikaz [13] Sljedeći korak je već poznati izbor stila obrasca (uzorak pozadine, vrsta fonta, boja slova …)

41

Page 44: access prirucnik

[14] U posljednjem upisujete naziv za obrazac i njegov podobrazac Æ Osnovne informacije i telefon

Slika 2-39 Izbor načina prikaza podataka na budućem obrascu

Slika 2-40 Izrada forme s podformom upotrebom čarobnjaka za izradu formi

Sada bi u aktivnom dijelu prozora baze uz uključen prikaz objekata Forms trebali imati tri obrasca. Kreirali ste dva, a pojavljuju vam se tri obrasca u aktivnom dijelu. Vjerojatno mislite da je riječ o nekoj grešci, ali nije tako. Sjetite se samo da ste drugi obrazac kreirali kao obrazac s podobrascem,

42

Page 45: access prirucnik

a Access svaki podobrazac prikazuje odvojeno u aktivnom dijelu prozora i to je razlog zašto ih vidite tri.

[15] Pokrenite obrasce Ob_vrste_tel i Osnovne informacije u korisničkom modu.

Nameće vam se ideja da bi drugi obrazac trebalo malo drugačije organizirati Æ potrebno ga je otvoriti u razvojnom modu i napraviti željene zahvate:

[16] Prvo ćemo smanjiti veličinu polja koje prikazuje identifikacijski broj korisnika Æ napravite klik na text box Id_kontakta Æ pojavit će vam se hvataljke kojima možete mijenjati dimenzije na isti način kao što ste mijenjali npr. slikama u Word dokumentima

Oznaka text boxa

Slika 2-41Promjena širine text boxu

[17] Premjestite text box s prezimenom na način da bude u ravnini s text boxom imena Æ kada kliknete i držite pritisnutu tipku miša na željeni text box promijenit će vam se pokazivačmiša u oznaku ruke Æ odvucite text box na željenu poziciju

Slika 2-42 Promjena položaj text boxa na obrascu

Ukoliko vam se nisu vidjela neka slova u text boxovima ili njihovim nazivima (npr. umjesto Š imate znak | ili slično) tada je samo potrebno promijeniti vrstu fonta.

[18] Smanjite širinu naziva text boxova za Ime i Prezime Æ pazite ne text box sam nego samo njegov naziv

[19] Napravite desni klik mišem na text box Grad i iz skočnog izbornika izaberite Properties… [20] Promijenite Font Name u Tahoma Æ isto ponovite sa svim text boxovima [21] Povećajte širinu cijelog obrasca

Slika 2-43 Promjena širine obrasca

43

Page 46: access prirucnik

[22] Na sličan način povećajte veličinu podobrasca telefoni [23] Spremite sve načinjene promijene

Slika 2-44 Promjena dimenzija podobrascu

Trake za pomicanje u podobrascu u ovom slučaju vam nisu potrebne, a osim toga navigacijski gumbiu njemu mogu stvoriti pomutnju s navigacijskim gumbima glavnog obrasca. Da bi taj problem riješili dovoljno je isključiti trake za pomicanje (scroll bars) podobrasca i njegove navigacijske gumbe uz istovremeno osiguravanje automatske promijene dimenzija podobrasca.

[24] Otvorite obrazac Osnovne informacije u razvojnom modu

Kvadratić u gornjem lijevom kutu obrasca vam služi za mijenjanje svojstava obrasca / podobrasca. Da biste došli do dijaloga za mijenjanje svojstava trebate na njemu napraviti brzi dvoklik ili desni klik, pa iz skočnog izbornika izabrati Properties.

[25] Otvorite dijalog za promjenu svojstava podobrasca telefoni [26] Promijenite svojstva Scroll Bars iz Both u Neither i Navigation Buttons iz Yes u No Æ na

ovaj način smo isključili navigacijsku traku, te horizontalnu i vertikalnu traku za pomicanje [27] Ako vam nije uključena opcija automatske promijene veličine učinite to

44

Page 47: access prirucnik

[28] Spremite načinjene promjene i otvorite obrazac u korisničkom modu

1. Promijenite osnovne podatke za nekoliko osoba. 2. Promijenite broj telefona nekim osobama.

3. Promijenite vrstu telefona nekim osobama Æ npr. kućni u posao 4. Dodajte novi broj telefona za jednu nasumce izabranu osobu 5. Izbrišite jedan zapis Æ podatke za jednu osobu. 6. Razmislite na koji način još možete napraviti obrazac koji će vršiti istu funkciju – sjetite se da

se obrasci mogu izrađivati direktno i iz tablica

[29] Načinite obrazac primjenom čarobnjaka za obrasce iz navedene dvije tablice Æ iz tablice Tab_osoba uzimate sva polja, a iz druge tablice izostavite samo polje Id_kontakta

Gotov obrazac bi vam trebao imati izgled kao na slici ispod:

Slika 2-45 Izgled obrasca za pregled, unos i promijenu kontakt informacija

Kako na vrijednost ID_telefona ni ne možete utjecati taj text box vam ne treba biti vidljiv na obrascu. Ponovno se možemo poslužiti jednim trikom, a on se odnosi samo na promjenu svojstava Visible iz Yes u No za text box i za njegovu oznaku (labelu). Potom napravite novi raspored ostalih text boxova i njihovih oznaka.

45

Page 48: access prirucnik

1 2

3

Slika 2-46 Izgled gotovog obrasca

Sada slobodno možete dodavati nove telefonske brojeve, a da pri tom ne dobijete poruku o grešci. Čitav niz interesantnih stvari vezanih uz izradu obrazaca još uvijek nas čeka. Prije nego što krenemo dalje korisno je dati kratko objašnjenje pojedinih alata koje ćemo često ubuduće koristiti pri "ručnoj" izradi obrazaca. Većina alata su uobičajeno smještena u plutajućoj alatnoj traci Toolbox. Naravno da bi je mogli vidjeti trebate biti u modu izrade obrazaca (Design View). Ukoliko vam traka s alatima nije uključena napravite desni klik mišem na područje pored trake s padajućim izbornicima i iz skočnog izbornika izaberite Toolbox.

46

Page 49: access prirucnik

Slika 2-47 uključivanje alata za izradu obrazaca

Za selekciju objekata na

obrascu

Izrada gumba za

skretanje – on / off gumb

Za kreiranje akcijskih

gumbi i (npr. Delete Record)

Za automatsko pokretanje čarobnjaka pri jednostavnim

radnjama

Radio button – gumb za odabir

opcija koje se međusobno

isključuju (samo se jedna može

odabrati)

Umetanje slike – može biti i iz

same baze podataka

Kreiranje fiksnog teksta – labela Æ

za oznaku tekstualnih polja, naziva obrazaca ili kao napomene

Check box – gumb za odabir

većeg broja opcija

istovremeno (ne isključuju jedna

drugu)

Stvaranje nepovezanog

okvira (Unbound Frame) – za

prikaz objekata načinjenih u nekoj drugoj

aplikaciji

Stvaranje text boxa (tekstualno polje) Æ u njih je moguće upisivati

podatke ili mijenjati postojeće

Combo box – padajući

kombinirani popis vrijednosti uz

mogućnost izbora ponuđenih i

dodavanja novih

Vezani okvir – prikazuje podatke

iz same baze podataka

Stvaranje okvira (Framea)

kojim se više objekata

grupira po nekom pravilu

Stvara listu – nepromijenjeni

popis vrijednosti bez

mogućnosti dodavanja

novih

Prekid stranice Æ kod

prevelikih obrazaca koji se

ne mogu prikazati samo

na jednom ekranu

47

Page 50: access prirucnik

Obrasci s više Otvara popis kartica Æ

svaka kartica se može

sastojati od

Stvaranje podobrasca na

postojećem obrascu

Crtanje linija na obrascu

Crtanje pravokutnih

oblika na obrascu

ostalih objekata koje možete iskoristiti za

kreiranje više objekata obrasca

S ovim bismo završili uvod u rad s MS Accessom. U primjeru koji slijedi veći dio će biti ponovljen, a postepeno ćemo objasniti i neke nove stvari koje do sada nismo spominjali. Tu se prvenstveno misli na izradu parametarskih upita, upotrebu macro naredbi, ručnu izradu obrazaca i izradu izvješća koja uopće nisu obrađena. Drugim riječima, najzanimljivije tek slijedi!

48

Page 51: access prirucnik

3. PRIMJER – BANKA (uplate / isplate)

Želimo napraviti relacijsku bazu podataka koja omogućuje unos i pregled transakcija za neki bankovni račun. Svaki korisnik banke može imati jedan ili više različitih računa. Riječ može biti o tekućem računu, žiro, poslovnom, deviznom ili štednom računu. Tip računa odmah određuje pripadne iznose kamata, te mogućnosti transakcija. Po statusu korisnik računa može biti poduzeće, obrtnik, dioničko društvo ili pojedinac (građanin). Pored pregleda transakcija po postojećim računima, nužno je osigurati mogućnost i kreiranja novih. Pojednostavljeni model baze podataka prikazan je na slici ispod:

KO

RIS

NIC

I

BANKA

TRANSAKCIJE

RAČ

UN

I

informacije

upit

evidencija stanja i transakcija

Slika 3-1 Pojednostavljeni model baze podataka

Transakcije mogu biti uplate ili isplate. Sve transakcije se evidentiraju posebno, a za svaki račun postoji informacija o trenutnom stanju računa – saldu. Ograničit ćemo se samo na nekoliko vrsta transakcija:

A) UPLATE

a. Plaća b. Uplata doznakom c. Uplata na šalteru

B) ISPLATE

a. Isplata na šalteru b. Isplata po računu br. c. Bankomat (koji) d. Naknada za izdane čekovne blankete e. Naknada za vođenje tekućeg računa f. Ček br.

49

Page 52: access prirucnik

Na osnovu svega rečenog možemo utvrditi da imamo sljedeće entitete:

� Korisnik � Račun � Vrsta računa � Vrsta korisnika � Transakcije

Prisjetimo se što je entitet. Entitet je stvarni ili idejni skup opisan nizom svojstava Î osoba, zgrada, institucija, mjesto, dokument, … Svaki entitet se u relacijskoj bazi podataka predstavlja tablicom, a njegova svojstva poljima tablice. Vodite računa da dijagram entiteti veze realizirate tek na osnovu dobro poznatog modela poslovanja korisnika baze, te definiranih informacijskih potreba i zahtjeva korisnika na svim nivoima. Prijenego krenemo s realizacijom baze potrebno je nacrtati njezin model entiteti – veze:

Slika 3-2 Dijagram entiteti veze za bazu podataka transakcija

Prvo ćemo realizirati tablice, a potom ih na osnovu gornjeg dijagrama povezati. U tablici korisnik naziv korisnika se upisuje samo za poduzeća, obrtnike i dionička društva. U tom slučaju upisuje se i matični broj tvrtke. Za građanske račune upisuje se ime i prezime korisnika i njihov jedinstveni matični broj. Ostali podaci iz te tablice su jasni.

50

Page 53: access prirucnik

[1] Kreirajte sljedeće tablice prema priloženim strukturama

tabKorisnici

Field Name (naziv polja)

Data Type (tip

podataka)

Field Size (veličina

polja)

Required (zahtjevano)

Indexed (indeksirano)

Input mask (ulazna maska)

Validation rule (pravilo

provjere)

# id_korisnika AutoNumb er

Long Integer - Yes(No

Duplicates) - -

ime_korisnika Text 30 - - - -

prezime_korisnika Text 30 - - - -

naziv korisnika Text 40 - -JMBG Text 13 - - Yes -MBR Number Integer - - - -

mjesto Text 30 Yes - - -adresa Text 40 Yes - - -

post broj Number Long Int Yes - - -Yes

id_vrsta_korisnika Number Long Int Yes (Duplicates - -OK)

tabVrstaKorisnika

Field Name (naziv polja)

Data Type (tip

podataka)

Field Size (veličina

polja)

Required (zahtjevano)

Indexed (indeksirano)

Input mask

(ulazna maska)

Validation rule

(pravilo provjere)

#id_vrsta_korisnika Number Long Integer - Yes (No

Duplicates) - -

vrsta_korisnika Text 30 - - - -

tabVrstaRacuna

Field Name (naziv polja)

Data Type (tip podataka)

Field Size ili Format

(veličina polja ili oblik)

Required (zahtjevano)

Indexed (indeksirano)

Input mask (ulazna maska)

Validation rule (pravilo

provjere)

#id_vrsta_racuna Number Long Integer - Yes (No

Duplicates) - -

vrsta_racuna Text 35 Yes - - -

51

Page 54: access prirucnik

tabRacuni

Field Name (naziv polja)

Data Type (tip podataka)

Field Size ili Format

(veličina polja ili oblik)

Required (zahtjevano)

Indexed (indeksirano)

Input mask (ulazna maska)

Validation rule (pravilo

provjere)

#broj_racuna Number Long Integer - Yes (No Duplicates) - -

datum otvaranja Date and Time Short Date Yes - Yes -

Yes saldo Currency Standard - (Duplicates - -

OK) Yes

id_korisnika Number Long Integer Yes (Duplicates - -OK) Yes

id_vrsta_racuna Number Long Integer Yes (Duplicates - -OK)

tabTransakcije

Field Name (naziv polja)

Data Type (tip podataka)

Field Size (veličina polja)

Required (zahtjevano)

Indexed (indeksirano)

Input mask (ulazna maska)

Validation rule (pravilo

provjere)

#id_transakcije AutoNumber Long Integer - Yes (No Duplicates) - -

opis_transakcije Text 45 - - - -

datum_transakcije Date/Time Short Date Yes

uplata Currency Standard - - - -isplata Currency Standard - - - -

Yes broj_racuna Number Long Integer Yes (Duplicates - -

OK)

[2] Klikom na ikonu Relationships s Access alatne trake kreirajte veze među tablicama na osnovu dijagrama entiteti – veze (ER diagram); vodite računa o referencijalnom integritetu

Svi podaci će se unositi i mijenjati preko obrazaca, tako da nema potrebe za pokretanjem tablica u korisničkom modu. Krenimo redom. Prvo trebamo kreirati obrazac koji će nam služiti za unos novih korisnika ili za kreiranje novih računa za već postojeće korisnike. U tom smislu kreirat ćemo dva odvojena obrasca. Na jednom će se nalaziti svi podaci o korisniku iz tablice tabKorisnici, a na drugom odgovarajuća polja iz tablice transakcija za unos prve uplate pri otvaranju računa.

52

Page 55: access prirucnik

Slika 3-3 Relacije u bazi

[3] Kreirajte upit iz tablica tabKorisnici (sva polja) i tabRacuni (sva polja) [4] Spremite upit pod imenom upKorisniciRacuni [5] Otvorite novi obrazac u razvojnom modu (Create form in Design view)

[6] Kliknite na gumb Properties Form Design alatne trake [7] U otvorenom dijalogu pod karticom Data kao izvor (Record Source) izaberite prethodno

stvoreni upit upKorisniciRacuni [8] Uključite listu polja (Field List) Æ View Æ Field List ili klikom na istoimenu ikonu sa

alatne trake Form Design Æ

Slika 3-4 Dijalog svojstava obrasca Æ izbor izvora podataka s kojim će se povezati obrazac

53

Page 56: access prirucnik

[9] Iz liste polja metodom Drag'n' Drop na površinu obrasca odvucite redom sva polja osim polja id_korisnika iz tablice tabRacuni

[10] Prema potrebi povećajte veličinu obrasca, a raspored polja neka vam bude kao na slici ispod

Slika 3-5 Početni izgled obrasca

Uočavate da vam oznake (Label) tekstualnih okvira (text box) nisu dobro razmještene, a ni njihove veličine, pa čak i sami nazivi nisu prema korisničkim potrebama.

[11] Prvo smanjite text box u kojem će se nalaziti prikazan identifikacijski broj korisnika [12] Promijenite njegovu oznaku (Label) u šifra korisnika: Æ najjednostavnije brzim

dvoklikom na postojeću oznaku i potom tekst mijenjate kao bilo koji tekst u Wordu [13] Promijenite dimenziju toj oznaci i poravnajte je s ostalima

11. korak 13. korak

12. korak

[14] Promijenite oznake id_vrsta_korisnika u Vrsta korisnika: i id_vrsta_racuna u Vrsta računa:

54

Page 57: access prirucnik

Veoma često je zgodno svakoj oznaci dati i svoje ime, a ne ostaviti ime koje Access automatski dodjeljuje Æ to možete učiniti preko dijaloga Properties oznake:

Slika 3-6 Promjena naziva oznake

Umjesto da nam se prikazuje identifikacijski broj vrste korisnika i identifikacijski broj vrste računa

zgodnije je promijeniti način prikaza pripadnih tekstualnih okvira u combo box i vezati ih za

pripadne stupce u tablicama tabVrstaKorisnika i tabVrstaRačuna. Na taj način prikazivat će nam

se vrste korisnika (građani, obrtnici,…) i vrste računa (tekući, žiro,…). Postupak je prilično

analogan postupku promijene pogleda među tablicama, što smo već bili radili u prvoj vježbi.

[15] Napravite desni klik na tekstualni okvir u kojem piše id_vrsta_korisnika Æ izaberite Change To Æ Combo Box

[16] Ponovno otvorite svojstva i poda karticom Data pod Row Source izaberite tabVrstaKorisnika

Prebacite se na karticu Format i pod Column Count unesite 2, a pod Column Width 0;3 (Access

će sam dodati cm) Æ na ovaj način u kombiniranom okviru će se prikazivati samo drugi stupac iz

tablice u kojoj su navedene vrste korisnika, jer smo širinu prvog postavili na 0cm (stvaramo malu

varku Æ Access i dalje radi s identifikacijskim brojevima, koje skriva, a korisniku prikazuje samo

nazive koji su vezani za te identifikacijske brojeve)

55

Page 58: access prirucnik

Slika 3-7 promjena tekstualnog okvira u kombinirani okvir (combo box)

[17] Ponovite postupak s tekstualnim okvirom u kojem piše id_vrsta_racuna

Slika 3-8 Izbor izvora podataka za combo box i „prikrivanje“ prvog stupca pripadne tablice

[18] Spremite obrazac pod nazivom obNoviKorisnik_Račun

Ukoliko ste mijenjali pogled među tablicama tada vam ovi zahvati neće biti potrebni na obrascima Æ automatski će se pojavljivati combo boxovi umjesto text boxova

56

Page 59: access prirucnik

Broj računa i stanje (saldo) ćemo istaknuti primjenom jednostavnih efekata.

[19] Desni klik na tekstualni okvir broj_racuna i iz pop up izbornika izaberite Special Effect Æefekt sa sjenom

[20] Ponovite isto i sa saldom

Nakon spremanja svih promjena zatvorite obrazac u razvojnom modu. Na redu je kreiranje drugog obrasca koji će služiti za unos prve transakcije na račun.

[21] Otvorite novi obrazac u razvojnom modu [22] Otvorite njegov dijalog svojstava i pod karticom Data pod Record Source izaberite

tablicu tabTransakcije [23] Iz liste polja (Field List) povucite na obrazac sva polja izuzev polja isplata [24] Spremite obrazac pod nazivom obPrvaTrans [25] Od ova dva obrasca želimo načiniti jedan obrazac s podobrascem Æ glavni obrazac će

nam biti obNoviKorisnik_Račun, a podobrazac obPrvaTrans Æ otvorite obrazac koji će predstavljati glavni obrazac u razvojnom modu

[26] Smanjite mu prikaz tako da se vidi i glavno prozor baze [27] Pod Forms nađite obrazac koji treba predstavljati podobrazac i odvucite ga na površinu

glavnog obrasca

Samo odvučete i obrazac postaje podobrazac na

otvorenom obrascu u razvojnom modu

Slika 3-9 Stvaranje podobrasca iz već postojećeg obrasca

Preostaje nam još definiranje polja po kojem su obrazac i podobrazac povezani. Kada su obrazac i podobrazac kreirani na osnovu tablica tada ne postoji problem u definiranju veze među njima, jer je ta veza određena relacijama među tablicama. U takvim slučajevima Access neće imati nikakvih

57

Page 60: access prirucnik

problema u određivanju vezanih polja na glavnom obrascu i podobrascu. Međutim, ukoliko je bilo koji obrazac (glavni ili podobrazac ili čak oba) temeljen na upitima Access ne posjeduje eksplicitne informacije o vezi među tim obrascima. U takvim slučajevima vezu je potrebno definirati "ručno". Označite podobrazac Æ kliknete na njegov rub i kada se pojave hvataljke za promjenu dimenzija na alatnoj traci Form Design kliknite na ikonu Properties. U kartici Data svojstava uočite polja Link Child Fields i Link Master Fields. Kliknite na gumb s tri točkice pored bilo kojeg od ta dva polja. U dijalogu koji se pojavi, ako to već nije ponuđeno postavite vezu po broju računa (broj_racuna) kao na slici ispod.

2 1

Slika 3-10 povezivanje glavnog obrasca i podobrasca

Naposljetku, trebamo kreirati i kontrolni gumb kojim će se prva uplata postaviti na trenutni saldo računa. Da bismo mogli kreirati akcijski gumb potrebno je poznavati neke osnove programa pogonjenih događajima (Event Driven Programming). Ne trebate se obeshrabriti, jer nije riječ o ničem kompliciranom.

3.1 Programi pokretani događajima upotrebom Macro naredbi

Osnova ovih programa je da se oni izvršavaju nakon interakcije korisnika preko sučelja aplikacije Æ obrasci, meniji, kontrolni gumbi i sl. Da bi kreirali aplikacije pogonjene događajima programeri sastavljaju čitav niz manjih programa 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 ovaj način izvršavanje aplikacije ovisi o tijeku izvršavanja manjih, upravljivih i lako održavajućih programa, a ne o tijeku jednog velikog, nepreglednog i teško upravljivog programa. Kako događaji pridruženi objektima na obrascima okidaju neku akciju veoma često se nazivaju okidači (triggers). Procedura koja se pri tom izvršava može biti napisana u VBA (Visual Basic for Application) programskom jeziku, ali su

58

Page 61: access prirucnik

kao takve često podložne pravljenju grešaka od strane programera. Pogotovo u takvim slučajevima dolazi do značajnih problema kada je potrebno poštivati konvenciju imenovanja u hijerarhiji baze. Upravo iz tog razloga, čak i iskusniji programeri, pri implementaciji najčešćih okidača se okreću Accessovom Macro jeziku. Riječ je o jeziku koji se sastoji od četrdesetak naredbi. Iako je riječ o proceduralnom jeziku kao što je i VBA, naredbe su razumljive i lako upotrebljive. Kao poseban dodatak jednostavnosti primjene macro naredbi je razvijeni macro editor koji pojednostavnjuje specificiranje akcijskih argumenata (parametara).

Form TitleForm Title

Status bar

Text

Izvodi se PROCEDURA Æ npr. ispisati će se narudžba

DOGAĐAJ:

na klik miša

Slika 3-11 primjer događajem pokretanih programa

Da bismo kreirali okidač moramo postaviti i odgovoriti na dva osnovna pitanja:

1) Što će se dogoditi? 2) Kada se treba dogoditi?

Primjerice:

1) Što će se dogoditi? Æ zaprimit će se rezervacija sobe 2) Kada se treba dogoditi? Æ nakon klika na gumb Potvrdi rezervaciju

Kada ste jednom odgovorili na prvo pitanje (Što se treba dogoditi) trebate kreirati macro ili (VBA proceduru) koja će osigurati izvršavanje potrebnih koraka. Nakon toga rješavate drugo pitanje i pridjeljujete kreiranu proceduru određenom događaju na željenom objektu. Puno priče bez pravog primjera ne može biti od koristi, pa ćemo kreiranje macroa pokazati na našem slučaju potvrde prve transakcije. 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 gumb Potvrdi transakciju. To znači da na glavnom obrascu trebamo kreirati kontrolni gumb kojem ćemo prikačiti pripadni macro. Ovaj put

59

Page 62: access prirucnik

ćemo prvo kreirati macro, a potom ga povezati s događajem pripadnog objekta Æ kontrolnog gumba na obrascu obNoviKorisnik_Racun.

[29] Otvorite obrazac obNoviKorisnik_Racun u razvojnom modu i ostavite ga tako

[30] U prozoru baze kliknite na objekt Macros Æ potom na ikonu New na alatnoj traci baze. Otvorit će vam se Macro editor kao na slici ispod.

Slika 3-12 Izgled Macro editora

[31] Iz padajućeg izbornika izabirete naredbu Æ u ovom slučaju SetValue [32] Pod Comment upisujete komentar uz pojedinu naredbu Æ upišite Æ postavlja saldo na

vrijednost prve uplate

Trebate još definirati akcijske argumente. Da bi ih ispravno definirali potrebno je samo slijediti upute u desnom okviru od argumenta. Klikom na svaki argument u tom području se prikažu osnovne informacije o tom argumentu i načinu na koji se može popuniti njegova vrijednost. Ukoliko vam upute nisu dovoljne pritiskom na funkcijsku tipku F1 dobit ć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.

[33] Kliknite na gumb s tri točkice (Build button) pored argumenta Item Æ otvorit će vam se Expression Builder

60

Page 63: access prirucnik

Određujemo naredbu za akciju Po potrebi upisujemo

komentar

Okvir s informacijama

Build button Definiramo akcijske argumente koji određuju

rezultat akcije

Slika 3-13 Postavljanje naredbi akcija i njihovih argumenata u Macro editoru

[34] U Expression Builderu s lijeve strane 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)

[35] Dođite do obrasca obNoviKorisnik_Racuni i potom napravite brzi dvoklik na polje saldo u središnjem okviru Æ potvrdite s OK Æ na ovaj način ste osigurali da će se nova vrijednost postavljati u to polje

[36] Ponovite postupak s Expression, ali ovaj put dođite do podobrasca i izaberite polje uplata Æ u glavnom okviru Expression Buildera pisat će vam sljedeći izraz:

Forms![obNoviKorisnik_Racun]![obPrvaTrans].Form![uplata]

[37] Potvrdite izbor i zatvorite Expression Builder

Česta je praksa da se nakon nekakve naredbe ispiše potvrda o uspješnosti njezinog izvođenja Ænaredba MsgBox.

[38] Kliknite ispod naredbe SetValue i iz padajuće liste izaberite naredbu MsgBox [39] U komentar upišite ispisuje potvrdnu poruku o uspješno izvršenoj transakciji [40] Pod argument Message upisujete poruku koja će se prikazati korisniku Æ Transakcija

izvršena! [41] Na kraju se stavlja naredba koja prekida izvršavanje macroa Æ StopMacro

Za ovu naredbu ne trebate definirati ni jedan argument, a također nema ni potrebe za dodatnim komentarom.

[42] Spremite macro pod imenom macPrvaTrans

61

Page 64: access prirucnik

Naredbe se izvršavaju od vrha prema dnu

Slika 3-14 Višestruke naredbe u Macro editoru

Slika 3-15 Spremanje macroa

Za snimljeni macro znamo što radi Æ postavlja saldo na vrijednost prve uplate, potom ispisuje poruku o izvršenoj transakciji i na kraju prekida izvršavanje samog macroa. Još je potrebno prikačiti taj macro na željeni objekt i definirati događaj koji ga okida. Macro ćemo pridružiti kontrolnom gumbu koje ćemo načiniti na obrascu obNoviKorisnik_Racun, a okidat će se na klik miša.

[43] Spomenuti obrazac vam je još uvijek otvoren u pozadini Æ klikom na njega učinite ga aktivnim

[44] U alatnoj traci kliknite na ikonu za kreiranje kontrolnog gumba (akcijskog gumba)

[45] Ucrtajte gumb na željenom mjestu na obrascu [46] Zatvorite čarobnjaka koji vam se pojavi klikom na gumb Cancel [47] Desnim klikom na gumb otvorite njegov dijalog svojstava [48] U kartici Format pod Caption upišite Potvrda transakcije Æ ovim ste odredili tekst

koji će biti ispisan na gumbu [49] Prebacite se na karticu Event i izaberite događaj On click Æ iz padajuće liste izaberite

prethodno kreirani makro macPrvaTrans [50] Zaključajte polje saldo kako ga korisnik ne bi mogao mijenjati [51] Preko svojstava glavnog obrasca u kartici Data postavite Data Entry na Yes [52] Spremite načinjene promijene [53] Zatvorite dijalog svojstava i spremite načinjene promijene na obrascu (CTRL + S)

62

Page 65: access prirucnik

Za unos vrste korisnika i vrste računa nećemo kreirati obrasce, jer je riječ o unosima koji se vrše jednom. Te unose ćemo obaviti direktno preko pripadnih tablica.

Slika 3-16 promjena naslova kontrolnog gumba i pridruživanje procedure gumbu na željeni događaj

[42] Tablicu tabVrstaKorisnika otvorite u korisničkom modu i unesite sljedeće vrijednosti:

a. Građanin (id = 100) b. Poduzeće (id = 200) c. Obrtnik (id = 300) d. Dioničko društvo (id = 400)

[43] U tablicu tabVrstaRacuna:

a. Tekući (id = 4400) b. Žiro (id = 5500) c. Poslovni (id = 6600) d. Devizni (id = 7700) e. Štednja (id = 8800)

Skoro pa da smo i gotovi s prvim obrascem Æ još je nužno osigurati unos novih podataka u podobrazac pri svakom otvaranju glavnog obrasca, isključiti navigacijske gumbe i trake za pomicanje na njemu.

[44] Otvorite obrazac obNoviKorisnik_Racun u razvojnom načinu rada [45] Otvorite svojstva podobrasca i u kartici Data promijenite Data Entry iz No u Yes

63

Page 66: access prirucnik

[46] Prebacite se na karticu Format i Scroll bars postavite na Neither, te isključite navigacijske gumbe Æ Navigation Buttons Æ No

Slika 3-17 Promjena načina unosa, te isključivanje traka za pomicanje i navigacijske gumbe

[47] Unesite proizvoljne podatke za prvog korisnika i odmah za njega kreirajte drugi račun

4

2

31

64

Page 67: access prirucnik

Uočavate nedostatak ovog obrasca koji se javlja kada želimo otvoriti novi račun za već postojećeg korisnika. Potrebno je ponoviti sve podatke za korisnika, a dodjeljuje mu se i dodatni identifikacijski broj za svaki račun. Taj nedostatak ćemo otkoloniti izradom potpuno novog obrasca koji će nam služiti za unos podataka o korisniku i kreiranje računa. Sam obrazac ćemo kreirati iz tablica tabKorisnici i tabRacuni primjenom čarobnjaka.

[48] Otvorite čarobnjaka za izradu obrazaca [49] Selektirajte sva polja iz tablice tabKorisnici, a iz tablice tabRacuni izostavite polja

saldo i id_korisnika [50] Prihvatite ponuđeni izgled obrasca s podobrascem [51] Za podobrazac izaberite tabularni izgled [52] Glavnom obrascu dajte ime obPodaci, a podobrascu podRacuni [53] Kliknite na radio button Modify the form's design [54] Promijenite nazive pojedinih oznaka i na podobrascu isključite navigacijske gumbe tako

da vam obrazac izgleda približno kao na slici ispod

Slika 3-18 izgled gotovog obrasca

[55] Unesite podatke za nekoliko korisnika (desetak) Æ tekući računi neka počinju s 1000, žiro s 20000, poslovni s 30000, devizni s 40000 i štednja s 50000

[56] Neka vam bar tri korisnika imaju po dva ili više računa

Kada imamo kreirane korisnike i račune možemo vršiti razne transakcije po tim računima. Očigledno nam treba obrazac preko kojeg ćemo unositi transakcije na određeni račun. Kako je broj računa poznat i automatski određuje tip korisničkog računa, potrebno je napraviti parametarski upit po broju računa koji će izvlačiti podatke o korisnicima i njihovim računima.

65

Page 68: access prirucnik

3.2 Parametarski upiti

Parametarski upiti spadaju u skupinu dinamičkih upita. Kod te vrste upita kriterij za izbor zapisa 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. Za primjer se sjetite upita u kojem smo željeli izdvojiti brojeve mobitela osoba iz Zagreba. U pripadna polja pod redak kriterija upisali smo "Zagreb" i "mob". Svatko je od vas uočio nedostatak ovakvih upita Æ što da su nas zanimali brojevi mobitela osoba iz Splita ili kućni brojevi osoba iz Zadra? Odmah se nameće i odgovor Æ trebali bi kreirati isto toliko novih upita koliko je novih kriterija. Očigledno je riječ o nezgrapnom rješenju koje bi trebalo na neki način izbjeći. Upravo tu uskaču parametarski upiti.

[1] Otvorite bazu podataka u kojoj se nalazi spomenuti upit (vježba br. 3) [2] Pod polje grad u redak Criteria upišite [Upišite grad po kojem želite vršiti pretragu:] [3] Pod polje vrsta telefona u retku Criteria upišite [Definirajte vrstu telefona:]

21

Zamijenite pisani stalni kriterij s parametarskim kriterijem

Nakon pokretanja upita upišite željenu vrijednost kriterija

Kako se u ovom slučaju ponaša Access kada mu stalnu vrijednost zamijenimo s promjenjivom (varijablom)? Kada naiđe na takvu situaciju Access će pokušati vezati varijablu za neku vrijednost. Pri tom će izvršiti sljedeće testove:

I. Prvo provjerava da li ime varijable predstavlja ime nekog polja ili proračunskog polja u upitu. Ako da, onda pridjeljuje trenutnu vrijednost tog polja varijabli. U suprotnom ovaj test ne daje nikakav rezultat.

II. Access pokušava razriješiti vrijednost parametra kao referencu na nešto u trenutnom okruženju. Primjerice na vrijednost otvorenog obrasca. Ako ne postoji takva referenca ovaj test ne prolazi.

III. Kao posljednji slučaj, Access pita korisnika da unese vrijednost parametra preko dijaloškog prozora.

66

Page 69: access prirucnik

Spremite načinjene promjene u upitu i potom ga pokrenite. Access će od vas tražiti da upišete vrijednosti za dva parametra – grad i vrstu telefona, upravo kako ste ih kreirali u razvojnom modu. Puno uobičajenije rješenje od ovoga je da se koristi vrijednost s obrasca koja dalje određuje odziv parametarskog upita. Pojednostavljeno kazano Access će u tom slučaju povući vrijednost parametra direktno s otvorenog obrasca. Za ilustraciju ovog načina opet ćemo se poslužiti s postojećom bazom.

[1] Otvorite bazu podataka načinjenu u vježbi 4 (obrasci) [2] Kreirajte novi obrazac bez primjene čarobnjaka Æ Create form in Design view [3] Alatom text box načinite jedan nevezani (Unbound) tekstualni okvir [4] Naslovite ga Grad: [5] Alatom combo box kreirajte jedan kombinirani okvir u kojem ćete sljedeći upute

čarobnjaka kreirati tri samostalna unosa Æ mob; kućni; posao

Oznaka koju će nositi

Combo Box

Upisujete vrijednosti za Combo

Box

[6] Combo box nazovite Vrsta telefona [7] Alatom za kontrolni gumb (Command Button) načinite jedan upravljački gumb na

obrascu [8] Otvorit će vam se čarobnjak iz kojeg u prvom koraku izabirete kategoriju razno

(Miscellaneous) Æ potom pod akcijom izaberite pokreni upit (Run Query) ÆupGradTel

[9] U sljedećem koraku umjesto slike izaberite tekst i upišite Pretraga [10] Posljednji korak određuje naziv kontrolnog gumba kojeg će koristiti Access za

označavanje ovog gumba Æ upišite Com_1

Na ovaj način smo kreirali kontrolni gumb koji će pozivati željeni upit!

[11] Spremite obrazac pod nazivom obPretraga Æ ostavite otvoren ovaj obrazac

67

Page 70: access prirucnik

[12] Otvorite upit upGradTel u razvojnom modu

[13] Pod Criteria polja grad pozovite expression builder tako da napravite desni klik na tom

polju i iz skočnog izbornika izaberete Build

obrazac Kursor postavite u redak Criteria polja Grad Æ desnim klikom pozovete pop up izbornik Æ izaberite Build

1

Kreirate jednostavni obrazac i ostavite ga otvorenog u

pozadini2

upit

Slika 3-19 Povezivanje parametraskog upita s obrascem

Cilj nam je povezati parametarski kriterij s odgovarajućim objektima na obrascu obPretraga.

Takav upit ćemo pozivati preko kontrolnog gumba Pretraga. Nakon što kliknete na Build pojavit

će vam se graditelj izraza u kojem kroz nekoliko jednostavnih koraka dolazite do željenog rješenja.

S lijeve strane vam se nalaze objekti Æ svaki objekt koji na sebi ima znak plusa otvara se

dvoklikom, a ostali jednim klikom.

[14] Napravite brzi dvoklik na Forms Æ Loaded Forms (popis trenutno otvorenih obrazaca) i

All Forms (popis svih obrazaca u vašoj bazi)

68

Page 71: access prirucnik

Kada ste gotovi kliknite na gumb OK

Brzim dvoklikom na Forms dobivate uvid u sve obrasce u vašoj bazi

Dok je željeni obrazac u pozadini otvoren kliknite na Loaded Forms i izaberite ga

U središnjem okviru napravite brzi dvoklik na ime polja koje će određivati kriterij

Slika 3-20 Upotreba Expression Buildera za određivanje objekta s obrasca koji će se koristiti kao parametarski kriterij

[15] Izabrali ste objekt Grad s obrasca Æ sve vrijednosti koje na obrascu unesete u taj text box predstavljat će kriterij pretrage po polju Grad u upitu upGradTel

[16] Ponovite postupak s poljem Vrsta_tel_broja kojeg ćete povezati s Combo boxom Vrsta_tel na obrascu obPretraga

[17] Spremite načinjene promjene u upitu upGradTel [18] Još bi bilo zgodno ukloniti navigacijske gumbe s obrasca Æ uklonite ih preko dijaloškog

[19] prozora Properties obrasca Æ Navigation Buttons Æ No Pokrenite obrazac obPretraga i pod Grad upišite Šibenik, a pod vrsta telefona kućni

[20] Kliknite na gumb Pretraga

Ukoliko imate barem jedan od unosa koji zadovoljava postavljene kriterije dobit ćete rezultat sličan ovome prikazanom na slici ispod:

69

Page 72: access prirucnik

Slika 3-21 Rezultat parametarskog upita dobiven preko obrasca

Uobičajeno ćemo parametarske upite označavati pupImeUpita Æ preimenujte upit upGradTel koristeći ovu konvenciju. Nakon preimenovanja upita i ponovnog pokretanja istog obrasca za pretragu nakon klika na gumb Pretraga pojavit će vam se poruka o grešci.

Slika 3-22 Poruka o pogrešci zbog referenciranja na nepostojeći objekt

Kako ste preimenovali upit upGradTel u pupGradTel taj kontrolni gumb upućuje na nepostojeći objekt, te se iz tog razloga javlja greška. Problem je jednostavno riješiti preko svojstava kontrolnog gumbaPretraga. Otvorite obrazac obPretraga u razvojnom modu i načinite brzi dvoklik na gumbPretraga. U dijalogu svojstava koji vam se otvori pod karticom Event nalazi se događaj On Click kojemje pridijeljena procedura ([Event procedure]). Kliknite u to polje i pored će vam se pokazati gumb s tri točkice. Klikom na njega otvara se Visual Basic Editor i procedura koja se izvršava klikom na gumb Pretraga. Nema potrebe da se previše zamarate s kodom, veće će vam na prvi pogled biti razumljivo što treba promijeniti. Sigurno uočavate liniju u kojoj stoji:

stDocName = "upGradTel"

70

Page 73: access prirucnik

Jedino što trebate napraviti je promijeniti ime upita u novo ime pupGradTel Æ naziv opet ostaje pod navodnicima. Spremite načinjene promijene i zatvorite Visual Basic Editor. Spremite i promijene u obrascu. Nakon ponovnog pokretanja obrazac će opet dobro funkcionirati. Zatvorite bazu.

Slika 3-23 Pridijeljena procedura kliku na kontrolno gume

Problem možete riješiti i na drugi način, bez mijenjanja procedure Æ dovoljno je izbrisati postojeći gumb i čarobnjakom kreirati novi koje će upućivati na upit s novim imenom

Vratimo se našem problemu s bankom. Sada imamo dovoljno znanja da kreiramo parametarski upit koji će davati pregled podataka o korisniku i računu na osnovu unesenog broja računa.

[1] Otvorite novi upit u razvojnom modu [2] Za njegovo kreiranje koristite tablice tabKorisnici i tabRacuni [3] Uzmite sva polja iz tablice tabKorisnici, a iz tablice tabRacuni izostavite id_korisnika [4] Pod Criteria polja broj_racuna upišite (stvaramo parametarski kriterij):

[Unesite broj računa:]

[5] Spremite upit pod nazivom pupPoBrojuRacuna

71

Page 74: access prirucnik

Slijedi kreiranje obrasca za unos transakcija na račun. Ponovno ćemo kreirati dva odvojena obrasca od kojih ćemo postupkom kao i za prvi obrazac kreirati jedan obrazac s podobrascem. Cilj je dobiti glavni obrazac koji će prikazivati informacije o korisniku računa br. ###### i same informacije o tom računu (datum otvaranja, saldo, vrsta računa…), a na podobrascu trebamo biti u stanju unositi nove transakcije. Svaka transakcija, bilo uplata ili isplata se posebno potvrđuje pripadnim kontrolnim gumbom. Automatski svaka nova transakcija treba mijenjati stanje salda.

[6] Kreirajte novi obrazac iz parametarskog upita pupPoBrojuRacuna Æ bilo ručno ili čarobnjakom

[7] Spremite obrazac pod nazivom obUnosTransakcija [8] Kreirajte novi obrazac upotrebom svih polja iz tablice transakcija Æ koristite čarobnjaka,

a za tip obrasca izaberite Columnar [9] Spremite obrazac pod nazivom podTransakcije [10] Spojite ta dva obrasca u jedan na način da vam glavni obrazac bude

obUnosTransakcija, a podobrazac podTransakcije [11] Povežite ih po polju broj_racuna [12] Na podobrascu promijenite svojstvo Data Entry pod karticom Data iz No u Yes [13] Promijenite neželjene oznake tekstualnih okvira ili kombiniranih okvira

U ovom dijelu obrazac bi vam trebao izgledati približno kao na slici ispod:

Kreirano alatom Rectangle

Slika 3-24 Izgled obrasca obNovaTransakcija nakon nekoliko zahvata

Potrebno je još kreirati akcijski gumb kojim će se izvršiti transakcija na račun. Ovaj put macro nećemo kreirati prije samog gumba već za vrijeme pozivanjem Macro Buildera.

72

Page 75: access prirucnik

[14] Ucrtajte akcijski gumb na željenom mjestu na glavnom obrascu [15] Isključite čarobnjaka klikom na gumb Cancel [16] Preko dijaloga Properties promijenite natpis (Caption) na gumbu u Potvrdi

transakciju [17] Prebacite se na karticu Event i pod događajem On Click kliknite na gumb Build

button Æ u otvorenom dijalogu izaberite Macro Builder

Build button

Slika 3-25 Otvaranje Macro editora preko dijaloga svojstava akcijskog gumba

Ovim načinom prvo smo odgovorili na naše drugo pitanje Æ Kada će se dogoditi akcija vezana uz okidač Æ na klik miša. Što će se tada dogoditi Æ naše prvo pitanje, ima sljedeći odgovor Ætrenutno stanje salda će se uvećati za iznos uplate ili smanjiti za iznos isplate. To je matematički jednostavno opisati:

saldo = saldo + uplata – isplata

Nakon promijene vrijednosti salda uzrokovane transakcijom, treba se ispisati poruka o uspješno izvedenoj transakciji i potom zaustaviti izvođenje macroa. Već vam je sve poznato, tako da nakon otvaranja Macro editora samostalno možete kreirati pripadni macro.

[18] Kreirajte macro koji će izvršavati prethodno opisanu akciju [19] Spremite macro pod imenom macPotvrdaTransakcije [20] Spremite promijene na obrascu [21] Probajte unijeti jednu transakciju za broj računa koji sigurno postoji

Kreiranjem macroa kao i u prvom slučaju (SetValue; MsgBox; StopMacro) ovdje će stvarati probleme, jer postoji mogućnost da se jedna te ista transakcija potvrdi više puta Æ stvaramo krivi saldo. Mogućnost višestruke potvrde treba na neki način eliminirati!

[22] Ponovite jednu te istu transakciju i uočite spomenutu pogrešku

73

Page 76: access prirucnik

Problem na koji smo naišli možemo riješiti uvođenjem uvjeta izvođenja pojedinih naredbi koje sačinjavaju macro. Za to nam je potrebno na glavnom obrascu iznad kontrolnog gumba ucrtati check box (kontrolnu kućicu) s pripadnim alatom . Njegova vrijednost je po defaultu (predefinirano) postavljena na NO (neistinu) – nema kvačice. Kako to iskoristiti za rješavanje našeg problema? Pa odgovor ide ovako nekako – kada je ta kontrolna kućica potvrđena ispisat će se poruka Ova transakcija je već izvršena! i prestat će izvođenje macroa. U suprotom izvršit će se naredbe kao i u prethodnom slučaju, s tim što ćemo dodati naredbu koja postavlja vrijednost kontrolne kućice u istinu (YES) – stavlja kvačicu.

Transakcija izvršena:

DA NE

SetValue

MsgBox

SetValue

(saldo = saldo +uplata - isplata)

(Transakcija izvršena)

(Yes za kontrolnu kucicu)

MsgBox

StopMacro

(Transakcija je vec izvršena!)

Slika 3-26 Slijed izvođenja macroa macPotvrdaTransakcije

[23] Na obrascu obNovaTransakcija ucrtajte jedan check box [24] Kao oznaku mu postavite Transakcija izvršena: [25] Pod svojstvima u kartici Other u Name upišite Trans_izvrsena [26] Zatvorite dijalog svojstava check boxa [27] Ponovno otvorite Macro editor preko svojstava kontrolnog gumba Potvrdi transakciju [28] Uključite stupac Conditions preko izbornika View

Slika 3-27 uključivanje stupca uvjeta u Macro editoru

[29] Iznad prve naredbe SetValue umetnite dva retka kao što bi ih umetnuli u Excel tablicu [30] Umjesto postojeće naredbe StopMacro koja je trenutno posljednja postavite SetValue [31] Kao argument Item postavite pozivom Expression Buidera check box Trans_izvrsena

74

Page 77: access prirucnik

Slika 3-28 Postavljanje check boxa Trans_izvrsena za argument naredbe SetValue

[32] Kako check box može poprimiti samo dvije vrijednosti Yes i No, to ćemo u Expression upisati Yes Æ predefinirano je bilo na No

[33] U prvi prazni redak pod Condition upišite

[Forms]![obNovaTransakcija]![Trans_izvrsena]

[34] Pod Action izaberite MsgBox kojem ćete kao poruku upisati Ova transakcija je većizvršena!, a kao tip staviti Warning!

[35] U retku ispod (drugi dodani) pod Condition stavite … Æ što podrazumijeva prenošenje istog uvjeta kao za naredbu prije

[36] Kao naredbu izaberite StopMacro

Slika 3-29 macro macPotvrdaTransakcije

75

Page 78: access prirucnik

[37] Spremite promjene na macrou [38] Isključite navigacijske gumbe i trake za pomicanje na glavnom obrascu [39] Spremite načinjene promjene [40] Testirajte obrazac Æ za svakog korisnika napravite nekoliko transakcija

Bilo bi zgodno na obrascu za unos podataka i otvranje računa kreirati akcijski gumb koje bi odmah otvaralo obrazac za unos transakcija. Kreiranje tog akcijskog gumba ćemo "prepustiti" čarobnjaku.

[41] Otvorite obrazac obPodaci u razvojnom načinu rada [42] Ucrtajte kontrolni gumb na željenu poziciju [43] Slijedite upute čarobnjaka prema donjim slikama

1

Biramo akciju koju dodjeljujemogumbu Æotvori obrazac

Biramo obrazac kojeg želimo otvarati gumbom

2

3

Određujemo način na koji će se otvarati obrazac

Biramo izgled gumba Æpostojeće slika ili korisnički tekst

4

76

Page 79: access prirucnik

[44] U posljednjem koraku će vas čarobnjak upitati da dodijelite ime kontrolnom gumbu ÆCom_3

[45] Spremite načinjene promijene i testirajte obrazac

Dalje nas zanima mogućnost pregleda svih korisnika i njihovih računa – sjetite se da svaki korisnik može imati veći broj računa; potom pregled stanja računa po broju računa uz pregled prometa za taj račun sortiran po datumima u silaznom nizu. U tom smislu kreirat ćemo nekoliko upita.

[28] Kreirajte upit koji će davati pregled svih korisnika(identifikacijski broj, ime, prezime, naziv, mjesto, adresa i poštanski broj) i njihovih računa (sa saldom za svaki račun, datumom otvaranja, vrstom računa i brojem računa)

[29] Načinite sortiranje korisnika po identifikacijskom broju u uzlaznom nizu (Ascending) [30] Spremite upit pod nazivom upSviRacuni [31] Kreirajte upit koji će prikazivati sve transakcije za neki račun sortirane po datumima u

silaznom nizu [32] Spremite taj upi pod nazivom upSveTransakcije

Rezultati oba upita treba da daju samo pregled korisnika i njihovih računa, tj. transakcija bez mogućnosti utjecanja na njih Æ promijenite tip dobivenih zapisa iz

Dynaset u Snapshot. (vidi uvod u rad s MS Accessom str. 33)

Ponavljamo već poznatu priču Æ kreirat ćemo "ručno" dva obrasca koja ćemo potom povezati u jedan obrazac s podobrascem. Za prvi obrazac ćemo upotrijebiti upit upSviRacuni, a za drugi upSveTransakcije. Prvi obrazac nazovite obPregled, a drugi podSveTransakcije. Iz samih naziva vam je jasno koji obrazac će imati ulogu glavnog obrasca, a koji podobrasca. Spojite obrasce u jedan obrazac. Glavnom obrascu i podobrascu preko svojstava tip podataka promijenite iz Dynaset u Snapshot.

Slika 3-30 Promijena tipa zapisa iz dinamičkog u nepromijenjivi (Snapshot)

77

Page 80: access prirucnik

Red je da malo "ušminkamo" dobiveni obrazac. Preko izbornika View uključite prikaz zaglavlja i podnožja obrasca Æ Form Header / Footer.

Slika 3-31 uključivanje zaglavlja i podnožja obrascu

[34] Proširite zaglavlje glavnog obrasca [35] Napravite desni klik mišem na površini tog zaglavlja i iz skočnog izbornika izaberite

Properties [36] U kartici Format pod Back Color izaberite boju pozadine koju želite [37] Alatom za oznake ucrtajte oznaku po sredini zaglavlja i napišite tekst PREGLED

TRANSAKCIJA NA RAČUNIMA [38] Tekst i pozadinu oznake oblikujte po želji Æ oblikovanje ovaj put izvršite preko alatne

trake oblikovanja (oznake oblikujete slično tekst okvirima u Wordu) [39] Desnim klikom na površinu područja Detail dobivate skočni izbornik iz kojeg ponovno

izabirete Properties Æ promijenite boju pozadine tog područja

Mijenjamo boju

pozadine

78

Page 81: access prirucnik

[40] Ponovite isto i s podobrascem. [41] Oznaku podobrasca povećajte i oblikujte po želji, a tekst podSveTransakcije

promijenite u Pregled prometa na računu br. [42] Oznaku tekst okvira broj_racuna izbrišite Æ jednom kliknete na nju, pa "poznata" tipka

DELETE dolazi u akciju [43] Pomaknite taj okvir u ravninu s oznakom podobrasca i oblikujte ga potpuno na isti način [44] Potpuno smanjite podnožje obrasca [45] Spremite promjene

Slika 3-32 izgled gotovog obrasca obPregled

[46] Promijenite izgled i ostalih obrazaca

79

Page 82: access prirucnik

3.3 Izvješća (Reports)

Kao što smo rekli na početku naše priče pri stvaranju baze podataka treba odrediti izlazne informacije koje želimo dobiti. Ti izlazi se prikazuju na zaslonu monitora ili se ispisuju na papir. Prikaz na zaslonu je najčešće u obliku forme kao što smo i vidjeli u našem zadnjem primjeru. Forme se prema potrebi mogu ispisivati, ali najbolji način za prikaz izlaznih informacija je primjenom izvješća – eng. Reports. Ovo pogotovo vrijedi u slučajevima kada informacije pokrivaju više zapisa i kada je potreban nekakav sažetak. (ECDL) Izvješća u biti predstavljaju oblik iznošenja informacija korisniku na njemu najprihvatljiviji i najrazumljiviji način, koji je kao takav pogodan za ispis. U velikom broju slučajeva izvješća su najvažniji dio neke aplikacije. Sam postupak izrade izvješća je vrlo sličan izradi obrazaca. Iz tog razloga se nećemo previše zadržavati na detaljima već ćemo kroz par konkretnih primjera pokazati osnovne radnje pri njihovoj izradi. Napravit ćemo izvješće koje nam daje ispis svih transakcija za nekog korisnika za sve njegove račune, kao i prikaz salda za svaki račun. Prvo ćemo kreirati upit koji će izvlačiti željene informacije.

tabRacuni.id_korisnika (kako bi izvukli sve račune koji pripadaju jednom

[1] Kreirajte upit iz tablica tabKorisnici, tabRacuni i tabTransakcije [2] U upit redom stavite sva polja iz tih tablica [3] Pod kriterij polja id_korisnika iz tablice tabKorisnici upišite

korisniku) [4] Pod kriterij polja broj_racuna upišite tabTransakcije.broj_racuna (kako bi

izvukli transakcije na isti račun) [5] Spremite upit pod imenom upSviPodaci

Izvješća ćemo izrađivati primjenom čarobnjaka i eventualno dobiveno rješenje modificirati u razvojnom modu.

[6] Prebacite se u traci objekata na izvješća – Reports [7] Napravite brzi dvoklik na Create report by using wizard [8] U prvom koraku izaberite prethodno stvoreni upit upSviPodaci [9] Odaberite sva polja osim polja id_korisnika iz tabRacuni i broj_racuna iz

tabTransakcije [10] U drugom koraku susrećete se s dijaloškim prozorem u kojem se može mijenjati način

prikaza vaših podataka Æ u desnom okviru imate pregled općeg izgleda budućeg izvješća Æ ostavite ponuđenu opciju

[11] Treći korak nudi dodatnu mogućnost grupiranja podataka po jednom ili više polja Æ ako uključite dodatno grupiranje odmah ćete vidjeti promjenu na pregledu općeg izgleda obrasca u desnom okviru Æ dodatno grupiranje nećemo vršiti Æ pređite na sljedeći korak bez ikakvih zahvata u ovom koraku Æ Next

80

Page 83: access prirucnik

1. korak

2. korak

3. korak

Slika 3-33 Prva tri koraka izrade izvješća primjenom čarobnjaka

[12] Sljedeći dijalog nudi mogućnost sortiranja podataka po jednom ili više polja u uzlaznom ili silaznom nizu Æ izaberite sortiranje po id_transakcije u uzlaznom nizu (Ascending) Æ ako bi željeli vršiti sortiranje u silaznom nizu dovoljno je nakon izbora polja kliknuti na gumb Ascending i ono će se promijeniti u Descending

81

Page 84: access prirucnik

Slika 3-34 određivanje sortiranja u izvješću po željenim poljima

[13] Dolazimo do klasičnog dijaloga za izbor izgleda izvješća, tj. način rasporeda elemenata na stranici izvješća Æ izaberite Align Left 2 (inače kada radite izvješća u ovom koraku isprobate sve izglede i na osnovu pregleda u lijevom okviru zaključite koji izgled najviše odgovara prikazu vaših podataka)

Slika 3-35 izbor izgleda izvješća

82

Page 85: access prirucnik

Pod orijentacijom određujemo da li će stranica pri ispisu biti uspravna (Portrait) ili položena (Landscape). Opcija Adjust the field so all fields fit on a page osigurava da se sva polja na izvješću

stanu u širinu jedne stranice.

[14] Sljedeći korak Report Wizarda omogućava odabir stilova za budući izvještaj Æ nema druge nego po pricipu probajte, pa izaberite što vam se svidi

[15] Završni korak čarobnjaka vezan je samo uz dodjeljivanje imena kreiranom izvješću (radio buttons koja su vam na raspolaganju omogućuju pregled izgleda izvješća Preview the report ili njegovo modificiranje u razvojnom modu Modify the report's design) Æizvješću dodijelite ime izPregledRačunaTransakcija

Slika 3-36 Izgled dijela izvješća dobivenog čarobnjakom za izradu izvješća

Očigledno niste zadovoljni dobivenim rješenjem, pa ćemo nekoliko zahvata trebati napraviti "ručno" u razvojnom modu.

[16] Otvorite obrazac u razvojnom modu [17] Izbrišite tekstualne okvire JMBG i MBR [18] Promijenite veličinu slova svim tekstualnim okvirima i njihovim oznakama na 12pt [19] Promijenite boju pozadine oznakama i tekst okvirima preko alatne trake oblikovanja

83

Page 86: access prirucnik

[20] Promijenite boju slova svim oznakama i tekst okvirima po izboru [21] Promijenite tekstove u oznakama koji nisu korisnički prilagođeni (npr.

id_vrsta_korisnika: u vrsta korisnika:

Nakon načinjenih promjena izvješće bi vam trebalo imati približno sljedeći izgled:

Veći broj elemenata na izvješću možete istovremeno selektirati držeći pritisnutu tipku SHIFT pri njihovom označavanju. Elementi se pomjeraju kao i na obrascima, a također na isti način im mijenjamo i dimenzije.

Slika 3-37 izgled gotovog izvješća

[22] Napravite izvješće koje će prikazivati podatke o korisnicima i njihovim računima Ækoristite tablice tabKorisnici i tabRacuni

[23] Kao stil izaberite Bold [24] Dodijelite mu ime izKorisniciRačuni

Kada su kreirani svi objekti baze (tablice, upiti, obrasci, izvješća,…) nužno je kreirati i glavni izbornik aplikacije, koji se u Accessu često naziva razvodni obrazac ili razvodna ploča

84

Page 87: access prirucnik

(Switchboard). Na ovaj način korisnicima baze osiguravamo jednostavnije korištenje i snalaženje u aplikaciji.

3.4 Izrada glavnog izbornika aplikacije

Kreiranje glavnog izbornika aplikacije uglavnom se vrši primjenom čarobnjaka koji se naziva Switchboard Manager. Do njega dolazite preko izornika Tools Æ Database Utilities ÆSwitchboard Manager.

Slika 3-38 uključivanje čarobnjaka za izradu glavnog izbornika aplikacije

Otvorit će vam se sljedeći dijalog:

Slika 3-39 Izgled upravitelja glavnog izbornika

85

Page 88: access prirucnik

Close Æ zatvara dijaloški okvir New… Æ za kreiranje nove stranice ili obrasca Edit Æ uređivanje selektirane stranice Delete Æ brisanje stranice Make Default Æ proglašavanje stranice osnovnom – koja se prva pokreće

[1] Kliknite na New i u dijalogu koji vam se pojavi upišite ime Obrasci za novu stranicu [2] Ponovite postupak, samo sada upišite Izvješća

Imamo tri stranice koje su za sada potpuno prazne Æ potrebno ih je urediti.

[3] Kliknite na Main Switchboard (Default) Æ Edit… [4] Budući da se ta stranica prva pokreće dodat ćemo na nju dvije stavke Æ jednu koja će

služiti za otvaranje stranice za pristup obrascima, a drugu za otvaranje stranice kojom pristupamo izvješćima Æ kliknite na gumb New u otvorenom dijalogu

Slika 3-40 Kreiranje nove stavke na polaznoj stranici glavnoj izbornika

[5] Ponovite postupak za drugu stranicu Izvješća [6] Svaki glavni izbornik podrazumijeva da ima i gumb za izlaz iz aplikacije Æ kliknite na

New Æ kao tekst upišite Izlaz iz aplikacije, a pod naredbom odaberite Exit Application

Slika 3-41 kreiranje gumba za izlaz iz aplikacije na glavnom izborniku

86

Page 89: access prirucnik

[7] S Close se vratite na prethodni dijaloški okvir [8] Označite stranicu Obrasci Æ Edit Æ New [9] Pod Text upišite Unos novih korisnika, a pod Command izabeite Open Form in Add

mode Æ pod Form izaberite obrazac obPodaci [10] Ponovite to isto samo pod tekstom upišite Otvaranje novih računa; Command je ovaj

put Open Form in Edit mode i izaberite opet istu formu

Slika 3-42 kreiranje gumba za otvaranje obrasca za unos novog korisnika i otvaranje novih računa

[11] Na isti način kreirajte gumb koje će otvarati obrazac obPregled za pregledavanje svih transakcija po određenom računu

[12] Još je potrebno kreirati gumb koje će nas vraćati na glavnu stranicu:

87

Page 90: access prirucnik

[13] Vratite se na polazni dijalog klikom na gumb Close [14] Kliknite na stranicu Izvješća Æ Edit Æ New

[15] Ponovno New kako bi kreirali gumb za ispis podataka o korisnicima i njihovim računima Æ otvorili izvješće izKorisniciRačuni

[16] Opet kreirajte gumb za povratak kao i u prethodnom slučaju [17] Zatvorite Switchboard Manager

Cijeli glavni izbornik možete napraviti i bez primjene SwitchBoard Managera kao i bilo koji drugi izbornik kojeg ste do sada radili Æ najbolje "ručno"

Prebacite se pod Forms i uočite da ste dobili novi obrazac naziva Switchboard Æ riječ je upravo o glavnom izborniku aplikacije kojeg ste načinili Switchboard Managerom. Njega sada možete uređivati po želji kao i bilo koji drugi obrazac. Dobro, glavni izbornik aplikacije smo izradili, ali to još uvijek nije dovoljno sve dok ne definiramo tzv. inicijalne postavke kojima ćemo postaviti da upravo taj izbornik bude prvi kojeg će vidjeti krajnji korisnik pri pokretanju aplikacije. Također je korisno da sam glavni prozor baze bude skriven kako korisnik ne bi slučajno napravio promijene koje bi "srušile" aplikaciju ili dovele do neželjenog funkcioniranja nekog njenog dijela. Pa krenimo i na taj korak.

[18] Izbornik Tools Æ Startup… [19] U dijalogu za određivanje inicijalnih uvjeta pokretanja aplikacije pod Application Title:

upišite naziv aplikacije koji će se pojavljivati u gornjem lijevom kutu naslovne trake Accessa Æ Banka – uplate / isplate

88

Page 91: access prirucnik

[20] Pod Form / Page izaberite naš glavni izbornik Switchboard (osiguravamo da se on prvi pojavljuje)

[21] Isključite prikaz prozora baze Æ Display Database Window [22] Onemogučite korisnika da vrši promijene na alatnim trakama i menijima Æ isključite

opciju Allow Toolbar / Menu Changes [23] Isklučite opciju Use Access Special Keys [24] Sve ostale postavke ostavite nepromijenjene [25] Potvrdite promijene Æ OK

Slika 3-43 Izgled dijaloga za promijenu inicijalnih postavki aplikacije

Objasnit ćemo i ostale važnije opcije iz ovog dijaloga: Menu bar Æ izbor dodatne trake s padajućim izbornicima koja bi se odmah pojavljivala pri otvaranju aplikacije (potrebno je posebno kreirati) Allow Full Menus zajedno s Allow Default Shortcut Menus Æ isključivanjem ovih opcija onemogućavate prikaz svih izbornika Allow Built – in Toolbars Æ onemogućavanjem ove opcije postići ćete da Access samo prikazuje alatne trake koje ste vi kreirali, dok će sve ugrađene alatne trake biti isključene Display Status Bar Æ isključivanje / uključivanje statusne trake Application Icon Æ izbor slike ili ikone koja će se prikazivati u gornjem lijevom kutu naslovne trake (trebate znati gdje je slika / ikona pohranjena, tj. putanju do nje)

Slika 3-44 Izgled glavnog izbornika aplikacije

89