![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola Pepon
Gracias por tus respuestas. Aunque sigo con el problema ya que no quiero usar una consulta, simplemente quiero usar el SQLDataSet/TSQLTable para MODIFICAR registros de la tabla, no para consultarlos. Tengo claro que con una consulta obtengo solo los resultados que yo quiero, hasta ahi llegamos. El problema que tengo es que el TClientDataSet me devuelve todos los registros, y yo solo quiero posicionarme, Edit, Post, y ApplyUpdates. Sobre el tamaño de la tabla ... el numero de registros no es muy grande, pero el el tamaño de cada registro es de 24 KB, eso multiplicado por 20000 hacen 300 MB de buffer en memoria que se crea el CDS, a parte de que es un fichero historico y cada año va creciendo. a ver si alguien me da una solution. gracias. |
|
#2
|
|||
|
|||
|
Como te he comentado antes, el problema reside en que haces que se cargen todos los registros de la base de datos. Lo correcto es que se traiga unas pocas decenas de registros. Antes de que el usuario pueda visualizar la información, deberías de solicitarle un rango de registros a mostrar: por id, fechas, un texto, etc... Todo depende de la información que almacenes en tu base de datos.
|
|
#3
|
|||
|
|||
|
Hola Pepon,
Para visualizar los resultados uso una consulta, ya que al ser un fichero historico, solo intento muestro los resultados en un rango entrado por el usuario. El problema es al intentar modificar la tabla con un TClientDataSet -> TDataSetProvider -> TSQLTable, ya que aunque pongas el PacketRecord>0, el FindKey se los patea todos, y se los carga en el buffer de memoria del CDS. Estoy modificando la implementación del FINDKEY para que esto no pase. Cuando lo tenga lo cuelgo para quien le pueda interesar. un saludo, |
|
#4
|
|||
|
|||
|
¿Por qué no en vez de modificar la implementación del FindKey haces que el ClientDataSet tenga SOLO ese registro? Para hacer la búsqueda con el FindKey, previamente tienes que saber qué es lo que buscas. Pues en vez de hacer un FindKey, modificas la sentencia SQL para que te devuelva el/los registros que estás buscando. ¿Por qué no explicas un poco como es la tabla y como realizas la búsqueda?
|
|
#5
|
|||
|
|||
|
Te explico, el problema es que la aplicación usaba BDE i se ha migrado todo a DBExpress. Digamos que seria imposible cambiar ahora todos los TTables por Consultas i UPDATES.
Ya he resuelto el problema modificando el FindKey del ClientDataSet. De todas formas gracias por el interes. Aqui pongo el código para quien le pueda interesar:
El TTableSCS es un tipo que me he creado para modificar el FindKey y otras cosas del ClientDataSet. Su declaración seria algo asi:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|