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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 22-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por argami
Cita:
Empezado por guillotmarc
Por ejplo. puedes vaciar el ClientDataset cada 1000 registros, cerrandolo y volviendolo a abrir vacío (para ello debe tener una cláusula where del tipo codigo = -1).
He echo esta prueba y me resulta en lo mismo no me ayuda en nada.
El SQLQuery debe tener : select * from tabla where codigo = -1

Entonces cuando aplicas los cambios (cada 1000 registros), debes abrir un clientdataset vacío :

Código Delphi [-]
    if J = 1000 then begin
     CDSMenor.ApplyUpdates(-1);
     J:=0;
     CDSMenor.Close;
     CDSMenor.Open; // El ClientDataset no tendrá ningún registro

NOTA: Si miras el consumo de memória de tu aplicación, deberias observar como ahora se mantiene constante.

Cita:
Empezado por argami
Tienes razon y van muy rapido pero el planteamiento de programa es en 3 capas
1- Datos (DBExpress)
2- Accesso (TClientDataSet, TDataSetProvider)
3- Pantallas

Por lo cual el acceso desde las pantallas es solo a travez de los client dataset y los providers. por lo que me surge la duda de como hacer cuando no sea una modificacion masiva si no mas bien un acceso solo para pasar por ejemplo un movimiento a un histrorico de 500000 registros
Aunque nunca he utilizado el ClientDataset de esta forma, creo que puedes poner una sentencia INSERT INTO en el CommandText del ClientDataset, y ejecutarla mediante el Execute (y no el ApplyUpdates).

Cita:
Empezado por argami
Esto me gustaria que me lo explicaras porque trabajando con dbexpress no veo como hacer lo de la transaccion (si estuviera con IBComponents no diria nada)
Puedes manejar transacciones en los componentes dbExpress. Es decir el SQLConnection tiene los métodos BeginTrans y CommitTrans. Dado que puedes tener más de una transacción abierta para la misma conexión, deberias consultar su sintaxis en la ayuda de Delphi. Esta transacción, mientras esté abierta, afectará a todos los componentes dbExpress que se ejecuten (SQLQuerys, SQLStoredProcs, ...).

NOTA: En la capa de cliente (los ClientDatasets) no sé que se puedan manejar transacciones.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 22-06-2004 a las 16:20:23.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 09:00:33.


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