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 06-04-2009
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
Question Cómo controlo la Transaccion iniciada..

Hola amigo del clud, tengo una plicación que usa sql sever 2000 y la conexion es ado.

La pregunta es la siguiente si realizo una transacción y en el preceso ocurrre un error me da una excepcion y lo controlo con esto:

Código Delphi [-]
             frmdata.conexion.BeginTrans;
             iniciando el proceso.....
              try
              Post;
              frmdata.conexion.CommitTrans;
              limpia_comentario;
              Application.MessageBox('Guardado','Atención',+MB_ICONINFORMATION);
              except
              frmdata.conexion.RollbackTrans;
              Application.MessageBox('Transacción Cancelada','Atención',+MB_ICONERROR);
              end;

Nota:  cuando ocurre el frmdata.conexion.RollbackTrans;
aquí se mantiene la transacción y luego me dice que no se puede iniciar mas transacción en está sección, como cancelo la transacción iniciada.
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #2  
Antiguo 07-04-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que el error se debe a que no inicias una nueva transacción.

Luego de un Commit o de un Rollback, la transacción queda "cerrada" y si quieres volver a hacer algo debes iniciar una nueva.

Yo utilizo algo como lo que sigue (con otros componentes)
Código Delphi [-]
var
   Q : TQuery;
begin
   Q := TQuery.Create(nil);
   with Q do
   begin
      DataBase := BaseDeDatos;
      Transaction := TransaccionLocal;

      {Primero me aseguro de que la transacción esté activa}
      if not Transaction.InTransaction then
         Transaction.StartTransaction;

      try
         ExecQuery;
         Transaction.Commit;
      except
         Transaction.Rollback;
      end;

      Free;
   end {with}
end;
Responder Con Cita
  #3  
Antiguo 07-04-2009
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
gracias amigo por responder,
Código Delphi [-]
//con esto la inicio
frmdata.conexion.BeginTrans;


Esto si puedo hacer, gracias por el ejemplo.
Código Delphi [-]
 {Primero me aseguro de que la transacción esté activa}
      if not Transaction.InTransaction then
         Transaction.StartTransaction;
__________________
ronimaxh
Rep. Dominicana
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 controlo el cierre de un formulario? Eddard OOP 3 20-04-2008 21:30:04
Como controlo el volumen del MediaPlayer?? GabiMel Varios 1 12-02-2007 12:40:43
Como controlo el doble borrado ? Jorge Taveras MS SQL Server 10 14-10-2005 08:10:36
Como controlo el número consecutivo de los registros? JavierO Tablas planas 1 22-07-2005 01:54:50


La franja horaria es GMT +2. Ahora son las 06:59:16.


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