Eliminar un mensaje de error cuando cierro un formulario

Tengo un formulario llamado Pedido de cliente, cuando lo abro y después lo cierro sin completar campos me sale el siguiente error: "El motor de base de datos de Microsoft Access no puede encontrar un registro en el nombre> de la tabla <con el nombre> de los campos de coincidencia de <claves. (Error 3101)". ¿Cómo puedo hacer para que no aparezca este mensaje de error?, ya que no se hizo nada en el formulario, unicamente abrirlo y cerrarlo enseguida.

1 respuesta

Respuesta
2

Si el formulario tiene acciones programadas para que se ejecuten al abrirse, la velocidad que se aplique para cerrarlo no solucionara el problema (ya habrá activado su propiedad Dirty que es el indicador de que hubo cambios).

O bien se eliminan esas acciones o se programa un botón de cierre que retroceda los cambios y permita cerrarlo sin mensajes de error.

Hola! Muchas gracias por su respuesta. El formulario tiene acciones para que se ejecuten al abrirlo, la misma es:

Private Sub Form_Current()

If Me.NewRecord Then
Me.PedidoNo = Nz(DMax("PedidoNo", "10 Pedido de cliente")) + 1
End If

End Sub

No puedo eliminar este código, ya que se hizo para un campo autonumérico personalizado.

¿Cómo se programaría ese botón? ¿Seria algún código para eliminar carteles de errores?

Una forma de lograrlo es verificando que el registro esta incompleto (que no tenga valor asignado un campo que sea requerido o indispensable)

En el evento que da error (posiblemente el de 'antes de actualizar') se añade una línea como esta:

If Me.[el campo requerido] = NULL And Me.Dirty Then Me.Undo

La propiedad Dirty se activara al adjudicar un numero (el de la factura) y si se cumple que un campo que sea requerido (por ejemplo el del cliente o la fecha ..) tiene un valor NULL (porque aun no se le adjudico dato), envía el comando UNDO que vuelve el formulario al estado original y se cerrara sin problemas (ni se incordia la numeración las facturas).

Hola! Muchas gracias por la respuesta. Estuve probando el código que mandaste y no funciona, sigue apareciendo el mismo cartel de error. Lo puse en los eventos "al cargar" y después probé con el evento "antes de actualizar" pero no funciona.

Añade un punto de interrupción (se parará cuando llegue a el) o una orden (STOP) al principio del evento.

Así se sabrá si pasa por el evento (y cual es el evento) y además se podrá verificar si Dirty esta activado y también el valor real del cuadro de texto que se utiliza como referencia (puede ser un NULL o un valor por defecto que se le asigno en el diseño de la tabla)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas