Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


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

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Kontrola unosa teksta

Nivo:  NIVO 3 - klinite za objašnjenje


Tekstualno polje u Accessu može čuvati najviše 255 znakova. Ukoliko je potrebno više od toga, koristićete memo tip polja i omogućiti korisniku unos do 65535 znakova (64 kilobajta). Često je iz različitih razloga potrebno ograničiti broj znakova koje će tekstualno polje primiti i pritom pružiti korisniku informaciju o broju preostalih znakova koje može upisati u tekstualno polje.

Razlozi ograničenja mogu biti različiti: zbog količine podataka koje ćete prikazati na izveštaju, a da se tekst ne "odseca" ili zbog veličine baze i brzine rada. Nedavno sam slično ograničenje pravio za aplikaciju koja šalje SMS poruke ograničene na 160 znakova. Svejedno koji je razlog, tehnikom koju ćemo opisati možete pružiti dodatnu informaciju o preostalom broju znakova kako bi korisnik mogao da prilagodi dužinu informacije, bez potrebe da menja ili briše ukucan tekst samo zato što je premašio ograničenje.

Događaj AfterUpdate vam neće pomoći, jer zahteva da je unos teksta već završen kako biste mogli da primenite funkciju Len() koja će izbrojati unete znakove. Stoga ćete koristiti događaj OnChange, koji se aktivira sa svakom promenom sadržaja polja, i osobinu .Text polja, koja će u kombinaciji sa funkcijom Len() vratiti broj unetih znakova. Neophodno je da postavite i dodatnu kontrolu čiji sadržaj ćete kontrolisati jednostavnom komandom, a koja će prikazivati broj znakova tokom unosa. Onemogućite pristup toj kontroli postavljanjem osobina Enabled: No i Locked: Yes. Nazovite ovu kontrolu fldBrojZnakova. U događaj OnChange polja za unos teksta (fldTekst) postavite ovu komandu:

fldBrojZnakova = Len(fldTekst.Text)

Ovako napisana, komanda će ispisivati broj unetih znakova u rastućem redosledu (od 1 do maksimalnih 255). Ukoliko želite da ovaj brojač broji unazad, upotrebite sledeću komandu:

fldBrojZnakova = 255 - Len(fldTekst.Text)

Broj 255 možete promeniti u neki drugi, manji broj, u zavisnosti od ograničenja koje ste postavili u dato polje. U svakom slučaju, 255 je najveća vrednost koju možete upotrebiti u tekstualnom polju.

U vezi sa ovom tehnikom nadovezuje se naredna. Korisniku možete omogućiti da uređuje sadržaj već unetog teksta, da napusti polje, a zatim da se kursor vrati na poslednju poziciju na kojoj se nalazio tokom uređivanja - sve to programski kontrolisano.

Primer ovakve upotrebe možete naći u programima za slanje velikog broja e-mail ili SMS poruka iz Access baze. Zamislite da želite da pošaljete istu poruku na nekoliko stotina mail adresa ili brojeva mobilnih telefona, ali tako da poruka sadrži neku ličnu informaciju vezanu za korisnika, kao što je stanje računa ili ime primaoca. Umesto da pišete onoliko različitih poruka koliko različitih poruka želite da pošaljete, možete napisati samo jednu i na određenom mestu umetnuti pametnu oznaku (smart tag) koja će prilikom slanja biti zamenjena ličnim podatkom. Pametna oznaka može imati oblik <Prezime> ili <StanjeRacuna>. Pre zapisivanja poruke u bazu, funkcija za zamenu znakova će pronaći svaku pametnu oznaku i zameniti je podatkom koji je različit za svakog primaoca poruke. Ova tehnika je sasvim uporediva sa funkcijom Mail Merge u Wordu.

Vratimo se našem primeru. Korisnik kuca poruku "Vaše stanje računa je: ", umeće pametnu oznaku odabirom iz padajuće liste unapred definisanih pametnih oznaka (napušta tekst polje), program čita odabrani sadržaj padajuće liste i umeće je tačno na ono mesto gde je korisnik zastao sa unosom, a zatim tekst polje ponovo dobija fokus.

Program mora da utvrdi poziciju u tekstu u kome se kursor nalazio neposredno pre napuštanja polja, da umetne novi tekst, a zatim da vrati kursor u tekst polje na toj poziciji uvećanoj za broj znakova pametne oznake, kako bi korisnik mogao neometano da nastavi unos.

Definišite javnu promenljivu čija vrednost se neće izbrisati po napuštanju procedure - to je vrednost koja će ostati sačuvana sve dok je program aktivan. To možete učiniti u nekom od modula tako što ćete na samom vrhu napisati:

Option Explicit
Public varPozicija As Long

klauzula Option Explicit nije neophodna, ali ćete njenim navođenjem zahtevati od programa da provera sve VBA promenljive koje koristite. Ukoliko ste upotrebili promeljivu koju niste definisali, program će vas upozoriti da je definišete. U suprotnom, promenljiva će biti deklarisana kao tip Variant, a takve promenljive troše mnogo memorije i značajno usporavaju rad. Drugim rečima, eksplicitno deklarisanje promenljivih je dobra i korisna praksa!

U trenutku napuštanja tekst polja aktiviraju se dva događaja, u zavisnosti od toga da li je korisnik upotrebio miša ili tastaturu: to su OnMouseUp ili OnKeyUp. Pošto ne možete predvideti izbor korisnika, u oba događaja postavite sledeću komandu:

varPozicija = fldTekst.SelStart

Sada korisnik može odabrati pametnu oznaku, nakon čega će program vratiti fokus na tekst polje i postaviti kursor na isto mesto gde se nalazio:

fldText.SelStart = varPozicija

Odnosno, ukoliko ubrojite i dužinu umetnutog teksta, komanda glasi:

fldText.SelStart = varPozicija + Len(cmbPadajućaLista)

Ukoliko ste za izvor podataka padajuće liste koristili dve kolone (ID polje i tekst koji prikazujete), što se često koristi iz dva razloga - referenciranje sloga po ID broju i za prikaz teksta umesto ID broja, moraćete da referencirate drugu kolonu padajuće liste:

fldText.SelStart = varPozicija + Len(cmbPadajućaLista).Column(1)

 

  (C) 2000-2009 Praktikum na Webu

PC 125


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.