Le preparé este ejemplo, consta de una función a nivel de módulo 1 tabla y 2 formularios.
TABLA
Formulario y subformulario
Ingreso la fecha de corte y las 2 letras de la serie.
CÓDIGO DE LA FUNCIÓN
Option Compare Database
Option Explicit
Public pfecha As Date
Public pserie As String
Public pimporte As Double
Public Function datosform(mfecha As Date, mserie As String) As String
On Error Resume Next
Dim rs As Recordset
Dim strSQl As String
Dim strFecha As String
strFecha = "#" & Format(mfecha, "mm/dd/yyyy") & "#"
strSQl = "SELECT Last(tblmovtos.FechaMovimiento) AS ULTIMO" & vbCrLf
strSQl = strSQl & " , First(tblmovtos.SerieVentas) AS SERIE" & vbCrLf
strSQl = strSQl & " , First(tblmovtos.importe) AS IMPORTE" & vbCrLf
strSQl = strSQl & " FROM tblmovtos" & vbCrLf
strSQl = strSQl & " WHERE tblmovtos.FechaMovimiento<" & strFecha & vbCrLf
strSQl = strSQl & " AND Left([SerieVentas],2)='" & UCase(mserie) & "'"
Set rs = CurrentDb.OpenRecordset(strSQl)
pfecha = rs.Fields("ULTIMO")
pserie = rs.Fields("SERIE")
pimporte = rs.Fields("IMPORTE")
rs.Close
Set rs = Nothing
strSQl = "SELECT tblmovtos.id AS SIGUIENTES" & vbCrLf
strSQl = strSQl & " , tblmovtos.FechaMovimiento AS ULTIMO" & vbCrLf
strSQl = strSQl & " , tblmovtos.SerieVentas AS SERIE" & vbCrLf
strSQl = strSQl & " , tblmovtos.importe" & vbCrLf
strSQl = strSQl & " FROM tblmovtos" & vbCrLf
strSQl = strSQl & " WHERE tblmovtos.FechaMovimiento>=#" & Format(pfecha, "mm/dd/yyyy") & "#" & vbCrLf
strSQl = strSQl & " AND tblmovtos.FechaMovimiento<=#" & Format(mfecha, "mm/dd/yyyy") & "#" & vbCrLf
strSQl = strSQl & " AND Left([SerieVentas],2)='" & mserie & "'" & vbCrLf
strSQl = strSQl & " ORDER BY tblmovtos.FechaMovimiento;"
datosform = strSQl
End Function
Observe que utilizo 3 variables públicas para almacenar la información del último registro que es anterior a la fecha de corte. (Claro que se puede abreviar con base en un cuadro combinado),
Como ya tengo la fecha hago la siguiente consulta a partir del registro a esta fecha. La función retorna el SQL origen del subformulario. Como dice un sabio de TodoExpertos hay "mil formas" de hacerlo.
Si quiere el ejemplo puede solicitarlo a [email protected]