Primero que nada, bienvenido al Club y felicidades porque son pocos quienes en su primer mensaje usan las etiquetas correctas.
Ahora bien, en cuanto al asunto que preguntas pues no sé yo cuál pueda ser la razón de que desparezcan los datos, sobre todo porque comentas que ya los has visto con el Database Desktop.
Sin embargo, el código que muestras es un poco raro porque lo usual para recorrer una tabla es:
Código Delphi
[-]
ventas.First;
while not ventas.EoF do
begin
...
ventas.Next;
end;
en lugar de basarse en el número de registro. Por otro lado, yo creo que te convendría más usar un Query para la actualización, usando la siguiente consulta SQL:
Código SQL
[-]
update ventas
set year = extract(year from fecha)
en el caso de qe fecha sea de tipo DATE. Si no, si es un alfanumérico, entonces puedes usar la función SUBSTR:
Código SQL
[-]
update ventas
set year = substring(fecha from 7 for 4)
Cualquiera de las dos opciones, además de hacer la actulización en un sólo paso, puedes hacerla desde el SQL Explorer, de manera que ni siquiera tendrías que programar un procedimiento.
// Saludos