Ver Mensaje Individual
  #1  
Antiguo 09-05-2005
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Reputación: 24
hgiacobone Va por buen camino
Lightbulb ADO con Transacciones y BatchUpdate

Hola gente,
Estoy realizando un pequeño sistema de escritorio que utiliza una base Access accedida mediante ADO desde Delphi.

Es sabido el crecimiento exponencial de la BD cuando se havcen por ejemplo muchas ALTAS (una base de 2 Mb crece el doble o el triple y luego, al comptarla vuelve a su tamaño original). Cosas del Access que guarda porquerías.

Una de las implementaciones mas interesantes con los ADODataSet, es poder utilizar el bloqueo tipo BATCHUpdate, esto es, el motor envia el cursor con los datos solicitados al Cliente y los deja alli en memoria para su procesamiento (Altas, Bajas, Modificaciones) y luego, por ejemplo en el evento de un boton llamado "Actualizar", ponemos la intruccion ADODataSet1.BatchUpdate; y todo el conjunto viaja hacia el servidor.
Lo bueno de esto es que no tenemos que tener una conexion constante con el motor. Levantamos la conexion, recibimos los datos y cortamos la conexion. Procesamos los datos recibidos, levantamos una nueva conexion, enviamos los datos (BatchUpdate) y cerramos la conexion nuevamente. Solo le pedimos al motor unos segundos de atención.

Por otro lado, existen lo que se llama Transacciones, que basicamente las maneja el motor. Un ejemplo sería:
Código:
ADOConnection.BeginTransaction;
TRY
ADOCommand1.Commandtext:="INSERT INTO Tabla (pirulo) VALUES (algo)"
ADOCOmmand.Execute;
ADOConnection.CommitTransaction;
EXCEPT
ADOConnection.RollbackTransaction;
END;
No es que quiero mezclar tranvías con naranjas, pero se pueden utilizar Transacciones y BatchUpdate en simultaneo?

Alguien sabe como hacerlo?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·

Última edición por hgiacobone fecha: 09-05-2005 a las 21:54:33.
Responder Con Cita