Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 15-02-2019
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola



Los componentes IBX (Que son los que uso) tienen una propiedad Intransaction que indica si ya esta iniciada una transaccion.



Código Delphi [-]
if not IBTransaction1.intransaction then
  IBTransaction1.startTransaction;

Supongo que los componentes que usas deben tener una propiedad similar.
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #22  
Antiguo 15-02-2019
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Por si es de ayuda, solo apuntar que una conexión (TFDConnection) también puede estar en una transacción. Estás seguro de que todas tus transacciones son sobre TFDTransaction y no tienes ninguna sobre TFDConnection?
Responder Con Cita
  #23  
Antiguo 15-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya lo hemos comentado antes, si el componente base de datos/conexión tiene asociado ya un componente transaction, no tienes que hacerlo tú. Es lo que estamos intentando decirte todos desde el principio.
Código Delphi [-]
//  transacciones.StartTransaction;
  try
    qCuentas.ExecSQL;
//    Result:= 'Ok';
//    transacciones.commit;
  Except
    on E: exception do
    begin
//        transacciones.Rollback;
        raise;
    end;
  end;
Y eso, además, que no tenemos ni idea de lo que hace ese programa servidor.
Responder Con Cita
  #24  
Antiguo 15-02-2019
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
En un mensaje previo dices que el componente TFDConnection está en la aplicación servidor, y luego mencionas que lo usas en el lado cliente. Tal vez puedas aclararnos cómo está verdaderamente organizado tu proyecto.

Por otra parte, considera lo mencionado aquí:
Cita:
FireDAC supports nested transactions, so the current transaction is the one started with the most recent StartTransaction call. If the database does not support nested transactions, like most of DBMSs, then FireDAC emulates nested transactions using savepoints. CommitRetaining is useful only for the main transaction, not for nested ones.

The CommitRetaining call is the shortcut to Transaction.CommitRetaining, if the Transaction property is assigned. Otherwise, CommitRetaining will operate on default connection transaction.

Before calling CommitRetaining, an application may check the status of the InTransaction property. If an application calls CommitRetaining and there is no current transaction, an exception is raised.
E insisto: Haz una prueba aislada con UNA sola aplicación, una ventana, con un botón y todos los componentes mínimos dentro. Antes de distribuirlo en capas.

Saludos.
Responder Con Cita
  #25  
Antiguo 16-02-2019
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
En Firebird todo lo que se hace contra la base de datos siempre está "cobjiado" en una transacción, incluso las sentencias select.

Yo suelo utilizar dos componentes de transacción diferentes, uno para las lecturas, que lo defino como la transacción por defecto de la conexión, y otro para las actualizaciones. En tu caso probaría a escribir el código así:

Código Delphi [-]
  qCuentas.Transaction := TransaccionesUpd;  //o algo parecido. generalmente lo hago en tiempo diseño en el modulo de datos
  transaccionesUpd.StartTransaction;
  try
    qCuentas.ExecSQL;
    Result:= 'Ok';
    transaccionesUpd.commit;
  Except
    on E: exception do
    begin
        transaccionesUpd.Rollback;
        raise;
    end;
  end;
Responder Con Cita
  #26  
Antiguo 18-02-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Gracias a todos por la información, voy a revisar lo que me habéis comentado y a hacer algunas pruebas.


Muy agradecido.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Grabacion macrossman Varios 2 06-04-2011 23:09:07
Duda registros valor 0 sql drykea SQL 6 13-03-2008 18:43:52
Duda sobre DFS enrique_84 Varios 2 08-06-2006 12:53:40
grabación jorodgar Windows 4 19-09-2005 12:22:42
Duda sobre busqueda de registros... hademon Varios 2 16-09-2005 20:26:17


La franja horaria es GMT +2. Ahora son las 18:45:11.


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