FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Utilizando FIND,SEEK...
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Utilizando FIND,SEEK...
Posted: 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

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Utilizando FIND,SEEK...
Posted: 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

Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
Utilizando FIND,SEEK...
Posted: 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
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Utilizando FIND,SEEK...
Posted: Mon Feb 25, 2008 03: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.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion