Page 1 of 1

Duplicidad de registros usando lLoadOnDemand

Posted: Tue Nov 06, 2018 12:11 pm
by angelsalom
Buenos días, adquirí recientemente Fast Report para xHarbour y está funcionando muy bien.
Ahora que ya lo tengo implementado estoy tratando de optimizar la velocidad de ejecución ya que tengo clientes con bases de datos de un tamaño considerable.
He optado por probar lLoadOnDemand tal como viene en el ejemplo BioLife de frconsole.prg y lo cierto es que la velocidad se dispara.
Sólo hay un problema, imprime todos los registros de la tabla dos veces (este hecho ocurre también en el ejemplo que mencione de frconsole.prg)

He observado que la dll (frx.dll) que viene con Xailer es más reciente que la que tengo yo. La mía data del 09/09/2016 y la de Xailer 09/05/2017, mi versión 1.5.1609.7 y la de Xailer 1.5.1705.9 . ¿No se si puede ser debido a esto?

El código :

Code: Select all

USE .\DATA\BIOLIFE SHARED VIA "DBFCDX"

   WITH OBJECT oReport := TFastReport():New()
      WITH OBJECT :AddDbf( "BIOLIFE" )
         :lLoadOnDemand := .T.
         :nMaxRecsOnDesign := 10
      END WITH
      :bOnAfterLoad   := {|| QOut( "Report loaded" ) }
      :bOnClickObject := {|oSender, cObject| QOut( "Mouse click on object: " + cObject ) }
      :bOnEndPreview  := {|| QOut( "Report preview window closed" ) }
      :Create()

      :cFilename := ".\Reports\Biolife.fr3"

      :AddCategory( "personal" )
      :AddVariable( "test", 123 )

      ? "Report description:"
      ? :oReportOptions:aDescription[ 1 ]

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

   CLOSE ALL


La tabla, reducida a un registro :
Image

El resultado del informe :
Image

¿Alguna sugerencia o solución?
Gracias

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Wed Nov 07, 2018 10:04 am
by ignacio
Buenos días,

Aquí está funcionando perfectamente, precisamente con el ejemplo que ofrecemos en nuestro producto FR para consola.

Code: Select all

USE .\DATA\BIOLIFE SHARED VIA "DBFCDX"

   WITH OBJECT oReport := TFastReport():New()
      WITH OBJECT :AddDbf( "BIOLIFE" )
         :lLoadOnDemand := .t.
         :nMaxRecsOnDesign := 10
      END WITH
      :bOnAfterLoad   := {|| QOut( "Report loaded" ) }
      :bOnClickObject := {|oSender, cObject| QOut( "Mouse click on object: " + cObject ) }
      :bOnEndPreview  := {|| QOut( "Report preview window closed" ) }
      :Create()

      :cFilename := ".\Reports\Biolife.fr3"

      :AddCategory( "personal" )
      :AddVariable( "test", 123 )

      :AddFunction( "function NtoL(n: extended):String", "My category",;
                    "Converts a number to a string" )

      ? "Report description:"
      ? :oReportOptions:aDescription[ 1 ]

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


Es posible que sea un error de una antigua version de FRX. Le recomiendo descargue la nueva versión desde:

http://www2.xailer.com/download?es&file=103

Saludos

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Wed Nov 07, 2018 10:31 am
by angelsalom
Acabo de descargar y ejecutar frconsole con el ejemplo Biolife, adjunto PDF comprimido en ZIP en el que se puede observar cómo se repiten los registros. Concretamente en el segundo registro de la tercera página vuelve a empezar con la referencia 90020.

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Wed Nov 07, 2018 1:58 pm
by datato
Hola, a mi me funciona igual. Se repiten los registro a partir de la tercera pagina

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Thu Nov 08, 2018 6:30 pm
by ignacio
Buenas tardes,

Espero que se corrija con el modulo que adjunto. Quedo a la espera de sus comentarios.

Un saludo

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Thu Nov 08, 2018 7:24 pm
by angelsalom
Gracias Ignacio. Parece que tengo un pequeño problema ....

Reemplazo el módulo de la librería xaFrhBcc.lib aparentemente sin problemas con :

Code: Select all

\bcc70\bin\tlib xaFrhBcc.lib +- ifastreport.obj
TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.


Y al compilar un pequeño ejemplo :

Code: Select all

Turbo Incremental Link 6.70 Copyright (c) 1997-2014 Embarcadero Technologies, Inc.
Error: Unresolved external '_hb_itemGetT' referenced from C:\SI\TRABAJO\FWH\PROPIOS\FR\xaFrhBcc.lib|ifastreport
Error: Unresolved external '_hb_retcAdopt' referenced from C:\SI\TRABAJO\FWH\PROPIOS\FR\xaFrhBcc.lib|ifastreport
Error: Unable to perform link


Utilizo Harbour 3.2. y Borland C++ 7.0 (sin problemas con la librería sin modificaciones)

Gracias por tu esfuerzo, los logros que estamos consiguiendo con FastReport son espectacularaes.

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Sat Nov 10, 2018 10:44 am
by ignacio
Buenos días,

Los módulos que subí esta compilados con la misma versión de Harbour. No sé cual puede ser el motivo del error. Lo estudiaré con más detenimiento. No obstante, poniendo la propiedad lSyncroData a false es casi seguro de que no le fallará.

Saludos

Re: Duplicidad de registros usando lLoadOnDemand

Posted: Sun Nov 11, 2018 1:43 pm
by angelsalom
ignacio wrote:Buenos días,

Los módulos que subí esta compilados con la misma versión de Harbour. No sé cual puede ser el motivo del error. Lo estudiaré con más detenimiento. No obstante, poniendo la propiedad lSyncroData a false es casi seguro de que no le fallará.

Saludos


Aparentemente con lSynchroData a .F. está funcionado bien, gracias.