Utilizando FIND,SEEK...

Utilizando FIND,SEEK...

Postby Loren » Sat Feb 23, 2008 10:13 am

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
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Postby cmsoft » Sat Feb 23, 2008 12:58 pm

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

Postby ADBLANCO » Mon Feb 25, 2008 12:56 pm

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

Postby FiveWiDi » Mon Feb 25, 2008 3:47 pm

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.
FiveWiDi
 
Posts: 1077
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 38 guests