|
Microsoft Office Access |
|
|
Nova vrednost u padajućoj listiNivo:
Padajuća lista (combo box) se koristi u mnogim prilikama. Njena vrednost može poslužiti za pretragu podataka, može sadržati listu podataka koje korisnici mogu odabirati, Access je može dopunjavati postojećom vrednošću sa započetim unosom teksta, možete ograničiti korisnika na izbor podataka iz liste, itd. Problem sa kojim se programeri obavezno sreću glasi: kako dodati zapis u skup podataka kada operator unese vrednost koja nije u listi? Primer za ovo je trgovina u koju dolazi novi kupac. Tom prilikom, bilo bi uobičajeno da se svi matični podaci o kupcu unsu u bazu, kako bi bili raspoloživi z asledeću priliku. Sledeći put kada taj kupac dođe u kupovinu, dovoljno je da ga odaberete iz padajuće liste i obradite podatke o kupovini. Naziv kupca je potrebno transparentno uneti u postojeći skup podataka, osvežiti listu i ponovo prikazati vrednost. Osobina koja kontroliše mogućnost unosa proizvoljnog teksta u padajuću listu se naziva Limit To List. Kada je ova osobina postavljena na vrednost No, tada korisnik aplikacije može upisati bilo koju vrednost u polje. Ovo je dobro, ali i pogrešno: ako je potrebno da ta vrednost ostane trajno zapisana u bazi podataka, sam upis u listu ne znači ništa, jer se upisana vrednost na ovakav način gubi - ona je trenutno prikazana u listi, a kada pređete na novu vrednost, postojeća biva obrisana.
Čuvanje svih podataka u bazi ima smisla, a dodavanje novih vrednosti upisivanjem u listu je često i obavezno. Da biste omogućili korisniku da može da dodaje nove zapise, postavite osobinu Limit To List na Yes. Takvim postupkom najpre ograničavate korisnika da ne može da upiše proizvoljan tekst u listu, ali zauzvrat omogućavate okidanje događaja NotInList u koji ćete postaviti program koji dalje preuzima brigu o novom podatku. U događaj NotInList postavite sledeći program: Private Sub cmbLista_NotInList _ (NewData As String, Response As Integer) Dim ctl As Control Set ctl = Me.cmbLista Response = acDataErrAdded ctl.RowSource = ctl.RowSource & ";" & NewData End Sub Argument Response govori Accessu kako da se ponaša kada dođe do greške. Dodavanjem vrednosti acDataErrAdded nalažemo Accessu da ne prikazuje generičku poruku o grešci. Zatim listi pridodajemo novu vrednost dodajući vrednost NewData (sadrži uneti tekst koji se ne nalazi u listi), koristeći pritom osobinu RowSource. Nažalost, ova jednostavna procedura funkcioniše samo ako je osobina Row Source Type postavljena na Value List. Ukoliko za izvor podataka postavite tabelu ili upit (Table/Query), moraćete da upotrebite drugačiji program:
Private Sub cmbLista_NotInList _
(NewData As String, Response As Integer)
Dim new_data As String
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
new_data = Replace(NewData, "'", "''")
Response = acDataErrAdded
conn.Execute "Insert Into " & _
"tblImenik(fldPrezime) Values('" & _
new_data & "')"
End Sub
U ovom primeru, izvor podataka je tabela tblImenik, a polje tabele u koje će biti upisana nova vrednost je fldPrezime. Izmenite ove dve vrednosti tako da odgovaraju nazivu vaše tabele i pripadajućeg mu polja.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana. |