En el mensaje explique como hacerlo. Tu codigo actualiza solo el primer valor porque nunca iteras sobre el dataset que devuelve el select. Simplemente agregas el primer registro a un TStringList y luego ejecutas un solo update el numero del primer registro que almacenaste en la lista de strings
Código Delphi
[-]
var
qrySierras, qryUpdate: TZQuery;
begin
qrySierras :=
IniciarTransaccion;
try
qrySierras.SQL.Text := 'SELECT sierra from Actual';
qrySierras.Open;
qryUpdate.sql.text := 'UPDATE Sierras SET Estado=:Estado where Numero =:Numero';
qryUpdate.ParamByName('Estado').DataType := ftString;
qryUpdate.Prepared := True;
while not qrySierras.Eof do
begin
qryUpdate.ParamByName('Estado').AsString := 'No informado';
qryUpdate.ParamByName('Numero').AsString := qrySierras.fieldbyname('sierra').AsString;
qryUpdate.ExecSQL;
qrySierras.Next;
end;
CommitTransaccion;
ZQuery4.Refresh; except
RollbackTransaccion;
raise;
end;
end;