Eliminar fila en tabla de visual fox pro

Quisiera solicitar su apoyo tengo el problema que quiero eliminar completamente una fila de una tabla de visual fox pro pero no se que comandos son necesarios para realizar dicha acción agradezco su apoyo.

Respuesta
1

Después de varios años fuera del foro, me reintegro a través de tu consulta hehe! Es un placer colaborar!

Esa pregunta (Con titulo Comando Pack) yo la había contestado hace tiempo atrás en este mismo foro y como se podía proceder para eliminar "fisicamente" el registro de la tabla dbf. Acá te dejo el link para que leas el código y así nos ahorramos espacio y reutilizamos el foro... hay que reciclar! XD El link:

Comando pack

Ahora... La integridad de una base de datos es un tema un poco... debatible! Yo soy del criterio que si y solo si es ultra mega super duper necesario eliminar físicamente un registro con Pack, pues que se haga. No obstante, soy seguidor de mantener siempre tus registros y utilizar la opción de "marcado de eliminación" del comando DELETE del Fox y setear SET DELETED ON|OFF para así mostrar o no los registros marcados para eliminación. En lo personal, yo agrego un campo "Estado" donde coloco una A para aquellos registros que voy a ocupar y cuando elimino, solo cambio la A por una I de inactivo... y así uhhhh me va muy bien! Las consultas son más "directas" y ágiles evaluando solo un campo más... (Select * FROM mitabla WHERE estado = 'A') La razón: uno nunca sabe cuando necesitara traer a la "vida" los registros o cuando un cliente querrá volver a usarlos...! Una vez paso que un cliente quería más espacio en su disco y mando a borrar físicamente transacciones de muchos años atrás. A los meses, el fisco le hizo una super auditoria y como borro los registros, no pudo demostrar muchas cosas! Y le fue mal con la multa. Foxpro y su generador de base de datos es potente... pero si la cuestión es el espacio que ocupan registros que no se usan con mucha frecuencia, podes cambiarte a un motor de base de datos más estable y con mayor capacidad (Firebird es gratis, bastante fácil y harás maravillas con el... luego no querrás usar más el DB de fox hehe! ). Si no mal recuerdo, las tablas dbf de fox aguantan hasta 2GB...! Bien... es solo mi opinión.

Acá mi blog (algo desactualizado sin entradas tan recientes je je), algunos tips quizás te sirvan! Prometo ponerme al día... wowww cuanto tiempo ha pasado hehe! Suerte! Y un abrazo!

A tus ordenes para cualquier consulta.

Desde Managua, Nicaragua!

Ravenn! :) :) :)

1 respuesta más de otro experto

Respuesta
1

¿Te refieres a eliminar un registro de una tabla verdad?... en ese caso primero te posicionas sobre el registro (fila) que deseas borrar y usas el comando DELETE que lo marca para borrar; luego solo usas el comando PACK que elimimar completamente todos los registros marcados de la tabla.

Por otro lado si lo que en cambio deseas hacer es borrar un campo o mejor dicho una columna de una tabla; puedes usar el comando ALTER TABLE DROP COLUMN <NombreDelCampo>

¿Si quisiera eliminar el registro de una tabla y solo una consulta el comando pack hace que la fila se corra hacia arriba? ¿O siempre me queda un espacio en blanco en la tabla? Y gracias por responder.

El comando Pack lo que hace es eliminar totalmente el registro de la tabla, comprimiendola; no queda el registro en blanco sino que es como si desplazara todos los registros inferiores un lugar hacia arriba como dices.

La explicación completa del funcionamiento de Pack es así:

Cuando se ejecuta PACK, copia todos los registros que no están marcados para borrar a una tabla temporal. Cuando se termine de ejecutar PACK, FoxPro eliminará la tabla original del disco y cambiará el nombre de la tabla temporal por el nombre de la tabla original.

Por esto es importante que para que éste comando funcione la tabla debe ser abierta en modo exclusivo es decir (USE <NombreDeTabla> EXCLUSIVE) de otro mdo te dará un mensaje de error indicandote que debes abrirla en modo exclusivo primero. Aunque si el parametro SET DELETE está en ON y usas DELETE en el registro no se visualiza el registro aunque esté y solo lo elimina completamente al usar PACK; y no solo el registro actual marcado para borrar sino que elimina todos los registros marcados con DELETE.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas