PDA

Ver la Versión Completa : QuickReport 0%


Espartaco
23-05-2017, 12:33:04
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:


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, 04: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, 08: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, 10:53:26
yusnerki muchas gracias por tu interes, aqui es donde genero la connsulta para el listado:


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, 10: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:

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, 11:10:59
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, 11: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, 01: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

...
if moredata then
QConsulta.Next;
else
QConsulta.First;


Espero te sirva.

Saludos

Espartaco
30-05-2017, 12: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.