ORDSCOPE y DBF grandes

ORDSCOPE y DBF grandes

Postby Loren » Thu Apr 09, 2015 11:02 am

Compañeros,

En una DBF-CDX con aprox 1.000.000 registro, necesito filtrar según parte del contenido del campo "NOMBRE".
La tabla está indexada por NOMBRE y necesito que me filtre todos aquellos registros que contengan la palabra "GARCIA" en el campo Nombre.

¿ Como se haría con SCOPE ?

Mil gracias.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: ORDSCOPE y DBF grandes

Postby postinelli » Thu Apr 09, 2015 11:20 am

el scope yo lo uso siempre y es rapidisimo

el tema es que no filtra por "contenga"

sólo funciona por la clave del indice activo

en tu caso en una base indexada por Nombre te va a filtrar los que comiencen con GARCIA, pero no si dice JUAN GARCIA
se entiende?

así lo hago yo

USE DBF INDEX DBF
OrdScope(0,"GARCIA")
OrdScope(1,"GARCIA")

browse()

te deberian salir sólo los registros que comiencen con GARCIA
postinelli
 
Posts: 147
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: ORDSCOPE y DBF grandes

Postby hmpaquito » Thu Apr 09, 2015 11:56 am

El scope no te sirve para lo que pretendes, prueba asi:
http://xthefull.blogspot.com.es/2014/02 ... er-to.html
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ORDSCOPE y DBF grandes

Postby acuellar » Thu Apr 09, 2015 5:26 pm

Aquí un ejemplo funcional del aporte de TheFull

Code: Select all  Expand view

#include "fivewin.ch"

REQUEST DBFCDX
Function main()
    RddSetDefault( "DBFCDX" )
   cPath:="CUSTOMER.DBF"
 
   USE (cPath) new
   cNombre:="harry" //cambiar el nombre
   FastFilter( "*"+ Upper( cNombre ), 1 ) //El 1 para indicar el numero del Indice
 
   dbGotop()
   Browse()
return nil

Function FastFilter( cCad, nOrder )
      Local nIndice := OrdNumber()
 
      Set order to nOrder
      INDEX ON &(IndexKey()) TAG _TEMP_ TO tHarbourt CUSTOM ADDITIVE MEMORY
       
      Set order to nOrder
      dbGotop()
      Do While OrdWildSeek( cCad, .T. )
         OrdKeyAdd( "_TEMP_" )
      Enddo
      OrdSetFocus( "_TEMP_" )

Return nIndice

 


Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: ORDSCOPE y DBF grandes

Postby karinha » Thu Apr 09, 2015 5:54 pm

Excelente. Gracias.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ORDSCOPE y DBF grandes

Postby FranciscoA » Thu Apr 09, 2015 7:04 pm

Gracias, Adhemar por postearlo. Y a TheFull por compartir su codigo.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: ORDSCOPE y DBF grandes

Postby derpipu » Fri May 22, 2015 4:07 pm

Hola, buenos dias a todos, desde Tequila, Jalisco, México.

Estaba investigando porque el ORDKEYCOUNT() ya no me regresaba el numero correcto de renglones de mi tabla, cuando hacia SCOPE y me topo con este post, y me intereso muchisimo..

Ya lo probe y el mejoramiento de la velocidad de la consulta es enorme, cerca de 2 minutos menos que con mi consulta actual, ahora mi duda es como hacer por ejemplo cuando usamos rangos para la consulta...

En mi codigo actual hacia esto

Code: Select all  Expand view

    SELECT ingre; ingre->(ORDSETFOCUS("ingre4dx"))
    cScope0 := mPromo1 + mDesa1 + DTOS( mFech1 ) + STR( mNumero1, 1 )
    cScope1 := mPromo2 + mDesa2 + DTOS( mFech2 ) + STR( mNumero2, 1 )
    ingre->( ORDSCOPE( 0, cScope0 ) )
    ingre->( ORDSCOPE( 1, cScope1 ) )
    ingre->( DBGOTOP() )
 


y con la modificacion siguiendo el ejemplo hago esto

Code: Select all  Expand view

    SELECT ingre; ingre->(ORDSETFOCUS("ingre5dx"))
    ingre->( FastFilter( "*" + DTOS( mFech1 ) + mDesa1 + STR( mNumero1, 1 ), 5 ) ) //El 1 para indicar el numero del Indice
 


Sin embargo notaran que solo uso el rango inicial, pero no el final y seria interesante el saber como integrarlo...

Agradezco de antemano sus valiosas aportaciones en especial al master TheFull y aCuellar, por entregarnos digerido el ejemplo...

Saludos
Luis Fernando Rubio Rubio
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 94 guests