Creo que aquí hay varios problemas. Algunos ya se han comentado
1) Los parámetros son para valores de la consulta, no para los nombres de campos. Por eso:
Código SQL
[-](:ES >= T.EMIN AND :ES <= T.EMAX)
Esto te está fallando por el parámetro
ES.
Para esto sólo te queda utilizar variables para los nombres de campo (tal como has comentado).
Pero yo seguiría utilizando los parámetros para los valores. Ya que esto tiene muchas ventajas.
2) Por otro lado tienes 2 veces el mismo parámetro.
ES
Como han comentado la opción es cambiar los nombres de los parámetros o también se puede utilizar un bucle
FOR para todos los parámetros iguales. Eso te permitiría una solución más genérica.
Puedes hacer algo como esto:
Código Delphi
[-]
var
p:TParameters;
i: Integer;
begin
...
p := TADOQuery(aDataset).Parameters;
for i := 0 to (p.Count - 1) do begin
if (AnsiCompareText(p[i].Name, 'SE') = 0) then
p[i].Value := aCodigo;
end;