Visual Basic - Text box solo numerico.

Life is soft - evento anual de software empresarial
 
Vista:

Text box solo numerico.

Publicado por Alberto (5 intervenciones) el 15/10/2003 12:18:36
Hola. Necesito que alguien me eche una mano.

Tengo varios textbox que solo quiero que entre numero, coa o signo menos (guion). He hecho un rutina que la llamo desde cada Keypress de cada textbox y compruebo que sea el ascii correcto. Hasta aqui todo perfecto.

El problema viene si alguien introduce dos comas o dos guiones... A alguien se le ocurre como controlar esto en la rutina?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Text box solo numerico.

Publicado por Fernando (166 intervenciones) el 15/10/2003 12:40:15
Lo que hiciste esta perfecto, solo te falta una rutinita que al introducir una coma por ejemplo, verifique si en el textbox hay alguna coma escrita. Esta funcion la podes hacer con la instruccion InStr

La sintaxis es la siguiente:

InStr(Inicio, Cadena1, Cadena2, Comparacion)

Donde Inicio en tu caso seria 1 (que comienze a comparar en el caracter 1), Cadena 1 es el text box, cadena2 pones "," ó "-", etc, o sea, el caracter que queres buscar. y comparación pones la constante vbTextCompare.

esta función devuelve la posición del primera caracter encontrado, o sea que si devuelve algo, que que la coma por ejemplo ya existe, y le decis que no la escriba.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas gracias. Ya casi esta, falta una cosita

Publicado por Alberto (5 intervenciones) el 15/10/2003 13:04:04
Hola de nuevo.

Mucas gracias por tu ayuda. Ya detecta mas de una coma. Pero si se entra -,9 (guion coma nueve), al hacer cdbl da error.
He pensado usar isnumeric(textbox.text + keypress) pero no funciona si entran el guion el ultimo. Ademas esta funcion no acepta que entre el guion en primer lugar.

Alguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pedido para Alberto.

Publicado por Carlos (13 intervenciones) el 15/10/2003 14:47:09
Alberto: tengo un programa que debe validar textbox con númericos. Me puedes pasar la rutina que usas para validar esto. Desde ya muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pedido para Alberto.

Publicado por Byone (26 intervenciones) el 15/10/2003 16:13:46
yo tengo una rutina que verifica que hayan escrito puros numeros, no he provado con guiones ni comas, seria cuastion de modificar el codigo. el codigo que he usado es el siguiente:
Public Function haveChar(sTexto As String) As Boolean
'Version 1.0
Dim x As Integer, sTemp As String, sTemp2 As String, tieneCar As Boolean
For x = 1 To Len(sTexto)
sTemp = Left$(sTexto, x)
sTemp2 = Right(sTemp, 1)
Select Case sTemp2
Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
tieneCar = False
Case Else
tieneCar = True
End Select
Next x
haveChar = tieneCar
End Function
no se si les sirva de algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta para carlos

Publicado por Alberto (1 intervención) el 15/10/2003 18:12:37
Hola. Con los comentarios que he hecho ya te doy unas pistas de como lo hago. Si despues de intentarlo no te sale, dimelo que te ayudare en lo que sea.

Pero al menos curratelo un poco ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias por compartir

Publicado por Carlos (13 intervenciones) el 15/10/2003 18:32:24
Pues, eso mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

De nada.

Publicado por Alberto (5 intervenciones) el 15/10/2003 18:42:49
A ver Carlos. No te enfades. Como puedes ver todavía no funciona, ya que me falta aalguna cosa. Creo que te he brindado mi ayuda, como a mi me la han dado. Pensé, equivocadamente, que te gustaría más hacertela tu. Si prefieres que te la de, ningún problema, en cuanto funcione te la envío.

Y por favor, intenta no ser tan ... (no se que poner para que no te enfades, pero ya me entiendes)

Un saludo

PS: por si acaso, intenta no ser tan susceptible
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias por compartir

Publicado por Fernando (166 intervenciones) el 15/10/2003 18:47:11
El Código para validar Números es asi carlos, copia esto en la rutina KeyPress del control:

If KeyAscii <> 8 then
if Chr(KeyAscii) < 0 Or Chr(KeyAscii) > 9 then
KeyAscii = 0
End If
End if

Cualquier cosa preguntame.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias a ambos

Publicado por Carlos (13 intervenciones) el 15/10/2003 21:28:11
Sin enfados ni susceptibilidades.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias por compartir

Publicado por jonatan (5 intervenciones) el 17/10/2003 04:23:24
te paso el codigo para que solo puedan ingresar numeros y retoeno de carro, copia en el evento keypress de los text box

If KeyAscii = 8 Or KeyAscii = 13 Then Exit Sub
If KeyAscii >= 48 And KeyAscii <= 57 Then Exit Sub
Else
'no muestra el caracter'
KeyAscii = 0
'ruido'
Beep
MsgBox "Error, Caracter no validos", vbCritical
End If

espero que te sirva sino mandame un mail
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Text box solo numerico.

Publicado por Cecilia Colalongo (3116 intervenciones) el 16/10/2003 03:14:02
Tengo un control que lo tiene resuelto y tiene en cuenta la configuración regional, si quieres te lo envío.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

YA ESTA

Publicado por Alberto (5 intervenciones) el 16/10/2003 10:24:45
Ya esta. Yo lo uso en Keypress de cada textbox. Si teneis cualquier comentario, no dudeis en decirlo. Gracias a todos.

Public Function solonumero(KeyAscii As Integer) As Integer
Dim texto As String
Dim yaesta As Integer
Dim guion As Integer
Dim posicion As Integer
texto = Screen.ActiveControl.Text
yaesta = InStr(1, texto, Chr(KeyAscii), vbTextCompare)
guion = InStr(1, texto, "-", vbTextCompare)
Select Case Chr(KeyAscii)
Case "0" To "9"
solonumero = KeyAscii
'comprueva que no se escriba delante del guión
If guion <> 0 Then
posicion = Screen.ActiveControl.SelStart
If posicion < guion Then
solonumero = 0
End If
End If
Case Chr(vbKeyBack)
solonumero = KeyAscii
Case ".", ","
If yaesta = 0 Then
solonumero = Asc(",")
Else
solonumero = 0
End If
Case "-"
'si es el guion y no existe, lo ponemos al principio
If guion = 0 Then
posicion = Screen.ActiveControl.SelStart
If posicion <> 0 And posicion <> Len(Screen.ActiveControl.Text) Then
Screen.ActiveControl.SelStart = 0
End If
solonumero = KeyAscii
Else
solonumero = 0
End If
Case Else
solonumero = 0
End Select
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar