Ya me había ocurrido antes y creo que si:
Código Delphi
[-]
... + '# AND horaprog<=#:hora#';
Así es, si :hora es un parámetro, lo estás poniendo dentro de un string, lo digo por las comillas.
Porqué no lo haces de esta forma como lo hiciste en el campo anterior???
Código Delphi
[-]... AND fechaprog <= #'+datetostr(date)+
Creo que de alguna manera están interviniendo negativamente las almohadillas en combinación con los dos puntos de tu parámetro, quizás te funcione mejor así.
Código Delphi
[-]
... + '# AND horaprog<=#' + DateToStr(TimeHoraProg) + '#';
Saludos