Page 1 of 1

TMySql Fwh 16.05 y 16.06

PostPosted: Mon Aug 29, 2016 1:36 am
by luisduque
Maestro Antonio

1. libmysql.dll en 32bits y 64bits se debe llamar asì hay que cambiar de nombre a libmysql64.dll por libmysql.dll para poder trabajar en 64bits existe alguna manera de trabajar con libmysql.dll y libmysql64.dll en la misma carpeta asi como se trabaja freeimage.dll y freeimage64.dll.

2. coloco un ejemplo sencillo donde cada vez que se revisa una procedimiento se incrementa la memoria, es como si no cerrara el oRcs coloco un ejemplo
cada vez que entra a CalCtaAntDH se incrementa la memoria.

Code: Select all  Expand view


   oRcs := oConexion:Query("Select * From MaesCont Order by NroAsi")
    If oRcs==Nil
        Return(.f.)
    EndIf
   While !oRcs:Eof()

        fNroAsi := oRcs:Fields("NROASI"):Value
      fFecAsi := oRcs:Fields("FECASI"):Value

        fTotDeb := 0
        fTotHab := 0

       oRcsC := oConexion:Query("Select * From DetaCont Where NroAsi="+str(fNroAsi))
        If oRcsC==Nil
            Return(.f.)
        EndIf
        While !oRcsC:Eof()

          fCodCta := oRcsC:Fields("CODCTA"):Value
       fDebe   := oRcsC:Fields("DEBE"):Value
        fHaber  := oRcsC:Fields("HABER"):Value

            fTotDeb += fDebe
            fTotHab += fHaber

            CalCtaAntDH(fCodCta,fDebe,fHaber,"+")

           oRcsC:MoveNext()
        EndDo

        oRcs:Fields("TotDeb"):Value := fTotDeb
        oRcs:Fields("TotHab"):Value := fTotHab

        oRcs:Save()

       oRcs:MoveNext()
    EndDo
//
Procedure CalCtaAntDH(fCodCta,fDebe,fHaber,fSumRes)

    oRcsA := oConexion:Query("select * from cuentas where `codcta`='"+fCodCta+"'")
    If oRcsA==Nil
        Return(.f.)
    EndIf
    If !oRcsA:Eof()
        If !Empty(fDebe)
           If fSumRes = "+"
                oRcsA:Fields("Debe"):Value  += fDebe
            Else
                oRcsA:Fields("Debe"):Value  -= fDebe
            EndIf
        EndIf

        If !Empty(fHaber)
           If fSumRes = "+"
                oRcsA:Fields("Haber"):Value += fHaber
            Else
                oRcsA:Fields("Haber"):Value -= fHaber
            EndIf
        EndIf

        oRcsA:Save()
    EndIf   

    oRcsA:Close()

 


El mismo resultado con la versión 16.05 y 16.06

Nota: Con ADO no aumenta la memoria en procesos de windows, con ese mismo ejemplo

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Tue Aug 30, 2016 4:44 pm
by luisduque
luisduque wrote:Maestro Antonio

1. libmysql.dll en 32bits y 64bits se debe llamar asì hay que cambiar de nombre a libmysql64.dll por libmysql.dll para poder trabajar en 64bits existe alguna manera de trabajar con libmysql.dll y libmysql64.dll en la misma carpeta asi como se trabaja freeimage.dll y freeimage64.dll.

2. coloco un ejemplo sencillo donde cada vez que se revisa una procedimiento se incrementa la memoria, es como si no cerrara el oRcs coloco un ejemplo
cada vez que entra a CalCtaAntDH se incrementa la memoria.

Code: Select all  Expand view


   oRcs := oConexion:Query("Select * From MaesCont Order by NroAsi")
    If oRcs==Nil
        Return(.f.)
    EndIf
   While !oRcs:Eof()

        fNroAsi := oRcs:Fields("NROASI"):Value
      fFecAsi := oRcs:Fields("FECASI"):Value

        fTotDeb := 0
        fTotHab := 0

       oRcsC := oConexion:Query("Select * From DetaCont Where NroAsi="+str(fNroAsi))
        If oRcsC==Nil
            Return(.f.)
        EndIf
        While !oRcsC:Eof()

          fCodCta := oRcsC:Fields("CODCTA"):Value
       fDebe   := oRcsC:Fields("DEBE"):Value
        fHaber  := oRcsC:Fields("HABER"):Value

            fTotDeb += fDebe
            fTotHab += fHaber

            CalCtaAntDH(fCodCta,fDebe,fHaber,"+")

           oRcsC:MoveNext()
        EndDo

        oRcs:Fields("TotDeb"):Value := fTotDeb
        oRcs:Fields("TotHab"):Value := fTotHab

        oRcs:Save()

       oRcs:MoveNext()
    EndDo
//
Procedure CalCtaAntDH(fCodCta,fDebe,fHaber,fSumRes)

    oRcsA := oConexion:Query("select * from cuentas where `codcta`='"+fCodCta+"'")
    If oRcsA==Nil
        Return(.f.)
    EndIf
    If !oRcsA:Eof()
        If !Empty(fDebe)
           If fSumRes = "+"
                oRcsA:Fields("Debe"):Value  += fDebe
            Else
                oRcsA:Fields("Debe"):Value  -= fDebe
            EndIf
        EndIf

        If !Empty(fHaber)
           If fSumRes = "+"
                oRcsA:Fields("Haber"):Value += fHaber
            Else
                oRcsA:Fields("Haber"):Value -= fHaber
            EndIf
        EndIf

        oRcsA:Save()
    EndIf   

    oRcsA:Close()

 


El mismo resultado con la versión 16.05 y 16.06

Nota: Con ADO no aumenta la memoria en procesos de windows, con ese mismo ejemplo

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Thu Sep 01, 2016 8:02 am
by Antonio Linares
Luis,

Has probado a hacer oRcs := nil después de usarlo ?

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Thu Sep 01, 2016 9:49 am
by xmanuel
Que yo recuerde esto sólo funciona en ADO
Code: Select all  Expand view
   fCodCta := oRcsC:Fields("CODCTA"):Value
       fDebe   := oRcsC:Fields("DEBE"):Value
        fHaber  := oRcsC:Fields("HABER"):Value

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Thu Sep 01, 2016 10:17 am
by cnavarro
xmanuel wrote:Que yo recuerde esto sólo funciona en ADO
Code: Select all  Expand view
   fCodCta := oRcsC:Fields("CODCTA"):Value
       fDebe   := oRcsC:Fields("DEBE"):Value
        fHaber  := oRcsC:Fields("HABER"):Value


Manu, en las nuevas clases de FWH:

- CLASS FWMariaConnection

- CLASS FWMariaRowSet

.../...
METHOD Fields( cName )
.../...

- CLASS TField

.../...
ACCESS Value
ASSIGN Value( x )
.../...

CLASS TFields

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Thu Sep 01, 2016 9:24 pm
by luisduque
Maestro Antonio

Acabé de probar y la memoria aumenta

Nota: La idea del ejemplo es simplemente para mostrar un consumo de memoria que se produce, y es un simple ejemplo que se me ocurrió para poderlo mostrar y algo fácil de entender.

Y la idea es que estamos haciendo una comparación en paralelo ADO y TYMSQL para poder hacer el cambio a la nueva clase de fivewin

El detalle del consumo de memoria es cuando se usa un sistema todo un día y se hacen n cantidad de consultas se puede poner demasiado lento y eso es lo mas que hay que evitar.

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Fri Sep 02, 2016 9:14 am
by xmanuel
Desconocía esas clases...
Si me las envías a mi correo particular podría :D :) :shock: echarles un vistazo para ver si descubro la pérdida de memoria

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Fri Sep 02, 2016 9:54 am
by Antonio Linares
Luis,

> El detalle del consumo de memoria es cuando se usa un sistema todo un día y se hacen n cantidad de consultas se puede poner demasiado lento y eso es lo mas que hay que evitar

Cuando ocurra eso ve al administrador de tareas de Windows y revisa toda la información que aparezca: ficheros abiertos, consumo de GDI, consumo memoria, etc.
y publícalo aqui, gracias

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Fri Sep 02, 2016 2:49 pm
by luisduque
Maestro Antonio

El caso con la clase TMySql es muy simple entro al sistema ejecuto el proceso y empieza aumentar la memoria en ese caso no es en 1 hora o en el dia, solo entro ejecuto y el consumo de memoria empieza.

Re: TMySql Fwh 16.05 y 16.06

PostPosted: Sun Sep 04, 2016 10:26 am
by Antonio Linares
Luis,

gracias por tu información

Lo estamos revisando a ver que pueda estar pasando