![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Hola
Tengo un form donde se cargan los informes Finformes , luego tengo muchos datamodules , que llaman a su informe correspondiente para que la carge en el formulario Finformes . Desde el datamodule se llama a una pequeña ventana , para elegir el cliente o el proveedor , luego se cierra la ventana y aparece el informe . Si se vuelve abrir la ventana , se crea una segunda instancia del datamodule , pero como busca el primero no cambia el cliente . Así pues tengo que poner en el datamodule , un FreeAndNil(datamodule) , para destruirlo . Pero que pasa que se destruye cuando esta aún activo el informe y a veces este requiere del datamodule . Lo que busco es la manera de que no se cierre el datamodule hasta que no cierre FInformes , pero no puedo poner un código en el informe pues hay muchos datamodules . A ver si lo entendeis y podeis echarme una mano . Un saludo |
#2
|
|||
|
|||
Como estoy un poco perdido , he realizado un pequeño ejemplo , con la base de datos DBDemos , con un DataModule , un formulario de busqueda que muestra los customers , un formulario donde muestra el detalle de cada formulario al que se accede a través del de búsqueda (este formulario haria las veces del informe) , todo ello dentro de un formulario principal .
El caso es que aquí el ejemplo es simple , y parece que no tiene sentido hacerlo así , pero en una aplicación grande esta de esta forma con muchos datamodules heredados , por lo que hay que poner un código en el formulario para que se destruya cuando se cierra la ventana de Orders . Mirarlo si podeis , adjunto el código ,esta realizado en Delphi 7 Saludos |
#3
|
||||
|
||||
He estado viendo un poco el código.
Utilizas un DBlookuplist para seleccionar un dato. Este objeto es para seleccionar un dato que sea foreing key ( clave foranea, clave para utilizar en otra tabla ), no para seleccionarlo y utilizar ese dato posteriormente. Haz una cosa, pon en la ventana que utilizas para seleccionar un botón, que muestre Customer_id. Verás como a pesar de seleccionar cualquiera, siempre tiene el mismo valor. En lugar de un dblookuplist, utiliza un simple DGrid. Sin tocar nada más obtendrás el resultado que deseas. Lo único que te puede ocurrir es que si reutilizas la ventana para distintas tablas, tendrás que indicar cual es el campo que quieres visualizar en el DBGrid. Espero haberte ayudado. Un saludo y suerte.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#4
|
||||
|
||||
En realidad sí puede usarse un DBLookupListBox, pero David intenta recoger el valor seleccionado del DataSet:
cuando debiera ser directamente del DBLookupListBox
Sin embargo, eso no resuelve el problema, o, mejor dicho, resuelve la parte que mencionas, pero queda la otra: Cita:
Alguna vez yo mismo me pregunté esto. Yo veo dos opciones:
El problema es que a ambas posibilidades les veo problemas. La primera funcionaría pero aún así queda el detalle de en qué momento se destruye el datamodule. En la segunda opción no sirve que la ventana destruya al datamodule al momento de cerrarse (OnClose) porque se produce una violación de acceso. Supongo que cualquiera de las dos problemáticas puede solventarse, pero es que a mi me gustaría tener un poco más de detalle de qué es lo que quiere lograr David. El ejemplo que pone quizá sobre simplifica la situación, pues no me queda claro porqué quiere construir una instancia del datamodule por cada informe. // Saludos |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como programar esto dentro de FastReport | David | Impresión | 1 | 03-09-2006 18:25:08 |
Imprimir de manera no tradicional | ilichhernandez | Impresión | 8 | 09-11-2005 19:52:25 |
De que manera se haría | sierraja | Impresión | 8 | 04-08-2005 02:09:52 |
Como programo esto (ver dentro) | David | OOP | 1 | 28-04-2005 22:32:24 |
Ayuda con un error.No hay manera | Descendents | Varios | 9 | 16-10-2003 11:10:41 |
![]() |
|