Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Uso de Transacciones con Componentes DevExpress (https://www.clubdelphi.com/foros/showthread.php?t=32935)

Paradiso 21-06-2006 18:46:31

Uso de Transacciones con Componentes DevExpress
 
Hola A Todos, les pregunto

como tendria que ser el uso de transacciones considerando que los registros estan conectados a componentes devExpress, mi pregunta radica en que hasta el momento yo estaba haciendo un applyupdate para guardar los datos en la base de datos

me encuentro con que debo usar transacciones y no logro
entender una prolija forma de usar transacciones y dichos componentes, me podrian poner algun ejemplo???
les dejo la logica hasta el momento que uso en mi codigo:

como esta ahora no se actualiza bien probando con la edicion de un campo ejecutando dos instancias de la aplicacion.


var td: TTransactiondesc;
begin
td.TransactionID := 1;
td.IsolationLevel:= xilREPEATABLEREAD ; //tambien probe con el retaining.
fmPrincipal.ConexionSQL.StartTransaction(td);

try
... .
cdsVendedores.ApplyUpdates(0);
fmPrincipal.ConexionSQL.Commit(td);


except
On E: Exception do
begin
fmPrincipal.conexionsql.rollback(td);
showmessage('Error');
// Mensajes para el usuario, cambios en el estado del formulario...
end;

nemesio 22-06-2006 05:07:44

No entiendo bien tu exposición, con que componentes Dataset trabajas? si trabajas con los de Interbase y lo que quieres es utilizar un componente DataAware de Developer Express no veo por que te complicas la vida.
Ejemplo:
Usa un IBDataset(Crea todos los sql de los que requiere: INSERT, MODIFY,DELETE y REFRESH), asocia el IBDataset a un IBTransaction y un DataSource al IBDataset. Luego cualquier componente Visual de La Dev Express que uses le agregas el DataSource y listo.
Si no es lo que buscas, entonces explicate mejor.

Paradiso 22-06-2006 07:22:43

nemesion capo
 
querido nemesio, me explicare mejor ,

estoy haciendo un sistema de gestion, uso d7+interbase+conectividad de datos mediante dbExpress, y a nivel de registros uso componentes devExpress. grillas dbedits etc.

necesito hacer uso de transacciones o mejor dicho agregar a mi codigo
el uso de transacciones
necesitaria saber como guardar los datos ( .post, applyupdate o simplemente commit a la transaccion??)
he investigado los ejemplos que se dan en otro hilos pero no ay forma de que actualice la base de datos bien.


si puede ser con un ejemplo , saber como seria la operatividad de dicha tarea.( la de guardar la informacion en la base de datos.)

y el echo de que recalque lo de devExpress es por que un amigo me dijo que es mas directo utlizando edits comunes y stored proc, pero a esta altura seria muy complejo cambiar tanto codigo.


gracias por tu tiempo.

nemesio 23-06-2006 04:02:35

Hola nuevamente

Ya creo entenderte. En primer lugar te digo que debes revisar el codigo de actualización de tus componentes de Interbase. Si tus componentes de Interbase funcionan bien, lo deberían hacer con cualquier componente Data Aware como los nativos de Delphi (DBGrid, DBEdit, etc) o con los Dev Express. Yo tenía un problema parecido al tuyo, metía datos en un Grid de la Dev express y no se actualizaban. Llegué a pensar que eran los componentes, pero al revisar me di cuenta que en Modify del IBDataset no tenia los campos completos de la Tabla.
Usas el IBDataset y el IBTransaction? cual usas. Explica más y asi te podré ayudar con algo de código

nemesio 23-06-2006 04:07:04

Algo mas....

No lo he probado, pero un amigo que hizo unas pruebas con DBExpress me dijo que es bastante lento. ¿Por qué no pruebas usar FireBird que es Licencia Pública?

Paradiso 24-06-2006 02:31:29

nemesio querido
 
amigo.
mira lo que yo uso es Querys+Datasetprovaders+clientdataset+datasource y ahi conecto con componentes DevExpress.
para guardar lo que hago es un clientdataset.applyupdate(0)
a este tipo de operaciones tengo que agregarle codigo transaccional.

gracias por tu interes.

y con respecto a la lentitud, lamentablemente no dispongo hoy de tiempo y por lo avanzado del proyecto como para migrar a firebird.


La franja horaria es GMT +2. Ahora son las 21:39:09.

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