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


__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to