ermatica wrote:Hola Manuel,
No se si ya lo tienes solucionado, de todas formas te comento.
Lo del indice en el caso que te expongo si sería obligatorio, pero usaria scope.
He montado una tabla con un indice (.NTX) con 300.000 registros, filtro entre los registros a borrar y en un ordenador en local los tiempos que me muestra
con un msgalert (Time() ) son de 14:57:35 y final 14:57:49. No se si es mucho. El código que usé es:Code: Select all | Expand
cAlias2:=OpenDbf(mPath_Fich+"FHCARCK1.DBF",5,.T.,.F.,.F.,{mPath_Fich+"FHCARCK1.NTX"},"DBFNTX")
If cAlias2=""
return nil
endif
Select (cAlias2)
OrdsetFocus(1)
dbgotop()
ordscope(0,) // quitar scope, filtro o rango
ordscope(1,)
dbgotop()
nReg0 := 1000
nReg1 := 300000
ordscope(0,nReg0) // poner scope, filtro o rango
ordscope(1,nReg1)
dbgotop()
msgalert ( time() )
Do While !Eof()
Do While !Rlock()
msgalert ("Registro en uso")
Return
Enddo
(cAlias2)->(dbdelete())
skip
Enddo
msgalert ( time() )
Un cordial saludo,
Ernesto
Hola a todos, otra alternativa, es crear un browse, donde el usuario pueda seleccionar todos los registros a eliminar, o seleccionar algunos algunos registros a eliminar, yo tengo uno implementado en la clase de Hernan Cecarelli, pero a nivel de while, y no como yo el que se muestra la imagen, que he querido yo implementar,espero que alguien tenga implementado el browse parecido a la imagen, que subire al foro y lo puedan ver el ejemplo.
![Image](http://imageshack.us/g/851/seleccion1.jpg/)
http://imageshack.us/g/851/seleccion1.jpg/
![Image](http://imageshack.us/photo/my-images/703/seleccion4.png/)
http://imageshack.us/photo/my-images/703/seleccion4.png/
Saludos
Atte: Adrian C. C.
acc69@hotmail.com