i take a look
i´ll go to make some tests
i´ve preffer sql codes to acess, cause in my application there aren´t any dbf, 
but is better than array right?

Thanks,
Fernando




________________________________
De: Guy Roussin <[email protected]>
Para: Harbour Project Main Developer List. <[email protected]>
Enviadas: Domingo, 8 de Novembro de 2009 19:47:36
Assunto: Re: [Harbour] ASCAN slow - proposal weighted search

Hi Fernando,

Perhaps you can use hbmemio. I think that hbmemio
has been created for this purpose...

Guy

Fernando Athayde a écrit :
> ASORT(::aArrayResumo, {|a,b| str(a[1],11)+str(a[3],11)+dtoc(a[5])+a[7] > 
> str(b[1],11)+str(b[3],11)+dtoc(b[5])+b[7] } )
> 
> //Normal way (Slow for more than 100 registers)
> nPosicaoArray := ASCAN(::aArrayResumo, ;
>                  {|a| str(a[1],11)+str(a[3],11)+dtoc(a[5])+a[7] ==;
>                       STR( 
> ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11)+;
>                       
> STR(::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 )+;
>                       DTOC(oDB:Mysql2Date 
> (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoeda} )
> 
> //Weighted search (Is very fast)
> nPosicaoArray := 0
> nArraySize := LEN( ::aArrayResumo )
> nJump := nArraySize - 1
> nPosition := 1
> DO WHILE .T.
>    nPosition += nJump
>    IF nPosition > nArraySize
>       nJump := 0
>       nPosition := nArraySize
>    ENDIF
>    IF str(::aArrayResumo[nPosition,1],11)+str(::aArrayResumo[nPosition,3],11);
>                +dtoc(::aArrayResumo[nPosition,5])+::aArrayResumo[nPosition,7] 
> >;
>       STR( ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11 );
>                 +STR( 
> ::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 );
>                 +DTOC(oDB:Mysql2Date 
> (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoeda
> 
>       nPosition -= nJump
>       nJump := INT(nJump/2)
>    ENDIF
>    IF str(::aArrayResumo[nPosition,1],11)+str(::aArrayResumo[nPosition,3],11);
>             +dtoc(::aArrayResumo[nPosition,5])+::aArrayResumo[nPosition,7] ==
>       STR( ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11 );
>             +STR( ::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 );
>             +DTOC(oDB:Mysql2Date 
> (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoeda
>       nPosicaoArray := nPosition
>       EXIT
>    ENDIF
>    IF nJump<1
>       EXIT
>    ENDIF
> ENDDO
> 
> my proposal is made a ASCANEX sending a block how parameter
> but i don´t know how to use eval and blocks
> 
> Thanks,
> Fernando Athayde

_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour



      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to