Access - Ref.cruzadas y Modulos!!!!!!!URG:

 
Vista:

Ref.cruzadas y Modulos!!!!!!!URG:

Publicado por carolina (2 intervenciones) el 13/04/2003 23:01:21
1.Quiero que el usuario ingrese un parametro en en una tabla de referencias cruzadas? Se puede?

2.Tengo una tabla de socios, con un campo estado(ok, mora) y una tabla cuotas (cuotas pagadas por los socios)(en realcion obio). lo que quiero es actualizar automaticamente, el estado de los socios cuando estan en mora.

Pensaba que puedo saber que un socio esta moroso por la diferencia entre date() y fecha_pago (la mayor) (esto lo tengo en una consulta!!!!!!), entonces::::..

Se me ocurre que tengo que hacer un modulo de codigo, pero no tengo idea como se hace!!!!!!!!! Tienen algun ejemplo?
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

Ref.cruzadas y Modulos!!!!!!!URG:

Publicado por Alejandro (4142 intervenciones) el 27/04/2023 20:58:38
1. Sí, es posible que el usuario ingrese un parámetro en una tabla de referencias cruzadas en Access. Para hacerlo, puedes crear un formulario y agregar un cuadro de texto en el que el usuario ingrese el valor que desea buscar en la tabla de referencias cruzadas. Luego, puedes vincular este cuadro de texto a una consulta que filtre los resultados de la tabla de referencias cruzadas según el valor ingresado por el usuario.

2. Para actualizar automáticamente el estado de los socios cuando están en mora, puedes crear un procedimiento VBA en un módulo de código de Access. Primero, puedes crear una consulta que calcule la diferencia entre la fecha actual y la fecha de pago más reciente para cada socio. Luego, puedes usar el resultado de esta consulta en un bucle que recorra todos los socios y actualice su estado a "mora" si la diferencia entre la fecha actual y la fecha de pago más reciente supera un cierto número de días.

Aquí te dejo un ejemplo de código que puedes usar como punto de partida:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Public Sub ActualizarEstados()
    Dim db As DAO.Database
    Dim rsSocios As DAO.Recordset
    Dim rsDiasMora As DAO.Recordset
    Dim fechaActual As Date
    Dim diasMora As Integer
 
    ' Obtener la fecha actual
    fechaActual = Date
 
    ' Abrir la base de datos y las tablas necesarias
    Set db = CurrentDb
    Set rsSocios = db.OpenRecordset("Socios")
    Set rsDiasMora = db.OpenRecordset("SELECT SocioID, DATEDIFF('d', FechaPago, #" & fechaActual & "#") AS DiasMora FROM Cuotas GROUP BY SocioID")
    ' Recorrer todos los socios y actualizar su estado
    rsSocios.MoveFirst
    Do Until rsSocios.EOF
        ' Obtener el número de días de mora para este socio
        rsDiasMora.FindFirst "SocioID = " & rsSocios("SocioID")
        If rsDiasMora.NoMatch Then
            ' Si no hay registros de cuotas para este socio, el estado debe ser "ok"
            rsSocios.Edit
            rsSocios("Estado") = "ok"
            rsSocios.Update
        Else
            diasMora = rsDiasMora("DiasMora")
            If diasMora > 30 Then
                ' Si el socio tiene más de 30 días de mora, su estado debe ser "mora"
                rsSocios.Edit
                rsSocios("Estado") = "mora"
                rsSocios.Update
            Else
                ' Si el socio tiene menos de 30 días de mora, su estado debe ser "ok"
                rsSocios.Edit
                rsSocios("Estado") = "ok"
                rsSocios.Update
            End If
        End If
        rsSocios.MoveNext
    Loop
 
    ' Cerrar los recordsets y la base de datos
    rsSocios.Close
    rsDiasMora.Close
    Set rsSocios = Nothing
    Set rsDiasMora = Nothing
    Set db = Nothing
End Sub

Este código asume que tienes una tabla llamada "Socios" con un campo "SocioID" y un campo "Estado", y una tabla llamada "Cuotas" con un campo "SocioID" y un campo "FechaPago". También asume que la fecha de vencimiento de las cuotas es el día 1 de cada mes.

Para actualizar automáticamente el estado de los socios, puedes crear una macro que ejecute el siguiente código VBA:

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
28
29
30
31
32
Dim db As DAO.Database
Dim rsSocios As DAO.Recordset
Dim rsCuotas As DAO.Recordset
Dim fechaMora As Date
Dim fechaPago As Date
Dim socioID As Long
 
Set db = CurrentDb()
Set rsSocios = db.OpenRecordset("Socios")
Set rsCuotas = db.OpenRecordset("Cuotas")
 
fechaMora = DateSerial(Year(Date), Month(Date), 1)
 
rsSocios.MoveFirst
Do Until rsSocios.EOF
    socioID = rsSocios("SocioID")
    fechaPago = DMax("FechaPago", "Cuotas", "SocioID = " & socioID)
    If fechaPago < fechaMora Then
        rsSocios.Edit
        rsSocios("Estado") = "mora"
        rsSocios.Update
    Else
        rsSocios.Edit
        rsSocios("Estado") = "ok"
        rsSocios.Update
    End If
    rsSocios.MoveNext
Loop
 
rsSocios.Close
rsCuotas.Close
db.Close

Este código abre un recordset de la tabla "Socios" y otro recordset de la tabla "Cuotas". Luego, itera a través de cada socio y busca la última fecha de pago en la tabla "Cuotas". Si la fecha de pago es anterior al primer día del mes actual, actualiza el estado del socio a "mora", de lo contrario, lo actualiza a "ok".

Puedes ejecutar esta macro automáticamente usando un Temporizador de Eventos de Access, que te permitirá configurarla para que se ejecute en un intervalo determinado (por ejemplo, cada día a las 12:00 pm). Para hacer esto, sigue estos pasos:

1. Abre la vista de macros en Access.
2. Crea una nueva macro llamada "Actualizar Estado Socios".
3. Agrega una acción "Ejecutar código" a la macro y copia y pega el código VBA anterior en la ventana de código.
4. Guarda y cierra la macro.
5. En la vista de formularios, abre el formulario de Temporizador de Eventos (si no lo tienes, puedes crearlo en la vista de diseño de formularios).
6. Configura el Temporizador de Eventos para que se ejecute en el intervalo que deseas (por ejemplo, diariamente a las 12:00 pm).
7. Agrega una acción "EjecutarMacro" al evento "Temporizador" del formulario y selecciona la macro "Actualizar Estado Socios".
8. Guarda y cierra el formulario de Temporizador de Eventos.

Con estos pasos, la macro "Actualizar Estado Socios" se ejecutará automáticamente en el intervalo especificado por el Temporizador de Eventos, manteniendo actualizado el estado de los socios.
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