Visual Basic - Validar codigo postal que tiene letras

Life is soft - evento anual de software empresarial
   
Vista:

Validar codigo postal que tiene letras

Publicado por Nicolas Real (20 intervenciones) el 13/02/2009 22:32:43
Hola todos,

En una caja de texto (txt_cp) el usuario debe ingresar el codigo postal,
lo que necesito es validar que este bien escrito
El formato a validar debe ser C5001BMP
Osea que el primer caracter sea string, los cuatro siguientes numerico y los ultimos tres string

Espero me puedan ayudar

Un abrazo...Nico
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:Validar codigo postal que tiene letras

Publicado por P3L30N2009 (701 intervenciones) el 14/02/2009 09:14:34
Hombre, lo podrías hacer comparando cada uno de los caracteres con la función Mid o incluso en el evento KeyPress con una variable estática que vaya sumando los caracteres y comprobar cada uno de ellos.

Pero Visual Basic tiene un control para eso que con sólo ponerle la máscara deseada, no se necesita escribir ni una línea de código.

El control se llama MaskEdBox
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:Validar codigo postal que tiene letras

Publicado por P3L30N2009 (701 intervenciones) el 14/02/2009 09:15:58
Hombre, lo podrías hacer comparando cada uno de los caracteres con la función Mid o incluso en el evento KeyPress con una variable estática que vaya sumando los caracteres y comprobar cada uno de ellos.

Pero Visual Basic tiene un control para eso que con sólo ponerle la máscara deseada, no se necesita escribir ni una línea de código.

El control se llama MaskEdBox
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:Validar codigo postal que tiene letras

Publicado por Nicolas Real (20 intervenciones) el 14/02/2009 12:46:24
Gracias´por responder,

intente hacerlo con la funcion mid, hice algo asi pero cuando compara las letras me da un error (no coinciden los tipos.

Function comprobar_codigo_postal()

primer_caracter = CStr(Mid(Me.txt_cp, 1, 1))
segundo_caracter = Mid(Me.txt_cp, 2, 1)
tercer_caracter = Mid(Me.txt_cp, 3, 1)
cuarto_caracter = Mid(Me.txt_cp, 4, 1)
quinto_caracter = Mid(Me.txt_cp, 5, 1)
sexto_caracter = Mid(Me.txt_cp, 6, 1)
septimo_caracter = Mid(Me.txt_cp, 7, 1)
octavo_caracter = Mid(Me.txt_cp, 8, 1)

msgbox primer_caracter
msgbox segundo_caracter
msgbox tercer_caracter
msgbox cuarto_caracter
msgbox quinto_caracter
msgbox sexto_caracter
msgbox septimo_caracter
msgbox octavo_caracter

l1 = "a"
l2 = "b"
l3 = "c"
l4 = "d"
l5 = "e"
l6 = "f"
l7 = "g"
l8 = "h"
l9 = "i"
l10 = "j"
l11 = "k"
l12 = "l"
l13 = "m"
l14 = "n"
l15 = "o"
l16 = "p"
l17 = "q"
l18 = "r"
l19 = "s"
l20 = "t"
l21 = "u"
l22 = "v"
l23 = "w"
l24 = "x"
l25 = "y"
l26 = "z"




n0 = "0"
n1 = "1"
n2 = "2"
n3 = "3"
n4 = "4"
n5 = "5"
n6 = "6"
n7 = "7"
n8 = "8"
n9 = "9"

If primer_caracter = l1 Or l2 Or l3 Or l4 Or l5 Or l6 Or l7 Or l8 Or l9 Or l10 Or l11 Or l12 Or l13 Or l14 Or l15 Or l16 Or l17 Or l18 Or l19 Or l20 Or l21 Or l22 Or l23 Or l24 Or l25 Or l26 Then

GoTo sigue
Else
GoTo fin
End If

sigue:
If segundo_caracter = n0 Or n1 Or n2 Or n3 Or n4 Or n5 Or n6 Or n7 Or n8 Or n9 Then
msgbox "correcto 1": GoTo sigue_1
Else
msgbox "incorrecto 1": GoTo fin
End If

sigue_1:
If tercer_caracter = n0 Or n1 Or n2 Or n3 Or n4 Or n5 Or n6 Or n7 Or n8 Or n9 Then
msgbox "correcto 2": GoTo sigue_2
Else
msgbox "incorrecto 2": GoTo fin
End If

sigue_2:
If cuarto_caracter = n0 Or n1 Or n2 Or n3 Or n4 Or n5 Or n6 Or n7 Or n8 Or n9 Then
msgbox "correcto 3": GoTo sigue_3
Else
msgbox "incorrecto 3": GoTo fin
End If

sigue_3:
If quinto_caracter = n0 Or n1 Or n2 Or n3 Or n4 Or n5 Or n6 Or n7 Or n8 Or n9 Then
msgbox "correcto 4": GoTo sigue_4
Else
msgbox "incorrecto 4": GoTo fin
End If

sigue_4:
If sexto_caracter = l1 Or l2 Or l3 Or l4 Or l5 Or l6 Or l7 Or l8 Or l9 Or l10 Or l11 Or l12 Or l13 Or l14 Or l15 Or l16 Or l17 Or l18 Or l19 Or l20 Or l21 Or l22 Or l23 Or l24 Or l25 Or l26 Then
GoTo sigue_5
Else
GoTo fin
End If

sigue_5:
If septimo_caracter = l1 Or l2 Or l3 Or l4 Or l5 Or l6 Or l7 Or l8 Or l9 Or l10 Or l11 Or l12 Or l13 Or l14 Or l15 Or l16 Or l17 Or l18 Or l19 Or l20 Or l21 Or l22 Or l23 Or l24 Or l25 Or l26 Then
GoTo sigue_6
Else
GoTo fin
End If

sigue_6:
If octavo_caracter = l1 Or l2 Or l3 Or l4 Or l5 Or l6 Or l7 Or l8 Or l9 Or l10 Or l11 Or l12 Or l13 Or l14 Or l15 Or l16 Or l17 Or l18 Or l19 Or l20 Or l21 Or l22 Or l23 Or l24 Or l25 Or l26 Then
GoTo sigue_7
Else
GoTo fin
End If

fin:
msgbox "Formato incorrecto de código postal"

sigue_7:

End Function

Tendras algo que me ayude a como utilizar el control MaskEdBox

Gracias y un abrazo
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:Validar codigo postal que tiene letras

Publicado por P3L30N2009 (701 intervenciones) el 14/02/2009 17:19:34
¿De donde sacaste ese "pedazo" de código?

Primero, una función suele devolver un valor. En esta que te pongo se le pasa como parámetro el código postal y devuelve verdadero o falso según corresponda:

Function comprobar_codigo_postal(ByVal ElCodigo As String) As Boolean
comprobar_codigo_postal = True
If IsNumeric(Mid(ElCodigo, 1, 1)) Then
comprobar_codigo_postal = False
ElseIf Not IsNumeric(Mid(ElCodigo, 2, 4)) Then
comprobar_codigo_postal = False
ElseIf IsNumeric(Mid(ElCodigo, 6, 8)) Then
comprobar_codigo_postal = False
End If
End Function

Pero te sigo insistiendo en el control MaskEdBox, sólo le tienes que poner en la propiedad Mask lo siguiente:

>?9999???

y solamente dejará escribir una letra en la primera posición y a continuación, cuatro números y tres letras. Además aunque el usuario escriba las letras en minúsculas, las convierte a mayúsculas.
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

Esta funciona mejor

Publicado por ED (70 intervenciones) el 16/02/2009 02:40:49
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=96&texto=Visual+Basic+Avanzado&n1=524634&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
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:Esta funciona mejor

Publicado por Nicolas Real (20 intervenciones) el 16/02/2009 13:40:51
Bueno les agradezco a todos, su ayuda me sirvio mucho.
Y para responder a P3L30N2009 ese codigo surge de alguien que no tiene mucha experiencia con la diferentes funciones de visual basic y lo hice usando el sentido comun.

Gracias a todos...
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:Validar codigo postal que tiene letras

Publicado por Nicolas Real (20 intervenciones) el 16/02/2009 14:24:56
He decidido usar el control MaskEdBox, ACLARO: la otra funcion esta muy buena tambien pero para los procesos de mi sistema (que si no existe el codigo genera un aviso para poder agregarlo es mas util usar el control.

Lo ultimo que me queda por preguntar con referencia a este control es que necesito que simpre el cursor aparezca a la izquierda de la caja de texto.

Saludos
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:Validar codigo postal que tiene letras

Publicado por P3L30N2009 (701 intervenciones) el 16/02/2009 15:11:29
"Lo ultimo que me queda por preguntar con referencia a este control es que necesito que simpre el cursor aparezca a la izquierda de la caja de texto."

No entiendo la pregunta, el control MaskEdBox no tiene la propiedad Alignment como el TextBox.
El cursor siempre aparece a la izquierda del control y se va desplazando hacia la derecha según se escribe.
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

y los recursos que???

Publicado por ED (70 intervenciones) el 18/02/2009 00:28:53
Si bien puedes usar el control MaskEdBox, pero recuerda que si usas este control usaras mas recursos, ahora lo usaras y cuando tengas mas experiencia veras que es mejor usar funciones propias que agregar un control y consumir mas recursos.
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:y los recursos que???

Publicado por Nicolas (20 intervenciones) el 22/02/2009 22:28:55
Gracias por tu comentario, es muy constructivo, te consulto por tu nick....trabajas en ED o es solo casualidad???

Un abrazo..Nico
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