Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 719
  • Last Modified:

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



0
MICHAED
Asked:
MICHAED
2 Solutions
 
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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
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

Featured Post

Prepare for your VMware VCP6-DCV exam.

Josh Coen and Jason Langer have prepared the latest edition of VCP study guide. Both authors have been working in the IT field for more than a decade, and both hold VMware certifications. This 163-page guide covers all 10 of the exam blueprint sections.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now