Manejo de errores en un procedimiento

Ya me habías ayudado antes para evitar el duplicado de registro. Mi problema es que tengo un proyecto en visual basic conectado a access ya pude capturar el error del duplicado pero en ese mismo trocedimiento tengo 2 errores el del duplicado y uno que es del campo principal tiene que estar relacionado con la tabla principal (es decir tengo dos tablas una principal y otra secundaria y están relacionadas por un código, pero el cogió tiene que registrarse en la tabla principal primero y luego en esta tabla) de esa manera se tiene puede hacer la relación. Quiero que al introducir el código que ya existe me mande un error (ya lo hice) pero también quiero que me mande un error al introducir el código que aun no ha sido registrado en la tabla principal es decir 2 MsgBox para cada caso pero no se como diferenciar un error del otro este es mi código:
Private Sub
 On Error GoTo error
line del codigo
Exit Sub
MsgBox "YA ESTA REGISTRADO"
End Sub
como hago para introducir otro msgbox para el otro error?

1 respuesta

Respuesta
1
Puedes introducir otro On error GoTo error1 por ejemplo, teniendo en cuenta que todo lo que venga después de ese error será para de error1. Me explico mejor:
Private Sub
 On Error GoTo error
line de codigo donde hay un error
On Error GoTo error1
código con el siguiente error
Exit Sub
error:
MsgBox "YA ESTA REGISTRADO"
error1:
MsgBox "OTRO_MENSAJE"
End Sub
De esta forma, el error que haya en el código posterior a "error", dará el mensaje de error, y lo que esté después de error1, dará el mensaje de este.
¿Entiendo pero como hago si el código donde me da el primer error es el mismo que el del error1? Este es mi código completo y ya esta modificado como me dijiste:
Private Sub Command_Aceptar_Click()
On Error GoTo error
On Error GoTo error1
Data_Paciente.UpdateRecord
Data_Paciente.Refresh
MsgBox "EL PACIENTE HA SIDO REGISTRADO"
Exit Sub
error:
MsgBox "EL PACIENTE CON EL CASO " & Text_Caso & " YA ESTA REGISTRADO"
Data_Paciente.Recordset.CancelUpdate
error1:
MsgBox "OTRO_MENSAJE"
Data_Paciente.Recordset.CancelUpdate
End Sub
En cualquiera de los dos caso me dice otro mensaje
SI lo que quieres controlar esas dos líneas, y para cada línea dé un error sería así:
¿Entiendo pero como hago si el código donde me da el primer error es el mismo que el del error1? Este es mi código completo y ya esta modificado como me dijiste:
Private Sub Command_Aceptar_Click()
On Error GoTo error
Data_Paciente.UpdateRecord
On Error GoTo error1
Data_Paciente.Refresh
MsgBox "EL PACIENTE HA SIDO REGISTRADO"
Exit Sub
error:
MsgBox "EL PACIENTE CON EL CASO " & Text_Caso & " YA ESTA REGISTRADO"
Data_Paciente.Recordset.CancelUpdate
error1:
MsgBox "OTRO_MENSAJE"
Data_Paciente.Recordset.CancelUpdate
End Sub
Pero si por el contrario los dos errores diferente que te da son de la línea "Data_Paciente.UpdateRecord", tendrás que utilizar un sólo On Error GoTo y modificar su código, me explico:
On Error GoTo error
Data_Paciente.UpdateRecord
Data_Paciente.Refresh
MsgBox "EL PACIENTE HA SIDO REGISTRADO"
Exit Sub
error:
if (Err.Number== "NUMERO_DEL_PRIMER_ERROR) then
    MsgBox "EL PACIENTE CON EL CASO " & Text_Caso & " YA ESTA REGISTRADO"
else
    MsgBox "OTRO_MENSAJE"
end if
Data_Paciente.Recordset.CancelUpdate
End Sub
Para saber el número del error, sólo tienes que quitar el "On Error GoTo" y comprobar por el depurador de VB cual es dicho nñumero del error.
Ese código esta muy bien pero acabo de revisar y el código del error es 524 para los dos casos, los dos errores son iguales uno dice que en la tabla no pueden haber duplicados (eso fue por que yo puse las relaciones sin duplicados) y otro que no se puede agregar o cambiar el registro por que se necesita un registro relacionado con la tabla principal.
Si el código es el mismo, intenta controlarlo por lo que dice cada error, con Err. Description.
Sería a groso modo:
if (Err.Description== "Todas y cada una de las palabras de la descripción del error") then
...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas