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 01-09-2004
Oscar25 Oscar25 is offline
Registrado
 
Registrado: sep 2004
Posts: 5
Poder: 0
Oscar25 Va por buen camino
Levantar los datos de TQuery en memoria

Hola a Todos.

Tengo una base de datos conectada por ODBC, y estoy utilizando un TQuery para leer todos los registros y armar un archivo de texto.
Mi problema es que es muy lenta la lectura y el acceso y quiero saber si alguien sabe como puedo levantar los datos en memoria o a nivel de cliente para tener un acceso más rapido puesto que como minimo traigo en el query unos 30.000 registros y para terminar de armar el archivo de texto lleva unas cuantas horas.
Gracias para los que pueda ayudarme
Responder Con Cita
  #2  
Antiguo 01-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Puedes conectar el Query a un ClientDataSet via un DataSetProvider y armar el archivo a partir del ClientDataSet (los ClientDataSet cargan todo en memoria). Desde luego que esto no evitará el tiempo inicial para traer todos los datos desde la base al ClientDataSet.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-09-2004
Oscar25 Oscar25 is offline
Registrado
 
Registrado: sep 2004
Posts: 5
Poder: 0
Oscar25 Va por buen camino
Roman como hago lo que me decis ??
tengo mi TQuery, esto lo conecto al DaSetProvider y el DataSetProvider al ClientDataSet ?? si es asi como hago la lectura y el recorrido, con el TQuery o con el ClientDataSet.
Me podrias dar más ayuda por favor
Responder Con Cita
  #4  
Antiguo 01-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Oscar25
como hago la lectura y el recorrido, con el TQuery o con el ClientDataSet.
Con el ClientDataSet. El Query lo puedes cerrar una vez leídos los datos. Es más ni siquiera tienes que abrirlo; al abrir el ClientDataSet él mismo se encarga de abrir el Query y cerrarlo cuando termine.

// Saludos
Responder Con Cita
  #5  
Antiguo 01-09-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
No obstante..... dudo mucho que lo que tarde sea la lectura de esos 30.000 registros (a no ser que la red sea lentísima). Más bien lo que tarda en ejecutarse o es la sentencia SQL (que entonces ya has de trabajar del lado del servidor añadiendo indices y tal para accelerarla) o el proceso en sí de creación del fichero (que, a no ser que sea muy complejo... crear un archivo de texto con esa cantidad de registros no ha de demorarse "horas")
Responder Con Cita
  #6  
Antiguo 01-09-2004
Oscar25 Oscar25 is offline
Registrado
 
Registrado: sep 2004
Posts: 5
Poder: 0
Oscar25 Va por buen camino
Gracias Roman, ya utilizo el clientdataset, ahora bien mi programa esta asi.

Código Delphi [-]
Clientdataset1.open
while not clientdataset1.eof do
begin
// en esta parte el query tiene filter
  Clientdataset1.open
  while not clientdataset2.eof do
  begin
    Clientdataset2.Next;
  end;
  clientdataset2.close;
  Clientdataset1.Next;
end;
clientdataset1.close;

Para abril el primer clientedataset no hay problema, pero el segundo debo abrir y cerrar tantas veces como haya el primero, hay alguna forma en que pueda evitar abrir y cerrar tantas veces para que mejore la velocidad.

Última edición por roman fecha: 01-09-2004 a las 20:17:34. Razón: Formato de código
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


La franja horaria es GMT +2. Ahora son las 18:37:26.


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