Id correlativo al eliminar un registro

Quisiera saber si es posible, y si es así, como puedo hacer para que cuando elimino un registro los id me queden correlativos sin necesidad de cerrar la base y volver a abrir.

2 respuestas

Respuesta
2

Si el Id es un autonumérico de access, no puedes. Una vez que se crea un número ya no se vuelve a usar en la tabla. Esto quiere decir que si tienes ya los ids, 1, 2, 3, 4 y 5, y borras el registro 5, por mucho que abras y cierres la BD, el siguiente registro tendrá como id 6 y no 5. Lo mismo si borras el 2, ese id ya no lo volverás a tener disponible. La única forma de resetar un autonumérico es borrar todos los datos de la tabla y compactar la BD, o eliminar el campo y crear uno autonumérico nuevo.

Si usas un "falso autonumérico" (por ejemplo así: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/58-autonumerico-manual), es decir, un campo correlativo creado por código, aunque borres el último registro, cuando crees un nuevo registro, te cogerá el último registrado y calculará su consecutivo sin que tengas que hacer nada. Sin embargo, si borras un registro "por el medio", el "falso autonumerico" tampoco te detectará los "huecos" existentes.

Y si el campo no es de tipo "autonumérico", siempre puedes hacer una renumeración de todos los registros, con lo que no te quedarán huecos, pero esta es una opción con la que hay que ir con cuidado si tienes tablas vinculadas, porque la puedes montar muy gorda ...

Respuesta
1

Como le dicen NO puede cambiar el consecutivo de un campo Autonumérico. Si el campo no tiene tablas vinculadas SI puede reiniciar el campo Autonumérico mediante la siguiente Función. (Debe ir en un Módulo)

TABLA DE EJEMPLO NUMERACION INICIAL

Ahora vamos a eliminar los registros y a renumerar el campo "boleta" desde 5. Esto se hace en un procedimiento.

DoCmd.RunSQL "DELETE * FROM tblNrosAsignados;"

ReiniciarAutonumerico("tblNrosAsignados","boleta", 5)

Tabla con la nueva numeración

Observe como cambió el orden del campo Autonumérico "boleta" pero fue necesario eliminar antes todos los registros. No se debe utilizar cuando la tabla esta vinculada. Si quiere conservar el contenido del campo "NroAsignado" tendría antes que almacenarlo en una tabla temporal y después de cambiar el orden del campo Autonumérico de la tabla "tblNrosAsignados" insertar en ésta el contenido de la tabla temporal.

Lo que expliqué es cuando el ID es la Clave Primaria.

Cuando el campo ID es solo Autonumérico después de eliminar el registro puede adicionar estas líneas al procedimiento que realiza la eliminación:

DoCmd. SetWarnings (False)
DoCmd. RunSQL "ALTER TABLE tblNrosAsignados DROP COLUMN boleta"

DoCmd. RunSQL "ALTER TABLE tblNrosAsignados ADD COLUMN boleta AUTOINCREMENT"

Lo anterior retira el campo "boleta" y vuelve y lo crea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas