El comportamiento de Access es que cuando metes un registro (por ejemplo, rellenas una línea entera en el subformulario) automáticamente ya te está guardando el registro. Y eso, hasta donde yo sé, no se puede modificar.
Piensa que el ejemplo es un ejemplo "casero", no es una "súper-aplicación" de facturación. Ello implica que:
- El número de factura es autonumérico, lo que significa que si la borras ese número te va a desaparecer de la BD. Es decir, que si creas el 1 y lo borras el siguiente que se creará será el 2, por mucho que quieras que sea el 1 de nuevo. Solución: utilizar el la mecánica del ejemplo que también hay en la web, que es "autonumérico manual", y hacer que ese número no sea autonumérico, sino numérico (siempre y cuando el "error" esté en la última factura introducida).
Por ejemplo, y para que veas que el ejemplo no aspira a ser lo que te comentaba de un "súper-programa de facturación", la aplicación no lleva ningún control de fechas; esto es, que si no vas con cuidado podrías tener la factura 2 con una fecha anterior a la factura 1.
Lo que implica que también deberías programar un control de fechas para evitar la situación anterior.
Además, si se deja el terreno demasiado "libre" para modificar o borrar facturas lo que es la filosofía de una aplicación para facturación deja de tener sentido, creo yo.
- El tema de los registros en el subformulario podría solventarse de la siguiente manera: ahora el subformulario se ve en vista hoja de datos. Deberías cambiarla a vista de formularios continuos y añadir un botón para eliminar el registro. Si te has equivocado le das al botón de eliminar y se te borrará ese registro en concreto.
- Podrías programar un botón en FMenu para eliminar por completo una factura (con los problemas de numeración correlativa que ello conllevaría). Pero para que la eliminación sea completa (de la tabla TFacturas y de TFacturasDetall) deberías irte a la ventana relaciones y, en la relación entre ambas, definirla para "exigir integridad referencial" y "borrar campos en cascada".
En definitiva, que programar una aplicación de facturación un poco más "seria" lógicamente sería mucho más complejo, y la idea del ejemplo es tener una aplicación "para andar por casa", y está explicado para que entendáis cómo se pueden hacer las cosas a nivel relativamente básico.
Otra solución para no perder la numeración es que hagas un abono completo de la factura que esté mal: así tendrías lo mismo dos veces, una en positivo y otra en negativo, con lo que el efecto final seria neutro.
Y no se me ocurre qué mas soluciones puedo darte. Espero que alguna de las apuntadas pueda serte útil.