Access - Crear registros automaticamente

 
Vista:

Crear registros automaticamente

Publicado por Angel (2 intervenciones) el 16/12/2002 20:43:24
Hola, tengo una tabla, en la cual aparecen recogidas diversas tareas que se han de repetir cada tres dias una otras cada 7, etc, el caso es que quisiera poder sacar un informe con las tareas futuras del siguiente mes, pero no se como crear los registros que respeten esa cadencia y a su vez se creen solos, ha hecho alguien algo parecido.
Gracias.
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

Crear registros automaticamente

Publicado por Alejandro (4142 intervenciones) el 25/04/2023 22:10:32
Para crear registros automáticamente en Access, puedes utilizar una macro o un código VBA (Visual Basic for Applications) para realizar la tarea de creación de registros repetitivos. Aquí te presento una posible solución utilizando VBA:

1. Crea una tabla que almacene las tareas y su cadencia, por ejemplo, "tbl_tareas" con los siguientes campos: "ID_tarea" (clave principal), "Nombre_tarea", "Cadencia_días".

2. Crea una segunda tabla, "tbl_registros", que será donde se creen los registros automáticos de tareas, con los siguientes campos: "ID_registro" (clave principal), "ID_tarea" (clave foránea), "Fecha_tarea".

3. Crea un formulario para introducir las tareas y su cadencia en la tabla "tbl_tareas".

4. Crea un botón en el formulario que ejecute un código VBA para crear los registros en la tabla "tbl_registros" según la cadencia de cada tarea.

El código VBA podría ser similar al siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Dim rs_tareas As DAO.Recordset
Dim rs_registros As DAO.Recordset
Dim fecha_actual As Date
Dim fecha_tarea As Date
 
Set rs_tareas = CurrentDb.OpenRecordset("SELECT * FROM tbl_tareas")
Set rs_registros = CurrentDb.OpenRecordset("tbl_registros")
 
fecha_actual = Date()
rs_tareas.MoveFirst
 
Do Until rs_tareas.EOF
    fecha_tarea = DateAdd("d", rs_tareas("Cadencia_días"), fecha_actual)
    Do While fecha_tarea < DateAdd("m", 1, fecha_actual)
        rs_registros.AddNew
        rs_registros("ID_tarea") = rs_tareas("ID_tarea")
        rs_registros("Fecha_tarea") = fecha_tarea
        rs_registros.Update
        fecha_tarea = DateAdd("d", rs_tareas("Cadencia_días"), fecha_tarea)
    Loop
    rs_tareas.MoveNext
Loop
 
rs_tareas.Close
rs_registros.Close
Set rs_tareas = Nothing
Set rs_registros = Nothing
Este código obtiene todas las tareas de la tabla "tbl_tareas" y, para cada una, crea registros en la tabla "tbl_registros" con las fechas de las tareas futuras para el siguiente mes. La fecha de cada tarea se calcula sumando la cadencia de la tarea a la fecha actual, y se van agregando registros hasta que la fecha de la tarea sea posterior a un mes a partir de la fecha actual.

Espero que esto te ayude a crear los registros automáticamente en Access.
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
sin imagen de perfil

Crear registros automaticamente

Publicado por Arm (8 intervenciones) el 05/10/2023 06:08:20
Bendiciones y buen día, tarde o noche, justo he estado comiéndome el coco con resolver esto, sucede que también ando haciendo algo parecido.

Verás que necesito hacer un tipo procedimiento con fecha vencimiento cada primer día del mes, pero necesito que el registro se genere solo para cada cliente registrado, pero no consigo cómo realizarlo ¿crees que este código y esta estructura que propones me ayude a que se pueda hacer (me refiero a la generación automática de los registros cada mes)?.

De antemano muy muy agradecido, Dios te bendiga.
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

Crear registros automaticamente

Publicado por Anonimo (3316 intervenciones) el 05/10/2023 09:50:41
El problema tiene dos partes y una de ellas (la fundamental) es selecionar el subconjunto de datos que se desea duplicar esto es aquellos que esten ¿registrados? ... una simple condicion que dependera de los datos reales.

Una vez que se dispone de ese subconjunto, se recorre con un bucle y generan los nuevos registros (tomando como referente al actual (del bucle) y modificándolo como corresponda) para lo que se puede utilizar un Recordset o una SQL (consulta) de datos añadidos.

Con simples consultas:

Una consulta de SELECCION que tome los campos comunes (constantes) y filtrada por ¿registrado? devoilvera un subconjunto de ellos, algo como (en su vista SQL)
1
Select Nombre, Concepto, Valor From PAGOS-RECURRENTES Where Registrado = True;

A la consulta anterior se la llama 'Nuevos' y se la utiliza para la generacion de los nuevos que tendrían esta estructura (se añade la fecha como un dato mas).

1
Insert INTO Pagos-Recurrentes Select Nombre, Concepto, Valor,  (aqui el calculo de la nueva fecha) As FEcha_Vencimiento From Nuevos;

Se puede utilizar un recordset, pero con simples consultas (creadas con el editor de consultas) también funciona de forma correcta.
A lo sumo la consulta 'nuevos' podría crear o llenar una tabla temporal si hubiera conflictos al utilizar el mismo origen de datos para obtener el subconjunto y la inserción de nuevos datos (abierto dos veces: una en modo lectura y otra en modo edición).

(Por cierto, el usuario 'Alejandro' es virtual y sus respuestas no siempre son certeras por conflictos de versiones que no tiene en cuenta)
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
sin imagen de perfil

Crear registros automaticamente

Publicado por Arm (8 intervenciones) el 05/10/2023 21:25:43
Ooohhhh muchísimas gracias por tomarte el tiempo en reponder, intentaré aplicar la solución que propones y si no te moleta te estaré comentando a ver que va a pasar.

Dios te bendíga y gracias.
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