Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error Firebird sin Explicacion , Demasiado Raro (https://www.clubdelphi.com/foros/showthread.php?t=36211)

hot1974 04-10-2006 23:42:31

Error Firebird sin Explicacion , Demasiado Raro
 
Estimados Foristas antes que nada gracias por leer este post , entremos en detalle tengo un problema demasiado raro en que me trae de cabeza, estoy programando en D7 con firebird una aplicacion, la cual tiene un IBdatabase, un ibtable, un ibtransaccion , un datasource y un dbgrid, realizo las ligas o relaciones correspondientes, IbDatabase - IbTransaction, Ib Transaccion - IbDAtababase , IbTable - IbDAtabase, DAtasource - IbTable, DBgrid - DAtasource, conecto el ibdatabase me pide el prompt de contraseña y usuario, y activo mi tabla y muestra los datos en el dbgrid sin problema, hasta aqui todo va bien despues de esto le doy al F9 y empieza a correr la aplicacion, la forma aparece y el grid con los datos , pero medio segundo despues me cierra la tabla , ya le puse los parches al D7 pensado que era eso pero nada el mismo resultado , la forma no tiene una sola linea de codigo extra solo las de los componentes, realize la misma aplicacion pero en D6 y funciona perfectamente , esto esta demasiado raro ya he buscado por la red y el foro y por ahi encontre algo acerca del DBCTrls ya tambien lo aplique y nada , espero me puedan ayudar con esta dudilla que traigo atorada.

Saludos y de nueva cuenta mil gracias
Alejndro Ontiveros.

mensana 05-10-2006 07:57:18

Posiblemente la query esté asociada a una transaccion, cuando la transacción se cierra de forma automática, se cierra la query asociada y "desaparecen" los datos de la grid

hot1974 05-10-2006 15:04:43

Cita:

Empezado por mensana
Posiblemente la query esté asociada a una transaccion, cuando la transacción se cierra de forma automática, se cierra la query asociada y "desaparecen" los datos de la grid

Gracias por responder mensana, realize un prueba con respecto a tu sugerencia en el create de la forma conecto el ibdatabase despues conecto el ibtransaction y por ultimo abro el ibtable y el resultado fue exactamente el mismo :( se ejecuta la forma y en el momento de ejecutarse se ven los datos y medio segundo despues se cierra la tabla.

Alguna otra sugerencia foreros.- Otro comentario pensado que era el firebird realize el upgrade a Fdb 2.0 pero no era eso espero alguien me ayude.

Gracias
Alejandro Ontiveros

mensana 05-10-2006 15:09:57

Genera un evento BeforeClose en el IBQuery, pones un breakpoint y miras la pila de llamadas (call stack) a ver quien está cerrando la query.

hot1974 05-10-2006 15:18:59

Cita:

Empezado por mensana
Genera un evento BeforeClose en el IBQuery, pones un breakpoint y miras la pila de llamadas (call stack) a ver quien está cerrando la query.

Hola y graias por responder tan rapido , he realizado tu sugerencia en el evento Beforeclose puse la siguiente instruccion

var num:integer;
begin
num:=1;
showmessage(inttostr(num));
end;

y en la linea de color rojo he puesteo el break point efectivamente se detiene ahi al correr la aplicacion y la ventana de call stack aparece lo siguiente :

TForm1.ghIBTable1BeforeClose(???)
Project1


como ves esto , alguna otra sugerencia.

Gracias
Alejandro Ontiveros

mensana 05-10-2006 15:25:43

Activa las siguientes opciones de compilación :

Optimization: Off
Stack Frames : On
Debug Information : On
Use Debug DCUs : On

También puedes mirar la ventana de CPU y ver quien está llamando al cierre
de la query.

Suerte.

hot1974 05-10-2006 15:31:35

Ya lo hice mira el resultado,

TForm1.ghIBTable1BeforeClose($A06628)
TDataSet.DoBeforeClose
TDataSet.SetActive(False)
TIBCustomDataSet.SetActive(False)
TghIBTable.SetActive(???)
TIBCustomDataSet.DoBeforeTransactionEnd($A06A10)
TIBBase.DoBeforeTransactionEnd
TIBTransaction.EndTransaction(TACommit,True)
TIBTransaction.BeforeDatabaseDisconnect($A05CF4)
TIBDatabase.InternalClose(True)
TIBDatabase.ForceClose
TIBDatabase.TimeoutConnection($A05FB8)
TIBTimer.Timer
TIBTimer.WndProc((275, 1, 0, 0, 1, 0, 0, 0, 0, 0))
StdWndProc(1573384,275,1,0)
TApplication.ProcessMessage((1573384, 275, 1, 0, 2419671, (489, 440)))
TApplication.HandleMessage
TApplication.Run
Project1

he mirado la ventana del cpu y no hay ninguna instruccion que cierre la tabla , esto sigue siendo muy raro :confused:

Gracias por tu ayuda

mensana 05-10-2006 15:34:59

Revisa la propiedad IdleTimer de tu TIBDatabase

hot1974 05-10-2006 15:37:35

Cita:

Empezado por mensana
Revisa la propiedad IdleTimer de tu TIBDatabase

:eek: Muchas Gracias mensana ha quedado resuelto ;) pero un favor mas me podrias explicar que sucedio apra no cometer ese error de nuevo,

Gracias de Nuevo
Alejandro Ontiveros

mensana 05-10-2006 15:43:25

Eso te lo dejo para tí

Ya sabes ... F1, Google, docs, etc...

hot1974 05-10-2006 15:44:35

Cita:

Empezado por mensana
Eso te lo dejo para tí

Ya sabes ... F1, Google, docs, etc...

Muchas Gracias y a Buscar la respuesta ;)
Hasta luego.

Saludos
Alejandro Ontiveros


La franja horaria es GMT +2. Ahora son las 02:01:34.

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