Ono sto hoces da postignes trazi malo vise posla unapred. I pitanje je da li ti bas to treba, bas onako kako si naveo:
Citat:
Imam sledeće tabele ucenici, predmeti i ocene. Kako da napravim formu ucenici koja će sadržati podformu za unos ocena a da se svi predmeti iz tabele predmeti pojavljuju na toj podformi bez obzira da li učenik iz tog predmeta ima ocenu.
Getsbijevo resenje dozvoljava da uneses predmet bez ocene. medjutim, ne prikazuju se uvek svi predmeti, barem dok ih ne uneses. Nema nista lose u resenju koje je Getsbi dao. Da sam ja dizajner tog sistema, uradio bih upravo onako kako Getsbi predlaze, uz neka dodatna ogranicenja. Kljucno pitanje je zasto bi pri unosu podataka morao da vidis bas sve predmete za tekuceg ucenika, sa ili bez ocene? Relacije koje je postavio Getsbi sprecavaju da uneses ocenu za ucenika iz predmeta koji ne postoji. Znaci, tu smo bezbedni. etsbi je zabranio da imas vise od jedne ocene po predmetu za datog ucenika. I tu se slazem snjim, mada to zavisi od zadatka, a to u ovom momentu ne znamo. Gde se razilazim sa Getsbijem je cinjenica da njegov model dozvoljava da se u tabelu Ocene unese predmet ebz ocene. Getsbi to ne bi uradio da nisi ti to trazio - da se vide predmeti i koji nemaju ocene. Ja ne bih dozvolio da se unese rekord u tabelu ocene a da ocena u stvari ne postoji. Ponavljam, to ne bi ni Getsbi dozvolio, ali si ti to trazio,. Stoga se postavlja pitanej validnosti zahteva.
Ako bas zelis da imas sve predmete dodeljene svakom student pre unosa ocena, onda se mora uraditi ovo:
- u momentu dodavanja novog ucenika u tabelu Ucenici, mora se popuniti i tabela Ocene, tako sto se za zadatog studenta dodaju sve vrednosti iz tabele predmet, a kolona Ocene.Ocena ostavi prazna to jest ta kolona ce sadrzati NULL vrednosti
Posto je u pitanju Access, ne moze se garantovati da ce se sve bas ovako desiti. Naravno, moze se napisati kod koji ovo odradjuje ali to nije jednostavno ako sto se cini, ako se zeli valjano uraditi. Stoga predlazem da odustanes od zahteva i da se u tabelu Ocene vrati uslov da kolona Ocena ne sme biti NULL (proerty Required = Yes u table design)
Ako ti treba da prikazes sve ucenika i sve predmete, bez obzira da li imaju ocenu, koristi nesto kao
Code:
qiery qryUceniciPredmeti:
SELECT Ucenici.*, Predmeti.*
FROM Ucenici, Predmeti
pa onda
SELECT
qryUceniciPredmeti.*, Ocene.Ocena
FROM qryUceniciPredmeti
LEFT JOIN Ocene
ON qryUceniciPredmeti.UcenikID = Ocene.UcenikID
AND qryUceniciPredmeti.PremetID = Ocene.PredmetID
Poslednji SELECT ce ti prikazati sve ucenike i sve premete i ocene tamo gde ih ima. To mozes da koristis na reportu ali i kao record source za formu, zasto ne, samo sto taj record source nece biti 'updatable'. Znaci, morao bi da resis dodeljivanje ocene na neki drugi nacin, na podsebnoj formici. I to je komplikovano, pa predlazem da zadrzis Getsbijev model, uz dodatno ogranicenej da Ocene.Oceana ne sme biti NULL, a da opisani sistem kverija koristis za prikaz podatka.