Access - Función Mod

 
Vista:
sin imagen de perfil

Función Mod

Publicado por Nomada (171 intervenciones) el 05/09/2014 23:17:18
Buenas.
He creado una tabla de clientes donde tengo un campo A (numérico doble) que es el número de Seguridad Social. Ahora tengo otro campo B (numérico byte) para el dígito de control. El código que tengo es:
B = A Mod 97

Pues bien, con escribieno en el campo A el numero 1512345678 el dígito sale bien (54), pero cuando el campo A tiene un número mayor de 2212345678, me da el error de Desbordamiento con el el número 6 en tiempo de ejecución.

Qué estoy haciendo mal?
Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Función Mod

Publicado por Neckkito (1157 intervenciones) el 06/09/2014 09:44:09
Hola!

Tu problema viene dado por el hecho de que, a partir del valor que comentas de A, sobrepasas la precisión que admite el operador mod.

Para solucionarlo basta que apliques una fórmula equivalente a lo que hace mod. Por ejemplo, tu código podría quedar:

Const miDiv as byte=97
Dim A as double
Dim B as byte
B= A - (miDiv * Fix(A / miDiv))

Para más info sobre el tema del mod puedes echar un vistazo a este link (http://bit.ly/1pWmd17). Ahí verás que hay otra fórmula equivalente que utiliza el divisor entero (división con la contrabarra "\"), pero en tu caso, y por los valores de A que utilizas, no te es útil porque te seguiría dando el problema de desbordamiento.

Un saludo,
firmaMail
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función Mod

Publicado por jose (830 intervenciones) el 07/09/2014 09:52:03
esto lo puedes solucionar de la siguiente forma:

dado que el numero de la seguridad social siempre es un numero entero

el campo A CONFiGURALE CONO ENTERO LARGO

EL CAMPO B que recoge el resultado de la funcion MOD ,siempre es un numero entero, configurale tambien como entero largo


de antes cuando la capacidad de los ordenadores y la velocidad era escasa y lenta habia que recurrir a números que ocupasen menos espacio, pero en la actualidad,(a menos que sea una tabla muy gande), no te compliques utiliza los números con su mayor tamaño y te quitarás muchos inconvenientes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar