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