by derpipu » Sat May 28, 2011 2:13 pm
Hola a todos, voy a hacer una pequeña colaboracion con experiencias personales...
Yo dure mucho tiempo tratando de usar scopes, pero al final no los aplicaba porque no entendia el como hacer un rango compuesto, ahh ademas de comprender el que es mejor y mas rapido cuando nuestros scopes se hagan conforme al orden de nuestros indices
por ejemplo tengo un movtos.dbf y algunos de sus campos son idcliente, fechacompra, etc., por lo cual mi indice seria algo asi como dtos(fechacompra)+idcliente
si quiero hacer un scope compuesto haria algo asi mas o menos
obvio en mi programa donde filtraria dicha informacion usaria un dialog que me solicitara los rangos por ejemplos dfinicial, dffinal, cidcteini, cidctefin, donde los dos primeros son campo fecha y los dos ultimos son character
por lo cual quedaria algo asi
cScopeIni := dtos(dfinicial)+cidcteini
cScopeFin := dtos(dffinal)+cidctefin
y ahora si la magia
movtos->(OrdScope(0,cScopeIni), OrdScope(1,cScopeFin), gotop() )
y al finalizar nuestro proceso inicializamos a nil los ordscope()
movtos->(OrdScope(0,NIL), OrdScope(1,NIL), gotop() )
RECUERDEN QUE ES MUCHO MEJOR CUANDO EL ORDEN DEL CSCOPEINI Y CSCOPEFIN ES ACORDE AL ORDEN DE NUESTRO INDICE ACTIVO...
Espero que les sirva de algo...
P.D. y SCOPE es exponencialmente mas rapido que usar FILTER y que filtrar rapido mediante descartar registros dentro un DO WHILE basados en una condicion con skip(): loop
Saludos
Luis Fernando Rubio Rubio