buenas, una vez mas preciso de los mostruos, asi le decimos a los q saben mucho en paraguay jojo! tengo un ABM sencillo con una BD firebird. Solo me falta gestionar los errores q me tira la BD. Osea, es conocido q toda BD se protege ante la eliminacion de registros q estan relacionados en otra tabla (ciudad

ais, no se puede eliminar pais), todo bien. El tema esta en capturar estos errores en la aplicacion y no pasarle al usuario errores de la BD q no va entender.
Mi manera de resolverlo hasta ahora es, en cada form de ABM tengo una rutina de eliminacion con este codigo:
sub eliminar()
on error goto error_eliminar
SQL = "EXECUTE PROCEDURE SP_DEL_ENTIDAD( " & txtCampo(9) & ")"
Set rsEliminar = EjecutaCmd(SQL, adCmdText)
error_eliminar:
me.action =vbdataactionerror
End Sub
y en un modulo tengo esto:
Function EliminaRegistro(Formulario As Form, Optional sMsj As String, Optional TituloMsg As String) As Boolean
EliminaRegistro = False
If Trim(sMsj) = "" Then
i = MsgBox("Desea Eliminar el Registro?", vbQuestion + vbYesNo + vbDefaultButton2, IIf(Trim(TituloMsg) = "", "Eliminar Registro", TituloMsg))
Else
i = MsgBox(sMsj, vbQuestion + vbYesNo + vbDefaultButton2, IIf(Trim(TituloMsg) = "", "Eliminar Registro", TituloMsg))
End If
If i = vbNo Then Exit Function
Formulario.Action = vbDataActionDelete
Formulario.Eliminar
If Formulario.Action = vbDataActionOK Then
Formulario.AbreTablas
Formulario.ActualizaCampos
EliminaRegistro = True
Else
GoTo Error_EliminaRegistro
End If
Exit Function
Error_EliminaRegistro:
If Err.Number = -2147467259 Then
MsgBox "No se pudo eliminar el registro por tener movimientos.", vbExclamation, TIT_ERROR_SISTEMA
Else
MsgBox "Error Nº " & Err.Number & " - " & Err.Description, vbExclamation, TIT_ERROR_SISTEMA
End If
Formulario.Action = vbDataActionERROR
End Function
Esto no me captura el error, bah...captura algo pero siempre salta el error desde la BD diciendo q hay violacion de FK y todo eso, y despues el error de la aplicacion(algunas veces no). Yo Necesito q solo salte "mi" mensaje de error diciendo algo entendible para el usuario. el error de la BD siempre salta en esta linea:
Set rsEliminar = EjecutaCmd(SQL, adCmdText)
como hago una correcta gestion de errores de este tipo?
gracias!!!