Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2003
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
impresión defectuosa

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.
Responder Con Cita
  #2  
Antiguo 20-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 21-05-2003
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:41:18.


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
Copyright 1996-2007 Club Delphi