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