Cómo crear un campo clave principal que contenga texto y número correlativo en Access 2013

Tengo un campo tipo texto NOMBRE que es mi llave principal en esa tabla. Necesito que contenga la información de otro campo TIPOEQUIPO más el número correlativo (autonumérico) según el campo TIPOEQUIPO seleccionado anteriormente. Esta lógica me serviría para dos casos: prioridades A, B y C más el número 00001, 00002, 00003 en un formulario... Y para una numeración tipo factura FA0001, FA0002, PC0001, PC0002 en otro formulario...

He revisado otros post, pero desconozco la cuestión de la condicional que necesito del campo TIPOEQUIPO. Por otro lado, un campo de tipo calculado no me resuelve el caso porque para empezar no lo puedo usar como llave principal.

1 respuesta

Respuesta
1

No me ha quedado claro lo que preguntas, pero supongamos que en el campo Nombre quieres que te aparezca en el formulario como A0001. En vista diseño del formulario en las propiedades del control Tipoequipo, en eventos-Después de actualizar, crea un procedimiento de evento y entre Private Sub y End Sub escribe

Nombre=[tipoequipo]& "" & Format(Me.CurrentRecord, "0000")

En caso que quieras que cada letra empiece siempre en el 0001 en vez de ese código pon

En eDim a As Integer
a = Nz(DCount("tipoequipo", "nombredelatabla", "tipoequipo=forms!nombredelformulario!tipoequipo"))
Nombre = [tipoequipo] & "" & Format(a, "0000")

Muchísimas gracias por la respuesta!! 

He puesto el código de la segunda opción que me das porque es justo lo que quiero. Pero la numeración no es del todo precisa. 

Así tal cual, el resultado del primer registro es S0000. Si yo lo cambio y escribo S0001 (porque es el que necesito), el siguiente folio me sale S0003... ¿en qué está mi error?

Sólo no funcionó en el primer registro... para el resto de las letras funcionó bien, desde LETRA+000X. Afortunadamente fueron pocos los registros que corregí :) 

Muchísimas gracias!! 

Eso pasa porque ya tenías registros en la tabla. Si, digamos partes de cero, o sea, que vas a poner el primer registro en una tabla vacía, tienes que ponerle

a = Nz(DCount("tipoequipo", "nombredelatabla", "tipoequipo=forms!nombredelformulario!tipoequipo"))+1

Para que cuente 0registros + 1 = 1 en el primer registro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas