Por favor, descargue el fichero para usar el ejemplo mnu01.prg
Please download file image for use mnu01.prg sample
https://bitbucket.org/fivetech/fivewin- ... etechv.png
y ejemplo actualizado
and sample updated
Por favor, descargue el fichero para usar el ejemplo mnu01.prg
Please download file image for use mnu01.prg sample
https://bitbucket.org/fivetech/fivewin- ... etechv.png
y ejemplo actualizado
and sample updated
FWH 16.06 build 2 ya est谩 disponible:
聽 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()Luis,
Si revisas la carpeta FWH\DLL ver谩s que estan ambas DLLs all铆, y el nombre de la de 64 bits termina el 64
Maestro Antonio
Si claro est谩, las dos librerias dll libmysql.dll y libmysql64.dll sin embargo cuando tengo mi aplicacion tanto de 32bits y 64bits en la misma carpeta copio las dos DLL, abro mi aplicacion en 32bits y perfecto el automaticamente abre la DLL libmysql.dll y funciona perfecto. El detalle es que al abrir mi aplicacion de 64bits da error porque el intenta es abrir libmysql.dll y no lo hace con libmysql64.dll, que sucede le cambio de nombre a libmysql64.dll por libmysql.dll abro de nuevo mi aplicacion y abre perfecto.. El error es que la DLL libmysql64.dll no la reconoce con ese nombre sino con libmysql.dll ese es el error, por eso hago la comparaci贸n con freeimage.dll y freeimage64.dll que se llaman bien cuando se abre una aplicacion en 32bits(freeimage.dll) y 64bits(freeimage64.dll).
Ahora lo otro importante es el aumento de memoria que se genera al abrir varias veces una tabla de mysql.
Muchas Gracias Maestro y estoy atento.
Luis,
Se lo acabo de comentar a Mr. Rao para saber su opini贸n
Te mantendr茅 informado de lo que me conteste
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.
METHOD UpdateSummary( cMaster, cMasKey, acMasCols, ;
cTrnTable, cTrnKey, acTrnCols, ;
cTrnWhere, cOperator )
function MYSQL_UpdateSummarySQL( cMaster, cMasKey, acMasCols, ;
cTrnTable, cTrnKey, acTrnCols, ;
cTrnWhere, cOperator )oCn:UpdateSummary( "maescont", "nroasi", "totdeb,tothab", ;
"detacont", "nroasi", "debe,haber" ) )
oCn:UpdateSummary( "cuentas", "codcta", "debe,haber", ;
"detacont", "codcta", "debe,haber" ) )UPDATE `maescont` m
LEFT OUTER JOIN
(
SELECT `nroasi`, SUM( debe ) AS t01, SUM( haber ) AS t02
FROM `detacont`
GROUP BY `nroasi`
) t
ON m.nroasi = t.nroasi
SET m.totdeb = IFNULL( t.t01, 0 ),
m.tothab = IFNULL( t.t02, 0 )UPDATE `cuentas` m
LEFT OUTER JOIN
(
SELECT `codcta`, SUM( debe ) AS t01, SUM( haber ) AS t02
FROM `detacont`
GROUP BY `codcta`
) t
ON m.codcta = t.codcta
SET m.debe = IFNULL( t.t01, 0 ),
m.haber = IFNULL( t.t02, 0 )G. N. Rao.
Gracias con el tema de las DLL, libmysql.dll la uso para 32 bits y libmariadb.dll para 64bits (libmariadb64.dll camn驴bi茅 de nombre) Solucionado con la recomendaci贸n de G. N. Rao
Lo del consumo de memoria si es muy importante, el ejemplo que envi茅 es solo un simple ejemplo pero no es lo que uso, sino que se me ocurri贸 para poder mostrar un ejemplo facil.
Y el consumo de memoria es en 32bits y 64 bits.
Luis,
Necesitamos un ejemplo peque帽o y auto contenido que reproduzca el consumo de memoria que comentas, gracias
Maestro Antonio en el caso de la nueva clase TMySql el consumo se produce inmediato
Entro al sistema ejecuto tal cual como envi茅 el ejemplo al principio y empieza el aumento, simplemente cada vez que se abre un query empieza el aumento de memoria