Lo que Access hace es localiza el valor máximo ingresado y a este le aumenta 1, lo que tienes que haces es realizar una consulta utilizando el MAX y al valor que te devuelva le aumentas uno.
Hola.
Me temo que eso no es exactamente así. Puedes probarlo tu mismo. Añade un registro en una tabla que tenga un campo autonumerico como campo llave y después borralo. Cuando añadas otro registro, verás que no te asigna el número del que borraste, sino el siguiente. Por tanto, si haces una consulta antes de añadir el ultimo registro, te devolverá el mayor valor encontrado, que no necesariamente es el anterior al que va a añadir la próxima vez.
¿Me explico?. Para entendernos: tienes tres registros, añades uno mas y Access le da el número 4. Borras ese registro y cierras la tabla. La abres de nuevo y añades otro registro. Access le da el numero 5, con lo cual te quedarán los registros 1, 2, 3 y 5. Si antes de añadir este ultimo registro haces una consulta utilizando MAX, te devolverá 3, no 4.
Yo no se si al hacer Recordset.AddNew Access ya le asigna un valor al campo autonumerico, pero pienso que no, que lo hace cuando le pones el .Update. La consulta con MAX sóloserá efectiva si sabes de antemano que no se ha borrado ningún registro.
Conocer el indice por el que va un autonumerico, debe de poder saberse. No es mas que una secuencia como en Oracle y fisicamente access tiene que guardarse el valor en algun sitio.
Alguien ha conseguido averiguar como saberlo? Gracias.