Crear clave primaria letra + numero SQL server

Brownsea te cuento mi probleba a ver si me podes dar una mano:
Soy bastante novato en SQL y siempre que use claves principales usé la propiedad Autonumeric, pero ahora necesito que una clave que sea letra + numero.
Las letras la obtengo de un combobox según lo seleccionado podría guardar el valor en un campo de la tabla, pero no tengo claro como podría guardar el número o si debería guardar ambos en un solo campo.
Autonumeric solo me funcionaria si tengo una sola letra A-1, A-2 ... A-100 pero son 7 letras y necesito que todas las letras inicien desde 1 (B-1, D-2, C-2 etc).
¿Podrías orientarme como debería proceder?.
Estoy trabajando con Visual Basic 6 y SQL server 2005 y lo que estoy tratando de hacer es el alta de un alumno según la carrera que elija en el combo le genere un legajo.
Abogado "A-1564", Programador "P-451".

1 respuesta

Respuesta
1
Según tu problema te recomiendo lo siguiente, debes que crear un campo que almacene el código concatenado (A-1... B1... C-1) ya tu debes manejar como conseguir el numero siguiente mediante un max al max(cast(susbtring(columna, 3, 3) as int))y sumarle un 1.
Ahora, tu llave primaria debe seguir siendo un autonumérico y tu estructura deberá quedar de la siguiente forma
ID(numérico) campo
1                     A-1
2                     A-2
3                     B-1
Etc...
Hola Brownsea muchísimas gracias por reponer tan rapido, pero como te dije que soy bastante novato con SQL
no entendí ni en lo más mínimo el código que me escribiste.
Trate de investigarlo y meter mano, pero me esta secando la cabeza así que recurro nuevamente a vos
¿podrias orientarme solo conosco la sentencia Max, pero tambien me mareó el Max a Max
"un max al max(cast(susbtring(columna, 3, 3) as int))y sumarle un 1." ¿? ahi me mareo podrias mas o menos explicar para que funcion cumplen esas sentencias
Hay algo también que no me esta cerrando yo la carga la inicio con una tabla vacía,
por dar un ejemplo, abro así : rs.open "SELECT * FROM Alumno" ¿ahí ya debería agregar para que me traiga el máximo del campo id_xxx?
Otra cosa es que la llave primaria ahora la tengo como varchar creo que no importa que sea numérica, el programa es para la facultad y con que ande ella estoy conforme.
Espero que cuando tengas un timepito puedas ayudarme, desde ya gracias.
Saludos!
A ver, al parecer te confundí un poco, me exprese mal y no es un max al max, sino usar la sentencia que te pasé, trataré de ser lo más explicito y ajustarme a lo que me indicas.
1. Como tu tienes la letra desde un principio porque la tienes de un combobox puedes hacer lo siguiente para obtener el máximo según la letra:
    Asumire lo sgte:
    Create table Tabla (
    Id varchar(5) --el id tendrá los sgtes datos A-1, A-2... B-12, B-13...
    )
       select isnull(max(substring(id, 3, 3)), 0)+ 1     --Obtenemos el maximo del valor por 
                                                      --   letra usando los tres ultimos digitos y en caso que  
                                    --No haya valor (isnull) le pondrá el valor de 0 y luego le suma 1.
        From tabla
       where substring(id, 1, 1)= 'b'   -- En este caso obtendremos el maximo para la B
2. En el caso de tu tabla alumno, puedes hacer un select de la sgte forma:
select isnull(max(id_xxx), 0)+1
From alumno
Acá ya obtienes el id =1 en caso este vacía la tabla.
Muchas Gracias, la verdad que no tengo todo claro pero investigare en las cosas que pusiste, te agradezco por tu tiempo.
Cuando tenga alguna nueva duda te consultare, si es posible.
Saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas