|
Microsoft Office Access |
|
|
Proširena kontrola zapisaNivo:
Prilikom unošenja podataka pomoću formulara često je potrebno postaviti kontrolu unosa ili izmena podataka. Realan scenario koji se često dešava: operater tokom izmene podataka bude načas ometen i jednostavno zaboravi da li je išta menjao ili to tek treba da učini, a ponekad ne zna ni gde je postavio kursor i zbog čega. U formularima sa mnogo polja koristićete uslovno formatiranje, tako da će polje koje je u fokusu imati izmenjenu boju pozadine, fonta ili zadebljane karaktere. Ovo se lako postavlja, samo upotrebite funkcije uslovnog formatiranja (Conditional Formatting) i za uslov postavite Field Has Focus. Naravno, ne morate na ovaj način formatirati svako polje ponaosob - upotrebite alatku Format Painter i prenesite formatiranje na sva polja, čime obezbeđujete jednoobraznost formata. Ovim ste obezbedili da operator može tokom unosa podataka odmah naći kontrolu na kojoj je kursor. Dodatni problem se javlja kada se operator ne može setiti zašto je stao baš u određenom polju formulara i da li je uopšte išta menjao ili unosio. Stoga bi trebalo da predvidite kontrolu unosa koja će obaveštavati da li je slog izmenjen, pa zahtevati potvrdu ili odustajanje od čuvanja izmena. Problem na nivou forme ćete lako rešiti. U BeforeUpdate događaj BeforeUpdate postavite sledeći kratki program:
If MsgBox("Snimanje podataka?", vbYesNo, _
"Snimanje") = vbNo Then
Cancel = True
Me.Undo
End If
Access prati akcije korisnika, ali tako da sve dok je u okviru jednog zapisa ne zapisuje podatke u izvornu tabelu. Tek kada pređete na prethodni, naredni ili novi zapis, izmene bivaju automatski zapisane. Ovu funkciju "umećete" između napuštanja zapisa i snimanja izmena u tabelu. Nikakva provera nije potrebna, jer je postavljena u odgovarajućem događaju. Za potrebe jednog korisnika, koji nam se obratio pitanjem da li je moguće napraviti sličnu univerzalnu funkciju, ali takvu da zadrži postojeće korisničko dugme Sačuvaj podatke, modifikovao sam prethodnu funkciju. Ideja je bila da se zadrži postojeća funkcija, ali i da se uvede dodatni nivo provere. Scenario je takav da kad korisnik pritisne dugme Sačuvaj podatke, podaci zaista budu sačuvani i da se pritom preskoči deo za kontrolu izmena. Ukoliko korisnik ipak zaboravi da pritisne ovo dugme, potrebno je upozoriti ga da je načinio izmene koje još nisu sačuvane tj. da se izvrši prethodna funkcija. Ponekad je potrebno namerno izbeći čuvanje podataka i to u slučaju kada se u okviru formulara obavljaju izvesni proračuni, pa se uticanjem na parametre mogu posmatrati rezultati. Za analizu podataka bi bilo bolje upotrebiti Excel, ali postoje situacije kada korisnik nema instaliran Microsoft Office, već koristi samo Access Runtime za pokretanje aplikacije. Otvorite postojeći ili napravite novi modul. Prenesite u njega sledeću funkciju:
' Modifikovana funkcija za kontrolu unosa
'
Public Potvrda As Integer
Function BU1(Forma As Form, Cancel As Integer)
Potvrda = 1
Call BU(Forma, Cancel)
End Function
Function BU(Forma As Form, _
Cancel As Integer)
If Potvrda = 0 Then
If MsgBox("Snimanje izmena?", vbYesNo, _
"Snimanje") = vbNo Then
Cancel = True
Forma.Undo
End If
End If
End Function
Zatim otvorite formular na kome imate dugme Sačuvaj promene i za događaj OnClick postavite: =BU1(Screen.ActiveForm;0) a za događaj BeforeUpdate postavite =BU(Screen.Activeform;0) U oba slučaja pozivate odgovarajuće funkcije - za pritisak na dugme funkciju BU1, a za kontrolu upisa podataka formulara funkciju BU. Prvi parametar kazuje odakle je pozvana funkcija i prenosi naziv forme kao parametar - ukoliko je to učinjeno pritiskom na dugme, podaci se zapisuju. Zapravo, pozivanjem funkcije pritiskom na dugme Sačuvaj podatke parametar naziva forme nije neophodan, ali smo ga ostavili u funkciji pošto druga funkcija traži dva parametra, pa s njim možete učiniti još nešto (npr. ispisati naziv forme na kojoj su podaci sačuvani). U suprotnom se pokreće funkcija sa kontrolnim pitanjem. Funkciju možete pokrenuti sa bilo kog formulara. Funkcija BU1 služi tome da izmeni vrednost promenljive kojom kontrolišemo da li je korisnik inicirao snimanje sadržaja ili je to zaboravio da učini, a pokušao da pređe na drugi zapis. Promenljivu Potvrda je potrebno definisati na višem nivou, tako da se njena vrednost ne menja kada funkcija ili procedura završi rad. Vrednost promenljive Potvrda morate vratiti na vrednost 0, a to možete učiniti u događaju AfterUpdate formulara koji poziva funkcije kontrole unosa. Osim ovog načina, neki korisnici koriste i sasvim drugačiji pristup. Na formular postave onoliko polja koliko ih ima tabela u kojoj će menjati ili dodavati podatke. Sva polja formulara nisu vezana, a sam formular nema svoj izvor podataka. Kada korisnik popuni sva polja, program postavlja pitanje da li korisnik želi da sačuva izmene, a zatim iz VBA procedure prenese vrednosti iz polja formulara u tabelu.
|
|
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. |