In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Problema en impresion de rango de archivo

FastReport for Xailer & [x]Harbour (English/Spanish)
Responder
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Problema en impresion de rango de archivo

Mensaje por datato »

Hola a todos, estoy intentado imprimir un rango de un archivo como si fuera una factura entre varias fechas. Es con un DBF y en xharbour.

Desde mi aplicación como la dbf y filtro el rango de lo que quiero imprimir, pero el problema que tengo es que, con el archivo .fr3 adjunto la cabecera si se imprime bien y va pasando registros uno a uno para imprimir todos los registros que están en el rango filtrado en mi DBF, pero lo que no avanza son las lineas de cada cabecera.

Es decir, las lineas de la banda detalle, en todas las paginas se imprimen las mismas, no se imprimen las lineas relacionadas con la cabecera.

Este es mi código. También adjunto el .fr3 comprimido

dbsetrelation("linreemb",{||cabreemb->numcontr})
dbselectarea("cabreemb")
cabreemb->(dbgotop())

WITH OBJECT oReport := TFastReport():New()
:cLanguage("spanish")
WITH OBJECT :AddDbf( "cabreemb" , { "cabreemb->*" } )
:nMaxRecsOnDesign := 0
END WITH
WITH OBJECT :AddDbf( "linreemb" , { "linreemb->*" } )
:nMaxRecsOnDesign := 0
END WITH

:Create()
:cFilename := cDiscoRed + "\Valijarango.fr3"
:oPreviewOptions:lAllowEdit := .F.
:OPreviewOptions:SetZoomMode(1)
:SetTitle( "Vista Previa Rango de Impresion de Valija" )
:SetIcon( "A1" )

IF !lDesign
:ShowReport()
ELSE
:DesignReport()
ENDIF
:End()
END WITH
Adjuntos
valijarango.rar
(2.37 KiB) Descargado 1424 veces
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola, alguien que me pueda dar una ayuda por favor.

Saludos
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola, sigo peleándome con esto sin conseguirlo.

Con este codigo me da error en tiempo de ejecución. Error de argumento LEN en línea de SetMasterDetail. ¿No se porque?

WITH OBJECT oReport := TFastReport():New()
:cLanguage("spanish")
:AddDbf( "cabreemb" , { "cabreemb->*" } )
:AddDbf( "linreemb" , { "linreemb->*" } )
:SetMasterDetail("cabreemb","linreemb",{||cabreemb->numcontr})
:Create()
:cFilename := cDiscoRed + "\Valijarango.fr3"
:oPreviewOptions:lAllowEdit := .F.
:OPreviewOptions:SetZoomMode(1)
:SetTitle( "Vista Previa Rango de Impresion de Valija" )
:SetIcon( "A1" )

IF !lDesign
:ShowReport()
ELSE
:DesignReport()
ENDIF
:End()
END WITH
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Con este codigo adaptado y sacado de frconsole.prg solo me muestra un único registro de cabecera en masterdata y sus líneas asociadas en detaildata correctamente. Pero solo me muestra una pagina, no me muestra más paginas con el resto de registro que hay en cabecera y en líneas asociadas. No se que más hacer.

WITH OBJECT oReport := TFastReport():New()
:cLanguage("spanish")
ocabreemb:= :AddDbf( "cabreemb" , { "cabreemb->*" } )
olinreemb:= :AddDbf( "linreemb" , { "linreemb->*" } )
olinreemb:SetMaster(ocabreemb, {"NUMCONTR=NUMCONTR"} )
:Create()
:cFilename := cDiscoRed + "\Valijarango.fr3"
:oPreviewOptions:lAllowEdit := .F.
:OPreviewOptions:SetZoomMode(1)
:SetTitle( "Vista Previa Rango de Impresion de Valija" )
:SetIcon( "A1" )

IF !lDesign
:ShowReport()
ELSE
:DesignReport()
ENDIF
:End()
END WITH
angelsalom
Mensajes: 16
Registrado: Mar Sep 11, 2018 8:37 am

Re: Problema en impresion de rango de archivo

Mensaje por angelsalom »

Creo que tienes un problema de planteamiento.
Trata cada factura de forma independiente pasando a FR los datos filtrados (con un scope, por ejemplo que es más rápido) y haz tantas llamadas como facturas.
¿De qué te serviría, por ejemplo imprimir 10 facturas distintas de distintos clientes a un mismo fichero PDF?

Te aconsejo la lectura del estupendo manual de Bingen que se incluye en la documentación de Fast Report para Xailer (FRManualBisoft.pdf), es muy ilustrativo y explica, entre muchas otras cosas, el proceso de impresión de una factura con trucos muy útiles.
Angel Salom
www.visionwin.com
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Angel en primer lugar, muchas gracias por responder.

El cliente quiere que en un solo pdf vayan varias facturas, ya que la idea es poder filtrar las facturas de un mismo cliente entre un rango de fechas y después Fastreport me cree ese único pdf con todas esas facturas filtradas de un mismo cliente.

Con el archivo que adjunte me sale todo correcto, cabecera y pie con total de factura calculada por Fastreport, pero en todas las facturas salen siempre las lineas del detalle de la primera factura solamente.

No se que hacer más.

Saludos.
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola de nuevo, después de llevarme todo el fin de semana con este asunto, ya consigo que me funcione a medias con este codigo.

dbselectarea("linreemb")
ordsetfocus('contrnum')
ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)
dbgotop()

dbselectarea("linreemb")
ordsetfocus('numcontr')
dbgotop()


