** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Guardar al hacer click en un boton
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoGuardar al hacer click en un boton

 Responder Responder
Autor
Mensaje
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Tema: Guardar al hacer click en un boton
    Enviado: 19/Agosto/2015 a las 18:01
Hola, os cuento mi duda

Tengo una tabla de datos con su formulario de entrada de datos correspondiente y funciona perfectamente. Pero...

Lo que me ocurre es que cuando meto datos con mi formulario, éste va escribiendo directamente sobre la tabla. Yo necesito que escriba los datos solo cuando pulse sobre un botón de guardar. Esto en principio me parecía fácil, creo un botón, le doy la función de "Guardar registro", y ya está. Bien, esto ya está hecho y es posible que cumpla su función, pero realmente el formulario sigue escribiendo en la tabla antes de que yo pulse en mi botón (no sé si lo hace mientras estoy escribiendo o cuando salgo del formulario).

En fin, que necesito que me escriba en la tabla una vez que le he dado a mi botoncito. De paso, no estaría nada mal que este botoncito me limpiase el formulario para poder meter otro registro.

Muchas gracias.
Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4898
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 19:03
Hola hscnet
El comportamiento normal de access es que al salir del registro en automático se graba el mismo, mientras no salgas de ese registro no se a guardado.
Puedes tener un formulario independiente y mediante recordset (o consulta de actualización) rellenar la tabla, o puedes buscar información sobre el evento Dirty y si no autorizas los cambios deshacer lo que escribiste.
 
Saludos.
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 19:04
Esa metodología no es la habitual de Access, supongo que vendrá heredada de otros entornos.

La solución:
.- Un formulario independiente

A golpe de botón, se ejecutaría una consulta de datos anexados que introduciría el registro en la tabla y 'limpiase' el entorno

La consulta se puede crear con el asistente y ejecutar mediante una macro.

Por cierto, los registros se guardan:
.- al ir a uno nuevo
.- al salir del formulario
.- de forma volutiva ==> cuando se le indique
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 19:11
Buenas tardes a todos,
como ampliacion a lo que comenta Emilio,
puedes tener una tabla temporal que es la que tienes conectada al formulario y una tabla donde guardaremos los registros.

Una vez que se hayan hecho las validaciones oportunas, en ese botoncito con una consulta de actualización (INSERT INTO) guardas los registros en la tabla que deseas.

Después con otra consulta borramos los registros de la tabla temporal.

Ya comentas.


Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 20:29
Hola de nuevo, muchas gracias por las respuestas tan rápidas. Echando un vistazo creo que me quedo con lo de la consulta/recordset, pero tengo algunos problemillas. Os voy contando...

Primero, no controlo mucho el manejo de Recordset y, segundo, uno de mis formularios (tengo dos, uno de entrada de datos y otro de edición), el de edición, no puede ser independiente porque recoge los datos de un buscador que he creado en el encabezado del formulario y que los manda a los campos, que obviamente no son independientes.

En fin, espero haberme explicado bien. A ver si me podéis encontrar solución al problema.

Muchas gracias.
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 21:20
Una pregunta por curiosidad
¿que razonamiento has utilizado para utilizar una via u otra?

Para los recordset tendrás que echarle un vistado a tutoriales de DAO o ADO.

Saludos
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 21:38
¿Qué problema puede haber si se duplica el formulario en cuestión y a uno (el de introducir nuevos datos) se le quita 'la paja' que sobre y además 'el origen de datos' (lo que lo convertiría en independiente, pero conservaría la estructura).

Para crear la consulta (no hace falta estudiar nada ni liarse con recordset ADO o DAO o ....) es tan sencillo como crear una consulta y NO SELECCIONAR TABLA ALGUNA.

Con ella en blanco en el primer espacio se crea un nombre y se le indica un campo del formulario, en el segundo otro y asi hasta tener TODOS, quedaría algo como:
1.- AAA: Formularios.[nombre del formulario].Campo1
2.- AAB: Formularios.[nombre del formulario].Campo2
3.- AAC: Formularios.[nombre del formulario].Campo3
...
N.- AAN: Formularios.[nombre del formulario].CampoN

Nota 1: para la ruta de los campos (Formularios.[nombre del formulario].CampoN) se puede utilizar el generador (los tres puntitos)

Nota 2: yo los he llamado 'aaa, aab ...aan) pero pueden tener otro nombre (eso si, para no liarla que NO SEA igual al de origen o destino)

Si se ejecuta (con el formulario abierto y datos en sus posiciones) deberían aparecer los datos del formulario, si es asi:
.- Se modifica a CONSULTA DE DATOS ANEXADOS (un click en el menú)
.- Preguntara la tabla de destino (se le indica cual)
.- Aparecerá una línea mas, en el desplegable (y bajo cada campo que antes creamos) se selecciona el campo de destino (que será uno de los de la tabla antes seleccionada).

Cuando se ejecute esa consulta (se puede hacer con una macro que responda al evento click del botón creado para eso), se añadirá un registro a la tabla con los datos que hubiere en ese momento en el formulario ... (fin)
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 19/Agosto/2015 a las 23:48
Hola de nuevo y nuevamente gracias. Voy por partes...

Miralles, simplemente me ha parecido algo más fácil para mí, más de mi dominio. Como ha indicado Feijoo en la última respuesta, eso es una cosa que creo que sé hacer sin problemas. Ese ha sido mi razonamiento. Pero puede que sea erroneo.

Feijoo, muchas gracias. Creo que lo he pillado. Lo voy a implementar y ya te contaré. Si alguna dudilla, te contaré antes...SmileSmileSmile
Arriba
alexmubo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Diciembre/2010
Localización: Colombia
Estado: Sin conexión
Puntos: 464
Enlace directo a este mensaje Enviado: 28/Agosto/2015 a las 00:59
Hola, yo para el caso que planteas siempre utilizo lo siguiente, como dicen ellos un formulario independiente, el truco para no tener que renombrar campos, es que al principio pongo la tabla original como origen de registro a ese formulario, una vez creados los campos, elimino el origen de registro y pongo todos los campos como independientes.

Ahora en un botón agrego el siguiente código en al dar click:

Dim strsql As String

strsql = "INSERT INTO TABLA (Campo1,Campo2, Campo3, Campo4) " _
& "SELECT Forms!FORMULARIOINDEPENDIENTE!Campo1, Forms!FORMULARIOINDEPENDIENTE!Campo2, " _ 
& "Forms!FORMULARIOINDEPENDIENTE!Campo3, Forms!FORMULARIOINDEPENDIENTE!Campo4 "

DoCmd.RunSQL strsql 

Donde TABLA seria tu tabla a la que quieres cargar los datos, Campo1,Campo2, Campo3, Campo4, representan los campos a los que quieres escribir y la segunda parte es el nombre del formulario que acabas de crear y el nombre de cada campo que tiene el dato y que quieres llevar a la tabla.

Ya le puedes poner cosas como preguntar si realmente quieren o no guardar esos registros y etc.
Dejar que todos den sus ideas es mas inteligente que pensar que uno se las sabe todas.
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 29/Agosto/2015 a las 18:33
Hola de nuevo a todos. Me pongo otra vez en contacto con todos vosotros simplemente para pedir al administrador que dé el hilo por cerrado. Al final, no he conseguido lo que buscaba pero me he dado por satisfecho con el hecho de que Access guarde el resultado cuando salgo/cambio de registro. Así me vale.

Muchas gracias de nuevo. Un saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable