** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Dudas con el tipo de datos y el Error nº 6 - Desbo
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Dudas con el tipo de datos y el Error nº 6 - Desbo

 Responder Responder
Autor
Mensaje
Sorrivas Ver desplegable
Nuevo
Nuevo


Unido: 26/Febrero/2024
Localización: España
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Sorrivas Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Dudas con el tipo de datos y el Error nº 6 - Desbo
    Enviado: 26/Febrero/2024 a las 10:48
Versión: Microsoft Office Access 2003 (11.8166.8172) SP3 / Microsoft Visual Basic 6.3

Tengo un problema con la asignación del tipo de datos a una variable.

1. Declaro la variable lnSS3 como Long

Dim lnSS3 As Long

2. Cuando le intento asignar el siguiente valor a dicha variable, automáticamente el editor de Microsof Visual Basic le añade un almohadilla

Dim lnSS3 As Long
lnSS3 = 2712345678#

3. Si declaro la variable doSS3 com Double

Dim doSS3 As Double

4. Y a continuación intento asignar el siguiente valor a dicha variable, automáticamente el editor de Microsof Visual Basic le añade un almohadilla

Dim doSS3 As Double
doSS3 = 2712345678#

5. Si intento usar dicha variable como el operador Mod, me da el código de error 6: Desbordamiento.

Dim MiResultado
MiResultado = doSS3 Mod 97

¿Alguien me puede ayudar a decirme qué es lo que estoy haciendo mal?

Gracias

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 26/Febrero/2024 a las 11:09
El valor que intentas introducir no lo acepta el tipo Long.

De la ayuda:
Las variables Long (enteros largos) se almacenan como números con signo de 32 bits (4 bytes) con un valor comprendido entre - 2.147.483.648 y 2.147.483.647.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 26/Febrero/2024 a las 14:17
Hola,

A lo mejor, en lugar de utilizar un Long, podrías probar con un LongLong a ver que pasa (si tienes 64 bits)

Sospecho que estas calculando/validando el n´º de la Seguridad Social.

Para ese cálculo yo tenia guardada una función de hace un porrón de años (no es mia) que partía el número para, justamente, evitar el overflow:

Function ValidaSS(strNumeroSS As String) As Boolean
    Dim lngParte1       As Long
    Dim lngParte2       As Long
    Dim intResultado    As Integer
    Dim intDC           As Integer
    
    'Partimos el número para evitar el overflow
    lngParte1 = CLng(Left(strNumeroSS, 5))
    lngParte2 = CLng(Mid(strNumeroSS, 6, 5))
    
    'Dígitos de control
    intDC = CInt(Right(strNumeroSS, 2))
    
    'Cálculo del dígito de control
    intResultado = lngParte1 Mod 97
    lngParte2 = intResultado & lngParte2
    intResultado = lngParte2 Mod 97
    
    'Si el cálculo es igual al dígito de control, el número  entrado es correcto
    ValidaSS = (intDC = intResultado)
End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
Sorrivas Ver desplegable
Nuevo
Nuevo


Unido: 26/Febrero/2024
Localización: España
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Sorrivas Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 26/Febrero/2024 a las 18:40
Efectivamente estoy intentando calcular el dígito de control del número de la Seguridad Social.

Gracias por compartir la función que lo hace. 

La voy a adaptar y así resolver el problema en el que estaba atascado.

Gracias.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable