Procedure para validar Rut Chileno
Publicado por Manuel (4 intervenciones) el 19/07/2007 22:21:29
Para los que tienen Windev en Chile, aqui les envio una funcion para validar el Rut Chileno, fue adaptado de una funcion echa para Visual Basic, tienen que crear un nuevo "Procedure", una ves creado dan clic con boton derecho sobre el "Procedure Global..." y seleccionan "New Global Procedure", le colocan un nombre y dentro del pegan este codigo:
//PROCEDURE PARA VALIDAR RUT CHILENO ADAPTADO PARA WINDEV POR MANUEL MONTT...
//ACEPTA LOS SIGUIENTES FORMATOS : 00000000-0, 00.000.000-0 y 000000000
FUNCTION ValidaRut(CadenaConRut is string)
RespValidacion is boolean
//DECLARAMOS ALGUNAS VARIABLES USADAS EN EL PROCESO
I is real
Z is numeric
CadenaLimpiA is string
DiG is string
XXXX is numeric
//VALIDAMOS QUE SE INGRESE ALGO
IF CadenaConRut <> "" AND Val(CadenaConRut) <> 0 THEN
// LIMPIAMOS EL RUT INGRESADO, SACANDO LOS - Y .
FOR I = 1 TO Length(CadenaConRut)
IF Middle(CadenaConRut, I, 1) = "-" OR Middle(CadenaConRut, I, 1) = "." THEN
// AQUI NO SE LLENA CadenaLimpia, SOLO SALTAMOS AL SIGUIENTE CARACTER
ELSE
CadenaLimpiA = CadenaLimpiA + Middle(CadenaConRut, I, 1)
END
END
// SE COMIENZA A CALCULAR, PARA VALIDAR EL RUT INGRESADO
CadenaConRut = CadenaLimpiA
DiG = (Middle(CadenaLimpiA, (Length(CadenaLimpiA)), 1))
IF ( Asc(DiG) <= 47 OR Asc(DiG) >= 58 )THEN
IF ( DiG = "K" OR DiG = "k" )THEN
DiG = "10"
ELSE
DiG = "12"
END
END
CadenaLimpiA = ""
FOR I = 1 TO (Length(CadenaConRut) - 1)
CadenaLimpiA = CadenaLimpiA + (Middle(CadenaConRut, I, 1))
END
CadenaConRut = ""
I = ""
I = (Length(CadenaLimpiA))
Z = 2
WHILE I <> 0
IF Z <> 8 THEN
CadenaConRut = Val(CadenaConRut) + (Val((Middle(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
ELSE
Z = 2
CadenaConRut = Val(CadenaConRut) + (Val((Middle(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
END
I = I - 1
END
Z = 11 - (Val(CadenaConRut) - IntegerPart((Val(CadenaConRut)) / 11) * 11)
XXXX = Asc(DiG)
IF ((DiG = 0) AND (Z = 11)) THEN
RespValidacion = True
ELSE
IF Z = DiG THEN
RespValidacion = True
ELSE
RespValidacion = False
END
END
ELSE
RespValidacion = False
END
CadenaConRut = ""
CadenaLimpiA = ""
RESULT RespValidacion
---------------FIN--------------------------Para llamarlo......
IF ValidaRut(EDIT_RUT..Value) = True THEN
Info("Rut Correcto")
ELSE
Error("Rut Erroneo")
END
---------- Donde "EDIT_RUT..Value", es el campo con el rut.
-------- PD: Ojala pongan una seccion de Codigo Fuente para Windev, para que aprendamos todos sobre esta potente herramienta..
Saludos
Manuel
//PROCEDURE PARA VALIDAR RUT CHILENO ADAPTADO PARA WINDEV POR MANUEL MONTT...
//ACEPTA LOS SIGUIENTES FORMATOS : 00000000-0, 00.000.000-0 y 000000000
FUNCTION ValidaRut(CadenaConRut is string)
RespValidacion is boolean
//DECLARAMOS ALGUNAS VARIABLES USADAS EN EL PROCESO
I is real
Z is numeric
CadenaLimpiA is string
DiG is string
XXXX is numeric
//VALIDAMOS QUE SE INGRESE ALGO
IF CadenaConRut <> "" AND Val(CadenaConRut) <> 0 THEN
// LIMPIAMOS EL RUT INGRESADO, SACANDO LOS - Y .
FOR I = 1 TO Length(CadenaConRut)
IF Middle(CadenaConRut, I, 1) = "-" OR Middle(CadenaConRut, I, 1) = "." THEN
// AQUI NO SE LLENA CadenaLimpia, SOLO SALTAMOS AL SIGUIENTE CARACTER
ELSE
CadenaLimpiA = CadenaLimpiA + Middle(CadenaConRut, I, 1)
END
END
// SE COMIENZA A CALCULAR, PARA VALIDAR EL RUT INGRESADO
CadenaConRut = CadenaLimpiA
DiG = (Middle(CadenaLimpiA, (Length(CadenaLimpiA)), 1))
IF ( Asc(DiG) <= 47 OR Asc(DiG) >= 58 )THEN
IF ( DiG = "K" OR DiG = "k" )THEN
DiG = "10"
ELSE
DiG = "12"
END
END
CadenaLimpiA = ""
FOR I = 1 TO (Length(CadenaConRut) - 1)
CadenaLimpiA = CadenaLimpiA + (Middle(CadenaConRut, I, 1))
END
CadenaConRut = ""
I = ""
I = (Length(CadenaLimpiA))
Z = 2
WHILE I <> 0
IF Z <> 8 THEN
CadenaConRut = Val(CadenaConRut) + (Val((Middle(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
ELSE
Z = 2
CadenaConRut = Val(CadenaConRut) + (Val((Middle(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
END
I = I - 1
END
Z = 11 - (Val(CadenaConRut) - IntegerPart((Val(CadenaConRut)) / 11) * 11)
XXXX = Asc(DiG)
IF ((DiG = 0) AND (Z = 11)) THEN
RespValidacion = True
ELSE
IF Z = DiG THEN
RespValidacion = True
ELSE
RespValidacion = False
END
END
ELSE
RespValidacion = False
END
CadenaConRut = ""
CadenaLimpiA = ""
RESULT RespValidacion
---------------FIN--------------------------Para llamarlo......
IF ValidaRut(EDIT_RUT..Value) = True THEN
Info("Rut Correcto")
ELSE
Error("Rut Erroneo")
END
---------- Donde "EDIT_RUT..Value", es el campo con el rut.
-------- PD: Ojala pongan una seccion de Codigo Fuente para Windev, para que aprendamos todos sobre esta potente herramienta..
Saludos
Manuel
Valora esta pregunta


0