Hay mucha literatura sobre 'falsos autonumericos' y todo se basa en definir y tratar por separado las diferentes partes de esa expresión
En principio parecen ser tres, una constante (dos caracteres) la variable que define a la empresa (cinco caracteres) y el valor incremental para cada empresa (cuatro caracteres).
Para crear un nuevo dato emn ese conjunto, es indispensable conocer la empresa implicada (sin ese dato, el proceso no funciona) y ese dato no esta (de momento) definido.
El resto ...
El incremental (para cualquier empresa) siempre será el siguiente al mayor existente y los existentes se obtienen con la función DMax tomando parte del texto y convirtiéndolo a numero.
Como se desconoce de donde procede el dato 'empresa' y su formato de origen, se partirá del supuesto de que su formato será (00000)
Obteniendo el incremental genérico:
zzzzz = DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]")
Como deseamos diferenciar empresas, aplicamos un filtro:
zzzzz = DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquà la empresa] & "'")
Si no existen datos (la primera factura de una empresa) la función devolverá un null, la función NZ adecuadamente aplicada nos devolverÃa un cero:
zzzzz = Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquà la empresa] & "'"), 0)
Tenemos el mayor de los datos de la empresa (o un cero), asi que lo incrementamos:
zzzzz = Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquà la empresa] & "'"), 0) +1
Pero ello nos devolverÃa un 1, 2, 3 ...... y asi no nos es valido, le damos formato a cuatro dÃgitos:
zzzzz = Format(Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquà la empresa] & "'"), 0) +1,"0000")
Ya disponemos del numero, solo hace falta añadir empresa y constante:
zzzzz = "NA" & [aquà la empresa] & Format(Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquà la empresa] & "'"), 0) +1,"0000")
Y recordar que (en este ejemplo) se supone que la empresa viene 'de fabrica' con el formato '00000', si no fuera asi, se le puede aplicar a función format (como antes se aplico al numero incremental) para obtener de un uno (1) un '00001'
El método esta recreado aquà y sobre la marcha, espero que no me quedase algo en el tintero.