| 
	
		|  Autor | Tema: ayuda con procedimiento  (Leído 3,648 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 | 3,170 |  20 Abril 2011, 17:48 pm por manu3742
 |  
						|   |   | AYUDA.PROCEDIMIENTO PARA DAR DE ALTA. PASCAL Programación General
 | manu3742 | 3 | 5,246 |  25 Abril 2011, 17:44 pm por d(-_-)b
 |  
						|   |   | Ayuda con procedimiento .NET (C#, VB.NET, ASP)
 | SγиtαxEяяoя | 3 | 2,736 |  10 Julio 2013, 21:10 pm por SγиtαxEяяoя
 |  
						|   |   | Ayuda: Detener procedimiento .NET (C#, VB.NET, ASP)
 | Tomas1982 | 1 | 2,029 |  8 Septiembre 2016, 23:14 pm por Eleкtro
 |  
						|   |   | MOVIDO: Ayuda: Detener procedimiento Programación Visual Basic
 | Eleкtro | 0 | 2,024 |  8 Septiembre 2016, 22:35 pm por Eleкtro
 |    |