Page 1 of 1

Ayuda con scopes y Filter $

Posted: Sun Nov 13, 2005 1:15 am
by Databaselab2002
Estimados Colegas


Tengo el siguiente problema tengo una dbF scopeada por localidad
(eso me funciona) un vez scopeada , quiero hacerle un filtro $ por
el campo nombre ,el problema es que me lo hace en toda la base (500000 registros) y no sobre el scope. alguien me puede decir que estoy haciendo mal. Por que quiero filtra por el scope y no toda la base.

desde ya muchisimas gracias
Fabian
Databaselab2002@yahoo.com.ar


#include "FiveWin.ch"
#include "ord.ch" // do clipper (CDX)


//----------------------------------------------------------------------------//

function scO1(xcolor1,OLBX3,osTOCK)

local loca1

request dbfcdx
rddsetdefault("dbfcdx")
dbsetdriver("dbfcdx")




nomb := "COOP"



sele 3
use MD index MDL
SET INDEX TO MDL,MDN,MDC



loca1=alltrim(xcolor1)

OrdScope(TOPSCOPE,loca1)
OrdScope(BOTTOMSCOPE,loca1)

Set Filter to nomb $ UPPER(MD->PER_NOMBRE)





oStock:update()
oLbx3:refresh()
oLbx3:upstable()
oLbx3:gobottom()






/----------------------------------------------------------------------------//

Re: Ayuda con scopes y Filter $

Posted: Sun Nov 13, 2005 4:54 pm
by R.F.
Databaselab2002 wrote: sele 3
use MD index MDL
SET INDEX TO MDL,MDN,MDC

loca1=alltrim(xcolor1)

OrdScope(TOPSCOPE,loca1)
OrdScope(BOTTOMSCOPE,loca1)

Set Filter to nomb $ UPPER(MD->PER_NOMBRE)
Creo que estas manejando mal tus CDX....

o estas usando IDX o estas usando varios CDX ???

el comando SET INDEX no se utiliza con CDX porque los CDX se abren automaticamente cuando se abre la base de datos, a menos que tengas varios CDX en cuyo caso deberas utilizar la funcion OrdListAdd(), no DBSETORDER()

La seleccion de indice se debe hacer con la funcion ORDSETFOCUS() para CDX no con DBSETINDEX() porque esa es para NTX

Luego...

El OrdScope() funciona sobre el indice actualmente seleccionado, si no hiciste un ORDSETFOCUS(nombredeltag) antes de hacer el SCOPE no pasa nada, la base de datos se queda sin scopear.

aaaahhh y no olvides hacer un DBGOTOP() despues del scope y luego hacer el filtro.