Duda sobre Access

Tengo una base de datos en Access que uso desde un programa en Visual Basic. El programa es un curso multimedia, que consta de temas que se dividen en lecciones.
El identificador principal de la tabla Tema es numero_tema, y el identificador principal de la tabla Lección es numero_leccion.
Quiero desarrollar un programa que permita modificar la estructura del curso, es decir, que si tengo un tema 1 y un tema 2 y quiero añadir un tema entre estos dos, el tema 1 sigue siendo el tema 1, el tema 2 es el insertado y el tema 2 pasa a ser el tema 3.
La pregunta es la siguiente:
Al insertar en la tabla Tema la nueva tupla (cuyo identificador es 2),
¿Se producirá un error? ¿Cómo hago que el identificador del tema 3 (antiguo tema 2) pase a ser 3? ¿Lo hace Access automáticamente?
Me urge resolver este problema. Estaría muy agradecido si pudieras echarme un cable.
Gracias.

1 respuesta

Respuesta
1
Para poder hacer apropiadamente lo que pretendes, debes usar un campo numérico para los identificadores, evitando que sea autonumérico.
De esta forma, puedes controlar por código, o manualmente, la numeración de los temas, o de las lecciones.
Te planteo este método porque las tablas de Access no permiten insertar una fila entre dos filas (Tal como lo hace Excel), es una base de datos, y los registros nuevos se añaden siempre al final, otra cosa es que luego lo podamos ordenar o indexar de diferentes maneras, o modificar a posteriori mediante código.
Podemos crear un numerador automático con código VBA y volver a renumerar en base al criterio que decidamos. O por el contrario, si estamos tratando pocos registros podemos hacerlo manualmente.
También podemos utilizar consultas de actualización para modificar los datos, ordenar los registros en base a un criterio, y volver a actualizar la información que nos interese modificar.
Planteas el desarrollo de un programa para modificar la estructura del curso, de forma que te permita insertar temas. Este proceso a priori parece sencillo, pero es más complejo de lo que aparenta.
Cuando insertas un tema nuevo, lo haces, como te comentaba al final de los registros, este tema tiene que tomar el número de otro, y antes de realizar este proceso, tiene que volver a asignar numero al tema que sustituye, y a continuación habrá que asignar número al resto de los registros de forma secuencial hasta el último.
Esto es posible realizarlo con código VBA seteando el recordset, ordenándolo bajo unos criterios coherentes como el número de tema y recorriendo todo el grupo asignando los nuevos valores. Lo que no se es si deseas hacerlo con Access o con Visual Basic.
Creo que en lo que te explico queda claro que Access no lo hace automáticamente, así que te tocará a ti crear ese automatismo en la linea en que te vengo comentando.
Espero haber aclarado tus dudas, y si quieres ampliar información sobre numeradores automáticos, o sobre como setear un recordset puedes consultar entre mis respuestas. Si no encuentras lo que buscas puedes volver a realizar otra pregunta, estaré gustoso de atenderla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas