Utilizando FIND,SEEK...

Post Reply
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Utilizando FIND,SEEK...

Post 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
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Post 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
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post by ADBLANCO »

(_alias)->(dbseek(str(ntendido)+str(nzona)+str(nfila)))
IF (_alias)->(EOF())
MSGALERT("No Encontre")
ENDIF
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Post 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.
Post Reply