Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Pequeño problemilla de tipos

Estas en el tema de Pequeño problemilla de tipos en el foro de Visual Basic clásico en Foros del Web. Necesito un poco de ayuda, soy nuevo en este lenguaje y nosé por donde coger lo que acontinuacion os expongo. El siguiente codigo, a mi ...
  #1 (permalink)  
Antiguo 26/08/2008, 00:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 15 años, 8 meses
Puntos: 0
Pequeño problemilla de tipos

Necesito un poco de ayuda, soy nuevo en este lenguaje y nosé por donde coger lo que acontinuacion os expongo. El siguiente codigo, a mi parecer, bien...no me coge el siguiente bucle: (me comenta que ' no coinciden los tipos' )
Si alguno se vé capaz de ayudarme lo agradecería.
El codigo que me dá problemas lo marco entre //////

Public Function VALIDAR_CIF(ByVal valor As String) As Boolean

Dim strLetra As String, strNumero As String, strDigit As String
Dim strDigitAux As String
Dim auxNum As Integer
Dim i As Integer
Dim suma As Integer
Dim letras As String

letras = "ABCDEFGHJKLNPQRSUVWX"

valor = UCase(valor)

' Comprobamos que sean 9 caracteres
If Len(valor) <> 9 And Not IsNumeric(Mid(valor, 2, 7)) Then
VALIDAR_CIF = False
End If

strLetra = Mid(valor, 1, 1) ' letra del CIF
strNumero = Mid(valor, 2, 7) ' Codigo de Control
strDigit = Mid(valor, 9) ' CIF menos primera y ultima posiciones

If InStr(letras, strLetra) = 0 Then ' comprobamos la letra del CIF (1ª posicion)
mensaje = "la letra introducida no corresponde a un CIF"
VALIDAR_CIF = False
End If

' En siete posiciones: las posiciones pares se suman.
' Las impares se multiplican por 2 sumando los resultados.
' Se divide el digito entre 10, para hallar el digito de control.

'ESTE ES EL CODIGO PROBLEMATICO
/////////////////////////////////////////////////////////////////////////////
For i = 1 To 7
If i Mod 2 = 0 Then
suma = suma + CInt(Mid(strNumero, i, 1))
Else
auxNum = CInt(Mid(strNumero, i, 1)) * 2
suma = suma + (auxNum \ 10) + (auxNum Mod 10)
End If
Next
////////////////////////////////////////////////////////////////////////////////

suma = (10 - (suma Mod 10)) Mod 10

Select Case strLetra
' Si son N P Q R S, el digito de control es alfabético
Case "N", "P", "Q", "R", "S"
suma = suma + 64
strDigitAux = Chr(suma)
' Si es X, busca en NIF (Es Extrangero)
Case "X"
strDigitAux = Mid(CalculaNIF(strNumero), 8, 1)
' Si no es todo lo anterior el dígito de control es númerico
Case Else
strDigitAux = CStr(suma)
End Select

If strDigit = strDigitAux Then
VALIDAR_CIF = True
Else
VALIDAR_CIF = False
End If
End Function
  #2 (permalink)  
Antiguo 26/08/2008, 03:17
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Pequeño problemilla de tipos

Cita:
Iniciado por Bukanero Ver Mensaje
' Comprobamos que sean 9 caracteres
If Len(valor) <> 9 And Not IsNumeric(Mid(valor, 2, 7)) Then
VALIDAR_CIF = False
End If
que tal si luego de :
VALIDAR_CIF = False
pones: Exit Function

de tal modo que te quede asi:

Código:
 
' Comprobamos que sean 9 caracteres
If Len(valor) <> 9 And Not IsNumeric(Mid(valor, 2, 7)) Then
VALIDAR_CIF = False
Exit Function
End If
__________________
Vivir para ser buenos y ser buenos para servir mejor.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:43.