Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Samo numeric u InputBox?

[es] :: Access :: Samo numeric u InputBox?

[ Pregleda: 3079 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Samo numeric u InputBox?12.07.2010. u 21:01 - pre 167 meseci
Treba mi rešenje za InputBox da prihvata unos samo numeric (i cele i decimalne brojeve) vrednosti sa tastature.

Imam već proceduru sa proverom da li je uneta vrednost numerik, i poništavanjem unosa ukoliko to nije slučaj, ali pošto se radi o kasi i unosu količina, zaključio sam da je to samo gubljenje dragocenog vremena... Dakle, kako uvesti restrikciju na unos slova i ostalih nenumeričkih znakova u InputBox-u?

Napominjem da InputBox pozivam na F12, nešto otprilike kao:
Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF12
Me.Koliko = InputBox("KOLIČINA?", "Unesi koliko", 1)
End Select
End Sub
 
Odgovor na temu

banem
Kikinda

Član broj: 16619
Poruke: 583
*.dynamic.sbb.rs.



+15 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 21:25 - pre 167 meseci
Probaj sa OnChange polja i proveri IsNumeric(NazivPolja.Text) = True, npr.

Public dblPrethVrednost As Double '(na vrhu modula)

OnChange

If IsNumeric(NazivPolja.Text) = False Then
NazivPolja = dblPrethVrednost
Else
dblPrethVrednost = NazivPolja.Text
End If


Promenljiva dobija vrednost samo ako je unet broj, inače se vraća dotadašnja vrednost. Možda treba i da pozicioniraš kurzor na kraj unosa, ali to je ideja.

Na kraju unosa resetuj vrednost promenljive na Null (OnLostFocus).
Pozdrav,
Branislav
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 21:57 - pre 167 meseci
Ovo funkcioniše, ako se vrednost unosi u direktno u TextBox, ali to nije moj slučaj.

Da pojasnim, na glavnoj formi postoje dva TextBox-a. Jedan se zove txtKoliko, koji je lockovan (dakle nema OnChange, OnLostFocus itd) i čija je default vrednost = 1, a kasir je menja sa F12 (InputBox), ako želi ručno da unese potrebnu količinu za sledeći artikl. Unos se vrši kroz polje txtUnos, preko barkoda ili šifre, a onda se lista pakuje u nevezanu subformu ispod.

Dakle, nema direktnog unosa podataka u subformu, i artikli se upisuju samo preko jednog polja na glavnoj formi.
 
Odgovor na temu

banem
Kikinda

Član broj: 16619
Poruke: 583
*.dynamic.sbb.rs.



+15 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 22:11 - pre 167 meseci
Sad tek ne razumem. :)

Da li ti želiš da kontrolišeš ono što se kuca u InputBox-u? Ako je to, to ne može.
Pozdrav,
Branislav
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 22:17 - pre 167 meseci
Citat:
banem: Da li ti želiš da kontrolišeš ono što se kuca u InputBox-u?

Da, to je bilo pitanje i u naslovu teme
Citat:
Ako je to, to ne može.

Damn!
 
Odgovor na temu

Trtko
Koprivnica

Član broj: 69494
Poruke: 695
*.adsl.net.t-com.hr.



+8 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 22:25 - pre 167 meseci
A zašto si ne napraviš jednu malu formu na kojoj bi stavio txtbox i postavio format da se mogu unesti samo brojevi sa deimalama



nekako ovako

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF12
DoCmd.OpenForm "Unoskol", , , , , acDialog ' program čeka da se zatvori otvorena forma, NE izvrsava kod ispod
' na on close forme Unoskol napunis forms!glavnaforma.koliko= unesena vrijednost
' Me.Koliko = InputBox("KOLIČINA?", "Unesi koliko", 1)
End Select
End Sub


i rijesio si si sve muke

 
Odgovor na temu

banem
Kikinda

Član broj: 16619
Poruke: 583
*.dynamic.sbb.rs.



+15 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 22:30 - pre 167 meseci
Nikakav problem - imitiraj InputBox formom.
Pozdrav,
Branislav
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?12.07.2010. u 22:41 - pre 167 meseci
OK ljudi, u pravu ste. Biće onda formica :)
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
92.36.146.*

Sajt: www.icentar.ba


+2 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 11:33 - pre 167 meseci
Function UnesiNumeric()
Dim Podatak As String


Start:
Podatak = InputBox("Unesi numerički podatak", "Num podatak", 0)
If IsNumeric(Podatak) Then
Else
GoTo Start
End If
end function
zxz
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.static.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 12:05 - pre 167 meseci
Zahvaljujem, mada, već na početku sam rekao da imam i koristim sličnu funkciju.

U stvari, namera mi je bila da napravim nešto po ugledu na program rađen u C# koji sam video. Tamo su pri unosu količina nenumerički tasteri zaključani, i ako korisnik pokuša da ih koristi, neće mu uspeti, a pritom se začuje i zvučno upozorenje iz PC spikera. To je u praksi zgodno kada je gužva na kasi, a kasir je sklonio pogled sa tastature i promašio numeričku tastaturu, ili isključio Num Lock i tako to, jer štedi dragoceno vreme.

Sve u svemu, nije nešto preterano bitno, pa može da ostane i ovako.
 
Odgovor na temu

banem
Kikinda

Član broj: 16619
Poruke: 583
*.adsl.eunet.rs.



+15 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 12:15 - pre 167 meseci
Hm, nešto ne štima tu:

Function UnesiNumeric() As Double
Dim Podatak As String
Podatak = InputBox("Unesite broj", "Broj", 0)
If IsNumeric(Podatak) Then
UnesiNumeric = CDbl(Podatak)
Else
UnesiNumeric = 0
End If
End Function

