Página 1 de 1

Duplicidad de registros usando lLoadOnDemand

Publicado: Mar Nov 06, 2018 12:11 pm
por 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 :

Código: Seleccionar todo

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 :
Imagen

El resultado del informe :
Imagen

¿Alguna sugerencia o solución?
Gracias

Re: Duplicidad de registros usando lLoadOnDemand

Publicado: Mié Nov 07, 2018 10:04 am
por ignacio
Buenos días,

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

Código: Seleccionar todo

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

Publicado: Mié Nov 07, 2018 10:31 am
por 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

Publicado: Mié Nov 07, 2018 1:58 pm
por datato
Hola, a mi me funciona igual. Se repiten los registro a partir de la tercera pagina

Re: Duplicidad de registros usando lLoadOnDemand

Publicado: Jue Nov 08, 2018 6:30 pm
por 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

Publicado: Jue Nov 08, 2018 7:24 pm
por angelsalom
Gracias Ignacio. Parece que tengo un pequeño problema ....

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

Código: Seleccionar todo

\bcc70\bin\tlib xaFrhBcc.lib +- ifastreport.obj
TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.
Y al compilar un pequeño ejemplo :

Código: Seleccionar todo

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

Publicado: Sab Nov 10, 2018 10:44 am
por 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

Publicado: Dom Nov 11, 2018 1:43 pm
por angelsalom
ignacio escribió: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.