Page 1 of 1

Utilizando FIND,SEEK...

Posted: Sat Feb 23, 2008 10:13 am
by Loren
Compañeros:

necesito buscar registros muy rápidamente en una DBF con 5000 registros y con un NTX indexado por 3 campos: str(tendido)+str(zona)+str(fila)

¿Cual sería el contenido de la variable "Busca" para buscar un registro mediante FIND?: Find &Busca

Cuando el NTX está indexado por un solo campo no tengo problemas, pero en este caso está indexado por 3.

Podría utilizar DbSetfilter pero es muy lento cuando se utiliza en RED local.

Mil gracias.
LORENZO

Posted: Sat Feb 23, 2008 12:58 pm
by cmsoft
Loren:
Si vas a buscar con FIND o SEEK ahí tendrías que armar una variable con el mismo formato que la clave, podrías tener tres campos de entrada y luego que la bariable BUSCAR contenga la concatenacion de estos
cBuscar := str(ntendido)+str(nzona)+str(nfila)
Te recomiendo que utilices STR con la cantidad de digitos que tiene la variable:
cBuscar := str(ntendido,5)+str(nzona,2)+str(nfila,2)
Espero te sirva

Posted: Mon Feb 25, 2008 12:56 pm
by ADBLANCO
(_alias)->(dbseek(str(ntendido)+str(nzona)+str(nfila)))
IF (_alias)->(EOF())
MSGALERT("No Encontre")
ENDIF

Posted: Mon Feb 25, 2008 3:47 pm
by FiveWiDi
ADBLANCO wrote:(_alias)->(dbseek(str(ntendido)+str(nzona)+str(nfila)))
IF (_alias)->(EOF())
MSGALERT("No Encontre")
ENDIF
Mejor aún, tal como dice cmsoft i ADBLANCO,

(_alias)->(dbseek(str(ntendido, 5, 0)+str(nzona, 6, 0)+str(nfila, 7, 0)))

Es tan importante los dígitos como los decimales.

Saludos
Carlos G.