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

 


 

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
 

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-2010 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-2010; Valinor Design; sva prava pridržana.