Microsoft Office Access |
|
|
Višestruki Combo BoxNivo:
U mnogim slučajevima je lakše odabrati podatak iz postojeće liste nego ga svaki put ukucavati. Combo Box je padajuća lista koja sadrži podatke koji su već uneti u tabelu ili su izdvojeni iz tabele upitom. A može li se druga lista popuniti na osnovu izbora u prvoj? Naravno da može... Izbor se obavlja na dva načina: biranjem vrednosti iz liste korišćenjem miša ili ukucavanjem vrednosti gde se ona može automatski dopunjavati. Kod povezane padajuće liste uneta ili ukucana vrednost se prenosi na polje za koju je kontrola vezana, a kod nepovezane (unbound) padajuće liste izbor je veoma širok. U tom slučaju, uneta vrednost može poslužiti kao filter za pronalaženje određenog podatka ili kao polje koje čuva podatak čija vrednost se opet koristi za filter drugog Combo Boxa. U Accessovoj Help datoteci opisana je metoda RecordsetClone kojom se sadržaj forme sinhronizuje sa vrednošću Combo Boxa. Ukratko, metoda se svodi na definisanje filtera, gde se nenumerička vrednost ograđuje navodnicima i primenjuju se metode FindFirst za pronalaženje prve vrednosti, kao i Bookmark za skok na pronađenu vrednost. Ponekad ova metoda nije dovoljna, recimo kad je potrebno napraviti dvostruki dinamički filter gde drugi zavisi od prvog. Pretpostavimo da imamo kupce i određene događaje povezane sa njima i da poželimo da na osnovu selektovanog kupca u prvoj padajućoj listi u drugoj padajućoj listi dobijemo izbor događaja vezanog za samo tog kupca. Jednostavnim postavljanjem dva Combo Boxa, jednog sa kupcima i drugog sa događajima, nećemo ništa postići, jer će se u drugoj padajućoj list naći i podaci koji nemaju veze sa odabranim kupcem. Da bismo ovo postigli, treba da uradimo nekoliko stvari. Druga padajuća lista cbSelektujDogadjaj mora da je ograničena na događaje vezane za kupca prve padajuće liste cbSelektujKupca. U drugoj padajućoj listi postavićemo kriterijum nad ID brojem kupca IDKupac tako da on "gleda" vrednost prve liste:
Ovo nije dovoljno da se sadržaj druge liste automatski osveži - potrebno je izvesti ponovni upit (re-query) nad izvorom podataka druge liste postavljanjem sledeće linije u događaj AfterUpdate liste cbSelektujKupca:
Preostalo je da se filtrira forma na osnovu vrednosti obe liste. Primenićemo tehniku RecordsetClone u događaju AfterUpdate za listu cbSelektujDogadjaj. Kao kriterijum ćemo upotrebiti sledeći izraz:
Izraz Chr(34) u gornjem izrazu je obični navodnik, a koristi se u posrednom obliku kako bi se izbegli problemi sa višestrukim navodnicima u izrazu. Korišćenja dva Combo Boxa nije jedini način da se napravi višestruki (preciznije: dvostruki) filter. Kod višestrukih filtera može se nanizati nekoliko povezanih padajućih lista gde bi korisnik redom odabirao vrednosti. Ponekad je dovoljno napraviti jednu višekolonsku padajuću listu gde bi korisnik samo jednim izborom došao do kupca i događaja vezanog za njega (u slučaju kada ovakav izbor nije prevelik). Ovakva lista u prvoj koloni sadrži polje IDKupac, a u drugoj koloni polje IDDogadjaj. U tom slučaju, kriterijum za filter izgleda ovako:
U gornjem izrazu Column(x) je referenca na broj kolone padajuće liste i počinje od nule. Pomoću proširenog izraza Column(x, y) može se referencirati podatak koji se nalazi u koloni x i redu y. Za verzije Accessa ranije od 2000 potrebno je pre metode FindFirst dodati
jer se u određenim uslovima ispoljava neprijatna greška, naročito kad je skup podataka jako veliki, iako opisana metoda radi i u Accessu 2. Umesto Combo Boxa, može se upotrebiti i List Box, pod uslovom da prostor na formi to dozvoljava ili da lista nije prevelika. List Box prikazuje više podataka odjednom i često je brže ili lakše na ovaj način odabrati podatak. List Box, za razliku od Combo Boxa, uvek prikazuje isti sadržaj i u njega se ne mogu dodavati vrednosti koje lista već ne sadrži. Praktično, opisana metoda višestrukog filtera na osnovu ponuđenih lista podataka je ista i u List Boxu, a koja će se metoda upotrebiti zavisi samo od opisanih razlika.
|
|
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. |