Access - Solo el registro actual

 
Vista:

Solo el registro actual

Publicado por yanira (140 intervenciones) el 14/11/2006 15:53:02
Tengo que crear las incapacidades de los empleados en el sistema mientras estas no esten alamcenadas es decir sea la primera vez no hay problema, cuando ya ha estado incapacitado pero no es con la fehca actual es decir, esa incapacidad ya vencio, tampoco hay problema, pero si en el archivo a cargar viene una incapacidad nueva con una vigente no alamcena la nueva, porque ya hay una vigente (todo esto lo hago en una funcion, si le hago un cambio a la funcion almacena todos los registros sin evaluar si ya tiene o no)
Como hago para que si en un archivo vienen mezcladas novedades vigentes con no existentes me cargue las no existentes unicamente.
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 Alejandro

Cargar incapacidades nuevas sin reemplazar las vigentes

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 16:48:06
Para cargar solo las incapacidades nuevas que no estén vigentes y evitar reemplazar las vigentes en Access, puedes utilizar una consulta que compare las fechas de las incapacidades existentes con las fechas de las incapacidades del archivo a cargar. Luego, en base a esa comparación, insertar solo las incapacidades que no tengan una vigencia activa en la base de datos.

A continuación, te proporciono una posible solución utilizando una consulta y código VBA:

1. Crea una consulta para comparar las fechas de las incapacidades existentes con las fechas del archivo a cargar. Supongamos que tienes una tabla llamada "Incapacidades" con los campos "IDEmpleado", "FechaInicio" y "FechaFin" para almacenar las incapacidades.

1
2
3
4
5
INSERT INTO Incapacidades (IDEmpleado, FechaInicio, FechaFin)
SELECT [IDEmpleado], [FechaInicio], [FechaFin]
FROM [TablaArchivoCargar]
WHERE [IDEmpleado] NOT IN (SELECT [IDEmpleado] FROM Incapacidades)
   OR ([IDEmpleado] IN (SELECT [IDEmpleado] FROM Incapacidades WHERE [FechaFin] < Date()) AND [FechaInicio] > Date());

2. Crea una función VBA para ejecutar la consulta. Puedes agregar esta función en un módulo de VBA en tu base de datos de Access.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function CargarIncapacidadesNuevas()
    Dim db As DAO.Database
    Dim strSQL As String
 
    On Error GoTo ErrorHandler
 
    Set db = CurrentDb
 
    ' La consulta SQL de arriba
    strSQL = "INSERT INTO Incapacidades (IDEmpleado, FechaInicio, FechaFin)" & _
             "SELECT [IDEmpleado], [FechaInicio], [FechaFin]" & _
             "FROM [TablaArchivoCargar]" & _
             "WHERE [IDEmpleado] NOT IN (SELECT [IDEmpleado] FROM Incapacidades)" & _
             "   OR ([IDEmpleado] IN (SELECT [IDEmpleado] FROM Incapacidades WHERE [FechaFin] < Date()) AND [FechaInicio] > Date());"
 
    ' Ejecutar la consulta
    db.Execute strSQL, dbFailOnError
 
    MsgBox "Incapacidades nuevas cargadas exitosamente.", vbInformation
    Exit Function
 
ErrorHandler:
    MsgBox "Error al cargar incapacidades nuevas: " & Err.Description, vbExclamation
End Function

3. Llama a la función "CargarIncapacidadesNuevas" cuando necesites cargar las incapacidades del archivo en tu base de datos. Puedes llamarla desde un botón en un formulario o desde cualquier otro evento que lo requiera.

Con esta solución, la función cargará solo las incapacidades nuevas del archivo a la tabla "Incapacidades" y no reemplazará las vigentes. Si una incapacidad ya existe y está vigente, se omitirá en la inserción.

Es importante que adaptes el código y la consulta según la estructura y nombres reales de tus tablas y campos en la base de datos.

Espero que esta solución te sea útil para cargar las incapacidades nuevas en tu base de datos de Access. ¡Buena suerte!
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