![]() |
Imprimir sólo información en pantalla
Un gran saludo a todos.
Quisiera vuestra ayuda con un problema de impresión que no he podido solucionar a pesar de haber buscado en este y otros foros y leído distintos tópicos. He desarrollado una aplicación que utiliza como base de datos ADO. Estos datos se muestran en el form de la aplicación. Confeccioné un report en Quickreport conectado al dataset y cuando le doy a imprimir en el botón Imprimir que puse en la aplicación, en vez de imprimir el registro visible en la pantalla, imprime todos los registros existentes en la base de datos. ¿Cómo debo proceder? ¿Sería recomendable utilizar un ADOQuery? y si es así ¿alguien puede ayudarme con el código sql? Desde ya agradezco cualquier ayuda. |
deja en blanco la propiedad dataset al quickreport
|
Estimado luisgutierrezb:
Gracias por tu respuesta. Eso ya lo hice, siguiendo tu consejo en otro hilo y no funcionó. ¿Conoces alguna otra opción? Salu2 |
Para hacer un reporte que no imprima los registros del dataset y solo el registro actual entonces elimina la banda de detalle, Los campos del registros actual ponlos en en la banda PAGEHEADER por ejemplo la cual el tamaño se puede modificar al gusto.
Yo he utilizado esa tecnica para imprimir informacion que incluso no sale de ninguna tabla, si no de datos desde variables de memoria, por ejemplo un desglose de monedas de una planilla de pago de empleados att |
Gracias Bpascal pero tu método no me funciona. Imprime un sólo registro, pero no el que está en pantalla.
Salu2 |
Debes de utilizar para el informe el mismo dataset que utilizas en el formulario.
|
Gracias tonivi por tu respuesta.
Tanto el formulario como el qreport están conectados al mismo dataset. La aplicación funciona y el comando imprimir ejecuta la orden de impresión, pero no logro que imprima los registros que estoy viendo en la pantalla y me imprime todos los registros que se encuentran en la BD. Saludos y gracias |
Una opción sería la de llenar a mano el reporte.
1. Desconectas el QuickRep del dataset, como te dice Luis. 2. En la banda detalle, en lugar de colocar controles QRDBText conectados a tus campos, colocas etiquetas QRLabel. 3. En el evento OnNeedData del QuickRep, asignas los valores de tu registro activo a tus etiquetas:
// Saludos |
Cita:
Entonces me gustaria que describieras que controles estas usando para desplegar la informacion en pantalla y si haces algun proceso para llenarlos con datos. Si yo tengo un DBGRID con muchos registros y a medida que seleciono un registro con las teclas del cursor, al llamar un quickreport.preview donde esta puesto un qrdbtex en la banda de TITULO (y no existe la banda de detalle) siempre aparece el dato del registro que tengo selecionado en el dbgrid. Si el quickreport esta enlazado a un querry que tiene mas de un registro entonces la banda de detalle mostrará todos los registros de ese querry; haci que la solucion es o filtrar el querry para que solo tenga un registro que es el que deseas o no utilices la banda de detalle. |
Estimado Bpascal:
Agradezco sinceramente tu ayuda. El qreport está estructurado en base a dbtext y dbmemo conectados a una tabla. Hay datos (nombre de la persona) en el pageheader y otros datos varios en el detail. Luego de tu sugerencia probé cambiando la estructura del qreport pero sólo obtuve que imprimiera un registro, pero no el que aparece en la aplicación en pantalla. No utilizo query porque desconozco la sentencia sql para filtrar el registro que se encuentra en pantalla y que es el que deso imprimir. Salu2 y gracias |
re-
Cita:
Si no existe la banda detalle en el reporte y el registro que aparece es un registro arbitrario entonces me hace sospechar que cuando llamas el quickreport.preview el registro actual no es el que esta mostrando la pantalla. Por eso te pregunto, como haces para selecionar el registro en la pantalla?, si no usas querry para popular la tabla, entonces me imagino que usas un ttable y localizas los registros con ttable.next, ttable.prior or ttable.findkey ? |
Hola,
He estado intentando la opción de Bpascal, pero no he podido. Si sólo coloco una banda PageHeader, el reporte sale vacío. Si coloco una banda como Title o ColumnHeader, sí se imprime un registro, pero es siempre el primero, como dice radenf. De hecho, aun cuando sólo se imprima un registro, el dataset se recorre completo, pues al cerrar el reporte veo que el formulario oiginal ya está en el último registro. // Saludos |
Cita:
Salu2 y muchas gracias |
Cita:
Estoy usando delphi7 y quickreport 3.6.2 - Abro el projecto que esta en demos llamado fishfact el cual tiene una tabla sobre peces manejado con bde. - agrego una nueva forma form2, y le pongo un quickreport. - en la form1 agrego un boton y escibo en el evento form2.quickrepor1.preview; - en la form2 me aseguro de uncluir correctamente unit1 para que el qucikreport pueda ver el dataset - en el objectinspector en el quickrepor me voy a la Opcion Bands, todas las sub-opciones estan en falso, hago verdadero solo la opcion "HasTitle", una banda de titulo se agrega al quickrepor automaticamernte. - Pongo un qrdbtext en la banda de titulo, enlazo el dataset y seleciono el un campo. Eso es todo lo que hago, cuando corro el programa, selecciono cualquier registro usando el dbnavigator y le doy click al boton de preview, automaticamente me aparece la ventana del preview donde me muestra el lo que puse en la banda de titulo con el dato del registro actual. Lo he probado con BDE y con ADO att. |
Cita:
Ahora probaré con el FishFact. Estoy usando también Delphi 7 y el quickreport que viene incluido. // Saludos |
Veo entonces, que depende del dataset usado.
Ya he visto el FishFact y funciona como dices. Pero la prueba que hice con MyDac, no funciona. Ahora, si probaste con ADO y también funciona, entonces el único detalle que veo en relación a radenf es que habías mencionado la banda PageHeader, pero en realidad es la Title. Son distintas. // Saludos |
Ya está resuelto :)
Sólo había un detalle y éste era fundamental: Hay que enlazar únicamente los QRDBText y no el QuickReport. Gracias Bpascal, // Saludos |
Cita:
|
Je, je, así es. Hace mucho que no uso el QuickReport y cuando lo hacía siempre comenzaba conectando el reporte completo; ni siquiera se me había ocurrido probar conectando sólo los qrdbtext.
// Saludos |
Cita:
Seguiré cabezeandome ya que este problema no lo he podido resolver desde hace mucho tiempo, tanto que había dejado de lado mi proyecto. Agradezco todo su tiempo y dedicación y si tienen más ideas, bienvenidas |
La franja horaria es GMT +2. Ahora son las 03:53:04. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi