consulta bd de 10 millones de registros

softcomercial
26 de Octubre del 2005
compa帽eros buenas tardes tengo una pregunta como puedo accesar una base de datos de vfp que contiene 10 millones de registros de una manera super rapida.
me explico yo tengo la base indexada como hago para que cuando digite la cedula en un listbox solo me muestre los registros que contienen esta cedula pero de una manera super super rapida.

mil gracias

Softcomercial

marco
26 de Octubre del 2005
Utilza la instrucci贸n SQL Select y se lo pasas como parametro en la propiedad Recordsource de un Grid para mostrar la informaci贸n. Por ejemplo

cadena="SELECT * FROM tabla WHERE_
cedula="+valorcedula
grid.Recordsource=cadena

Este codigo lo metes en el evento valid del control donde tecleas la cedula

Esto normalmente es muy rapido, pero recuerda que las tablas de VFP no est谩n pensadas para soportar un numero tan grande de registros, tal vez debas considerar migrar tu base de datos a un gestor de bd de mayor potencia como SQL Server u Oracle, con cualquiera de los dos VFP puede conectarse.

Un saludo

foxfeliz
26 de Octubre del 2005
un SELECT es muy lento tardaria al rededor de 3seg 贸 m谩s enrastrear la informaci贸n y 2 seg m谩s para mostrarla. ya que SELECT utiliza una busqueda secuencial
lamanera m谩s y rapida es utilizando un SEEK o un INDEXSEEK.
SEEK() : Busca en una tabla la primera aparici贸n de un registro cuya expresi贸n clave de 铆ndice coincida con una expresi贸n general y despu茅s mueve el puntero de registro al registro coincidente.
INDEXSEEK() : Sin mover el puntero de los registros, busca en una tabla indexada la primera ocurrencia de un registro cuya clave de 铆ndice coincida con una expresi贸n especificada.
UN EJEMPLO:

FUNCTION BuscarArticulo(cIdArticulobusca,lEncontro)

IF SEEK(cIdArticulobusca,"posarticulos","art_codi")
lEncontro = .T.
ELSE
lEncontro = .F.
ENDIF

RETURN lEncontro

ENDFUNC