Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

ingresar solo numeros en un campo de texto

Estas en el tema de ingresar solo numeros en un campo de texto en el foro de Visual Basic clásico en Foros del Web. Estoy practicando algo de VB6 (jamas lo habia usado) e hice una aplicación que lee y graba de una BD en access con DAO. Ahora ...
  #1 (permalink)  
Antiguo 03/12/2006, 17:08
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 21 años, 2 meses
Puntos: 0
ingresar solo numeros en un campo de texto

Estoy practicando algo de VB6 (jamas lo habia usado) e hice una aplicación que lee y graba de una BD en access con DAO. Ahora queria validar los datos antes de guardarlos en la BD y para verificar que no esten vacios, en el boton de Guardar puse el siguiente código:

Código:
Private Sub cmdGuardar_Click()

If (txtNombre = "") Or (txtApellido = "") Or (txtTelefono = "")  Then
     MsgBox "Faltan datos.", vbCritical, "Atención"
Else
     'resto del código
End If

End Sub
lo que querria hacer ahora es verificar que en "txtTelefono" solo se ingresen números y en las fqs encontre:

Código:
If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii < 44 Or KeyAscii > 44)) Then
		 If (KeyAscii <> 8) Then KeyAscii = 0
	 End If
pero no me sirvió, ¿alguien me puede dar una mano?

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #2 (permalink)  
Antiguo 03/12/2006, 18:10
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 21 años, 2 meses
Puntos: 0
ya le encontre la vuelta, cree una funcion que deje solo ingresar numeros, "-" y borrar:

Código:
Function soloNumeros(ByVal teclaIngresada As Integer) As Integer
    If InStr("0123456789-", Chr(teclaIngresada)) = 0 Then
        soloNumeros = 0
    Else
        soloNumeros = teclaIngresada
    End If
    If teclaIngresada = 8 Then soloNumeros = teclaIngresada      
End Function
y despues:

Código:
Private Sub txtTelefono_KeyPress(teclaIngresada As Integer)
    teclaIngresada = soloNumeros(teclaIngresada)
End Sub
tambien podria haber utilizado solo lo que sigue, pero el problema era el "-":

Código:
Private Sub txtTelefono_KeyPress(KeyAscii As Integer)
    If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii < 44 Or KeyAscii > 44)) Then
        If (KeyAscii <> 8) Then KeyAscii = 0
    End If
End Sub
si alguien sabe como poder ingresar el "-", en esta ultima como para saber otra opcion, gracias.
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:

Última edición por chaval; 03/12/2006 a las 18:33
  #3 (permalink)  
Antiguo 03/12/2006, 21:46
 
Fecha de Ingreso: noviembre-2004
Ubicación: Corrientes, Arg.
Mensajes: 129
Antigüedad: 19 años, 5 meses
Puntos: 0
IsNumeric

La función del lenguaje "IsNumeric(Nº o cadena) devuelve True o False según el argumento sea o no un número, y valida como número al signo menos.
IsNumeric(16) dá True
IsNumeric("16") dá True
IsNumeric(-16) dá True
IsNumeric("-16") dá True
IsNumeric("hex16") dá False
Saludos.
  #4 (permalink)  
Antiguo 04/12/2006, 07:00
 
Fecha de Ingreso: agosto-2005
Ubicación: Peru-Lima
Mensajes: 225
Antigüedad: 18 años, 8 meses
Puntos: 0
Cita:
Iniciado por chaval Ver Mensaje
Estoy practicando algo de VB6 (jamas lo habia usado) e hice una aplicación que lee y graba de una BD en access con DAO. Ahora queria validar los datos antes de guardarlos en la BD y para verificar que no esten vacios, en el boton de Guardar puse el siguiente código:

Código:
Private Sub cmdGuardar_Click()

If (txtNombre = "") Or (txtApellido = "") Or (txtTelefono = "")  Then
     MsgBox "Faltan datos.", vbCritical, "Atención"
Else
     'resto del código
End If

End Sub
lo que querria hacer ahora es verificar que en "txtTelefono" solo se ingresen números y en las fqs encontre:

Código:
If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii < 44 Or KeyAscii > 44)) Then
		 If (KeyAscii <> 8) Then KeyAscii = 0
	 End If
pero no me sirvió, ¿alguien me puede dar una mano?

gracias
El Chaval
Creo k esto te servira

Código:
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Código:
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57

Case 8  'BackSpace

Case 45 'Letra Resta "-"

Case Else
    KeyAscii = 0
End Select
End Sub
Dependiendo donde pongas este codigo este funcionara, actualmente trabaja a nivel del form(no te permitira ingresar texto en ningun campo)
__________________
La Sinceridad lo es TODO :si:
  #5 (permalink)  
Antiguo 04/12/2006, 10:07
Avatar de el mago de oz  
Fecha de Ingreso: octubre-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
yo utlizaba un simple isnumeric(micampo) asi:

private text1_change()
if not isnumeric(text1) then
text1=0
text1.seltstart=0
text1.sellength=len(text1)
text1.setfocus
else
text1=abs(text1)
endif

y funciona perfecto...ademas el text1 lo iniciaba con un valor y jamas pude hacer caer mi programa...
__________________
"No a las dictaduras, no a la impunidad, no al comercio injusto que explota al menor de edad. Sí a las autocracias, sí a la libertad, el tercer mundo va a estallar."
Finisterra MAGO DE OZ
  #6 (permalink)  
Antiguo 04/12/2006, 16:22
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 21 años, 2 meses
Puntos: 0
gracias a todos
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #7 (permalink)  
Antiguo 04/05/2009, 15:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: ingresar solo numeros en un campo de texto

Si no me equivoco, la solución es sencilla:

If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii < 45 Or KeyAscii > 45)) Then
If (KeyAscii <> 8) Then KeyAscii = 0
End If

Espero no haber comprendido mal y que esto sirva.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:43.