Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   QuickReport 0% (https://www.clubdelphi.com/foros/showthread.php?t=91877)

Espartaco 23-05-2017 11:33:04

QuickReport 0%
 
Hola Amigos, a ver como os explico esto.
Utilizo Delphi 5 y QuickReport 3.0. Necesito imprimir un listado que tiene que generar una pagina cuando cambia el valor de un campo, y en cada pagina tengo que poner unos valores relacionados con este. Hasta aqui ningun problema, los tengo almacenados en una tabla y esta la ordeno con Query para coger los datos desde este. La unica forma que he encontrado es colocando en una banda detail unos QrLabel que voy rellenando con los valores de los campos correspondientes. Esto lo hago en el evento onneeddata del QuickReport.
Bien, pues todo lo hace correctamente, lo que ocurre es que si le doy a imprimir en el Preview del QR no me imprime nada. He probado a usar PreviewModal pero da igual. Sin embargo si en vez de utilizar el Preview lo imprimo directamente, lo hace perfecto.
He observado, que cuando me presenta el Preview, en la parte de abajo a la izquierda, donde muestra las paginas del listado, me muestra 0%, que supongo que es el proceso del listado, en cambio en los que si me funciona aparece 97% u otra cantidad.
Me imagino que es porque hago algo mal en el evento onneeddata pero no se como solucionarlo.
Este es el codigo del evento:

Código Delphi [-]
procedure Tlistadoadministradores.QuickRepNeedData(Sender: TObject;
  var MoreData: Boolean);
begin
    moredata:= not QConsulta.Eof;

    qrlabel4.Caption:=IntToStr(QConsulta['NCONTRATO']);
    qrlabel6.Caption:=QConsulta['TIPOCON'];
    qrlabel7.Caption:=QConsulta['DIRECCION'];

    if QConsulta['NOMBREADM']<>nomadm  then
    begin
    nomadm:=QConsulta['NOMBREADM'];
    listadoadministradores.NewPage;
    end;
    if moredata then
    QConsulta.Next;

end;

En otro listado en el que relleno yo los datos me ocurre exactamente igual.

Por favor os agradeceria mucho vuestra ayuda, estoy desesperado porque no doy con la tecla.

Muchas Gracias.

yusnerqui 24-05-2017 03:24:55

Me gustaría ver el código donde generas la consulta, quizas te falte dar un close antes de generarla y al tratar de imprimir, se genera por segunda vez te está dando problemas. es una hipótesis.

ElKurgan 24-05-2017 07:57:12

¿tienes código en los eventos AfterPrint y BeforePrint?

Ten en cuenta que BeforePrint y AfterPrint se ejecutan tanto si se está previsualizando el informe como si se está lanzando directamente a la impresora

Un saludo

Espartaco 24-05-2017 09:53:26

yusnerki muchas gracias por tu interes, aqui es donde genero la connsulta para el listado:

Código Delphi [-]
     listadoadministradoresrec.Qconsulta.Close;
     listadoadministradoresrec.Qconsulta.sql.Clear;
     listadoadministradoresrec.Qconsulta.sql.add('select *');
     listadoadministradoresrec.Qconsulta.sql.add('from ":conlipres:auxadmin.db" d');
     listadoadministradoresrec.Qconsulta.sql.add('ORDER BY NOMBREADM');
     listadoadministradoresrec.Qconsulta.Open;
     S := FormatDateTime('mmmm',Now);
     listadoadministradoresrec.QRLabel2.Caption:='Sevilla, '+IntToStr(Day)+' de '+S+' de '+IntToStr(Year);
     listadoadministradoresrec.QRLabel1.Caption:=ComboBox1.Text;
     listadoadministradoresrec.Preview;
     listadoadministradoresrec.Qconsulta.Close;


como ves, antes de generar la consulta la cierro primero.

Espartaco 24-05-2017 09:55:57

elkurgan gracias tambien por tu interes, comentarte que ni en afterprint ni en beforeprint tengo puesto nada.

solo en onneeddata, que el codigo es el de mas arriba y
en onstarpage cuyo codigo es el siguiente:

Código Delphi [-]
procedure TlistadoadministradoresRec.QuickRepStartPage(
  Sender: TCustomQuickRep);
begin
nomadm:=listadoadministradoresrec.QConsulta['NOMBREADM'];
QrLabel3.Caption:=listadoadministradoresrec.QConsulta['NOMBREADM'];
end;

quedo a la espera de vuestras respuestas y probando cosas. gracias

Casimiro Notevi 24-05-2017 10:10:59

Cita:

Empezado por Espartaco (Mensaje 517056)
elkurgan gracias tambien por tu interes, comentarte que ni en afterprint ni en beforeprint tengo puesto nada.
solo en onneeddata, que el codigo es el de mas arriba y
en onstarpage cuyo codigo es el siguiente:
quedo a la espera de vuestras respuestas y probando cosas. gracias

Pues ya te has contestado, que lo pongas en el afterprint ;)

Espartaco 24-05-2017 10:21:56

hola casimiro, gracias plor contestar, pero qué es lo que tengo que poner en afterprint, porque en realidad el listado me lo genera bien, lo que pasa es que creo que se queda al final y por eso me pone lo del 0% y cuando le doy a imprimir hace como que imprime pero no envia nada a la impresora.

gracias, estoy desesperado.

yusnerqui 25-05-2017 00:55:58

Bueno así de una rápida lectura creo que te falta, en el NeedData, reiniciar tu consulta cuando llegue al final para poderla imprimir nuevamente, debes poner algo como

Código Delphi [-]
...  
if moredata then
    QConsulta.Next; 
else
    QConsulta.First;


Espero te sirva.

Saludos

Espartaco 30-05-2017 11:12:18

Hola yusnerqui, efectivamente con lo que me has propuesto se ha solucionado y ya imprime desde el preview, aunque no entiendo muy bien por qué pero funciona.

Es que es la primera vez que utilizo el needdata y todavia no lo tengo muy bien asumido.

Muchas gracias por tu ayuda, y a los demas tambien.

Si no fuera por este foro ...

Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 11:22:25.

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