se supone que precfinal = Cantidad*Precunit, no?
Pues bien, a ese SQL está algo "mal"
1.- Lo sobra la unión (join) con la tabla maestra (teniendo el campo por el que buscar en la tabla detalle, es una tontería consumir recursos para hacer una join)
2.- Al quitar la join, le falta un parámetro, que es Consumo del cual quieres calcular la suma, sino te lo calculará de todo (cláusula where)
por lo que te podría quedar algo así:
Código SQL
[-]
select sum(Precfinal) as suma
from det_producto
where consumo = :consumo
y desde código hacer algo así:
Código Delphi
[-]
procedure TModuloDatos.TblDetproductoAfterPost(DataSet: TDataSet);
Var
x: Float;
begin
Consulta1.Close;
Consulta1.ParamByName('consumo').AsInteger:=TblConsumos.FieldByName('IDConsumo').AsInteger;
Consulta1.Open;
If Consulta1.IsEmpty Then
x := 0
Else
x := Consulta1.FieldByName('Suma').AsFloat;
TblConsumos.Edit;
TblConsumos.FieldByName('Totalfactu').AsFloat := x;
TblConsumos.Post;
end;
Consejo: acostúmbrate a no usar variables de tipo Variant cuando sabes, de entrada, el tipo de dato que será
Consejo2: dentro de un mismo formulario/módulo de datos, no hace falta que hagas referencia a éste
Espero que te sirva