Interceptar Errores en consultas

En un formulario tengo un combobox que se llena a partir de una consulta de actualización, pero si la consulta genera un error, inmediatamente sale el aviso y no logro interceptarlo antes para informarle al usuario que no puede realizar la actualización. ¿Sabes cómo lo podría hacer?

2 respuestas

Respuesta

No podría saber cuando el error saliera, ya que es de actualización, eso es sólo lo puedes definir desde donde toma la informaicon la consulta para saber que están bien los datos a actualizar.

Suerte

Respuesta
-1

Necesito tu base de datos para poderte colaborar, puedes enviarla a [email protected], por favor coloca en el Asunto una breve descripción del problema.

Hola, gracias por tomarte el tiempo para responder. El inconveniente es que tengo distribuida la base de datos, pero voy a tratar de quitarle todo lo que sobra y envierte lo necesario.

Básicamente el problema que tengo es que en una tabla de n campos en el que la llave es nit, se encuentra el registro así:

nit 123456

nombre Pepito.....

. . .

...

...

Un usuario grabó con error este registro y no es 123456 sino que es 123457, entonces mi consulta de actualización lo que hace es cambiar 123456 por 123457 pero 123457 ya existe, entonces pues genera error de clave; lo que necesito es que no salga el aviso de access sino que yo le informo de una mejor forma al usuario que ese nit ya existe y mi pedazo de código es:

on error goto aviso

.

.

aviso

msgbox("ya existe")

Este salto lo hace pero primero sale la ventana propia de accesss informando el error y luego si va a la etiqueta aviso

Gracias.

Debes incluir la captura del Error en el evento Al Ocurrir Error del formulario, más o memos así:

Private Sub Form_Error(DataErr As Integer, Response As Integer)

If DataErr=3722 then 'En este momento no recuerdo si es 3722 o 3705 registro repetido

msgbox "El nit ya existe"

end if

Response=acdataErrContinue ' Esto cancela el mensaje de Access

Hola:

MIra este es el código del botón, hice lo que me dijiste en el evento del formulario al ocurrir un error pero no funcionó.

Private Sub Comando19_Click()
On Error GoTo Err_grave
Dim stDocName As String
If Me.Marco72 = 1 Then
stDocName = "cons_corre_nits"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Call log("entidades", 7)
Else
stDocName = "cons_corre_contac"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Call log("contactos", 7)
End If
Me.combo_nit = ""
Me.Texto69 = ""
Me.Marco72.Value = ""
Me.Comando21.SetFocus
Me.Comando19.Enabled = False
Exit_Comando19_Click:
'' Exit Sub
Err_grave:
If Err Then
MsgBox (Err.Number) 'El error es el 3059
msbTexto = " Este nit o identificación ya se encuentra creada para el tipo"
msbTexto = msbTexto & vbCrLf & " de entidad en la base de datos de Campetrol."
msbTexto = msbTexto & vbCrLf & " "
msbTitu = " IDENTIFICACIÓN EXISTENTE"
msbOpc = vbOKOnly + vbCritical
MsgBox msbTexto, msbOpc, msbTitu
End If
End Sub

Gracias.

También de Colombia.

Debes capturar el Err 3059 en el evento Al Ocurrir un Error y configurar en las propiedades del formulario para que primero se ejecuten los eventos del formulario que de los controles, si no te cuadra, en este caso debes enviarme tu base de datos para consultarla a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas