PDA

Ver la Versión Completa : impresión defectuosa


jsanchez
20-05-2003, 19:39:49
Hola foro,

Estoy sacando unos reportes en una Epson 200A.

Los reportes son resultado de una consulta SQL.

El problema viene que cuando el resultado de la consulta es de un número elevado de registros, como unos 50. Empieza a imprimir bien pero después la impresora se vuelve loca, imprime sin guardar el formato y termina antes de tiempo.

La impresión la hago directamente en el puerto de la impresora. Puede ser por eso?

Gracias por todo.

marcoszorrilla
20-05-2003, 19:41:10
Pues en un principio no tiene nada que ver, pero sino muestras el código con el que imprimes es dificil que alguien te pueda ayudar.

Un Saludo.

jsanchez
21-05-2003, 21:16:36
Tienes razón, debería haber puesto el código.

Sería este. (más o menos)



AssignFILE(F,'Com1');
ReWrite(F);
Write(F, CHR(27) + CHR(64));
Writeln(F,' Reporte de Ventas');
Writeln(F,' Fecha: '+DateToStr(Date));
Writeln(F,'Del día: '+ EFecha1.Text+' al día: '+EFecha2.Text);

Writeln(F, Espacios(20, 'Producto', 0)+Espacios(10, 'Cantidad'), 0));

DMModuloDatos.QVentas.First; // aquí están los datos de la consulta

Total:=0;

while (not DMModuloDatos.QVentas.eof) do
begin
writeln(F,
Espacios(20, DBGVentas.DataSource.DataSet.FieldByName(['Producto']).AsString, 0)+
Espacios(20, DBGVentas.DataSource.DataSet.FieldByName(['Cantidad']).AsString, 0))
Total:=Total+DBGVentas.DataSource.DataSet.FieldByName(['Cantidad']).AsFloat;
DMModuloDatos.QVentas.next;
end;
Writeln(F,'__________________________________________');
Writeln(F,Espacios(20,'Total: ', 1)+Espacios(10,FloatToStr(Total),1);

Write(F,#12);
System.CloseFile(F);
End;

Basicamente, lo que hace esto es recorrer el grid donde está la consulta y va llenando el Archivo F, al final lo cierra, y se imprime.

Este código funciona perfectamente cuando la consulta tiene menos de unos 50 registros, pero cuando el resultado es más grande, hay problemas y no se imprime correctamente. No guarda la estructura en columnas que siguen los datos anteriores, y termina antes de tiempo.

Por qué puede ser?

Si abro y cierro el archivo en cada vuelta del ciclo, mejoraría? Esto no lo he probado, porque se me ha ocurrido ahora y estoy bien lejos de donde tengo el programa y mi ordenata.


Muchas gracias por todo.