Hola Diego.
Tengo hecho algo parecido y es para mostrar los cumpleaños de los empleados.
Lo que hago es cargar una Queue e imprimirla. En el reporte habilito el Zoom al 100% y la vista previa.
En tu caso podría ser algo parecido a esto:
En la tabla (Tomas) guardo la fecha y la hora que debe tomar el medicamento y la declaro como clave duplicada.
TOM:KeyFechaToma (Clave)
..........TOM:FechaToma (Campo D6)
..........TOM:HoraToma (Campo T1)
Tambien guardaría el IdPaciente, IdMedicamento y la cantidad
luego leo la tabla, cargo una Queue con los registros que coinciden con Today()
y las muestro en el browse.
Queue seria:
QTomas
QT:IdTomas
QT:Fecha
QT:Hora
QT:IdMedicamento
QT:Cantidad
El reporte hacelo usando un archivo que tenga 1 (un) sólo registro. Esto te sirve para que por take record SOLO pasa una vez. Luego armas el reporte con los campos de la Queue. En:
ReportPropierties
................ Tildá PrintPreview
................................Preview Options Zoom 100%
..............................................Filters
..........................................................Propierties
......................................................................Filter Agregale: False y tildaExclude Ulfiltered
Esto hace que la impresión se haga solo por código. Prueba quitarle esto y fijate la diferencia
En take record del reporte va este código
I# = 0
! Cargo la fecha de hoy
TOM:FechaToma = Today()
! me posiciono a partir de la fecha = Today()
Set (TOM:KeyFechaToma,TOM:KeyFechaToma)
! Leo hasta que el campo TOM:FechaToma sea > a Today()
LOOP UNTIL Access:Tomas.Next() or TOM:FechaToma > Today()
! Aca cargo la queue
QT:IdTomas = TOM:IdTomas
QT:Fecha = TOM:Fecha
QT:Hora = TOM:Hora
QT:IdMedicamento = TOM:IdMedicamento
QT:Cantidad = TOM:Cantidad
I# += 1
ADD(QTomas,I#)
IF ERRORCODE() THEN STOP(ERROR()).
End ! Loop
! Lo Ordenas por fecha y hora
SORT(QTomas,QT:Fecha,QT:Hora)
! Lo Imprimis
! Imprimir desde una Queue
Loop I#= 1 to Records(QToma)
Get(QToma,I#)
Print(RPT:Detail) ! Detail es el nombre por defecto. Podes usar cualquiera
End
EndPage(Report)
Si quiesiera incluir las tomas de Hoy y las de mañana sería:
LOOP UNTIL Access:Tomas.Next() or TOM:FechaToma > Today() + 1
! El resto igual
! Si lo quieres ordenado por Paciente, fecha y hora
SORT(QTomas,QT:IdPaciente,QT:Fecha,QT:Hora)
Espero te sirva.
Avisame si solucionaste.
Desde Venado Tuerto un abrazo.