Como os comentaba ayer he vuelto con el asunto esta mañana, muchas gracias a los dos por vuestro tiempo y vuestras propuestas, al final con la opción de Faust me funciona perfecto, al final se queda así:
Código Delphi
[-]
adoquery4.ParamCheck:=false;
adoquery4.Close;
adoquery4.SQL.Text:='SELECT * FROM log WHERE (destinatario=' +
quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido=false) AND ((fechaprog<#'+datetostr(date)+'#)OR(fechaprog=#'+
datetostr(date)+'# AND horaprog<=#'+timetostr(time)+'#))';
adoquery4.ExecSQL;
adoquery4.Open;
He tenido que modificar la consulta porque ayer a las 13:00 si me sacaba los mensajes que tenían la fecha de ayer y las 12:00 en la hora, pero hoy a las 8:00 de la mañana, de la forma en que lo tenía puesto, no me sacaba los mensajes, aparte de eso todo genial.
He probado también tu opción Caral y me sigue apareciendo el mensaje de vacío, no se si tendrá que ver con la versión de access que yo tengo que es la

97

, de todas formas gracias de nuevo a los dos.
Un saludo.