PDA

Ver la Versión Completa : database not assigned con fibplus


erickperez6
15-10-2011, 04:44:52
Saludos a todos,

Utilizo Delphi 7 y los fibplus 6.9.6

En varias ocasiones se me ha presentando algo extraño: tengo un datamodule que contiene los objetos de conexion a la base de datos (tfibdatabase y tfibtransaction) y muchos datasets de uso comun para toda la aplicacion asociados a estos. Pero sucede que dentro de algunas formas poseo algunos dataset que hacen referencia a los objetos de conexiones que estan en el datamodule. Pues sucede que cuando voy a crear la forma que posee el dataset, este me arroja inmediatamente el error "database not assigned for (nombredeldataset)" señalandome que el dataset no tiene ninguna base de datos asociada, cosa que no es cierta. Tengo muchas formas que contienen dataset, pero solo me presenta este error con las ultimas formas que he diseñado o modificado. Resuelvo el problema moviendo el dataset en cuestion al datamodule, pero no es la solucion que deseo, quiero que estos dataset se queden en la forma.

Todas las formas de la aplicacion son creadas en tiempo de ejecucion, menos el datamodule y la forma principal. He intentado debuggear donde ocurre exactamente el error y es justamente en el create de la forma, pero en el oncreate de la misma no tengo nada. Los dataset son activados en el onshow de la forma, pero el error ocurre antes.

alguna idea de lo que pasa ?

Casimiro Notevi
15-10-2011, 10:42:46
Todas las formas de la aplicacion son creadas en tiempo de ejecucion, menos el datamodule y la forma principal.

Pues creo que tú mismo has dado con la solución, si creas una Form que tiene un Dataset que apunta a un Datamodule que no está creado... pues eso ;)

Por cierto, no conozco tu caso, pero los dataset en el datamodule, que para eso están :)

marcoszorrilla
15-10-2011, 14:29:38
Aunque estoy de acuerdo con lo que dice Casimiro, si cambias la referencia al DataModule al evento OnActivate del formulario creo que se arreglará.


Un Saludo.

erickperez6
15-10-2011, 14:43:16
Pues creo que tú mismo has dado con la solución, si creas una Form que tiene un Dataset que apunta a un Datamodule que no está creado... pues eso ;)


Gracias por responder casimiro,//

Creo que no me explique bien, cuando digo que solo el datamodule y la forma principal no son creada en tiempo de ejecucion es porque ya vienen autocreadas desde que se inicializa la aplicacion:

Application.Initialize;
Application.CreateForm(Tdatamodule1, datamodule1);
Application.CreateForm(Tfrm_main1, frm_main1);
Application.Run;

Es decir, el datamodule siempre esta creado desde el inicio. Luego, todas las otras formas de la aplicacion las voy creado en tiempo de ejecucion cuando las vaya necesitando:

frm_especial := tfrm_especial.create(nil); // aqui es donde me ocurre el error si la forma tiene un dataset

El en oncreate de la forma no tengo absolutamente nada. El dataset tiene asignado su database en tiempo de diseño, y algunas otras formas tienen ya dataset incluidos y no me dan error, solo me presentan el error las ultimas formas que voy trabajando o construyendo.

Por cierto, no conozco tu caso, pero los dataset en el datamodule, que para eso están :)

En el datamodule solo meto los dataset que utilizaré en mas de una forma, pero cuando utilizo un dataset solo una vez pues lo dejo en la forma que lo necesitará, de ese modo es mas legible para mi la organizacion de la aplicacion y no cargo mas el datamodule que de por si ya lo esta.

Aunque estoy pensando en crear un datamodule nuevo y meter todos los dataset que me vayan presentando este error, pero no me gusta esa solucion, siento que le estoy corriendo a la verdadera causa del problema. He pensado que pudiera ser algun bug de la version de FIBPlus que utilizo (6.9.6), ya que el error se produce en los construtores de los dataset. Ademas, no le veo sentido a que presente este error porque los dataset no estan activos en el momento del error, y aunque no tuvieran database asignada explicitamente, no debe de presentar ningun error si estos dataset no se estan utilizando ni estan abiertos. :confused:

Casimiro Notevi
15-10-2011, 16:02:32
Ademas, no le veo sentido a que presente este error porque los dataset no estan activos en el momento del error, y aunque no tuvieran database asignada explicitamente, no debe de presentar ningun error si estos dataset no se estan utilizando ni estan abiertos. :confused:

Cierto, no es motivo para que salte algún error.
¿Y dices que si el mismo dataset lo pones en un datamodule ya no sale el error?, eso sí que es raro también :confused:

erickperez6
15-10-2011, 16:13:37
Cierto, no es motivo para que salte algún error.
¿Y dices que si el mismo dataset lo pones en un datamodule ya no sale el error?, eso sí que es raro también :confused:

Si, asi es, por los momentos estoy moviendo (copy/paste) estos dataset a un datamodule nuevo, y problema resuelto mientras se averigua el caso,

gracias,

Casimiro Notevi
15-10-2011, 17:44:15
Ni idea, nunca me he encontrado con un caso así. Pero es un poco preocupante, yo intentaría encontrar la procedencia del error, no me fiaría de entregar el programa al cliente sin solucionar ese detalle.

erickperez6
15-10-2011, 21:34:33
Ni idea, nunca me he encontrado con un caso así. Pero es un poco preocupante, yo intentaría encontrar la procedencia del error, no me fiaría de entregar el programa al cliente sin solucionar ese detalle.

totalmente de acuerdo contigo, seguiré investigando, estoy pensando actualizar las FIBPlus a una version mas reciente y seguir probando cuando tenga tiempo.... pero por ahora no se me ocurre otra cosa de inmediato

Casimiro Notevi
15-10-2011, 21:37:12
Síguelo paso a paso con el debug, a ver.

IVAND
17-10-2011, 17:04:15
Hola a todos

A mi me pasa lo mismo , pero con los IBX , el error en mi caso se da cuando trato en raras ocaciones de abrir o ejecutar una form en modo embebido (Jfactivesot son los componentes que uso) , en algunas form las cosas se arreglaron cuando ejecuto el abrir los dataset en el evento oncreate , en otros no el error persiste

Si por ejemplo en el datamodulo tengo un dataset , que lo tengo abierto en la forma 1 , y despues sin cerrar la forma 1 abro la forma 2 , me sale ese mensaje

La verdad que es un problema que aun no puedo resolver