Borrar gran cantidad de registro

ACC69
Posts: 619
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Re: Borrar gran cantidad de registro

Post by ACC69 »

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

  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/


Image

http://imageshack.us/photo/my-images/70 ... cion4.png/

Saludos

Atte: Adrian C. C.

acc69@hotmail.com
Post Reply