¿Cómo muestro el ultimo registro de un pago de desinfecciones de transportes?

Buenas Experto y Gracias por tu tiempo
Quiero mostrar en una consulta el ultimo registro de un pago de desinfecciones de transportes, te comento un poco como esta hecha la base de datos, La tabla "Actividad" consta con los Siguientes campos ===>
; Fecha; Actividad (en donde por medio de una lista elijo lo que corresponde); Corresponde (Donde pongo a que mes corresponde, porque hay veces en que pagan fuera de termino).
Ahora muestro como lo cargaría y como lo quiero ver
Carga
N° (1), Fecha (15/01/11), Actividad, (Desinfección), Corresponde (Diciembre)
N° (1), Fecha (25/01/11), Actividad, (Desinfección), Corresponde (Enero)
N° (2), Fecha (19/02/11), Actividad, (Desinfección), Corresponde (Febrero)
N° (2), Fecha (07/04/11), Actividad, (Desinfección), Corresponde (Marzo)
Lo que quiero ver
N° (1), Fecha (25/01/11), Actividad, (Desinfección), Corresponde (Enero)
N° (2), Fecha (07/04/11), Actividad, (Desinfección), Corresponde (Marzo)
A ver si me puedes dar una mano, Muchas Gracias!

1 Respuesta

Respuesta
1
Lo que pides es un poco complicado de explicar "a distancia", pero vamos a intentarlo:
Lo que debes hacer es lo siguiente:
1.- Copia tu tabla Actividad y la guardas como TActividadTmp (doy por supuesto que sólo tienes los campos que mencionas en tu consulta).
2.- En el formulario que quieras (o si no creas uno en blanco) añades un botón de comando (cancela el asistente si te sale). Este botón de comando te actualizará los datos TActvidadTmp con el formato que quieres.
3.- Sacas sus propiedades y te vas a la pestaña Eventos -> Al hacer click. Verás que hay un pequeño botón de puntos suspensivos. Si haces click sobre se te abre una ventana. Ahí le dices que quieres generar código.
4.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes el siguiente código:
...
Private Sub Comando0_Click()
        'Limpiamos la tabla TActividadTmp
    Dim rstTmp As Recordset
    Set rstTmp = CurrentDb.OpenRecordset("TActividadTmp")
    If rstTmp.RecordCount = 0 Then GoTo Proceso
    rstTmp.MoveFirst
    Do Until rstTmp.EOF
        rstTmp.Delete
        rstTmp.MoveNext
    Loop
Proceso:
        'Creamos las variables para el proceso
    Dim rst As Recordset, rstQuery As Recordset
    Dim numeroActual As Long
    Dim i As Integer
    Dim miSql As String, miSqlNumeros As String
    miSqlNumeros = "SELECT Actividad.Nº FROM Actividad GROUP BY Actividad.Nº"
    Set rst = CurrentDb.OpenRecordset(miSqlNumeros)
        'Si no hubiera información en la consulta sale del proceso
    If rst.RecordCount = 0 Then GoTo Salida
    rst.MoveFirst
    Do Until rst.EOF
        numeroActual = rst.Fields(0).Value
        miSql = "SELECT Actividad.Nº, Actividad.Fecha, Actividad.Actividad, Actividad.Corresponde"
        miSql = miSql & " FROM Actividad"
        miSql = miSql & " WHERE [Nº]=" & numeroActual & " AND [Actividad]='Desinfeccion'"
        miSql = miSql & " ORDER BY Actividad.Fecha DESC"
        Set rstQuery = CurrentDb.OpenRecordset(miSql)
        If rstQuery.RecordCount = 0 Then GoTo Siguiente
        With rstTmp
            .AddNew
            .Fields(0).Value = rstQuery.Fields(0).Value
            .Fields(1).Value = rstQuery.Fields(1).Value
            .Fields(2).Value = rstQuery.Fields(2).Value
            .Fields(3).Value = rstQuery.Fields(3).Value
            .Update
        End With
Siguiente:
        Rst. MoveNext
    Loop
        'Abrimos la tabla mostrando los resultados
    DoCmd. OpenTable "TActividadTmp"
Salida:
    Rst. Close
    Set rst = Nothing
    rstTmp.Close
    Set rstTmp = Nothing
    rstQuery.Close
    Set rstQuery = Nothing
End Sub
...
Por si tienes algún problema puedes bajarte una BD de ejemplo aquí: http://www.filebig.net/files/9PtAMu74Xb

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas