Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Borrar Registros Totalmente (https://www.clubdelphi.com/foros/showthread.php?t=23958)

h2o_mx 03-08-2005 18:35:35

Borrar Registros Totalmente
 
Hola a todos, tengo un problema, estoy haciendo un programa en delphi y uso una base de datos dbase, pero en una tabla inserto y borro registros continuamente, y lo hace bien, pero cuando abri la base de datos con visual fox, todos los campos que he agregado alli estan solo que estan marcados como eliminados, esto es un problema por que la base de datos esta creciendo fisicamente aun que logicamente no tiene registros, como le puedo hacer para que borre los registros totalmente?., gracias

islu 03-08-2005 19:05:44

Cita:

Empezado por h2o_mx
Hola a todos, tengo un problema, estoy haciendo un programa en delphi y uso una base de datos dbase, pero en una tabla inserto y borro registros continuamente, y lo hace bien, pero cuando abri la base de datos con visual fox, todos los campos que he agregado alli estan solo que estan marcados como eliminados, esto es un problema por que la base de datos esta creciendo fisicamente aun que logicamente no tiene registros, como le puedo hacer para que borre los registros totalmente?., gracias

Los ficheros xBase ( DBF, de Clipper, Foxpro o DBase ) no borran, sino que marcan como borrados. Depende que comentes utilices para acceder a ellos hay algunos que te permiten hacer un Pack del fichero, que lo que hace es eliminar los borrados, reduciendo el tamaño de la BD. Desde Visual FoxPro o dbase puedes desde comandos ejecutar PACK ( ojo el fichero debe estar abierto de modo exclusivo ). Ten cuidado, por que al crecer el número de registros marcados no solo crece el tamaño de la BD, sino que tb enlentece enormemente la apertura de la tabla ( si aunque parezca mentira me ha pasado ), e incluso el insertado.

Los Codebase Components permiten hacer el PACK, pero recuerda que debes abrir en modo exclusivo, por lo que te aconsejo que hagas un .PRG con Visual Foxpro o con dbase, o incluso un ejecutable con Delphi, y lo ejecutes con una tarea programada por las noches, asi al amanecer estara todo perfecto.... :rolleyes:

h2o_mx 04-08-2005 13:44:08

Gracias
 
Muchas gracias es exactamente lo que necesitaba hacer, lo hare por que si no, despues va a ser un gran problema que mejor lo sulocionamos de una vez por todas, nuevamente gracias y hasta luego

coyule 17-01-2007 19:19:37

Entonses por eso cuando borro todo el contenido de una tabla paradox tabla.db con campos autoincrement (+) si tenia 2500 registros y los borro
los nuevos no empiezan de (1)uno si no de 2501
----------------------------------------
ingreso 1
table1

campo1(clave) campo 2(articulo)
1 ------------- x articulo1
2 ------------- x articulo2
3 ------------- x articulo3
4 ------------- x articulo4
---------------------------------------------
al borrar toda la table1 y quiero empezar del uno( ahí esta el detalle )

por que logicamente al poner el primer registro que estoy viendo
debe de empezar de (1)uno y no lo hace

y enpieza asi....
-----------------------------------------------------
ingreso 2
table1

campo1(clave) campo 2(articulo)
5 ------------ x articulo1
6 ------------ x articulo2
7 ------------ x articulo3
8 ------------ x articulo4
-----------------------------------------------------

entoses si se fijan tengo una segunda clave para los
articulos del ingreso2

y eso no me sirve....

BlackDaemon 20-01-2007 16:58:53

Hola coyule no soy un experto en delphi y recién comienzo osea que no se si lo que leerás a continuación te sirva de algo :)

Pero según YO a lo que te refieres del autoincrement en un campo esta bién lo que hace las tablas... por que su concepto lo dice el valor será unico y nunca mas se repertirá y creo que así lo hace, ahora creo que al borrar un registro de una tabla como la que tienes tu de ejemplo.

campo1(clave) campo 2(articulo)
1 ------------- x articulo1
2 ------------- x articulo2
3 ------------- x articulo3
4 ------------- x articulo4

Si borras el campo 1 también sesupone que se borrará el "articulo1" osea que el proximo que insertes en ese campo será otro, aunque sea el mismo producto por ejemplo ya no sería el mismo.. puede que tenga el mismo nombre pero ya no es el mismo es otro por eso lo de :


campo1(clave) campo 2(articulo)
5 ------------ x articulo1
6 ------------ x articulo2
7 ------------ x articulo3
8 ------------ x articulo4

Que en el campo 5 y los demás cumple el concepto de que autoincrement es único .

Creo que lo que hace a una tabla así es el archivo que crea al DBD un archivo.db y un archivo.px y ahí es donde almacena ese autoincrement.

Bueno creo que me lié solo xD pero es lo mejor que pude explicar :)
como dije.. es mi segundo post dando una resuesta que "supuestamente" ayudará a alguien o al contrario la liará mas de lo que está :o

saludos y suerte:)

Lepe 20-01-2007 19:18:56

Un autoincremento jamás se reiniciará de nuevo.

Si lo necesitas frecuentemente (después de cada borrado) no uses un autoincremento, usa un Integer y controlaló tú mismo.

Si necesitas reiniciarlo para entregar el programa al usuario final, usa este hilo.

Saludos


La franja horaria es GMT +2. Ahora son las 21:01:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi