Ver Mensaje Individual
  #5  
Antiguo 09-04-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Reputación: 21
mlara Va por buen camino
Localizar... palabra del castellano que significa encontrar, averiguar el lugar en donde se halla alguien o algo, determinar su posición... se escribe con z.

Bueno, luego de esta introducción quisiera invitar a discutir sobre este tema partiendo del hecho de que es necesario que mi aplicación muestre los resultados en una tabla, pero como dice nuestro amigo eveprogram, al usar el método Locate el tiempo es excesivo si requiero localizar un registro de una consulta mostrada a través de un TDataSet, digamos un TQuery, y más aún si este registro se encuentra varios miles de posiciones más adelante del primero.

Hay que anotar que la ayuda sobre el componente (TIBCustomDataSet) nos dice esto:

Cita:
Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.
Es lo mismo que nos dice acerca del mismo método del componente TBDEDataSet.

Dice que Locate usa el método más rápido posible para localizar las registros coincidentes. Que si los campos de búsqueda están indizados (o indexados) y el índice es compatible con las opciones de búsqueda, Locate usa el índice. Que si no es así, entonces el método crea un filtro para la búsqueda.

Como he trabajado mucho con los componentes BDE sé que efectivamente al menos con Paradox estas búsquedas son rápidas, ...

... pero usando los MDO (basados en los componentes IBX), el método Locate pareciera realmente hacer un recorrido uno a uno sin usar índices y sin realizar filtros de búsqueda. Esto quiere decir que la ayuda acerca de este método o bien miente o los MDO tienen problemas para usar los índices o construir los filtros de búsqueda. Ya miraré los IBX, que aunque los he trabajado, de eso ya hace un tiempo y la verdad no recuerdo haber tenido inconvenientes, pero ahora no sé, debo revisar otra aplicación para estar seguro de esto.

Entonces, cuál es la solución?

Espero no tener que llegar a usar un TClientDataSet ya que al abrir una consulta con este componente se llevan todos los registros del servidor al cliente, y si son muchos miles... el tiempo es oro... el tiempo de los clientes... je je.

Si alguien sabe de esto... , si nadie sabe de esto... ... je je

Saludos.

PD. Un asunto similar, pero bastante relacionado con este tema se trata en este hilo: http://www.clubdelphi.com/foros/show...ghlight=locate
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 09-04-2008 a las 21:25:01.
Responder Con Cita