Autor Tema: COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10  (Leído 540 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 826
  • Reputación: +28/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof Systems
COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10
« en: Octubre 22, 2012, 09:51:46 am »
HOLA AMIGOS TENGO QUE RESOLVER ESTO QUE CREO POR EL TITULO SE ENTIENDE.

NO TENGO ALTERNATIVA Y NECESITO COLOCAR UN NUMERO DE CUIT (QUE SON 11 DIGITOS) EN UN CAMPO DE BASE DE DATOS QUE TIENE 10 (Y NO ES POSIBLE MODIFICAR).

COMO PUEDO HACER ESTO HAY ALGUN ALGORITMO COMO EL QUE CREA LAS FECHAS JULIANA ??

GRACIAS POR SU AYUDA!!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

raul338

  • Terabyte
  • *****
  • Mensajes: 880
  • Reputación: +60/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10
« Respuesta #1 en: Octubre 22, 2012, 10:05:33 am »
El tipo de campo es numerico? Es de tipo string? Puedes intentar guardarlo en formato hexadecimal :)

79137913

  • Megabyte
  • ***
  • Mensajes: 175
  • Reputación: +21/-4
  • 4 Esquinas
    • Ver Perfil
    • Eco.Resumen Resumenes Cs. Economicas
Re:COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10
« Respuesta #2 en: Octubre 22, 2012, 10:16:25 am »
HOLA!!!

Bazooka

Tengo la solucion :D

Tomando en cuenta un cuit xx-yyyyyyyy-z

Solo guarda xxyyyyyyyy (10 digitos)

Y el codigo verificador calculalo "on the fly en el mismo programa"

;)

Para ver como calcular el cuit:
Citar
El CUIL consta de 11 números: XX-12345678-Y



XX corresponde al tipo de persona: Físicas (Hombres, Mujeres) o Jurídicas:

27 significa que es mujer
20 hombre
23 puede ser ambos (se usa cuando hay otro número igual)
30 empresas

12345678 es el número del DNI

Y : Código verificador, que se obtiene después de seguir estos pasos:



A cada uno de los 10 dígitos que conocemos, se multiplica por un número… Respectivamente: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2

Se suman los valores obtenidos, el resultado se divide por 11 y se toma sólo el resto R (el primer decimal).

Si R = 0, entonces Y = 0.

Si R = 1, entonces Y = 9.

Sino, Y = 11 – R.



EJEMPLO:


DNI 12.345.678 Masculino

2 0 1 2 3 4 5 6 7 8
x
5 4 3 2 7 6 5 4 3 2
————————————————————
10+0+3+4+21+24+25+24+21+16= 148

148 mod 11 = 5 ( porque 148/11= 13,454 –> .454  * 11 = 4.994 se redondea a 5).
11-5 = 6


Entonces, el CUIL es 20-12345678-6


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas

Bazooka

  • Terabyte
  • *****
  • Mensajes: 826
  • Reputación: +28/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof Systems
Re:COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10
« Respuesta #3 en: Octubre 22, 2012, 10:36:37 am »
HOLA AMIGO 79137913!!

MUCHAS GRACIAS SOS UN CAPO ME SALVASTE!!!

ACA PONGO LA SOLUCION DE COMO ME QUEDO LA FUNCTION QUE GENERA EL DIGITO VERIFICADOR!!
A VER SI LA PRUEBAN Y ME DICEN PERO YO PROVE CON 2 CUIT UNO DE HOMBRE Y UNO DE MUJER Y ME DIO!!

Código: [Seleccionar]
Private Sub Command1_Click()
Text2 = OBTIENE_VERIFICADOR(Text1)
End Sub

Private Function OBTIENE_VERIFICADOR(Texto As String) As String


Dim a(10) As Integer, n As Single


'cargo en la matriz de izquierda a derecha los numeros correspondientes
'al cuit ingresado en Texto sin los guiones suponiendo
'que el cuit o cuil sea = 30-50052945-4

a(1) = Val(Mid(Texto, 1, 1)) '= 3
a(2) = Val(Mid(Texto, 2, 1)) '= 0
a(3) = Val(Mid(Texto, 3, 1)) '= 5
a(4) = Val(Mid(Texto, 4, 1)) '= 0
a(5) = Val(Mid(Texto, 5, 1)) '= 0
a(6) = Val(Mid(Texto, 6, 1)) '= 5
a(7) = Val(Mid(Texto, 7, 1)) '= 2
a(8) = Val(Mid(Texto, 8, 1)) '= 9
a(9) = Val(Mid(Texto, 9, 1)) '= 4
a(10) = Val(Mid(Texto, 10, 1)) '= 5


'calculo el digito verificador
n = (a(1) * 6) + (a(2) * 7) + (a(3) * 8) + (a(4) * 9) + (a(5) * 4) + (a(6) * 5) + (a(7) * 6) + (a(8) * 7) + (a(9) * 8) + (a(10) * 9)
n = ((n / 11) - Int(n / 11)) * 11

OBTIENE_VERIFICADOR = n



End Function
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 747
  • Reputación: +83/-5
    • Ver Perfil
Re:COLOCAR UN NUMERO DE 11 DIGITOS DENTRO DE UN CAMPO DE 10
« Respuesta #4 en: Octubre 22, 2012, 11:00:03 am »
como dijo Raul si lo guardas en hexadecimal, siempre te guarda 10 por mas que el numero de longitud 11 sea el maximo posible 99999999999, siempre es 10 en hexa.

saludos.
Quien nunca ha cometido un error nunca ha probado algo nuevo - Albert Einstein