Consulta sobre armar PORQUE

Hola LLodax, espero que me puedas ayudar y orientar con el siguiente problema que tengo:
Estoy armando una base de datos para un colegio, tenia estas tablas con la Llave primaria autoincremental
- Plan de estudios (idplan - nombre)
- Carrera (idcarrera, Nombre, idplan)
- Materia (idmateria, nombre, curso, idcarrera)
Hasta ahí todo bien, cargaba los datos desde Vb6 bien, pero mi profesor pidió que la clave primaria no sea autonumérica, que sea una concatenación de las tablas.
Ejemplifico para que se entienda mejor
QUE la tabla carrera sea el nombre del plan (q es int) más ir incrementando su correspondientes ID
Ejemplo: (tabla plan de estudios)
IdPlan Nombre
1 2000
2 2010
Tabla carrera:
IdCarrera Nombre
20001 Contador Publico
20002 Abogacía
21001 Abogacía
Tabla materia:
IdMateria Nombre
200021 derecho Penal
200011 Matemática
Te cuento que no estoy pudiendo descifrar como actualizo esos id desde vb6.
Si hago esto funciona:
rs.Open "SELECT MAX(id_carrera) AS mayorvalor " & _
            "FROM Carrera " & _
            "WHERE id_plan_estudio =  '" & lstPlan.ItemData(lstPlan.ListIndex)
Pero tengo un error cuando no hay datos cargados en ese plan, el recordset pareciaera como que trae un dato Null y no lo estoy pudiendo manipular
Bueno espero que me puedas orientar un poco, si te parece que están bien las tablas y si la actualización seria eso, solo preguntar por el mayor valor y aumentar en uno.
Te dejo un saludo, gracias y perdón si te puse el código de Vb acá q es de base de datos, no se si manejas vb, cualquier cosa te podría detallar mejor el error q tengo en vb.
Saludos

1 Respuesta

Respuesta
1
Bueno la verdad que no manejo mucho VB pero bueno te voy a dar una idea y a ver si te sirve para poder aplicarla. Primero ejecutaría una sentencia como la que tienes ahí que calcule el mayorvalor y lo guardaría en una variable y esa variable por defecto la incializas a 0 y luego en el INSERT metes que inserte como id esa variable + 1, así si no hay ningún valor lo que hará será meter 0+1 q será 20001 o 21001 por defecto la primera vez y luego ya como al calcular será 1 pues te insertará 20002 o 21002.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas