Como complementar el año en un cuadro de texto en access

Quisiera pedir su ayuda, tengo una base de datos en la que añadí un código asociado a un evento del formulario para para que enumere de forma automática cada vez que realizo un registro y esto me funciona muy bien, pero ahora tengo la necesidad de añadir el año de forma adjunta al código, por ejemplo lo que quisiera ver es (10-2020), mi pregunta es la siguiente, ¿se puede completar el código que estoy usando para lograr el resultado que busco de manera confiable o seria necesario usar otra alternativa?

El código que uso es el siguiente:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
Me.codigo = Nz(DMax("codigo", "hoja de ruta")) + 1
End If
End Sub

2 respuestas

Respuesta
1

Así:

Me.codigo = Nz(DMax("codigo", "hoja de ruta")) + 1 & "-" & Year(Date)

hola nuevamente, intente utilizar la solución pero tuve el siguiente problema, al utilizar el código me sale el siguiente mensaje:

y luego me conduce al editor VBA mostrándome lo siguiente

por favor si me pueden ayudar, nuevamente.

Si ti campo Código es de tipo numérico, al añadirle el "-", el código deja de se un número para ser un texto. La solución sería cambiar, en el diseño de la tabla, el tipo de dato de número a texto.

Respuesta
1

En el caso de que quieras que "recomience" por 1 al cambiar el año,

Private Sub Form_Current()
If Me.NewRecord Then
Dim a
a = Nz(DCount("codigo", "variable", "year([fechafactura])=year(date())")) + 1
Codigo = Format([a], "00000") & "/" & Year(Date)
End If
End Sub

deberías poner

En el caso de que alguna vez tuvieras que eliminar algún registro, en vez de Dcount por Dlast

¡Gracias! 

gracias por las respuestas puntuales, pero en este caso quiero ser yo quien determine a través del código el año que aparecerá (como si fuera un valor complementario automático fijo que no cambia), de manera que aunque se cambie la fecha manualmente el año no se modifica como un mecanismo de seguridad.

Si lo quieres hacer totalmente independiente de la fecha factura, aunque pongas un valor de otro año, que te lo contabilice en este.

Puedes poner el control código como bloqueado, así no se puede cambiar y el código del control ponerlo como

Private Sub Form_Current()
If Me.NewRecord Then
Dim a
a = Nz(DCount("codigo", "variable", "right([codigo],4)=year(date())")) + 1
Codigo = Format([a], "00000") & "/" & Year(Date)
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas