Empezaré con las malas noticias... Lo que quieres hacer, hasta donde yo sé, es imposible. Access, de manera predeterminada, guarda automáticamente el registro (es decir, la información que has escrito). Eso tiene sus ventajas (como que no debes preocuparte de guardar el registro) y sus inconvenientes (según qué uso quieras darle a la información). En definitiva, que una vez escribes la información queda guardada (salvo que hagas un "undo"), tengas o no tengas botón de guardar registro, ya cierres el formulario, ya cambies de registro o vayas a uno nuevo.
Las buenas noticias: se puede crear un sistema para "simular" lo que quieres. Sin embargo, el sistema no es perfecto: por ejemplo, los autonuméricos podrían jugarte una mala pasada. Y, si estableces relaciones en base a un autonumérico, podría suceder que la información no te quedara correctamente relacionada.
En pocas palabras, que el "parche" sería para la introducción de información relativamente "simple" (resumiendo, si lo quieres aplicar se debe testear para comprobar que funciona todo bien).
Otro inconveniente es que lo que en teoría es más que simple (una tabla y sobre ella un formulario, y ya funciona) se complica un poco, y hay un poco de "trabajillo". Y si el formulario tiene un origen en varias tablas (a través de SQL) yo no te lo recomiendo en absoluto.
Te lo explico a grandes rasgos para un sistema sencillo:
- Supongamos que tu tabla se llama TDatos. Lo que hacemos es copiar esa tabla y pegarla (sólo estructura) como TDatosTmp (Ojo con los autonuméricos!). A esa tabla le añades un checkbox, con valor predeterminado "NO", y de nombre, por ejemplo, [Guardado]
- El formulario que se crea se basa en la tabla TDatosTmp.
- Rellenas el primer registro. Si le das al botón "Guardar" lo que haría el botón es cambiar el valor de [Guardado] a True. (Evidentemente, si no lo guardas -o te olvidas de guardarlo- el check seguirá siendo False)
- Vas rellenando así el resto de registros.
¿Cuál sería la operativa a nivel de eventos y código? En general, sería la siguiente:
- En el evento "Al abrir el formulario" debería ejecutarse una SQL que borrara todos los registros de TDatosTmp.
- En el evento "Al cerrar" del formulario debería ejecutarse una SQL (o un objeto consulta) que te anexara, a TDatos, todos los registros de TDatosTmp, teniendo en cuenta que dicha consulta estaría filtrada por todos aquellos checks cuyo valor es True (es decir, los registros que has dicho explícitamente que se guarden).
De esta manera, como podrás intuir, aquellos registros que sí has dicho que se guarden pasarían a la tabla principal, mientras que aquellos que no has querido guardar se perderían.
Espero que más o menos hayas podido entender la mecánica del funcionamiento. Y, como te comentaba antes, deberías testearla a fondo antes de darla por buena por si surge algún problema de pérdida de registros que sí deberían haberse guardado. Si algo va mal es porque en alguna parte nos hemos equivocado.
Un saludo,
Neckkito