Busqueda aproximada

492 views
Skip to first unread message

Ruben Antunes

unread,
Feb 22, 2011, 9:56:08 AM2/22/11
to mundovis...@googlegroups.com

Buenos dias: una vez vez acudo a sus conocimientos. Cual es el set que debería activar para hacer una búsqueda aproximada de datos. Es decir:

Si uso:

 

_FechaBuscar=CTOD(‘01/10/2010’)

 

SELECT DBFFechas

GO TOP

SEEK _FechaBuscar

Sentencia…

 

El problema es que si no se encuentra la _FechaBuscar quiero que se pare en la próxima mas cercana, pero se me va al final del archivo…

 

Ayuda.!!!!!!

Cristobal Galvan

unread,
Feb 22, 2011, 10:03:35 AM2/22/11
to mundovis...@googlegroups.com
SET NEAR

Cristobal E. Galvan Nicasio




From: rubena...@gmail.com
To: mundovis...@googlegroups.com
Subject: [Mundo Visual FoxPro] Busqueda aproximada
Date: Tue, 22 Feb 2011 11:56:08 -0300
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Fargoz

unread,
Feb 22, 2011, 10:03:11 AM2/22/11
to mundovis...@googlegroups.com
consulta 

set near on/off

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com



--

www.fargoz.com
www.medesoft.com.co

MedeSoft Developer Ltda
Fabio Ramirez G.
Ingenieria de Software
Medellin - Colombia

Miguel Santander

unread,
Feb 22, 2011, 11:21:00 AM2/22/11
to mundovis...@googlegroups.com

Set exclu on      

Set exclu off



__________ Información de ESET Smart Security, versión de la base de firmas de virus 5895 (20110222) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

 

__________ Información de ESET Smart Security, versión de la base de firmas de virus 5895 (20110222) __________

 

ESET Smart Security ha comprobado este mensaje.

 

http://www.eset.com



__________ Información de ESET Smart Security, versión de la base de firmas de virus 5895 (20110222) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com

Ricardo Natella

unread,
Feb 22, 2011, 10:29:02 AM2/22/11
to mundovis...@googlegroups.com

Estas son las sentecias…

_FechaBuscar=CTOD(‘01/10/2010’)

 SELECT DBFFechas

GO TOP

SET NEAR OFF

SEEK _FechaBuscar

SET NEAR ON

Sentencia…

 

 


De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Ruben Antunes
Enviado el: Martes, 22 de Febrero de 2011 11:56 a.m.
Para: mundovis...@googlegroups.com
Asunto: [Mundo Visual FoxPro] Busqueda aproximada

 

Buenos dias: una vez vez acudo a sus conocimientos. Cual es el set que debería activar para hacer una búsqueda aproximada de datos. Es decir:

--

Yvan GMAIL

unread,
Feb 22, 2011, 10:31:18 AM2/22/11
to mundovis...@googlegroups.com

Yo hago la busqueda de esta manera.

MiTabla un indice de esta  manera

DTOS(fecdoc)

 

VarFecha = DTOS(Date())

Sele Mitabla

Set orde to tag mi_indice_fecha

SET EXACT OFF

IF !Seek(VarFecha) THEN

IF !Seek(SUBSTR(VarFecha,1,6)) THEN

IF !Seek(SUBSTR(VarFecha,1,4)) THEN

                             

ENDIF

ENDIF

ENDIF

SET EXACT On

 

 

De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Miguel Antúnez
Enviado el: Martes, 22 de Febrero de 2011 10:24 a.m.
Para: mundovis...@googlegroups.com
Asunto: Re: [Mundo Visual FoxPro] Busqueda aproximada

 

Prueba este comando después del Seek

 

GO RECNO(0)

 

Saludos.

 

El 22 de febrero de 2011 09:56, Ruben Antunes <rubena...@gmail.com> escribió:

--

_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com




--
Miguel Angel Antúnez Camones
Especialista en SQL Server

mant...@frenosa.com.pe
mant...@gmail.com
miguel_...@msn.com
Cel. 997914428

Microsoft Active Professional
Membresía FY10-04-0745

Miguel Antúnez

unread,
Feb 22, 2011, 10:23:52 AM2/22/11
to mundovis...@googlegroups.com
Prueba este comando después del Seek

GO RECNO(0)

Saludos.
El 22 de febrero de 2011 09:56, Ruben Antunes <rubena...@gmail.com> escribió:
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Miguel Santander

unread,
Feb 22, 2011, 11:22:32 AM2/22/11
to mundovis...@googlegroups.com

Perdon

Set exacto on/off

 

De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Ruben Antunes


Enviado el: Martes, 22 de Febrero de 2011 10:56 a.m.
Para: mundovis...@googlegroups.com


__________ Información de ESET Smart Security, versión de la base de firmas de virus 5895 (20110222) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com

--

_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

 

__________ Información de ESET Smart Security, versión de la base de firmas de virus 5895 (20110222) __________

 

ESET Smart Security ha comprobado este mensaje.

 

http://www.eset.com

Cristobal Galvan

unread,
Feb 22, 2011, 2:42:12 PM2/22/11
to mundovis...@googlegroups.com
set near on

 

SELECT DBFFechas

LOCATE FOR FECHA = CTOD(‘01/10/2010’)
con el set activado... no se va hasta el eof()

Ruben Antunes

unread,
Feb 23, 2011, 8:07:37 AM2/23/11
to mundovis...@googlegroups.com

Agradezco la rapida respuesta a mi petición del día de ayer –y les comento que ya lo estoy utilizando. Los comandos mencionados fueron

SET NEAR ON

SET EXACT OFF

Mil gracias nuevamente.

Saludos

 

Ruben Antunes

Carlos Miguel FARIAS

unread,
Feb 24, 2011, 6:12:02 AM2/24/11
to mundovis...@googlegroups.com
En una de las secuencias de codigo vi que antes del SEEK, se hacia un GO TOP, lo cual creo es innecesario pero carga el sistema inutilmente.

Otra cosa,
En lugar de un comando SEEK, me parece mas recomendable por practica la funcion SEEK, que me permite indicar directamente valor, tabla e indice sobre el que se busca, lo que evita:

a) usar una función FOUND para ver si se encontro o no
b) Cambiar de area para poder efectual el SEEK
c) Activar un indice para hacer la busqueda.

Al menos, asi lo veo yo.

--

Fcocibaeno

unread,
Feb 24, 2011, 11:57:35 AM2/24/11
to mundovis...@googlegroups.com
Hola a todos,
Miguel, no entendí esta parte:

**Otra cosa,
  En lugar de un comando SEEK, me parece mas recomendable por practica la funcion SEEK, ******


Te referiasa que en vez de usar un LOCATE es mejor usar un SEEK ???


Carlos Miguel FARIAS

unread,
Feb 24, 2011, 3:07:56 PM2/24/11
to mundovis...@googlegroups.com
El LOCATE es esencialmente una busqueda secuencial, es si muy flexible porque la condición de busqueda puede ser multiple, pero un locate es secuencial, excepcionalmente el rushmore puede aprovechar los indices para acelerarla, pero es muy posible que no.
En cambio el SEEK es esencialmente una busqueda por indice, si tenes un indice por el cual buscar,
El Locate, busca hasta fin de datos, si no encuentra, queda en el fondo de la tabla.
El seek con SET NEAR ON, si no encuentra una coincidencia exacta en el indice, deja el puntero al registro posicionado en la clave mas cercana (parecida).
Posiblemente en tablas chicas, puede que no se note la diferencia entre uno y otro, pero en tablas grandes, si.

tangocaracasivan

unread,
Feb 24, 2011, 3:35:46 PM2/24/11
to mundovis...@googlegroups.com
Muy interesante lo de como funcionan el Locate vs el seek.
Voy a revisar unas aplicaciones que a veces se ponen lenta
a ver si es eso.
Ya les contare.
Ivan Martinez


De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Carlos Miguel FARIAS
Enviado el: Jueves, 24 de Febrero de 2011 03:38 p.m.
Para: mundovis...@googlegroups.com
Asunto: Re: [Mundo Visual FoxPro] Busqueda aproximada

Cristobal Galvan

unread,
Feb 24, 2011, 3:55:29 PM2/24/11
to mundovis...@googlegroups.com
Aunque seria bueno tambien la combinacon de ambos LOCATE + SEEK
 
El seek te acerca al registro mas proximo y a partir de ahi puedes usar el LOCATE con mas combinaciones....
 
 
 
Cristóbal E. Galván Nicasio

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Intel Man

unread,
Feb 24, 2011, 9:30:28 PM2/24/11
to mundovis...@googlegroups.com
Hola, el locate tambien usa rushmore para buscar, por tal motivo es optimizable y rapido como el seek, a no ser que no se use una expresion de indice en la busqueda, en caso contrario es como un seek.

Saludos



Date: Thu, 24 Feb 2011 17:07:56 -0300
Subject: Re: [Mundo Visual FoxPro] Busqueda aproximada
From: carlosmig...@gmail.com
To: mundovis...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages