Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2008
eveprogram eveprogram is offline
Registrado
 
Registrado: nov 2007
Posts: 6
Poder: 0
eveprogram Va por buen camino
Como localiso un registro sin Locate

Hola
Mi problema es que tengo una base de datos en red, y utilizo Interbase, junto con Delphi 5, el problema es que cuando quiero ponerme en un registro con locate, si funciona pero tarda mucho, alguien sabe de algun forma de que no se tarde tanto. O de realizar el procedimiento sin Locate, Gracias
Responder Con Cita
  #2  
Antiguo 11-03-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola

Lo unico seria realizar filtro utilizando IBQuerys

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 11-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Yo supongo que la lentitud se debe a que el método Locate requiere tener todos los registros a la mano, lo que implica que primero debe transferirlos todos del servidor al cliente.

La solución pasa por cambiar el enfoque de las cosas. En lugar de usar un DataSet asociado a miles de registros, conviene más usar SQL para las búsquedas:

Código SQL [-]
selec* from tabla where campo like ...

Bye
Responder Con Cita
  #4  
Antiguo 13-03-2008
eveprogram eveprogram is offline
Registrado
 
Registrado: nov 2007
Posts: 6
Poder: 0
eveprogram Va por buen camino
Lo voy a intentar Gracias por su ayuda
Responder Con Cita
  #5  
Antiguo 09-04-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 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
  #6  
Antiguo 01-07-2008
eveprogram eveprogram is offline
Registrado
 
Registrado: nov 2007
Posts: 6
Poder: 0
eveprogram Va por buen camino
Bueno eso es cierto lo del tiempo es oro, pero a mi si me funciono la forma que me sugirieron, por que no tratas eso, y otro cosa no soy amigo, soy amiga
suerte
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como posicionarme en un registro sin locate? Gaim2205 Conexión con bases de datos 10 03-01-2008 16:57:58
Ubicar el siguiente registro de un LOCATE ?? amadis Conexión con bases de datos 2 13-10-2007 15:58:48
como funciona la sentencia locate para campos multiples lugabame Tablas planas 3 17-05-2007 07:52:34
Cómo se usa la función Locate? Javi2 Varios 4 25-04-2007 10:52:00
Como utilizo la propieadad locate de un ibQuery morfeo21 Varios 5 15-07-2005 23:20:03


La franja horaria es GMT +2. Ahora son las 04:56:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi