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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2007
Mfi Mfi is offline
Miembro
 
Registrado: may 2007
Posts: 16
Poder: 0
Mfi Va por buen camino
Error "Transaction is not Active"

Bueno, estoy haciendo un procedimiento que verifica la versión de la base de datos (almacenada en un registro de la tabla IbTableInfo) y que si no es la versión mas reciente la actualiza mediante scripts. El caso es que todo funciona bien hasta que voy a cambiar el registro de la base de datos para decirle que ya es la nueva version, al hacer el post me salta una excepcion de "Transaction is not active" y si hago un Transaction.StartTransaction me salta "Transaction is active" ...
Código Delphi [-]
 begin
    //DataModule2.IBMgDB.CloseDataSets;
    DataModule2.IbScript1.Script.Clear;
    //sacamos la versión actual de la Base de DAtos
    try
    IbTableInfo.Active:=true;
    version:=strtofloat(IbtableInfo.FieldByName('VERSIONDB').AsString);
    except
      version:=0;
    end;
    //Si hace falta actualizar se procede.
    showmessage(ultimaversion());
    if (version < strtofloat(UltimaVersion())) then
    begin
      //Cargamos el script para actualizar la BD
      DataModule2.IBScript1.Script.Text := LeerScript('BDS'+floattostr(version));
      showmessage (DataModule2.IBScript1.Script.Text);
      if (DataModule2.IbScript1.ValidateScript) then
        begin
        //DataModule2.IbScript1.ExecuteScript;
        showmessage ('Script Ejecutado');
        IBMgDB.Close;
        IBMgDB.Open;
        IBTableInfo.open;
        IBTableInfo.Transaction.CommitRetaining;
        IBTableInfo.Edit;
        IBTableInfo.FieldByName('VERSIONDB').value:=sigVersion(floattostr(version));
        IBTableInfo.Post;
        IBTableInfo.Transaction.commitretaining;
        showmessage(IBTableInfo.FieldByName('VERSIONDB').AsString);
        end else ShowMessage ('El escript no es válido, se cancela la Actualización.');
    end;
    end;

como podeis ver en el código cierro la base de datos y la abro, he puesto algunos showmessage para ir controlando lo que se ejecutay he desactivado la linea que hace la actualización propiamente dicha solo para intentar localizar este error, pero nada.. al hacer el post me salta la excepcion.

La transaccion la tengo configurada con la base de datos y puesta como transaccion por defecto en la IbTableInfo, esa transaccion no se usa para nada mas. EStá como saCommitRetaining y como TACommit y el autostart a true, en propiedades read commited...

Gracias por anticipado.
Responder Con Cita
 



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
Porque sale este error "Error al copiar archivo o carpeta"? JuanErasmo API de Windows 1 18-11-2009 17:24:49
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Error: Transaction is active Tauro78 Firebird e Interbase 1 09-02-2007 11:38:38
Error: "SQLConnection: there is no active transaction" jmlifi Conexión con bases de datos 3 26-06-2006 18:11:23
"Transaction not assigned error" T-man Firebird e Interbase 0 15-10-2004 13:16:14


La franja horaria es GMT +2. Ahora son las 01:20:35.


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