puedes usar campos calculados.
tendrias dos campos calculados 'fecha_precio_minimo' y 'fecha_precio_maximo' y la siguiente query:
qryFechaPrecio:
Código:
select max(fecha) as fecha
from tabla
where articulo=:articulo
and proveedor=:proveedor
and precio=:precio
he puesto 'max(fecha)' porque podria haber mas de una fecha en la que se alcanza determinado precio por proveedor y articulo.
en el evento 'onCalcField' escribes:
Código:
// fecha en la que se alcanza el precio maximo:
qryFechaPrecio.close;
qryFechaPrecio.paramByName('articulo').value:=articulo; // variable global
qryFechaPrecio.paramByName('proveedor').value:=query['proveedor'];
qryFechaPrecio.paramByName('precio').value:=query['precio_maximo'];
qryFechaPrecio.open;
query['fecha_precio_maximo']:=qryFechaPrecio['fecha'];
// fecha en la que se alcanza el precio minimo:
qryFechaPrecio.close;
qryFechaPrecio.paramByName('articulo').value:=articulo; // variable global
qryFechaPrecio.paramByName('proveedor').value:=query['proveedor'];
qryFechaPrecio.paramByName('precio').value:=query['precio_minimo'];
qryFechaPrecio.open;
query['fecha_precio_maximo']:=qryFechaPrecio['fecha'];
la ventaja que tiene usar campos calculados en lugar de una unica select, es que divides las consultas en subconsultas mas sencillas que se pueden ejecutar en cualquier motor de bases de datos.
la desventaja es que aumentas el trafico en la red y disminuyes la velocidad de ejecucion.