Autor
|
Tema: ayuda con procedimiento (Leído 3,324 veces)
|
4D1cTo
Desconectado
Mensajes: 168
|
estoy realizando un procedimiento para validar datos que sean solo de tipo numerico
Sub Valida(txtVar, error) Dim error As String If IsNumeric(txtVar) = False Then MsgBox ("Error en (" & error & ")") End If End Sub
No se donde esta el error , lo llamaria de la siguiente manera
Valida (txtValida,Celular)
yo quiero que valide el txtValida y en la parte del error muestre "Error en Celular"
se entiende ? gracias
|
|
|
En línea
|
[ Linux Registered User #348950 ]
|
|
|
~~
|
Y por q no haces q el textbox en cuestion solo acepte numeros y ya esta?? Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 58 Then KeyAscii = 0
End If
End Sub
|
|
|
En línea
|
|
|
|
4D1cTo
Desconectado
Mensajes: 168
|
porque tengo alrededor de 30 textbox para validar
|
|
|
En línea
|
[ Linux Registered User #348950 ]
|
|
|
~~
|
Pues los llamas a todos igual (vamos creas una matriz de controles) y pegas el mismo codigo: Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 8 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 58 Then KeyAscii = 0
End If End Sub Y solucionado, ninguno admite letras
|
|
|
En línea
|
|
|
|
4D1cTo
Desconectado
Mensajes: 168
|
esos txt despues van a una base de datos y si todos tienen el mismo nombre se me lia
|
|
|
En línea
|
[ Linux Registered User #348950 ]
|
|
|
~~
|
Te refieres a ellos por su index, por ej text1(25).text... A mi me parece mas practico q andar llamando a una funcion todo el rato, pero weno si kieres la funcion kedaria asi: Sub Validar(txt As TextBox, Error As String) Dim n As Integer, Digito As String * 1 For n = 1 To Len(txt.Text) Digito = Mid(txt.Text, n, 1) If Asc(Digito) < 48 Or Asc(Digito) > 58 Then MsgBox "Error en (" & Error & ")" Exit Sub End If Next n End Sub
Private Sub Command1_Click() Call Validar(Text1, "Celular") End Sub Si tiene una sla letra el textbox salta error, si no no
|
|
|
En línea
|
|
|
|
4D1cTo
Desconectado
Mensajes: 168
|
muchas gracias , ahora a renegar con el ado
|
|
|
En línea
|
[ Linux Registered User #348950 ]
|
|
|
black_jjk
Desconectado
Mensajes: 21
|
Lo que ha dicho EON es correcto, ese es el camino que deberías seguir si estas apenas diseñando tu programa o si tuvieras ganas de cambiarle el nombre a tus controles y crear una matríz de controles, pero por lo visto de da flojera o simplemente no te gusta la idea, tú código esta mal desde un principio: Sub Valida(txtVar, error) Dim error As String
Si pretendes pasar "error" como argumento para tu función debería de quedar así: Fuction Validar(ElTexto As String, QueError As String) If Not IsNumeric(ElTexto)Then MsgBox ("Error en (" & QueError & ")") End If
Porque al declarar otra vez la error como String en la segunda linea de tu código eliminas el argumento que habías pasado. End Function
|
|
|
En línea
|
|
|
|
Chefito
|
Mmmmm, por lo que veo es un número de teléfono lo que quiere tratar (por lo de celular). Hay que tener en cuenta que la función IsNumeric da como verdadero a un número con una coma o varios puntos (incluso puntos seguidos, haz la prueba), según la configuración del caracter decimal. Por eso, cuidado! que lo mismo no le interesa que le entre esos caracteres (y menos puntos a gogo ). Una forma de solucionarlo sería quitando estos caracteres con la función replace (ejem: texto=replace(texto,",",""). Pero hay no solo acaba el problema, sino que tambien acepta números como 2,342342E+22, ya que vienen de los tipos single y double del vb. Más para sustituir con replace jajajajaja. Pero sigue habiendo más problemas........ también da como verdadero los números hexadecimales (&had) y octales (&34)....también el signo más y menos (+,-) al principio del número....puffffff Más sustituciones. Y quien sabe que más aceptará . Ya se que son casos raros de ver, pero todo puede pasar.....y son fallos. Al final pienso que se debe restringir la entrada de teclas con el evento keypress o hacer lo que dice eon....revisar los caracteres uno a uno. Saludos. P.D. Todas estas sustituciones se deberían realizar despues de que IsNumeric hubiese dado verdadero al número. Pero sigo pensando que no es lo más correcto.
|
|
« Última modificación: 19 Febrero 2008, 04:03 am por Chefito »
|
En línea
|
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda procedimiento Pascal
Programación General
|
manu3742
|
3
|
2,830
|
20 Abril 2011, 17:48 pm
por manu3742
|
|
|
AYUDA.PROCEDIMIENTO PARA DAR DE ALTA. PASCAL
Programación General
|
manu3742
|
3
|
4,778
|
25 Abril 2011, 17:44 pm
por d(-_-)b
|
|
|
Ayuda con procedimiento
.NET (C#, VB.NET, ASP)
|
SγиtαxEяяoя
|
3
|
2,472
|
10 Julio 2013, 21:10 pm
por SγиtαxEяяoя
|
|
|
Ayuda: Detener procedimiento
.NET (C#, VB.NET, ASP)
|
Tomas1982
|
1
|
1,748
|
8 Septiembre 2016, 23:14 pm
por Eleкtro
|
|
|
MOVIDO: Ayuda: Detener procedimiento
Programación Visual Basic
|
Eleкtro
|
0
|
1,819
|
8 Septiembre 2016, 22:35 pm
por Eleкtro
|
|