Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

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

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


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

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

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

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

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

USKORO SERIJA ČLANAKA O OFFICEU 2010

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



  (C) 2000-2009 Praktikum na Webu
 

Relacija više-prema-više

Nivo:  NIVO 2 - klinite za objašnjenje


Formalno gledajući, relacija više-prema-više se kosi sa teorijom normalizacije baza podataka. Ali, ako verujete da praksa ima prvenstvo nad teorijom, razumećete da ponekad treba učiniti ustupak u ime konačne efikasnosti. Uostalom, ovde samo simuliramo takvu relaciju u uredno normalizovanoj izvedbi. Prikazujemo očigledan primer.

Padajuća lista se najčešće koristi za pretragu i skok na određeni zapis baze. Jedna od dobrih osobina ovakve liste je mogućnost da iz nje selektujete vrednost i da je prenesete u drugo polje forme ili da vrednost zapišete u tabelu koja nije vezana sa formom. Upotreba padajuće liste za zapisivanje vrednosti u drugu tabelu se nameće kada je neophodno da upravljate podacima u relacija više-prema-više. Na primer, jedan student može pohađati više vežbi, odnosno, na jednoj vežbi može prisustvovati više studenata. Drugi primer je prilog koji upravo čitate: jedan autor može napisati više priloga, ali na pisanju jednog priloga može učestvovati i više autora.

U Accessu, naime, ne postoji mogućnost da eksplicitno definišete relaciju više-prema-više, ali na posredan način ovakvu relaciju možete definisati između dve spoljne tabele koje se sa zajedničkom povezuju u relaciji jedan-prema-više. U zajedničkoj tabeli se zatim zapisuju ID brojevi iz obe tabele, tako da se oni mogu ponavljati.

Objasnićemo ovakvu relaciju na primeru knjiga i njihovih autora. Kreirajte tri tabele prema sledećim podacima:

tblKnjige tblKnjgeAutori tblAutori
IDKnjiga IDKnjige IDAutor
Naslov IDAutor Prezime
DatumIzd   Ime
Izdavac   Titula

Napravite jednu formu kojoj ćete za izvor podataka postaviti tabelu tblKnjige i prenesite sva ili polja po želji na nju. Ovu formu ćete kasnije koristiti za unos podataka. Na formi je neophodno da postavite padajuću listu sa svim autorima iz koje ćete određivati jednog ili više njih, vezanih za unetu knjigu. Učinićete ovo na posredan način uključujući i međutabelu tblKnjigeAutori. Za sada zatvorite i snimite ovu formu pod nazivom frmKnjige.

Kreirajte još jednu formu sa izvorom podataka tblKnjigeAutori i snimite je pod nazivom sfrmKnjigeAutori. Postavite na nju padajuću listu koju ćete povezati sa poljem IDAutor. Smanjite veličinu forme na najmanji mogući prostor, toliki da na nju staje samo padajuća lista. Vrednosti Record Selectors, Navigation Buttons i Dividing Lines zatim postavite na No, čime obezbeđujete da se podforma u glavnoj formi pojavljuje bez nepotrebnih kontrola. Za izvor podataka padajuće liste postavite sledeću SQL sintaksu:

SELECT DISTINCTROW tblAutori.IDAutor,
Ime & ", " & Prezime & " " & Titula AS AutorIme
FROM tblAutori
ORDER BY tblAutori.IDAutor;

Zatvorite i snimite formu, a zatim je unesite kao podformu na formu frmKnjige. Za relaciju povezivanja između forme i podforme (LinkChildFields i LinkMasterFields) postavite IDKnjiga.

Sada za jedan zapis u tabeli tblKnjige možete pridružiti više autora naizmeničnim odabirom iz padajuće liste autora. Obratite pažnju da za unos novog autora koji se ne nalazi u listi nije predviđena posebna procedura i ako pokušate da unesete novog autora upisom u padajuću listu autora, Access će prijaviti grešku. Autori se mogu uneti preko zasebne maske koju možete aktivirati događajem OnNotInList.

Pretpostavimo sada da na jednom projektu radi više saradnika, a veoma često i svi zajedno. Ukoliko saradnika ima mnogo i želite sve da ih pridružite jednom projektu, gore opisana procedura upotrebe padajuće liste neće mnogo pomoći: potrebno je redom odabirati jednog po jednog saradnika (odnosno autora) za zadati projekat (knjigu), sve dok sve ne povežete sa zapisom tabele projekat (knjiga). Ideja je da se zadrži postojeći spisak padajuće liste i da se u njega doda još jedan zapis - "Svi autori".

Upotrebićemo već kreirane tabele za demonstraciju primera. U tabelama tblAutori i tblKnjigeAutori izmenite tip podatka polja IDAutor i pretvorite ga u tekst. Za indeks polja postavite vrednost Yes (No Duplicates) kako biste izbegli dupliranje ID brojeva autora.

Otvorite formu sfrmKnjigeAutori i izmenite izvor podataka RowSource, tako da glasi:

SELECT IDAutor
FROM tblAutori
UNION SELECT 'Svi autori' AS IDAutor
FROM tblAutori;

Pogledajte rezultat ove SQL sintakse u obliku rezultata upita (klikom na dugme "..."). Upit će prikazati sve ID brojeve autora i dodatni red sa tekstom "Svi autori". Proširićemo SQL sintaksu tako da daje prikaz u dve kolone. U prvoj će se nalaziti ime i prezime, a u drugoj ID broj autora:

SELECT ID.Autor AS Filter,
Ime & " " & Prezime
FROM tblAutori
UNION SELECT '*' AS Filter,
"Svi autori" AS IDAutor
FROM tblAutori;

Snimite upit i podformu i pogledajte rezultat rada - trebalo bi da izgleda kao na ovoj slici.

Podforma sa dodatim redom "Svi autori"

Tekstu "Svi autori" možete naknadno dodati zagrade tako da glasi "(Svi autori)" kako bi se pri sortiranju ovaj red uvek našao na vrhu liste. Naime, otvorena zagrada ima ASCII vrednost 40, dok slovo A ima ASCII vrednost 65, pa će se pri sortiranju uvek naći na vrhu liste. Dodatno, zagrade izdvajaju zapis tako da je lako uočljiv. Verovatno ste primetili da nismo koristili sortiranje sa ORDER BY, ali se lista svakako već sortira upotrebom DISTINCT i UNION. Kada zahtevate unificiranu listu, ona je odmah sortirana.

 

  (C) 2000-2009 Praktikum na Webu

Branislav Mihaljev, Access bajtovi, PC 92


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

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