En mis programas cuando se lanza un indexado primero regenerlo los ficheros dbf y fpt mediante la creación de un fichero en blanco y copiando los datos del viejo al nuevo. Algo así:
- Code: Select all Expand view
// platos
oSay:SetText(i18n("Actualizando fichero de Tipos de Plato"))
DbCreate(cDir+'pl', {{'PLPLATO' , 'C', 1, 0} ,;
{'PLTIPO' , 'C', 30, 0} ,;
{'PLRECETAS' , 'N', 5, 0}}, 'DBFCDX' )
close all
use &(cDir+'pl') new
select pl
if FILE(cDir+'PLATOS.DBF')
delete file &(cdir+'platos.cdx')
append from &(cdir+'platos')
dbcommitall()
close all
delete file &(cdir+'platos.dbf')
endif
close all
rename &(cdir+'pl.dbf') to &(cdir+'platos.dbf')
El problema es que hay archivos muy grandes, de 15mil registros con campos memo incluidos, parece que el programa se queda congelado aunque está trabajando. Así que me gustaría indicar un mensaje de progreso, algo parecido a lo que se hace al indexar con la clausula EVERY del comando INDEX, pero no se cómo meter ese mensaje en el append from. En la documentación del append from no pone nada de clausula EVERY ni parecido, y la verdad es que no se cómo enfocar esto. No se si con un codeblock se podría, si alguien me puede ayudar lo agradecería.
Saludos,
José Luis