Error Handling Routine Not Working

Hi,

I have an error handling routine with a custom message that works for the most part, however, sometimes I receive the runtime error message rather than the custom message I created.  

Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 3101 Then
    MsgBox "You must input an Activity and Task", vbExclamation, "Data Input"
    Response = acDataErrContinue
    Else
If DataErr = 3314 Then
    MsgBox "You must input Hours and Volume", vbExclamation, "Data Input"
    Response = acDataErrContinue
    End If
End If
End Sub


The routine is within the "On Error" property of both a Main form as well as its Subform.  Is there something wrong with this routine?

Thanks,
Ed



MICHAEDAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jadedataMS Access Systems CreatorCommented:
Hey MICHAED!

  You would be better served to pre-empt these errors at the source

  Build a function called
    Form_Valid() as Boolean

  Include code in this routine to test for the existance of the conditions currently be barked about in your form error trap.

  If the unacceptable conditions exist the function will report FALSE, if all data requirements are met the function returns TRUE (form_valid)

  Fire this testing function in places like the cmdClose button code to check the record, or make a button SPECIFICALLY to fire this function and test the record and report to the user the flaws.

  The function can be fired at any point the form is open to test validity and take the necessary action.

 
regards
Jack
0
MICHAEDAuthor Commented:
Geez Jack, I'm keeping you busy today!  

I know the source of the errors, the are required fields within the underlying table.  I was testing the form to ensure that the user must populate all required fields within the subform, if not, one of the runtime errors appears.  I just wanted the message to be more user friendly via a customize message -- which I have accomplished.  However, sometimes the custom message does not appear, rathe, the runtime error appears in it's place.

So basically, I still get "runtime error 3314" and "runtime error 3101" even though I should be receiving the custom message in their place.

Ed
0
MICHAEDAuthor Commented:
I guess what I'm saying is that I do not know how to implement what you are suggesting, so I am looking for a slightly easier solution -- even though it may not be the best. :)

Ed
0
IT Pros Agree: AI and Machine Learning Key

We’d all like to think our company’s data is well protected, but when you ask IT professionals they admit the data probably is not as safe as it could be.

morpheus30Commented:
This shouldn't really make a difference, but it might help you with the errors later...

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

SELECT CASE DataErr
CASE = 3101
    MsgBox "You must input an Activity and Task", vbExclamation, "Data Input"
    Response = acDataErrContinue
CASE = 3314
    MsgBox "You must input Hours and Volume", vbExclamation, "Data Input"
    Response = acDataErrContinue
CASE ELSE
    MsgBox Err.Number & ": " & Err.Description
    Response = acDataErrContinue
END SELECT

End Sub
0
jadedataMS Access Systems CreatorCommented:
Using the method you are, you have to account for every possible error that might arise.
Can you tell me now what errors will occur on this formset next month???

Instead catch these before they become errors...as in this minor example...

Private Function Form_Valid() as Boolean

   If Isnull(me("txtFieldName")) then
     msgbox "FILL IN THE FREEKIN' FIELDS, WILL YA!!!,vbokonly+vbcritical,"User Flamed"
     Form_Valid=False
     exit function
   endif

   'if the user makes it to here, all is well
   Form_Valid = True

End Function

If you have a Close button on your form that YOU implemented (turn off the window controls top right of form window)

  Private Sub cmdClose_Click()
    if not Form_Valid() then
       msgbox "Correct the data issues before leaving..."
    endif

    docmd.close acform, me.name

  end sub

 
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
MICHAEDAuthor Commented:
Great help -- both of you.

Thanks!
Ed
0
TextReportCommented:
Firstly replace your IF statements with a Select Case and secondly put in an error handler inside the code, finally do you have any code that is running that could also be triggering the runtime error, if so then add error handling to it.

Cheers, Andrew

On Error Goto Form_Error_Error
Select Case DataErr
    Case 3101
         MsgBox "You must input an Activity and Task", vbExclamation, "Data Input"
         Response = acDataErrContinue
    Case 3314
         MsgBox "You must input Hours and Volume", vbExclamation, "Data Input"
         Response = acDataErrContinue
End Select

Form_Error_Exit:
    Exit Sub

Form_Error_Error:
    Select Case Err
        Case Else
             MsgBox "An Unexpected error has ocourred in Form Error", vbCritical
             Resume Form_Error_Exit
    End Select
0
jadedataMS Access Systems CreatorCommented:
Thanx for another fine question!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Access

From novice to tech pro — start learning today.