Page 1 of 1

Scope y Filtros

Posted: Sun Nov 20, 2005 9:16 pm
by Databaselab2002
Estimados Colegas

Quiero hacer un scope y dentro del mismo filtrar hasta ahora
el scope me funciona perfecto, lo que no me funciona es
el filter que en vez de hacerlo sobre el scope los hace
sobre la dbf entera y me tarda un tiempo enorme ya que
son 500000 registros, si alguien me puede orientar
que estoy haciendo mal.

desde ya muchisimas gracias
databaselab2002@yahoo.com


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

REQUEST DBFCDX

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

function Main()

SET _3DLOOK ON
rddSetDefault("DBFCDX")
USE MD
MD->(ORDLISTADD("MDL"))

MD->( OrdScope( 0,"AGRELO"))
MD->( OrdScope( 1,"AGRELO"))
MD->( dbGoTop())
* SET FILTER to upper( MD->PER_NOMBRE ) $ "CATAL"
SET FILTER to "CATAL" $ upper( MD->PER_NOMBRE )
// PROBE SET FILTER DE LAS DOS MANERAS
*MD->( dbGotop())

***********************************************************

Browse()

USE

return nil


Posted: Mon Nov 21, 2005 5:07 am
by Manuel Valdenebro
¿Porque no utilizas un índice temporal?

Si quieres un ejemplo dime el nombre del campo por el que está indexado el fichero índice.


Manuel

Scopes y Filtros

Posted: Mon Nov 21, 2005 1:32 pm
by Databaselab2002
Gracias Manuel

Se puede crear un indice temporal con operador $

ej index on clientes-> Nombre to Nombre for/while Nombre $ "Catal"

La idea es crear un indice temporal con los datos del scope que el
campo nombre contenga "Catal" en cualquier sector del mismo

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

Posted: Mon Nov 21, 2005 10:55 pm
by Manuel Valdenebro
Supongo que tenemos el fichero clientes.dbf indexado por el campo Nombre. Queremos buscar una palabra que esté en cualquier sitio del registro:

ERASE iTem.cdx
INDEX ON clientes->NOMBRE TO iTem FOR "Catal" $ clientes->NOMBRE
SET INDEX TO iTem, clientes

Esto será lento (mucho mas si está en red).

Lo que no comprendo es como en tu primer mensaje ponias un Scope en "Agrelo".


Un saludo