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