Microsoft Office Access
uređuje Branislav Mihaljev, MVP

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Accessu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Proširena kontrola zapisa

Nivo:  NIVO 1 - klinite za objašnjenje


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.

 

  (C) 2000-2011 Praktikum na Webu

PC 118


 
 

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.