• Viernes 15 de Noviembre de 2024, 00:27

Autor Tema:  Re: hola necesito algoritmo para validar un rut, porfa´´de a  (Leído 2206 veces)

seth

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: hola necesito algoritmo para validar un rut, porfa´´de a
« en: Sábado 5 de Octubre de 2002, 18:01 »
0
[email:1dfqn7kp]seth2002_02@hotmail.com[/email:1dfqn7kp]
hola nesecito algoritmo para validar un rut alguien que sepa vale

claudia

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://personales.com/chile/concepcion/nexxo
Re: hola necesito algoritmo para validar un rut, porfa´´de a
« Respuesta #1 en: Jueves 7 de Noviembre de 2002, 06:31 »
0
Espero te sirva.
Sub ruti(num)//num=es el rut sin puntos ni digito verificador
Dim algo As Integer
  carrut = Str(num)
  wl = 0
  suma = 0
    cardig = Space(1)
    If num > 0 Then
        largo = Len(num)
        If largo = 8 Then
            mult = 3
           Else
            mult = 2
        End If
        For posicion = 1 To largo
            If mult < 2 Then
               mult = 7
            End If
            carrut = LTrim(carrut)
            nume = Mid(carrut, posicion, 1)
            suma = suma + Val(nume) * mult
            mult = mult - 1
        Next posicion
        Resto = suma Mod 11
        If Resto = 0 Then
           cardig = "0"
        Else
            If Resto = 1 Then
                cardig = "K"
            Else
                cardig = Mid(11 - Resto, 1)
            End If
        End If
        digi = cardig
        If Text1(1).Text = cardig Then// text1(1).text se encuentra el digito verificador
           wl = 1
         Else
           wl = 0
        End If
    End If
End Sub
:P

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
hola necesito algoritmo para validar un rut, porfa´´de ante
« Respuesta #2 en: Miércoles 27 de Noviembre de 2002, 20:05 »
0
Agrega esta funcion en una .BAS

Public Function Es_Rut(ByVal X As String, ByVal Y As Integer) As Boolean
' Funcion que recibe el string con el Rut y lo analiza
' Y=0 no entrega mensaje
' Y=1 mensaje de RUT
' Y=2 mensaje de ficha
' Si  es  rut  entrega Es_Rut=True
' Si no es rut entrega Es_Rut=False
X = Trim(X)
xlargo = Len(X)
xposicion = InStr(X, "-")
If xposicion <> 0 Then
    xnumero = Format(Mid$(X, 1, xposicion - 1), "00000000")
    xdv = Mid$(X, xposicion + 1, xlargo - xposicion + 1)
    If IsNumeric(xnumero) Then
        If Len(xdv) = 1 Then
            If IsNumeric(dv) Then
                xBandera = 1
            Else
                If UCase(dv) = "K" Then
                    xBandera = 1
                Else
                    xBandera = 0
                End If
            End If
        Else
            xBandera = 0
        End If
    Else
        xBandera = 0
    End If
    If xBandera = 1 Then
        'posiciones     : 8 7 6 5 4 3 2 1
        'multiplicar por: 3 2 7 6 5 4 3 2
        xpos8 = CInt(Mid(xnumero, 1, 1))
        xpos7 = CInt(Mid(xnumero, 2, 1))
        xpos6 = CInt(Mid(xnumero, 3, 1))
        xpos5 = CInt(Mid(xnumero, 4, 1))
        xpos4 = CInt(Mid(xnumero, 5, 1))
        xpos3 = CInt(Mid(xnumero, 6, 1))
        xpos2 = CInt(Mid(xnumero, 7, 1))
        xpos1 = CInt(Mid(xnumero, 8, 1))
        xsuma = xpos8 * 3 + xpos7 * 2 + xpos6 * 7 + xpos5 * 6 + xpos4 * 5 + xpos3 * 4 + xpos2 * 3 + xpos1 * 2
        xentero = Int(xsuma / 11)
        xValor = xsuma - xentero * 11
        xresto = 11 - xValor
        Select Case xresto
            Case 0 To 9: dv = CStr(xresto)
            Case 10: dv = "K"
            Case 11: dv = "0"
        End Select
        If UCase(xdv) = dv Then
            Es_Rut = True
        Else
            Es_Rut = False
            If Y <> 0 Then
                If Y = 1 Then
                    msg = "El rut correcto debe ser " & Format(CDbl(xnumero), "#,##0") & "-" & dv
                Else
                    msg = "La ficha correcta debe ser " & Format(CDbl(xnumero), "#,##0") & "-" & dv
                End If
                MsgBox msg, vbInformation, "Advertencia"
            End If
        End If
    Else
        Es_Rut = False
    End If
Else
    Es_Rut = False
End If
End Function