Funkcija vraća nešto, Sub ne.
Pozdrav,
Branislav
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 14:26 - pre 167 meseci
Citat:
Tamo su pri unosu količina nenumerički tasteri zaključani, i ako korisnik pokuša da ih koristi, neće mu uspeti, a pritom se začuje i zvučno upozorenje iz PC spikera.

Mozda moze da se programski blokira numericka tastatura, sa onom OnKey eventima? Ne znam da li moze, samo ideja...

 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
212.178.241.*

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 14:29 - pre 167 meseci
@smal, da li ste pogledali primer od ranije, ako se odlucite za svoju formu http://www.elitesecurity.org/t380325-0#2427961

 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 15:44 - pre 166 meseci
Evo kod koji prepoznaje sta je otkucano i prihvata samo unapred definisane karaktere. Neka na formi imate text box po imenu Text0. KeyPress event ce odbiti sve zankove kojee ne zelimo da prihvatimo.
Code:

Private Sub Text0_KeyPress(KeyAscii As Integer)
Dim sList As String
sList = "1234567890,."
'Ovde definisamo znakove koje zelimo da prihvatimo
If InStr(sList, Chr(KeyAscii)) = 0 Then
    'Ako promenimo KeyAscii,
    'znak koji smo upravo uneli nece biti prikazan
    KeyAscii = 0
End If
End Sub


:-)
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 15:50 - pre 166 meseci
Citat:
Zoran.Eremija: @smal, da li ste pogledali primer od ranije, ako se odlucite za svoju formu http://www.elitesecurity.org/t380325-0#2427961

Ma znao sam ja da može :) Što je najgore, jesam video taj primer, ali nisam skontao da tu ima ono što mi treba :)
Dodao sam samo još samo "Or KeyAscii = 46", da prihvata i decimalni zarez, i to mu je to.

Hvala!

Naknadno videh Zidarevo rešenje, i ono je super!

Opet mala dopuna - u ovom drugom rešenju nedostaje Backspace taster u listi. Kako to dodati?

[Ovu poruku je menjao smal dana 29.07.2010. u 17:04 GMT+1]
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon nedostaje Backspace taster u listi. Kako to dodati?29.07.2010. u 17:51 - pre 166 meseci
Code:

Private Sub Text0_KeyPress(KeyAscii As Integer)
Dim sList As String
'Ovde definisamo znakove koje zelimo da prihvatimo
'ACSII za Backspace = 8
sList = "1234567890,." & Chr(8)


If InStr(sList, Chr(KeyAscii)) = 0 Then
    'Ako promenimo KeyAscii,
    'znak koji smo upravo uneli nece biti prikazan
    KeyAscii = 0
End If

End Sub


Kyy_Press event moze da se odradi na nivou forme. To je u slucaju da imas vise ovakvih kontrola koje smeju da prime samo odredjene karaktere, pa da ne pises isti kod za svaku od njih.

 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 18:38 - pre 166 meseci
Hm, nešto se ipak čudno događa. Ako mi je izabrana Sr (Serbian Latin) tastatura, dozvoljava mi upis YU slova (čćšđž) u formu. Ako je tastatura En (USA), ne propušta unos ;'[]/ karaktera, koji su na istoj poziciji tastera.

U Zoranovom primeru nema toga, tj. restrikcija radi bez obzira na izbor tastature.
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
92.36.146.*

Sajt: www.icentar.ba


+2 Profil

icon Re: Samo numeric u InputBox?29.07.2010. u 22:11 - pre 166 meseci
Private Sub inputb_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
'
Case 48 To 57
'
Case 96 To 105
'
Case 188
'
Case 190
'
Case 110
'
Case 8
'
Case 46
'
Case Else
KeyCode = 0
End Select

End Sub
zxz
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Samo numeric u InputBox?30.07.2010. u 05:37 - pre 166 meseci
Kada koristiš proceduru na događaj On Key Down, onda treba postaviti osobinu Key Preview na Yes, inače se procedura neće odvijati. Ja koristim ovakav kod:
Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyEscape:
                            KeyCode = 0
                            DoCmd.Close
        Case vbKeyTab:
                            KeyCode = 0
                            Me![Maloprodajne kalkulacije subform].SetFocus
        Case vbKeyDelete:
                            If var_knjizeno = True Then
                               KeyCode = 0
                            End If
        Case vbKeyF1:
                            KeyCode = 0
                            DoCmd.OpenForm "Help_poruka"
        Case vbKeyF2:
                            KeyCode = 0
                            Me![NoviDok].SetFocus
                            SendKeys "{ENTER}"
        Case vbKeyF3:
                            KeyCode = 0
                            Me![Pregled].SetFocus
                            SendKeys "{ENTER}"
        Case vbKeyF5:
                            KeyCode = 0
                            Me![Knjizenje].SetFocus
                            SendKeys "{ENTER}"
        Case vbKeyF6:
                            KeyCode = 0
                            Me![Brisanjeprok].SetFocus
                            SendKeys "{ENTER}"
        Case vbKeyF7:
                            KeyCode = 0
                            Me![BrisanjeDok].SetFocus
                            SendKeys "{ENTER}"
     Case vbKeyF10:
                            KeyCode = 0
                            Me![KnjiziGlavnu].SetFocus
                            SendKeys "{ENTER}"
    End Select

End Sub


Za bliže, pogledaj Keycode Constants u Helpu.

 
Odgovor na temu

[es] :: Access :: Samo numeric u InputBox?

[ Pregleda: 3079 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.