Ayuda con código de botón borrar!

Hola amigo experto tengo ese código para un botón borrar pero me da
un error me podrías decir como solucionarlo o como usarlo bien es decir
sin dejar de usar la propiedad bufferModeoverride con la opción 5 de
las tablas que uso
&& Marcamos el registro actual como borrado
DELETE
&& Hacemos efectivos los cambios en la tabla real
TABLEUPDATE(.T.)
&& Cambiamos el modo buffer del cursor para que podamos utilizar el PACK
CURSORSETPROP("Buffering",1)
&& Eliminamos físicamente los registros marcados como borrados.
PACK
&& Volvemos al modo buffer que teníamos antes
CURSORSETPROP("Buffering",5)
&& Reflejamos los cambios en el formulario
THISFORM.Refresh
Agradezco de antemano tu ayuda!

1 respuesta

Respuesta
1
¿Y cuál es el mensaje de error amigo?
El error dice así
File must be opened exclusively
y no se aq se refiere ni como hacerlo funcionar bien!!!??
Bien, ahora si, el problema radica en que PACK solamente funciona cuando abres una tabla en forma exclusiva, esto puedes lograr utilizando el gerenciador de ambiente
set exclusive on
o bien, abriendo la tabla con la clausula exclusive, por ejemplo
use clientes  exclusive
Bueno, pero esto le vuelve a tu programa totalmente monousuario, ya que si alguien intenta abrir una tabla en ese momento obtendra un error de Acceso denegado, te explico bien lo del PACK, el pack es utilizado como  bien sabes para borrar definitavament un registro de la tabla, es decir lo que internamente hace es un copiado de la tabla con el mismo nombre omitiendo aquellos marcados por delete, por eso el PACK no es algo que debas usar en tu programa en todas partes, mas bien debe haber un programa especifico que haga esto y que el usuario entre por su cuenta a realizarlo, algo parecido al INDEX, o crear indices, el fox internamente y muchos otros gerenciadores no borran los registros fisicamente, solo los marca, si tu quieres que fox se comporte como si los marcados por delete ya no existen debes usar
SET DELETE ON
asi ya no existiran en los listados, pero al darle nuevamente SET DELETE OFF  se volveran a mostrarse y hallarse por los comandos seek, locate o find, pero bueno, esa es la forma en que trabaja fox y creo que no hay problemas, set delete en ON y ya trabajas, pack es cosa pesada y no puedes hacerlo en multiusuario, no se si me explico amigo, cualquier duda a tus ordenes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas