Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 20-07-2006
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Poder: 22
pepon386 Va por buen camino
Vamos por partes:

Cita:
Empezado por PatrickM

Estoy con una aplicación que trabaja con tablas muy grandes 30 columnas por 20000 filas, algunas de ellas con campos blob.
Eso no son tablas muy grandes, mas bien normalitas .

Cita:
Empezado por PatrickM
Utilizo SQLDataSet -> TDataSetProvider -> TClientDataSet para conectarme a dichas tablas i necesito editar campos puntuales de la tabla (sin utilizar una consulta). En teoria se podria hacer directamente con el ClientDataSet pero me carga TODOS los registros cuando abro la tabla para editarla. Esto hace que reserve memoria para unas 300 MB.
Eso te pasa porque en la propiedad PacketRecord del ClientDataSet tienes el valor -1, que hace que te devuelva todos los registros, los cuales almacena en memoria.

Cita:
Empezado por PatrickM
A priori el tema se soluciona poniendo la propiedad PacketRecords con un valor mayor que zero para que solo se carguen algunos registros y no toda la tabla. Pero entonces me carga todos los campos cuando le hago el FindKey.
Esto es porque el FindKey recorre toda la tabla, y para ello se trae todos los paquetes de datos que necesita hasta tenerla toda en memoria. Nuevamente tienes todos los datos en el ClientDataSet.

Cita:
Empezado por PatrickM
He probado de poner PacketRecords = 0 y entonces no me encuentra el registro con el FindKey.
Porque poniendo ese valor te devuelve sólamente la estructura de las tablas.

Cita:
Empezado por PatrickM
Estoy desesperado ya no se que probar mas. El BDE no me daba estos problemas de memoria. Aunque se me ha pasado por la cabeza no voy a volver al BDE, pero me extraña que no haya una solucion a mi problema trabajando con los componentes de DBExpress.

A ver si alguien me hecha una mano, y asi a mi no me hechan a mi del trabajo.

un saludo.
Claro que la hay: Tienes que filtrar la información que te va a devolver la aplicación. Para ello tienes que acotar correctamente los datos que quieres obtener de la base de datos (clausula WHERE de la sentencia SQL).
Responder Con Cita
 



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
dbExpress ClientDataSet.Refresh problema Neia Conexión con bases de datos 0 18-04-2005 20:14:11
RecordCount vs PacketRecords cesar_picazo Conexión con bases de datos 1 02-04-2005 21:26:57
Problemas con DBExpress - ClientDataset argami Conexión con bases de datos 4 26-07-2004 11:21:12
Problema con ClientDataSet y DBexpress JOMABRI Conexión con bases de datos 6 26-05-2004 18:32:53
DbExpress - Transacciones - más de un clientDataSet carlosmari Conexión con bases de datos 7 29-09-2003 20:07:54


La franja horaria es GMT +2. Ahora son las 04:28:20.


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