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 05-03-2012
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Raise exception

Hola a todos.

Depurando el código de una procedure, encuentro un error (ambos presentados mas adelante), que he intentado acotar para evitarlo, pero no lo consigo.

Al ejecutar los métodos post de las líneas de código mostradas en negrita me salta el siguiente error:

Cita:
raise exception class ESQLiteError, message 'cannot rollback savepoint - SQL statements in progress'
En otras partes del código de la aplicación hay definidas unas querys de tipo SELECT y referidas sólo a TablaNotTem. Aunque en la sesión en curso de la aplicación no se utilicen esas querys, el error sigue apareciendo.

Si alguno de vosotros sabe indicarme a que puede ser debido el error, alguna situación típica en que suele aparecer, en definitiva cualquier comentario que pueda encaminarme a la solución, os lo agradeceré

Un saludo
Código Delphi [-]
procedure TSDIAppForm.GrabarBD(); 
begin 

{ Recoger modificación último registro de tablas editado, por si no se cambia a otro registro antes de grabar (no se recogerían cambios automáticamente) } 
  FrmBasDat.TablaElementosArbol.Edit; 
  FrmBasDat.TablaElementosArbol.Post; 
  FrmBasDat.TablaNotas.Edit; 
  FrmBasDat.TablaNotas.Post; 
  FrmBasDat.TablaTemas.Edit; 
  FrmBasDat.TablaTemas.Post; 
  FrmBasDat.TablaNotTem.Edit; 
  FrmBasDat.TablaNotTem.Post; 

{ Grabación en base de datos de los datos de la transacción pendiente } 
  FrmBasDat.ConexionBdSqlite.Commit; 

end;

Última edición por jocaro fecha: 05-03-2012 a las 17:46:17. Razón: No aparece código delphi correctamente
Responder Con Cita
  #2  
Antiguo 05-03-2012
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
¿Es un entorno multiusuario?
Puede ser que otra sesión de la aplicación esté tratando de hacer cambios y colisione con tu transacción.

¿Tienes eventos BeforePost/AfterPost BeforeEdit/AfterEdit?
Puede ser que estos eventos abran/cierren/modifiquen cosas que hagan que salte esta exception.

Se me ocurre también que el motor de base de datos trabaje en un hilo separado y esté ocupado realizando el primer Edit/Post, cuando tu ya estás llamando al segundo.
Prueba a poner una pausa entre ellos.
Código Delphi [-]
  FrmBasDat.TablaElementosArbol.Edit; 
  FrmBasDat.TablaElementosArbol.Post; 
  Sleep(10);
  FrmBasDat.TablaNotas.Edit; 
  FrmBasDat.TablaNotas.Post; 
  Sleep(10);
  FrmBasDat.TablaTemas.Edit; 
  FrmBasDat.TablaTemas.Post; 
  Sleep(10);
  FrmBasDat.TablaNotTem.Edit; 
  FrmBasDat.TablaNotTem.Post; 
  Sleep(10);
Responder Con Cita
  #3  
Antiguo 06-03-2012
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
¿Es un entorno multiusuario?
Puede ser que otra sesión de la aplicación esté tratando de hacer cambios y colisione con tu transacción.

¿Tienes eventos BeforePost/AfterPost BeforeEdit/AfterEdit?
Puede ser que estos eventos abran/cierren/modifiquen cosas que hagan que salte esta exception.

Se me ocurre también que el motor de base de datos trabaje en un hilo separado y esté ocupado realizando el primer Edit/Post, cuando tu ya estás llamando al segundo.
Prueba a poner una pausa entre ellos.

Hola, ante todo gracias por tus indicaciones.

La aplicación es monousuario, he probado pausas hasta de un segundo pero sigue saltando la excepción, he cambiado la línea cuyo post falla para ejecutarla la primera y sigue fallando.

Un detalle que no había comentado es que la ventana de excepción sólo salta en modo depuración, aunque intente ejecutar la línea con F7 dispara la excepción instantáneamente.

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
Ayuda para capturar 'Raise Notice' de postgres en delphi 6 o 7. martinartaza Conexión con bases de datos 2 31-08-2011 01:55:37
Capturar Raise Notice y enviarlo al formulario activo martinartaza PostgreSQL 2 27-12-2010 13:24:05
excepciones con raise at Lord Delfos Varios 2 12-08-2008 17:42:28
Para qué usar raise Exception wascar2003 Varios 3 20-11-2007 12:50:15
exception arieliten Conexión con bases de datos 3 21-04-2005 00:27:59


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


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