WITH OBJECT oReport := TFastReport():New()
:cLanguage("spanish")
oCabreemb:= :AddDbf( "cabreemb" , { "cabreemb->*" } )
oLinreemb:= :AddDbf( "linreemb" , { "linreemb->*" } )
oLinreemb:SetMaster( oCabreemb, {"NUMCONTR=NUMCONTR"} )
WITH OBJECT :AddDbf( "linreemb" , { "linreemb->*" } )
:lLoadOnDemand := .T.
:nMaxRecsOnDesign := 10
END WITH
:Create()
:cFilename := cDiscoRed + "\valijarango.fr3"
:oPreviewOptions:lAllowEdit := .F.
:OPreviewOptions:SetZoomMode(1)
:SetTitle( "Vista Previa Rango de Impresion de Valija" )
:SetIcon( "A1" )

IF !lDesign
:ShowReport()
ELSE
:DesignReport()
ENDIF
:End()
END WITH

El problema se generaba en que el fichero de líneas de detalles llevaba a Fastreport Filtrado de una rutina anterior.

He indicado que me funciona a medias porque ahora, porque consigo que me presente hasta un registro determinado, a partir de ese registro no me muestra nada. He estado mirando por si hubiera algún problema en la relación creada pero los índices están bien y los registros también.

No se que puede estar pasando, para que a partir de un registro determinado, no se muestra nada en el impreso que adjunte.

Saludos.
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola, he probado con los datos del año anterior y me hace lo mismo el informe. A partir del registro num. 45 o 46, no me imprime nada. Es decir, si le indico que me imprima de la factura 1 a la 50, me imprime correctamente hasta la 45 en el año anterior y 46 en el año actual.

Si le indico que me imprima desde la 40 a la 60, solo me imprime desde la 40 a la 46...

Si le indico que me imprima desde la 50 a la que sea, me visualiza un folio en blanco sin nada.

No lo entiendo.
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Disculpad con tanto mensaje, pero estoy detallando paso a paso, lo que voy averiguando por si a alguien le pudiera ser servir en un futuro.

Ya he conseguido que no me salgan paginas en blanco, marcando a .T. en el diseñador de informes la propiedad PrintifDetailEmpty de la MasterData1, pero con esto, solo consigo que me salgan los datos de cabecera. Las lineas de detalles asociadas no me salen. Solo salen las lineas de detalle que corresponden a las 100 primeras en la dbf.
angelsalom
Mensajes: 16
Registrado: Mar Sep 11, 2018 8:37 am

Re: Problema en impresion de rango de archivo

Mensaje por angelsalom »

¿Puede adjuntar un ZIP con un ejemplo autocontenido y la tablas de datos para hacer alguna prueba?
Angel Salom
www.visionwin.com
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola, adjunto fichero comprimido con DBF E INDICES.

He adaptado los DBF para que se pueda utilizar para muestra el frconsole que viene con fastreport.

Grabar las dbf y cdx adjuntos dentro de la carpeta DATA de FRX para probar con frconsole.exe

También adjunto el pdf de la impresión obtenida. Al igual que ocurre en mi programa, utilizando mis datos pero con frconsole también se imprime hasta el registro 46 del fichero customer
Adjuntos
Data.rar
(239.02 KiB) Descargado 1397 veces
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Hola, creo que puede ser por esto, pero no se como ponerlo en mi codigo para que no me de error en tiempo de ejecución.

TFrDataset:nMaxRecsOnDesign
Home Topic Previous Topic Next Topic Print this Topic

Sets the maximum number of records that will be downloaded when using the report designer. This property allows you to limit the number of records to be loaded for design processes to not delay carrying large amount of data. A value of cero means to download the complete set of records.

Scope Design assignable

Type Numeric

Initial Value 100

TFrDataset
Properties
Methods
Events

Este es mi codigo.

WITH OBJECT oReport := TFastReport():New()
:cLanguage("spanish")
oCabreemb:= :AddDbf( "cabreemb" , { "cabreemb->*" } )
oLinreemb:= :AddDbf( "linreemb" , { "linreemb->*" } )
oLinreemb:SetMaster( oCabreemb, {"NUMCONTR=NUMCONTR"} )
:Create()
:cFilename := cDiscoRed + "\valijarango.fr3"
:oPreviewOptions:lAllowEdit := .F.
:OPreviewOptions:SetZoomMode(1)
:SetTitle( "Vista Previa Rango de Impresion de Valija" )
:SetIcon( "A1" )

IF !lDesign
:ShowReport()
ELSE
:DesignReport()
ENDIF
:End()
END WITH
angelsalom
Mensajes: 16
Registrado: Mar Sep 11, 2018 8:37 am

Re: Problema en impresion de rango de archivo

Mensaje por angelsalom »

Si lanzas el informe sin pasar por el modo de diseño no tiene límites. El nMaxRecsOnDesign sólo actúa en modo diseño.
De todos modos lo tienes que indicar al añadir el DBF

Código: Seleccionar todo

oCabreemb:= :AddDbf( "cabreemb" , { "cabreemb->*" } )	
oCabreemb:nMaxRecsOnDesign := 50 // Por ejemplo
Angel Salom
www.visionwin.com
datato
Mensajes: 49
Registrado: Vie Ene 10, 2014 9:41 pm

Re: Problema en impresion de rango de archivo

Mensaje por datato »

Angel muchas gracias por tu ayuda y aclaraciones. Todo ok.
Responder