Hola
Usas el mismo query y lo cierras:
Primero obtienes los datos, los almacenas en variables, cierras el query y pretendes hacer un bucle.
No puedes hacer un bucle de un query cerrado:
Código Delphi
[-]
ZQuery1.First; While Not(ZQuery1.Eof) do begin
Articulo:= ZQuery1.Fields[0].AsString;
Cantidad:= ZQuery1.Fields[1].AsString;
ZQuery1.Close;
ZQuery1.SQL.Text:= 'Update Inventario Set Stock = Stock - :P1 Where Articulo = :P2';
ZQuery1.Params[0].Value:= Cantidad;
ZQuery1.Params[1].Value:= Articulo;
ZQuery1.ExecSQL;
ZQuery1.Next; end;
Tienes que tener dos query en este caso, aunque no le veo mucho sentido al bucle.
Saludos