UpdateRecord no es para grabar los cambios, por tanto no se guardan JAMÁS.
... Claro... tú dirás pues los cambios si se guardan en todos los registros menos en el último.... Pues sí, porque internamente la VCL cuando realizas un Tdataset.Next mira si hay modificaciones en el registro actual y los guarda automáticamente. Pero en el último registro no se puede hacer un .Next porque se ha llegado al final, por tanto, no se guarda.
Sustituye el "UpdateRecord" por "Post"
Siempre que se haga un Edit / Insert / Append debe llevar asociado un Post / Cancel para evitar este tipo de fallos que lo vuelven a uno loco
.
Saludos