Por qué no guarda cambios en la tabla?

Error 3020, no permite editar
Por tivi » Vie Sep 01, 2017 6:46 pm

En un formulario pensado para modificar registros existentes de una tabla, tengo dos comandos uno para guardar los cambios y otro para deshacerlos. Bien, pues ninguno de los dos permite ejecutar el código. El mensaje que me muestra es error 3020. Os adjunto captura de pantalla y el código de los dos botones.

Botón guardar:
Private Sub Guardar2_Click()
If Not IsNull(ImporteBruto) And Not IsNull(TipoIVA) And Not IsNull(FechaPuestaMarcha) _
And Not IsNull(Garantia) And Not IsNull(nPedido) Then
MsgBox ("Registro Guardado")
DoCmd.RunCommand acCmdSaveRecord
Me.TabCtl508.Pages(0).Enabled = True
Me. TabCtl508. Pages(0). SetFocus
Me. BuscaN. SetFocus
ElseIf IsNull(ImporteBruto) Then
avisoBruto.Visible = True
Me. ImporteBruto. SetFocus
ElseIf IsNull(TipoIVA) Then
avisoIVA.Visible = True
Me. TipoIVA. SetFocus
ElseIf IsNull(FechaPuestaMarcha) Then
Me.avisoPuestaMarcha.Visible = True
Me. FechaPuestaMarcha. SetFocus
ElseIf IsNull(Garantia) Then
Me.avisoGarantia.Visible = True
Me. Garantia. SetFocus
ElseIf IsNull(nPedido) Then
Me. NPedido. SetFocus
Me.avisoNPedido.Visible = True
End If
End Sub

botón cancelar:

Private Sub Cancelar1_Click()
On Error GoTo errorcancelar1

DoCmd.RunCommand acCmdUndo
Me.TabCtl508.Pages(0).Enabled = True
Me.TabCtl508.Pages(0).SetFocus
Me.buscaN.SetFocus

errorcancelar1:
If Err.Number = 2046 Then
MsgBox ("No hay cambios que deshacer")
Me.TabCtl508.Pages(0).Enabled = True
Me.TabCtl508.Pages(0).SetFocus
Me.buscaN.SetFocus
Exit Sub
End If
End Sub
Adjuntos
Error3020.png

1 Respuesta

Respuesta
2

¿Has probado a poner

if not isnull([importebruto])....

¿Y has mirado en las propiedades del formulario-datos-permitir ediciones=si?

De todas formas no entiendo el botón cancelar.

Si en el código del botón pones, por ejemplo

If not isnull...................... then

 dim respuesta as byte

respuesta=msgbox("¿ De verdad quieres guardarlo? ",vbokcancel, "Luego no digas que no te avisé"

if respuesta=vbok then

docmd.runcommand accmdsaverecord

elseif respuesta=vbcancel then

docmd.cancelevent

End if

end if

ok. tomo nota de cara al comando deshacer

pero yo creo que el problema lo tengo a la hora de intentar modificar los datos del registro. Estoy usando un combo para localizar el registro que quiero modificar. Cómo puedo hacer para abrir el formulario en modo edicción del registro localizado mediante el combo?

Vamos a suponer que el formulario lo tienes como Permitir ediciones=no. Basta con poner en el evento Al recibir el enfoque del combinado

me.allowedits=true

Si abres el formulario e intentas cambiar algo no te dejará, pero una vez que pongas el cursor en el combinado, ya te permitirá elegir lo que sea y en el registro que salga cambiar datos. Una vez que lo cierres, se repetirá el proceso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas