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