Club Delphi  
    Paypal   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 06-11-2025
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Transacción no activa

Buenas tardes. A ver si me explico: Tengo dos tablas (Facturas Y Detfactura) en una base de datos FB; en la primera guardo los datos de cabecera de las facturas y en la segunda las líneas de detalle de cada una de ellas.

Para grabar en la primera tengo este query:
Código SQL [-]
Query->Close();
Query->SQL->Text = "INSERT INTO Factura (TipoDoc, Fecha, Cliente, ForPago) VALUES (:TipoDoc, :Fecha, :Cliente, :ForPago)";
Query->ParamByName("TipoDoc")->AsInteger = fFacturas->Tag;
Query->ParamByName("Fecha")->AsDateTime  = Fecha->Tag;
Query->ParamByName("Cliente")->AsInteger = fFacturas->Tag == 1 ? 1 : StrToInt(Panel4->Tag);
Query->ParamByName("ForPago")->AsInteger = fFacturas->Tag == 2 ? 1 : (int)(TObject*)fCieFac->Fpago->Items->Objects[fCieFac->Fpago->ItemIndex];
Query->ExecSQL();
if (fMenu->Query->RowsAffected < 1)
{
     cAux = "Error al grabar los datos de" + (fFacturas->Tag != 3 ?(String)"l " : (String)" la ") +
            (fFacturas->Tag == 1 ? (String)"tiquet" : (fFacturas->Tag == 2 ? (String)"albarán" : (String)"factura"));
     throw Exception(cAux);
}
Query->Transaction->Commit();
En la misma tabla guardo albaranes y facturas por comodidad. Una vez que he guardado estos datos hago esto con otro query antes de grabar el detalle del documento:
Código SQL [-]
Auxiliar->Close();
Auxiliar->SQL->Text = "SELECT GEN_ID(ID_" + (fFacturas->Tag == 1 ? (String)"Tiquet" : (fFacturas->Tag == 2 ? (String)"Albaran" : (String)"Factura")) +
                      ", 0) Valor FROM RDB$DATABASE";
Auxiliar->Open();
Lo curioso es que el primer query, el de grabación, se ejecuta sin problema pero al tratar de ejecutar el segundo para sacar el número de documento que se ha generado me da un error: me dice que la transacción asociada al query no está activa. El primer query tiene asociada una transacción que he llamado tTpv y el segundo otra distinta que he llamado tAuxiliar y que en ningún momento desactivo ni detengo ni nada.

Llevo todo el día dándome de tortas con estas líneas de código y no sé por qué se produce ese error. En el formulario donde tengo declarada la BB.DD. y demás hay esto:

Ejecutando con el depurador, antes de ejecutar el primer query puedo ver esto:

Después del ExecSQL() queda así:

La segunda transacción, que está activa, es la que está asociada al segundo query, pero me da ese error que indico.
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
No activa la webcam trex2000 Gráficos 3 30-05-2024 08:32:40
App MDI Tabla Activa pockelsm3 Conexión con bases de datos 4 15-11-2015 01:07:09
No se activa tabla Phacko Tablas planas 8 01-02-2012 19:50:32
Impresora activa botones67 Impresión 6 27-10-2005 14:18:24
Urgente - problema de insertar en tabla - Transaccion Activa Patricio Conexión con bases de datos 2 27-06-2005 16:29:06


La franja horaria es GMT +2. Ahora son las 05:58:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi