Calculando edad a partir de número de identidad de las personas.

Tengo una Base de datos en Access. Una tabla CLIENTES. En la tabla CLIENTES tengo el campo CARNET IDENTIDAD (es el documento identidad de las personas) Es un número como este: 73012910442. El 73 es el año, 01 es el mes y 29 el díade nacimiento, el resto 10442 es parte del código estatal asignado a cada ciudadano. Tengo un campo donde registro este número largo del carnet de identidad. ¿Qué necesito? En la misma vista del formulario añadir un campo FECHA DE NACIMIENTO que me muestre a partir de este número de carnet de identidad: 29/01/1973 y en otro campo EDAD me muestre 51. Poner el campo no es problema, lo que no se hacer es que esos campos me muestren esa información específica a partir de ese número largo de identidad.

2 Respuestas

Respuesta

Para calcular la fecha de nacimiento y la edad a partir del número del carnet de identidad en Access, puede seguir estos pasos:

1. Crear un Campo para la Fecha de Nacimiento
Abra su tabla CLIENTES en vista de diseño.
Agregue un nuevo campo llamado FECHA_DE_NACIMIENTO y establezca su tipo como Fecha/Hora.
Asegúraese de que los campos ya estén en el formulario donde quiere mostrar la fecha de nacimiento.

2. Crear un Campo para la Edad
Agregueotro campo llamado EDAD en la tabla, pero este será calculado. No necesitas almacenarlo en la tabla, ya que se puede calcular directamente en el formulario o en una consulta.
No es necesario agregarlo en la tabla, lo haremos en el formulario.

3. Calcular la Fecha de Nacimiento
Para calcular la fecha de nacimiento en el formulario, siga estos pasos:

Abra el formulario donde tiene el campo CARNET IDENTIDAD en vista de diseño.
Agregue un nuevo cuadro de texto y establece su nombre como txtFechaNacimiento.

En la propiedad Origen del Control, utilice la siguiente expresión

=DateSerial(2000 + Left([CARNET IDENTIDAD], 2), Mid([CARNET IDENTIDAD], 3, 2), Mid([CARNET IDENTIDAD], 5, 2))

Le explico:

Left([CARNET IDENTIDAD], 2): Extrae los primeros dos caracteres, que representan el año.
2000 +: Esto se usa porque el año 73 (por ejemplo, 73) se interpretaría como 1973. Sin embargo, en el caso de que el año sea del 2000 en adelante, tendría que ajustar esto. En este contexto, el carnet podría corresponder a un rango de años del 1900 al 1999, pero en un caso práctico real, debería adaptar esto según cómo maneje los años.

Si no le sirve pruebe con esta

=DateSerial(IIf(Left([CARNET IDENTIDAD], 2) > Year(Date()) Mod 100, 1900, 2000) + Left([CARNET IDENTIDAD], 2), Mid([CARNET IDENTIDAD], 3, 2), Mid([CARNET IDENTIDAD], 5, 2))

Le explico:

IIf(Left([CARNET IDENTIDAD], 2) > Year(Date()) Mod 100, 1900, 2000): Verifica si el año extraído es mayor que el año actual (en dos dígitos). Si es así, asume que el año es del siglo pasado (1900); de lo contrario, asume que es del siglo actual (2000).
4. Calcular la Edad
Para calcular la edad, puede hacer lo siguiente:

Agregue otro cuadro de texto y establezca su nombre como txtEdad.
En la propiedad Origen del Control, use la siguiente expresión:

=DateDiff("yyyy", [txtFechaNacimiento], Date()) - IIf(Format([txtFechaNacimiento], "mmdd") > Format(Date(), "mmdd"), 1, 0)

Respuesta

Access cuando se utilizan solo dos dígitos para el año, interpreta que los inferiores a 50 pertenecen al siglo 21 y los superiores al siglo 20 (así de sencillo)
Con la función DateSerial se puede componer una fecha, el primer parámetro es el año, el segundo el mes y el tercero el día (tal como aparecen en esa serie).

Para un DNI tal como 73012910442

La fecha de nacimiento se obtiene asi:

FNac = DateSerial(Mid(DNI, 1,2), Mid(DNI, 3,2), Mid(DNI, 5,2))

Obtenida la fecha de nacimiento (FNac), la edad se puede calcular asi:

Edad = Year(Date) - Year(FNac) + ((Month(Date) <= Month(FNac) And Day(Date) < Day(FNac)))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas