Access – Combo boxovi u interakciji

Pretpostavimo da imamo bazu podataka koja sadrži tabele Klijent i Narudžbe. Pretpostavimo i to da imamo formu na kojoj treba omogućiti korisnicima da mogu preko jednog combo-boxa da izaberu naziv klijenta, dok će se u isto vreme preko drugog combo-boxa omogućiti da se izabere određena narudžba datog klijenta. Ovo implicira da ova dva combo-boxa moraju biti u relaciji i da promena prvog utiče na izmenu sadržaja drugog. Kako ovo izvesti?

Da biste postigli ovaj cilj, trebalo bi da combo-box tabele Narudžbi zasnujete na upitu koji pronalazi sve slogove (redove u tabeli ) Narudžbe sa vrednošću koja je definisana u combo-boxu Klijent. Potom ćete morati da dodate programski kod odgovarajućoj kontroli (combo-boxu) na formi vezano za određeni događaj (izmena vrednosti) da biste Accessu „kazali“ da izvrši ponovni upit (requery) u tabeli Narudžbe, kad god se desi promena u Klijent combo-boxu.

Preduzmite sledeće korake: prvo, promenite osobinu Name kontrole combo-box vezanu za klijenta u cboSifKlijenta (šifra klijenta) i isto to uradite za combo-box Narudžbi – preimenujte naziv kontrole u cboSifNarudzbe. Ovim ćete bolje identifikovati combo-boxove i eliminisati probleme sa nazivima.

Sledeće, podesite osobinu Row Source combo-boxa Narudžbi tako da ukazuje na SQL upit kojim se ekstrahuju slogovi na osnovu šifre klijenta, iz combo-boxa Klijenta. Da biste ovo odradili, kliknite na osobinu Row Source, a potom na dugme za izgradnju upita. U Query Builderu izaberite kolone (polja tabele) iz tabele Narudžbe koje će se koristiti u combo-boxu, kao što su SifNarudzbe, Datum i tako dalje, uključujući obavezno i polje SifKlijenta (šifra klijenta). Zatim, u koloni SifKlijenta unesite [cboSifKlijenta] u polje kriterijuma (Criteria). Ovo Accessu ukazuje da ograniči rezultate upita na samo one slogove koji imaju istu vrednost kao trenutno selektovana u Klijent combo-boxu. Ovo pretpostavlja da je Klijent combo-box ograničen (bound column) kolonom SifKlijenta.

Kada zatim zatvorite Query Builder, Access će ubaciti SQL naredbu unutar osobine Row Source (izvor podataka), te u SQL naredbu uključiti Where klauzulu, nešto slično ovome:


WHERE (((Narudzbe.SifKlijenta) =
[cboSifKlijenta]))

Ovo će ograničiti broj slogova koji će se prikazati unutar ove kontrole.

Sada je potrebno da učinite da se svaki put kada se promeni vrednost unutar Klijent combo-boxa, automatski izvrši update combo-boxa Narudžbi. Da biste ovo dobili, ubacite sledeći programski kod unutar događaja AfterUpdate combo-boxa vezanog za Klijenta:


Me![cboSifNarudzbe].Requery

Ova linija koda kazuje Accessu da obnovi sadržaj combo-boxa vezanog za Narudžbe svaki put kada se dogodi događaj AfterUpdate kontrole combo-box Klijenta.

Pratite Krstaricu na www.krstarica.com