Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-04-2009
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Problema con FastReport 3, con un formato de factura

hola

Estoy con fastReport 3, y quiero hacer lo siguiente, imprimir una factura en un papel preimpreso, así cada memo tiene que estar en un lugar para que salga en la casilla correspondiente.

Tengo una tabla de factura y otra DetalleFactura. Hay una relación maestro detalle entre ambas.

El formato es así

Datos de la factura (datos del cliente, número)-> esto tiene que salir en cada página. Tabla Factura.

Detalle (articulos y sus precios) -Tabla DetalleFactura

Total, forma de pago, anotaciones -> tabla Factura (tiene que salir en la parte de abajo de la página y sólo en la última página de la factura en cuestión).

Decir que se pueden imprimir varias facturas a la vez.

He hecho esto:

PageHeader -> vacio para dejar un espacio en blanco
GroupHeader -> Datos Factura (masterData, no vale porque tiene que salir en cada página)
masterdata -> vacio
DetailData -> Detalles con articulos y sus precios
GroupFooter -> Datos de la parte de abajo.

Como el GroupFooter sale después de que el DetailData haya completado los datos, pues inserto en el dataset, registros en blanco, hasta para rellenar espacio y que el GroupFooter, salga abajo. Pregunta, porque no pongo entonces un PageFooter, pues porque si pongo los memos con datos de factura muchos datos no salen, no sé porque pero es así.

Problema, si hay tantos artículos que ocupan dos páginas, el detalle llega hasta el final, y no sé corta donde se supone que empieza el GroupFooter.

Ejemplo.

Cliente tal y tal
Factura:1

articulo1
articulo2
.....


articulon (si han n-x articulos, se inserta espacios en blanco hasta que sea n)

Pie de pagina -> GroupFooter

ejemplo con más de n artículos.

Cliente tal y tal
Factura1

articulo1
articulo2
.......

articulon -> aquí empezaria el GroupFooter, pero como ocupa dos o más paginas, este no aparece y el detalle no se corta y continua fuera de la zona permitida, tendría que cortarse en el articulo n y seguir el detalle en otra página.¿Pero esto no veo la manera de hacerlo?

Bueno esto es todo, veo casi imposible que alguien de una respuesta, pero después de todo el día voy a probar suerte poniendo este post.
Responder Con Cita
  #2  
Antiguo 01-04-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Yo utilizo este codigo para colocar mi banda Summary al final de la hoja en su evento beforeprint

Código Delphi [-]
 Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1.Height -1

PD. Esto es en el fastreport.
Responder Con Cita
  #3  
Antiguo 01-04-2009
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
vale pero supon que tienes dos hojas, el sumary esta al final de la segunda hoja, en la primera hay datos

dato1
dato2
...

daton
Aquí esta el hueco del sumary, pero como no es visible sólo en la segunda hoja,
sigue el dataset
datoa
datob


otra hoja

datoc
datod

Mi intención es que si hay sumary, no hay problemas, pues los datos se cortan en el punto exacto, pero si no hay sumary sigue hasta el final. Lo que yo quiero es que por ejemplo el espacio del sumary pues aparezca en todas las páginas, aunque la información este en la última.
Responder Con Cita
  #4  
Antiguo 01-04-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Código Delphi [-]
 if (Engine.FreeSpace >=  ReportSummary1.Height -1) then
  begin              
     Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1.Height -1;
  end
  else
    Engine.NewPage;

Asi lo tengo mira, y me funciona como queres.
Responder Con Cita
  #5  
Antiguo 02-04-2009
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Gracias, si me ha salido, además he añadido en el evento before print del detailData, el siguiente código:

Código Delphi [-]
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
  if (Engine.FreeSpace <=  GroupFooter1.Height +15) then
    Engine.NewPage;
end;

donde pongo 15, puede ser 10, 25, etc... hay que ir probando para ir ajustando.
Responder Con Cita
  #6  
Antiguo 03-04-2009
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Me ha surgido una duda, no es algo que necesite hacer, no me lo han pedido aún, pero la tengo en mente.

Si tienes el GroupFooter o el Summary en la parte de abajo y necesitas poner el número de página, en cada pagina ¿Cómo lo haces? He pensado que se puede poner debajo del GroupFooter una pageFooter estrecho, pero imaginemos que el número de página tiene que estar en una distancia media del Groupfooter.

Imaginemos el GroupFooter(o un Summary) así, en la parte inferior de la página

......................................... -> Top de la banda
Datos

...................... página 1/3
Otros datos
...................................... -> botton de la banda

Si el GroupFooter sólo aparece en la última página y queremos que el número de página aparezca en cada página, en la posición indicada ¿Cómo se hace?
Responder Con Cita
  #7  
Antiguo 04-04-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
En ese acaso agregas un PageFooter, y restas el alto de la misma tamaño en la formula que utilizaste antes.
Responder Con Cita
  #8  
Antiguo 14-03-2016
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Smile

Cita:
Empezado por David Ver Mensaje
Gracias, si me ha salido, además he añadido en el evento before print del detailData, el siguiente código:

Código Delphi [-]
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
  if (Engine.FreeSpace <=  GroupFooter1.Height +15) then
    Engine.NewPage;
end;

donde pongo 15, puede ser 10, 25, etc... hay que ir probando para ir ajustando.
Gracias. Me sirvió de mucho este Post.
Lo comento de paso.
Al parecer, hay un problema en FastReport cuando está poniendo las anclas (Anchors). A veces, la banda de datos empieza como "al ras" del final de la hoja, el ancla indica la hoja 19 pero visualmente el texto comienza en 20 (Esto es un ejemplo de numeración)
En el índice, y en lo usuarios, genera un gran revuelo.
Encontré la solución trabajando con FreeSpace y jugando un poco con los pixeles.
Mando el pedacito de código.
Código Delphi [-]
//Todo esto en el Script de FastReport

{Controlamos que la altura del espacio en blanco (FreeSpace) que va quedando sea menor a cierto
 valor, en pixeles. Con esto, pasamos a nueva página o no}
procedure ControlFinPagina(AlturaMinima:integer);
var
  px:integer;                               
begin
  px:=AlturaMinima;                                        
  if Engine.FreeSpace <= px then
  begin              
    Engine.NewPage;
  end;                  
end;

procedure mdAvisosSeccionAdmOnBeforePrint(Sender: TfrxComponent);
begin
{Controlamos que la altura del final de la página sea menor, o no, que cierto número.
 En base a eso, pasamos o no, a una página nueva}
  ControlFinPagina(30);
end

//El ancla...
procedure rchAvisoAdmOnAfterData(Sender: TfrxComponent);
begin
  Engine.AddAnchor();
end;

Espero que sea de ayuda a los que le pasa lo mismo.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 14-03-2016 a las 18:04:47.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar firma de factura electrónica (formato Facturae) maro Varios 79 22-09-2015 09:45:17
Imprimir Factura Con Fastreport macro32 Conexión con bases de datos 2 15-04-2008 00:39:03
Factura - Detalles : Problema con QuickRep 4.06 TrUnkS Impresión 2 09-02-2007 00:20:52
Problema Con campo Numero factura josejose Varios 1 01-02-2007 15:44:46
Fallo Nº Factura y Linea Factura CarmaZone Tablas planas 5 26-05-2005 11:17:19


La franja horaria es GMT +2. Ahora son las 23:00:03.


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