Una secuencia como esta : 001-20 es un numero complejo y hay que diseccionarlo para poder utilizarlo
La primera parte será:
?Left("001-20",3)
001
La segunda será:
?Right("001-20",2)
20
como se desea incrementar la primera parte, hay que 'convertir' ese texto a numero, una función útil para esto es: VAL()
?Val(Left("001-20",3))
1
Ya convertido en numero... a por el mas alto, para ello esta disponible la función de dominio DMax
Y aparecera el primer problema, comillas dobles dentro de comillas dobles (Access comienza a pedir aspirinas) démosle una:
Pero pensándolo bien ¿Por qué un texto y no el campo de la tabla que se llamara ¿Mi_Codigo?
DMAx es una función de dominio, necesita un origen de datos (el dominio = la tabla) ...supongamos que se llama 'Mis_Datos'
pero … puede haber muchos años en esa tabla, digámosle que año deseamos (se supone que el actual)
Disponemos del referente (la segunda parte de ese dato):
y ojo, -estamos tratando con textos ---
Logrado, obtenemos el mayor de los números de ese dominio, que se correspondan con el año actual ¿de cualquier siglo?
Por si no hay datos (devolvería un null) le añadimos la función NZ
Obtenido el mas alto o un cero si no hay ninguno (el primero de cada año), le sumamos una unidad
Y le complementamos con ceros
Estamos cerca del final deseado, añadamos el separador
Y el año en curso
Se apreciara que son cosas básicas (una función muy conocida, tratar textos, sumar …….)