Ver Mensaje Individual
  #4  
Antiguo 18-12-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Empezaré respondiendo la última.

Cita:
Empezado por Gregorio Cíber Ver Mensaje
¿cómo prodría hacerse algo parecido pero tirando de la BD directamente?.
Utilizando SQL. Puedes lanzar la búsqueda directamente sobre la Base de Datos generanso la sentencia SQl al vue4lo y ejecutándola.

Cita:
Empezado por Gregorio Cíber Ver Mensaje
Sin embargo adolece de un defecto y es que la tabla debe estar cargada en memoria, lo cual es un problema cuando hay decenas o centenares de miles de registros.
Ese es el gran problema aquí(a mi entender).
Ya lo he comentado otras veces. El comportamiento que estás utilizando corresponde a una Base de Datos "local" o de "escritorio". Las que usábamois antiguamente y en las que todos los datos se cargaban en memoria. Podías recorrer todos los datros para hacer búsquedas y era cómodo realizar búsquedas "a medida que el usuario iba escribiendo" (porque todos los datos estaban en memoria).

Hoy en día que trabajamos con SGBD's (Servidores de Bases de Datos) no con Bases de Datos de escritorio este comportamiento no es óptimo. Justo por lo que comentas:

(1) Porque para hacerlo debes cargar TODOS los datos en memoria, cosa que puede ser muy ineficiente.
(2) Porque estás generando muuucho más tráfico del necesario.
(3) porque estás sobrecargando el servidor más de lo necesario.

Si alguien quiere buscar por valores que empiezen por "Barcel", por ejempo, al escribir ese texto, estará realizando 6 búsquedas (B, Ba, Bar, Barc, Barce y Barcel) cuando realmente sólo le interesa la última. Ya no digo nada si el usuario es torpe escribiendo y entre medio escribe 2 letras mal, luego las borra y las vuelve a escribir .

Cita:
Empezado por Gregorio Cíber Ver Mensaje
A medida que se escribe en edt_TablaBusca se ejecuta edt_TablaBuscarChange...
En estos casos lo habitual es sólo ejecutar la búsqueda sólo al final (o sólo cuando el usuario lo especifica). Por ejemplo, cuando se detecta un ENTER, cualndo el usuario pulsa el botón,... (hay mil maneras)
Ejecutar la búsqueda de forma explícita por el usuario.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita