Microsoft Office Access |
|
|
Relacija više-prema-višeNivo:
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:
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:
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:
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:
Snimite upit i podformu i pogledajte rezultat rada - trebalo bi da izgleda kao na ovoj slici.
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.
|
|
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. |