El metodo Zap() funciona bien?

Post Reply
Jorge Jaurena
Posts: 145
Joined: Fri Oct 21, 2005 6:35 pm

El metodo Zap() funciona bien?

Post 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
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post 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.
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

Jorge

Prueba con esto

Code: Select all

 (oDbf2:cAlias)->( __dbZap() )
Saludos
Patricio
Jorge Jaurena
Posts: 145
Joined: Fri Oct 21, 2005 6:35 pm

Post 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
Post Reply