Entiendo que una query no se puede editar ¿¿??? pero bueno tu error en el código puede ser porque cada vez que avanzas en el dataset no editas el registro.
Debería ser asi:
Código Delphi
[-]
dsCONSULTA.DataSet.Edit;
dsCONSULTA.DataSet.First;
while ( not dsCONSULTA.DataSet.Eof ) do begin
if (dsCONSULTA.DataSet.FieldByName('CANTIDAD').AsFloat <= 0) then begin
porcentaje := CalculoPorcentaje;
dsConsulta.Dataset.Edit;
dsCONSULTA.DataSet.FieldByName('CANTIDAD').Value := porcentaje * pUtilizado;
dsCONSULTA.DataSet.Post;
end;
dsCONSULTA.DataSet.Next;
end;
end;
aunque por lo que veo podrías hacer ese proceso con una consulta de actualización....
Saludos, Tony