
¿Cómo calcular dígito verificador en access?
Publicado por Gonzalo (2 intervenciones) el 24/06/2015 17:41:03
En mi trabajo están empezando a trabajar con rapipago, un servicio de pago en argentina. El sistema necesita unos datos en código de barras, esto ya lo tenemos resuelto, el tema es que necesesita un código verificador como ultimo numero según estas especificaciones:
A) Empezando por la primera posición del string a calcular, asignarle la siguiente secuencia : 1,3,5,7,9,3,5,7,9.. (la secuencia 3,5,7 y 9 sera repetida tantas veces como sea necesario)
B) Realizar el producto de cada elemento de la secuencia por el elemento correspondiente de la serie a verificar.
c) Sumar los productos.
d) Dividir el resultado de la suma por 2
e) Tomar solo la parte entera y dividirla por 10(Modulo 10). El resto será el Dígito Verificador.
Ejemplo:
3 0 6 0 0 2 0 5 0 8 5
a. 1 3 5 7 9 3 5 7 9 3 5
b. 3 0 30 0 0 6 0 35 0 24 25 = c. 123
d. 61,5
e. 61/10
Digito Verificador 1
Consegui este codigo, pero al llamarlo desde una consulta me da error
Public Function CodigoBarra(CodBarras)
'Calculo de los Dígitos Verificadores
Dim PriDig As Double
Dim SegDig As Double
'1 0 5 9 0 0 0 0 5 0 0 0 0 8 2 5 4 0 0 0 0 0 0 0 0 0 0 0 0 4 7 0 0 0 0 0 2 9 0 9 0 0 0
'1 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5
'1+ 25+63+45 +24+10+35+36 +12+35+18+27 +63 +54 +5 +63 '516
PriDig = Mid(CodBarras, 1, 1) * 1 + _
Mid(CodBarras, 2, 1) * 3 + _
Mid(CodBarras, 3, 1) * 5 + _
Mid(CodBarras, 4, 1) * 7 + _
Mid(CodBarras, 5, 1) * 9 + _
Mid(CodBarras, 6, 1) * 3 + _
Mid(CodBarras, 7, 1) * 5 + _
Mid(CodBarras, 8, 1) * 7 + _
Mid(CodBarras, 9, 1) * 9 + _
Mid(CodBarras, 10, 1) * 3 + _
Mid(CodBarras, 11, 1) * 5 + _
Mid(CodBarras, 12, 1) * 7 + _
Mid(CodBarras, 13, 1) * 9 + _
Mid(CodBarras, 14, 1) * 3 + _
Mid(CodBarras, 15, 1) * 5
PriDig = PriDig + Mid(CodBarras, 16, 1) * 7 + _
Mid(CodBarras, 17, 1) * 9 + _
Mid(CodBarras, 18, 1) * 3 + _
Mid(CodBarras, 19, 1) * 5 + _
Mid(CodBarras, 20, 1) * 7 + _
Mid(CodBarras, 21, 1) * 9 + _
Mid(CodBarras, 22, 1) * 3 + _
Mid(CodBarras, 23, 1) * 5 + _
Mid(CodBarras, 24, 1) * 7 + _
Mid(CodBarras, 25, 1) * 9 + _
Mid(CodBarras, 26, 1) * 3 + _
Mid(CodBarras, 27, 1) * 5 + _
Mid(CodBarras, 28, 1) * 7 + _
Mid(CodBarras, 29, 1) * 9 + _
Mid(CodBarras, 30, 1) * 3
PriDig = PriDig + Mid(CodBarras, 31, 1) * 5 + _
Mid(CodBarras, 32, 1) * 7 + _
Mid(CodBarras, 33, 1) * 9 + _
Mid(CodBarras, 34, 1) * 3 + _
Mid(CodBarras, 35, 1) * 5 + _
Mid(CodBarras, 36, 1) * 7 + _
Mid(CodBarras, 37, 1) * 9 + _
Mid(CodBarras, 38, 1) * 3 + _
Mid(CodBarras, 39, 1) * 5 + _
Mid(CodBarras, 40, 1) * 7 + _
Mid(CodBarras, 41, 1) * 9 + _
Mid(CodBarras, 42, 1) * 3 + _
Mid(CodBarras, 43, 1) * 5
PriDig = PriDig / 2
PriDig = Left(TextoPostAlaComa(Format(TextoPrevioAlaComa(CStr(PriDig)) / 10, "0.00")), 1)
CodBarras = CodBarras & PriDig
End Function
Me podrian orientar un poco porque la verdad no se como hacerlo, Gracias!!
A) Empezando por la primera posición del string a calcular, asignarle la siguiente secuencia : 1,3,5,7,9,3,5,7,9.. (la secuencia 3,5,7 y 9 sera repetida tantas veces como sea necesario)
B) Realizar el producto de cada elemento de la secuencia por el elemento correspondiente de la serie a verificar.
c) Sumar los productos.
d) Dividir el resultado de la suma por 2
e) Tomar solo la parte entera y dividirla por 10(Modulo 10). El resto será el Dígito Verificador.
Ejemplo:
3 0 6 0 0 2 0 5 0 8 5
a. 1 3 5 7 9 3 5 7 9 3 5
b. 3 0 30 0 0 6 0 35 0 24 25 = c. 123
d. 61,5
e. 61/10
Digito Verificador 1
Consegui este codigo, pero al llamarlo desde una consulta me da error
Public Function CodigoBarra(CodBarras)
'Calculo de los Dígitos Verificadores
Dim PriDig As Double
Dim SegDig As Double
'1 0 5 9 0 0 0 0 5 0 0 0 0 8 2 5 4 0 0 0 0 0 0 0 0 0 0 0 0 4 7 0 0 0 0 0 2 9 0 9 0 0 0
'1 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5 7 9 3 5
'1+ 25+63+45 +24+10+35+36 +12+35+18+27 +63 +54 +5 +63 '516
PriDig = Mid(CodBarras, 1, 1) * 1 + _
Mid(CodBarras, 2, 1) * 3 + _
Mid(CodBarras, 3, 1) * 5 + _
Mid(CodBarras, 4, 1) * 7 + _
Mid(CodBarras, 5, 1) * 9 + _
Mid(CodBarras, 6, 1) * 3 + _
Mid(CodBarras, 7, 1) * 5 + _
Mid(CodBarras, 8, 1) * 7 + _
Mid(CodBarras, 9, 1) * 9 + _
Mid(CodBarras, 10, 1) * 3 + _
Mid(CodBarras, 11, 1) * 5 + _
Mid(CodBarras, 12, 1) * 7 + _
Mid(CodBarras, 13, 1) * 9 + _
Mid(CodBarras, 14, 1) * 3 + _
Mid(CodBarras, 15, 1) * 5
PriDig = PriDig + Mid(CodBarras, 16, 1) * 7 + _
Mid(CodBarras, 17, 1) * 9 + _
Mid(CodBarras, 18, 1) * 3 + _
Mid(CodBarras, 19, 1) * 5 + _
Mid(CodBarras, 20, 1) * 7 + _
Mid(CodBarras, 21, 1) * 9 + _
Mid(CodBarras, 22, 1) * 3 + _
Mid(CodBarras, 23, 1) * 5 + _
Mid(CodBarras, 24, 1) * 7 + _
Mid(CodBarras, 25, 1) * 9 + _
Mid(CodBarras, 26, 1) * 3 + _
Mid(CodBarras, 27, 1) * 5 + _
Mid(CodBarras, 28, 1) * 7 + _
Mid(CodBarras, 29, 1) * 9 + _
Mid(CodBarras, 30, 1) * 3
PriDig = PriDig + Mid(CodBarras, 31, 1) * 5 + _
Mid(CodBarras, 32, 1) * 7 + _
Mid(CodBarras, 33, 1) * 9 + _
Mid(CodBarras, 34, 1) * 3 + _
Mid(CodBarras, 35, 1) * 5 + _
Mid(CodBarras, 36, 1) * 7 + _
Mid(CodBarras, 37, 1) * 9 + _
Mid(CodBarras, 38, 1) * 3 + _
Mid(CodBarras, 39, 1) * 5 + _
Mid(CodBarras, 40, 1) * 7 + _
Mid(CodBarras, 41, 1) * 9 + _
Mid(CodBarras, 42, 1) * 3 + _
Mid(CodBarras, 43, 1) * 5
PriDig = PriDig / 2
PriDig = Left(TextoPostAlaComa(Format(TextoPrevioAlaComa(CStr(PriDig)) / 10, "0.00")), 1)
CodBarras = CodBarras & PriDig
End Function
Me podrian orientar un poco porque la verdad no se como hacerlo, Gracias!!
Valora esta pregunta


0