Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2012
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Poder: 21
mRoman Va por buen camino
Ok...les agradezco a ambos las respuestas que me dieron. Pondré en practica y luego les informo el resultado....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 25-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mRoman.

Si tenes más de un IBTransaction que dependen de un IBDatabase y deseas trabajar con el conjunto de ellos, podes usar las propiedades TransactionCount y Transactions de este último componente.

A modo de ejemplo, este código pone inactivos a todos los IBTransactions activos relacionados con un IBDatabase:
Código Delphi [-]
...
var
  i: Integer;
begin
  with IBDatabase1 do
    for i:= 0 to TransactionCount-1 do
      if Transactions[i].InTransaction then
        Transactions[i].Active:= False;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 25-09-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 12
ElMug Va por buen camino
En mi ver, lo mas prudente es que en una transaccion se compelete lo acometido o se haga roll-back.

Y con el cogigo no dar posibilidades de que haya transacciones pendientes.

Aunque si la pregunta fuese del total de transacciones pendientes de TODOS los usuarios, creo que eso no se ha abordado en las respuestas.

Y precisamente, por eso, es que cada usuario no pueda tener mas de una transaccion pendiente.

Pero me gustaria saber de casos en los cuales se requiera eso.
Responder Con Cita
  #4  
Antiguo 26-09-2012
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Poder: 21
mRoman Va por buen camino
Les agradezco las respuestas de ecfisa, elmug y de casimiro asi como de movorack y comentarles que ya lo solucione gracias a sus comentarios, los cuales aplique y me queda con la sugerencia de casimiro. En realidad es mas sencillo de lo que propone ElMug, lo que realmente necesitaba era solamente "avisarle" al usuario que se estaba saliendo sin grabar los movimientos realizados.

Total....asi quedo:
Código Delphi [-]
     if dsUnidadOperativa.Transaction.InTransaction then
     begin
        if Application.MessageBox('Desea GUARDAR los movimientos realizados?','Pregunta',mb_YesNo+mb_IconQuestion)=idYes then
        begin
            DataModule2.trsCasas.Commit;
        end Else
        begin
            DataModule2.trsCasas.Rollback;
            Action:=caFree;
        end;
     end;

Gracias a todos....Saludos !
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #5  
Antiguo 26-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.108
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Código Delphi [-]
if dsUnidadOperativa.Transaction.InTransaction then      
begin         
  if Application.MessageBox('Desea GUARDAR los movimientos realizados?','Pregunta',mb_YesNo+mb_IconQuestion)=idYes then         
  begin             
    DataModule2.trsCasas.Commit;         
  end 
  Else         
  begin             
    DataModule2.trsCasas.Rollback;             
    Action:=caFree;         
  end;      
end;
Y si el usuario contesta que sí, que se graben los cambios, haces commit y... ¿el Action:=caFree?
Responder Con Cita
  #6  
Antiguo 27-09-2012
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Poder: 21
mRoman Va por buen camino
Uppss

jajaja....tienes razon !!!.....bueno, "Al mejor cazador se le va la liebre"....
entonces quedaria asi:
Código Delphi [-]
if dsUnidadOperativa.Transaction.InTransaction then      
begin         
  if Application.MessageBox('Desea GUARDAR los movimientos realizados?','Pregunta',mb_YesNo+mb_IconQuestion)=idYes then         
  begin             
    DataModule2.trsCasas.Commit;         
  end 
  Else         
  begin             
    DataModule2.trsCasas.Rollback;             
//    Action:=caFree;         (Este no va aqui)
  end;      
  Action:=caFree;
end;
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #7  
Antiguo 27-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.108
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tampoco puede ir ahí

Supongo que si pones Action := caFree; es porque ese form lo has creado tú en tiempo de ejecución y tienes que liberarlo, en caso contrario no hace falta.
Pero de todas formas en ese código que has puesto, imagina que dsUnidadOperativa.Transaction.InTransaction es False, (que no hay ninguna transacción), ¿qué ocurriría?, que no se ejecutaría el Action := caFree;
Por lo tanto, debes sacarlo fuera de ese condicionante.

Código Delphi [-]
begin
  if dsUnidadOperativa.Transaction.InTransaction then 
  begin            
    if Application.MessageBox('Desea GUARDAR los movimientos realizados?','Pregunta',mb_YesNo+mb_IconQuestion)=idYes then            
      DataModule2.trsCasas.Commit
    else            
      DataModule2.trsCasas.Rollback;
  end;
  Action:=caFree;
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 codifico las transacciones en delphi, y como jalo una vista desde SQL Server? Felipe Conexión con bases de datos 2 06-01-2008 03:00:04
saber si hay transacciones con un MDOTransaccion Jose Roman Conexión con bases de datos 0 12-07-2007 19:34:39
Transacciones pendientes StartKill Firebird e Interbase 1 01-03-2005 16:16:36
Microsoft pagará 1,32 millardos a Sun para resolver demandas pendientes marcoszorrilla Noticias 1 03-04-2004 23:39:53
Como usar transacciones gario SQL 3 17-12-2003 20:52:29


La franja horaria es GMT +2. Ahora son las 20:47:50.


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