FUNCTION DbProtect(cDbf,nAction)
LOCAL nHandle:=0, cFile
LOCAL cBuffer:=Space(32)
IF !File(cDbf)
nHandle:=FOpen(cFile,FO_READWRITE+FO_SHARED)
DEFAULT nAction:=1
IF nHandle!=-1
IF FRead(nHandle,@cBuffer,32)==32
IF nAction==0 // Proteger
IF SubStr(cBuffer,1,1)<>Chr(26)
cBuffer:=Chr(26)+SubStr(cBuffer,1,31)
ENDIF
ELSE // Desproteger
IF SubStr(cBuffer,1,1)==Chr(26)
cBuffer:=SubStr(cBuffer,2,31)+ Chr(0)
ENDIF
ENDIF
FSeek(nHandle,0)
FWrite(nHandle,cBuffer,32)
ENDIF
FClose(nHandle)
ENDIF
ENDIF
RETURN (NIL)
Francisco Horta wrote:Gracias, revisado y funcionando,,,
salu2
paco
José Vicente Beltrán wrote:Hola a todos después de mucho tiempo.
Yo lo que hago es:
1. cambiar la cabecera para poder abrir la base de datos
2. abrir la base de datos
3. cambiar la cabecera al estado anterior
4. trabajar normalmente con la BD
De esta forma si otros terminales de la red necesitan abrir la BD siempre se la encontrarán cerrada y pueden ejecutar los cuatro puntos anteriores.
Y por supuesto si hay fallo electrico y/o de red las BD siempre se quedan protegidas de las miradas curiosas
Saludos
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 42 guests