Entrar
¿Nuevo usuario? Inscribirme
guvoaII · GUVOA Visual Object Español
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés hacer búsquedas de antiguos mensajes del grupo.

Mensajes

  Mensajes Ayuda
Avanzado
memory low cuandoi se produce tabla en MySQL   Lista de mensajes  
Responder | Reenviar Mensaje #2755 de 2798 |
Hola:

Estoy migrando los datos de contabilidad y al mismo tiempo cambiando la
estructura del balance para llevarlo a tiempo real.
El balance actual esta contenido en tablas individuales por cada mes CERRADO,
por eso para producir el balance en tiempo real hay que pasar la historia del
año en curso a la nueva estructura, cuando una empresa tiene algun tiempo en el
sistema.
Para eso hice una clase con un un boton que efectúa un bucle por los meses del
año cerrado para ir construyendo la tabla sql poco a poco.
Inicialmente estaba produciendo un solo COMMIT al final y lo descontinue
pensando en que el gran volumen de datos coparia el buffer
de memoria donde presumo se guardan los datos antes del commit; pero esto no dio
resultados

METHOD PushButton1( ) CLASS ProdBalWindow
LOCAL sFile,sMes,sAnoMes,sAnoMes1 AS STRING
LOCAL y AS DWORD
LOCAL oControl,oServer AS OBJECT
LOCAL aStru AS ARRAY

SELF:oCCPushButton1:DISABLE()
oControl:=sqlselect{'select * from cgdmv02 for update',oConn}
oServer:=dbserver{'c:\sigger\cgdmsa4',FALSE}
FOR y=1 UPTO 12
sMes:='ME'+AllTrim(Str(y,2))
IF oControl:FIELDGET(sMes)=1 //MES ABIERTO
oControl:close()
oServer:zap()
RETURN NIL
ENDIF
sFile:='ma04'+StrZero(y,2)+SubStr(Str(oControl:ano,4),3,2)
sAnoMes:=Str(oControl:ano,4)
sAnoMes1:=Str(oControl:ano+1,4)
SELF:oDCMultiLineEdit1:AddOk(sFile+' Procesando',FALSE)
oServer:zap()
oServer:appenddb(sFile)
oServer:Gotop()
aStru:=oServer:dbstruct
SELF:ProduceMeses(OsERVER,sAnoMes,sAnoMes1,y)
NEXT
oControl:close()
oServer:close()
RETURN NIL

METHOD ProduceMeses(oServer,sAnoMes,sAnoMes1,y) CLASSProdBalWindow
LOCAL sDeb AS STRING
LOCAL Z,I AS DWORD
LOCAL oSqlStat AS OBJECT
LOCAL aStru AS ARRAY

DO WHILE !oServer:EOF
oSqlStat:=sqlselect{'select * from cgdmv05 where
cod+an1+ANOMES="'+oServer:cod+ConvierteComillas(oServer:an1)+sAnoMes+'" FOR
update',oConn}
IF !osQLSTAT:STATUS=NULL_OBJECT
SELF:oDCMultiLineEdit1:ADDOK(oSqlStat:SQLSTRING,FALSE)
SELF:oDCMultiLineEdit1:ADDOK(oSqlStat:STATUS:DESCRIPTION,FALSE)
oSqlStat:errinfo:SHOWERRORmSG()
ENDIF
IF oSqlStat:reccount=0
IF !oSqlStat:append()
TEXTerror(OsQLSTAT:SQLSTRING)
ENDIF
//crea el registro actualizando muchos campos
oSqlStat:Commit()
oSqlStat:skip()
ELSE
//actualiza la tabla
oSqlstat1:Commit()
oSqlStat1:skip()
ENDIF
oserver:skip()
oSqlstat:Commit()
ENDDO
oSqlstat:Commit()
oSqlStat:Close()
RETURN NIL

Cuando procesa algo menos de la mitad del segundo mes, se revienta el programa
con el mensaje "DYNAMIC MEMORY LOW"

Les agradezco cualquier ayuda el respecto

Saludos
Edgardo Solano





Jue, 20 de Ago, 2009 3:18 pm

edgsun
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #2755 de 2798 |
Desplegar mensajes Autor Ordenar por fecha

Hola: Estoy migrando los datos de contabilidad y al mismo tiempo cambiando la estructura del balance para llevarlo a tiempo real. El balance actual esta...
edgsun
Sin conexión Enviar correo
20 de Ago, 2009
3:18 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda