Problemas con QReport en OnNeedData
Hola
Tengo un problemilla que me ha estado pasando con el QReport al tratar de imprimir los datos que poseeo en un StringGrid...(Delphi 7) puse el sgte codigo en la columna del OnNeedData...del QReport
tambien digo que tengo declarado esto
Vamos al Problema Si bien el contenido del StringGrid cuando presione Imprimir lo realiza super bien... si despues cambio el contenido del StringGrid y presiono Imprimir nuevamente.. (sin salir del sistema)... me muestra el informe pero sin datos ??? Por que puede pasar esto ??? será que tengo que destruir el QReport y volver a crearlo ??? si es así.. como lo debo realizar ??? Salu2:p:D |
Crear y destruir QReport.
|
Cita:
lo otro... despues de imprimir los datos.. se me borran todos los datos que tengo en el StringGrid... se que puede ser que en el evento onactivate del Form...tengo un proceso limpiar, pero no he salido del form.. solo he realizado la sentencia
Salu2:p |
¿No cabe la posibilidad de que le evento OnNeedData no sea el adecuado?.
Probando con el evento BeforePrint debería de enviar la información antes de imprimirla. Tambien se podría hacer este proceso fuera del QReport, asi se controlaría mejor la adquisición de datos. |
a ver creo que ya sabemos del problema, el evento onactivate segun tengo entendido se ejecuta a lo que el formulario pierde el foco y vuelve a entrar, prueba colocando ese codigo en el onshow.
Otra cosa a manera de consejo, me parece mas practico utilizar una tabla de memoria en lugar de llenar los datos de manera manual. |
Tanks
Cita:
Gracias por lo del OnShow... no lo sabia... me parece que tengo casi arreglado el problema del Reporte... según yo.. estoy usando un contador...que es ItemIndex .... lo que estoy haciendo en el evento BeforePrint del Reporte... lo estoy dejando en 0... al parecer se ha solucionado.... lo otro.. como se realizaria esto ??? Cita:
|
Se dice que se hace esto:
Cita:
¿No sera mas correcto el evento BeforePrint? Si se hiciera esto: Cita:
|
Nati1, el problema del borrado de los datos del StringGrid era el evento OnActivate del formulario ya que una vez que mostraba el reporte al cerrarlo se volvia a activar dicho evento (OnActivate) y al tener un procedimiento de limpiar, borraba los datos que tenia el StringGrid.
Eduarcol, puedes explicarnos sobre la tabla en memoria por favor. Saluditos |
Cita:
Como resistirme a tan dulce pedido :o A ver ahora si en serio, una tabla de memoria es un dataset que no necesita estar vinculado a ningun origen de datos, y funciona como si fuera un dataset normal, de esta manera puedes utilizar un dbgrid asociado a este componente y alli tendrias los registros que deseas imprimir. En el reporte solo asocias los campos a este dataset y listo no tienes que programar nada. Estos componentes hay varios, ClientDataset, TKBMemTable, TRxMemoryTable... yo utilizo el TKBMmemtable porque en el paquete solo viene el y no tengo que llenar la pestaña de cosas que no necesito, y el clientdataset no lo he utilizado porq tengo mis recelos respecto a ciertos comentarios que he leido en otros hilos... |
Muchas gracias por responder Eduardo, una pregunta mas cuales son los recelos que tienes con el ClientDataSet, existe algún problema al utilizar dicho componente.
Saluditos |
En parte he leido que hay que redistribuir la libreira midas, y que cuando se trata de grandes cantidades comienza a dar problemas de rendimiento, pero como te digo eso lo lei no lo comprobe :rolleyes:
|
ok, gracias nuevamente ;).
Saluditos |
Bueno, en mi caso nunca he tenido problemas al tratar información con el ClientDataSet como si se tratara de un RxMemoryTable, de hecho me parece ventajoso el que no tenga que instalar componentes de terceros para hacer este tipo de cosas.
Es mas, como estaba acostumbrado a usar el metodo LoadFromDataSet del RxMemoryTable para subir los datos de un Query, pues use las caracteristicas del class helper, para hacer del TClientDataSet algo mas parecido. |
Cita:
Bye |
Cita:
Mira este articulo :) Salud OS |
¡Oh! ¡Vaya! Creo que debo salir de debajo de mi piedra :) Si no fuera por las horas que tarda en abrir el D2007...:rolleyes:
Gracias por la información. (records con métodos :eek:) Bye |
Cita:
|
La franja horaria es GMT +2. Ahora son las 06:00:14. |
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