Botón guardar en formulario

Estimado experto, tengo un pequeño problema en Access, a continuación detallo:
Tengo un formulario basado en una tabla, este formulario lo utilizo como interfaz de captura, el problema radica en que cuando cambio de campo de captura el campo anterior se guarda automáticamente en la tabla, me gustaría cambiar este comportamiento haciendo que guarde unicamente cuando le de click a un botón ("guardar"), el asistente me permite crear un botón de guardar pero este botón guarda por registro... ¿qué puedo hacer?
Gracias!

1 Respuesta

Respuesta
1
No se si hay alguna forma más elegante de hacerlo, pero cuando yo quiero hacer algo así, para tener absoluto control sobre lo que se guarda en la tabla, suelo emplear cuadros de texto que almacenen de forma previa la información.
Por ejemplo, si la tabla "TABLA" tiene un campo llamado "CAMPO1", en el formulario lo que muestro no es ese "CAMPO1", sino un cuadro de texto llamado "campo1txt" que en realidad nada tiene que ver con la tabla.
Cuando el usuario le de a guardar, el código que se debe ejecutar es:
DoCmd.setwarnings false 

Docmd.runsql "insert into TABLA values ('" & campo1txt.value & "')"
Docmd.setWarnings true
Lo de SetWarnings es para que no pida confirmación al usuario de si quiere insertar el nuevo registro. Se supone que si pulsa insertar es porque quiere hacerlo...
En mi caso mi tabla se llama TB_PERSONAS y contiene los campos Nombre, Sexo y Ciudad, en base a tu respuesta cree un nuevo formulario con cuadros de texto independientes (sin origen de datos), a este formulario le agregue un botón (CMDGUARDAR) y en el evento "Al hacer click" agregue el código como sigue:
Option Compare Database
Private Sub CMDGUARDAR_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into TB_PERSONAS values ('" & NOMBRE.Value & "')"
DoCmd.RunSQL "insert into TB_PERSONAS values ('" & SEXO.Value & "')"
DoCmd.RunSQL "insert into TB_PERSONAS values ('" & CIUDAD.Value & "')"
DoCmd.SetWarnings True
End Sub
Pero no guardo... te pido disculpas, ¿me podrías auxiliar nuevamente por favor?
Te lo agradezco mucho!
Perdona Carlos, la estructura del insert no es exactamente esa:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...) VALUES ("valor1", "valor2", ...)
Por tanto en tu ejemplo deberías poner:
INSERT INTO TB_PERSONAS (NOMBRE, SEXO, CIUDAD)
VALUES ("& NOMBRE.Value &", "& SEXO.Value &"," & CIUDAD.Value & ")
Estimado experto, de antemano le agradezco muchísimo su ayuda, guiándome en su respuesta he logrado lo que por el momento deseaba... a continuación mi código y mi pequeña explicación para el que tenga alguna duda igual que la mía...
Option Compare Database
Private Sub CMD_GUARDAR_Click()
DoCmd.SetWarnings False
    If Not IsNull(TXTNOMBREEMPRESA) And Not IsNull(TXTCORTO) Then
    DoCmd.RunSQL "INSERT INTO TB_EMPRESA (NOMBREEMPRESA,CORTO) Values('" & TXTNOMBREEMPRESA.Value & "','" & TXTCORTO.Value & "');"
    MsgBox "HAZ AGREGADO UNA NUEVA EMPRESA"
    Else: MsgBox "EXISTEN CAMPOS INCOMPLETOS EN EL FORMULARIO, LA CAPTURA NO SE GRABO"
    End If
Me.TXTNOMBREEMPRESA = Null
Me.TXTCORTO = Null
DoCmd.SetWarnings True
End Sub
Se trata de una tabla que se llama TB_EMPRESA que contiene los campos NOMBREEMPRESA y CORTO, TXTNOMBREEMPRESA y TXTCORTO son los cuadros de texto que se encuentran en el formulario, los MsgBox son mensajes emergentes que muestran información según sea el caso.
Nuevamente, le agradezco mucho su tiempo, esfuerzo y voluntad de compartir su conocimiento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas