Crear código en un campo de BD Access

Necesito que se auto rellene un campo en un formulario con un código numérico que sea el año actual concatenado con 001, para el primero, 002, para el segundo, etc. El código sería 2018001, 2018002, ...

Lo he hecho en vba de la siguiente manera:

Private Sub codigoFamiliar_GotFocus()
Dim año As String
año = Format(Date, "yyyy")

If Me.IdFitxa < 100 And Me.IdFitxa > 9 Then
Me.codigoFamiliar = año & "0" & Me.IdFitxa
'IdFitxa es autonumérico
Else
If Me.IdFitxa > 99 Then
Me.codigoFamiliar = año & Me.IdFitxa
Else
Me.codigoFamiliar = año & "00" & Me.IdFitxa
End If
End If
End Sub

Pero es un poco complejo y a veces se cuelga; además no sé como ponerlo para que se rellene sin tener que ir al campo expresamente para que rellene, ya que se rellena al perder el enfoque

Estoy seguro que debe de poder hacer de alguna manera más simple de hacerlo sin que sea vba

¿Alguien sabe cómo hacerlo?

1 Respuesta

Respuesta
2

Simplemente con poner:

Me.codigoFamiliar = Year(date) & Format(Me.IdFitxa,"000")

Ya te crea el código con el formato que quieres.

Ahora bien, al cambiar de año, no iniciará automáticamente la numeración en 1 (2019001), salvo que lo hagas tú manualmente en IdFitxa...

Si quieres que tenga reinicio automático en cada año, no puedes usar el campo autonumérico, sino que tendrás que generar tu mismo (por código) el código completo. Aquí te dejo un enlace con varias respuestas sobre este mismo tema, pues la forma de solucionarlo es prácticamente la misma en todas, solo cambia el formato que se le quiera dar al código: Necesito saber cómo género una factura con numeración automática en access vba

¡Gracias! 

Hola de nuevo, 

Una última cuestión respecto a esto. ¿Cuando el número sea mayor que 9 escribirá 20180010 ó 2018010? La idea es que lo hiciera como el segundo caso

Muchísimas gracias

La función format() sirve para formatear textos, números o fechas. En este caso, si le dices que formatee el número a 3 dígitos, te mostrará un número con 3 dígitos, es decir, 001, 038, 990... El "problema" lo tendrás al llegar a 1000, je je...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas