Page 1 of 1

El metodo Zap() funciona bien?

Posted: Sat Mar 24, 2007 11:27 pm
by Jorge Jaurena
Hace mas de 10 años que esto con Clipper y luego FWH24 funcionaba perfecto, pero ahora a veces anda y a veces no.
Ahora estoy usando el ultimo FWH y el Harbour bajado de Fivetechsoft.com

Hacia lo siguiente:

USE C:\Salon\Cierret INDEX C:\Salon\Cierret1,C:\Salon\Cierret2 NEW EXCLUSIVE
DATABASE oDbf2
oDbf2:bEoF=nil
oDbf2:Zap()
oDbf2:Close()

De esta manera nunca funciona

Asi que probe la siguiente barbaridad:

USE C:\Salon\Cierret INDEX C:\Salon\Cierret1,C:\Salon\Cierret2 NEW EXCLUSIVE
DATABASE oDbf2
oDbf2:bEoF=nil
FOR Q=1 TO 10
oDbf2:Zap()
IF oDbf2:LastRec()=0
EXIT
ENDIF
NEXT
oDbf2:Close()

De esta manera a veces funciona.

Esta dbf debe hacer un zap tres veces al dia, me sucede el mismo problema en distintos clientes, asi que no le puedo hechar la culpa al XP.

Quizas alguien se de cuenta de lo que Yo aun no veo.


Muchas gracias
Jorge Jaurena

Posted: Mon Mar 26, 2007 9:24 am
by Carlos Mora
Jorge,

a mi me pasó algo parecido con PACK usando dbfcdx y harbour. A veces el PACK me dejaba más registros de los que debía, replicando un error del Summer'87. Este error tenía que ver con un fallo en el SO con la funcion write del SO. Para 'acortar' un archivo había que escribir 0 bytes en la posición donde se quería que termine el fichero. Luego de eso había que hacer una lectura inmediatamente, que por cierto fallaría. Si no se hacía el archivo no se truncaba y ocacionaba los consabidos fallos en el PACK

La solución? Despues del PACK la cierro y la vuelvo a abrir. Santo remedio.

Select UnaBase
Pack
Use
Use UnaBase ....

Prueba a ver si es eso.

Para tu caso se me ocurre una solución alternativa:

aStru:= dBStruct()
dbCloseArea()
dBCreate( 'tubase', aStru )
Use TuBase

no creo que esto falle.

Un saludo,

Carlos.

Posted: Mon Mar 26, 2007 1:27 pm
by Patricio Avalos Aguirre
Jorge

Prueba con esto

Code: Select all

 (oDbf2:cAlias)->( __dbZap() )
Saludos
Patricio

Posted: Tue Mar 27, 2007 11:17 pm
by Jorge Jaurena
Muchas gracias.

Probe abrir y cerrar el archivo despues del zap y funciona correctamente, increible que a esta altura del partido haya que hacer algo asi para que esto funcione.

Jorge Jaurena