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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2008
xaguilars xaguilars is offline
Miembro
 
Registrado: jul 2007
Posts: 22
Poder: 0
xaguilars Va por buen camino
Cómo controlar múltiples transacciones? (Interbase/Firebird)

Hola estoy usando el componente TDatabase para conectarme a una BDD Firebird y quisiera saber si es posible controlar varias transacciones a la vez.

De momento sólo estoy usando StartTransaction, Commit y Rollback pero no me basta ya que por ejemplo quiero que cuando se abra un formulario, se cree una nueva transacción sólo para ese formulario y cuando haga el Commit o el Rollback sólo le afecte a los cambios que se han hecho en esa nueva transacción.
Espero haber sabido explicarme bien.

Gracias
Responder Con Cita
  #2  
Antiguo 03-04-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Segun comentas, poniendo un objeto transaction en esa ventana determinada y configurando todos los datasets de esa ventana a ese transaction, todo debería funcionar correctamente.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 03-04-2008
Avatar de axesys
axesys axesys is offline
Miembro
 
Registrado: ene 2007
Ubicación: Los Mochis Sinaloa
Posts: 208
Poder: 18
axesys Va por buen camino
Yo lo hago por medio de esta función en el datamodulo a la que le envío como parametro el form

Código Delphi [-]
procedure TDM.Guardar(frmForma: TForm);
var
  i: integer;
  iTamanioArreglo: Integer;
  dsArreglo: array of TDataSource;
begin
  iTamanioArreglo := 0;
  for i:= 0 to Pred(frmForma.ComponentCount) do
    if frmForma.Components[i] is TDataSource then
    begin
      Inc(iTamanioArreglo);
      SetLength(dsArreglo, iTamanioArreglo);
      dsArreglo[Pred(iTamanioArreglo)] := TDataSource(frmForma.Components[i]);
    end;
  with TransaccionEscritura do
  try
    if not InTransaction then
      StartTransaction;
    for i := 0 to High(dsArreglo) do
      dsArreglo[i].DataSet.Post;
    CommitRetaining;
  except
    RollbackRetaining;
    raise
  end;
end;

En mi form al momento de llamar el action que guarda ejecuto

Código Delphi [-]
procedure TfrmModulo.actGuardarExecute(Sender: TObject);
begin
  DM.Guardar(Self)
end;

Última edición por axesys fecha: 03-04-2008 a las 19:13:52. Razón: Me faltaron las etiquetas
Responder Con Cita
  #4  
Antiguo 03-04-2008
xaguilars xaguilars is offline
Miembro
 
Registrado: jul 2007
Posts: 22
Poder: 0
xaguilars Va por buen camino
Muchas gracias era lo que necesitaba.

Cita:
Empezado por axesys Ver Mensaje
Yo lo hago por medio de esta función en el datamodulo a la que le envío como parametro el form

Código Delphi [-]procedure TDM.Guardar(frmForma: TForm);
var i: integer; iTamanioArreglo: Integer; dsArreglo: array of TDataSource;
begin iTamanioArreglo := 0; for i:= 0 to Pred(frmForma.ComponentCount) do if frmForma.Components[i] is TDataSource then begin Inc(iTamanioArreglo); SetLength(dsArreglo, iTamanioArreglo); dsArreglo[Pred(iTamanioArreglo)] := TDataSource(frmForma.Components[i]); end;
with TransaccionEscritura do try if not InTransaction then StartTransaction; for i := 0 to High(dsArreglo) do dsArreglo[i].DataSet.Post; CommitRetaining; except RollbackRetaining; raise end;
end;


En mi form al momento de llamar el action que guarda ejecuto

Código Delphi [-]procedure TfrmModulo.actGuardarExecute(Sender: TObject);
begin DM.Guardar(Self) end;
Responder Con Cita
Respuesta



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
Como migrar de Interbase a Firebird selman Firebird e Interbase 4 16-10-2007 22:17:09
Como migrar de interbase a firebird ilichhernandez Firebird e Interbase 9 07-08-2007 20:06:53
Como saber si se usa Firebird o Interbase quimeras Firebird e Interbase 3 27-06-2007 10:04:51
Grabar Multiples registros en caliente (Firebird) pcicom Firebird e Interbase 6 27-09-2004 14:35:01
Transacciones Con Interbase.. rdaniel2000 Firebird e Interbase 1 11-06-2003 09:28:37


La franja horaria es GMT +2. Ahora son las 00:18:25.


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
Copyright 1996-2007 Club Delphi