[AccessD] error questions

Mike & Doris Manning mikedorism at adelphia.net
Tue Jan 13 12:43:03 CST 2004


Susan,

Here is the function I use.  The calling procedure passes in the error,
procedure name, and calling form/rept.  Several standard SQL Server errors
are handled.  At the end, a form is popped up to let the user know what
happened and allow them to add comments, and then an email gets sent to a
specified user for corrective action.

Doris Manning
Database Administrator
Hargrove Inc.
www.hargroveinc.com

-------------------------------

Public Function HandleErrors(lngError As Long, ObjName As String, _
                            ObjFrom As String)
                            
    On Error Resume Next
    
    bolHandle = False
    OSUserName = fcnOSUserName()
    
    Err.Raise lngError
       
    Select Case Err
        Case Is = -2147467259
            strMsgTxt = "Connection to SQL Server has been lost.  "
            strMsgTxt = strMsgTxt & "Try restarting Production Manager.  "
            strMsgTxt = strMsgTxt & "If the problem continues then "
            strMsgTxt = strMsgTxt & "reboot your computer."
            MsgBox strMsgTxt, vbOKOnly, "Lost Connection"
            DoCmd.Quit
        Case Is = 2202, 2205, 2214 'Printer problems
            strMsgTxt = "There is a problem with your printer connection.  "
            strMsgTxt = strMsgTxt & "Please reboot your computer.  "
            strMsgTxt = strMsgTxt & "If the problem persists, email the "
            strMsgTxt = strMsgTxt & "Help Desk for assistance."
            MsgBox strMsgTxt, vbOKOnly, "Printer Connection Problem"
            bolHandle = True
        Case Is = 2212 'Printer not available
            strMsgTxt = "The printer you have chosen is currently "
            strMsgTxt = strMsgTxt & "offline.  Please select another "
            strMsgTxt = strMsgTxt & "printer for your report."
            MsgBox strMsgTxt, vbOKOnly, "Printer Offline"
            bolHandle = True
        Case Is = 2950 'Network connection lost
            strMsgTxt = "There is a problem with your connection to "
            strMsgTxt = strMsgTxt & "the network.  Please reboot your "
            strMsgTxt = strMsgTxt & "computer."
            MsgBox strMsgTxt, vbOKOnly, "Lost Network Connection"
            bolHandle = True
        
    End Select
    
    strSendSubj = "<PWOS " & BuildNo & " Error - " & ObjName
    strLeadin = "Job: " & OSWONum & vbCrLf
    strLeadin = strLeadin & "Source: " & ObjName & " - " & ObjFrom
    strLeadin = strLeadin & vbCrLf & vbCrLf
    
    If Err.Description = conAppError Then
        strLeadin = strLeadin & "ACCESS ERROR " & Err
        strLeadin = strLeadin & ": " & AccessError(lngError)
        
        ' Enumerate Errors collection and display properties of
        ' each Error object.
        For Each errLoop In CurrentProject.Connection.Errors
            With errLoop
                strError = " .  Error #" & .Number & vbCrLf
                strError = strError & Space(10) & .Description & vbCrLf
                strError = strError & Space(10) & "(Source: " & .Source &
")" & vbCrLf
            End With
        Next

        If Len(strError) > 0 Then
            strLeadin = strLeadin & vbCrLf & vbCrLf
            strLeadin = strLeadin & "ADO/DAO Buffer contains "
            strLeadin = strLeadin & CurrentProject.Connection.Errors.Count
            If CurrentProject.Connection.Errors.Count < 2 Then
                strLeadin = strLeadin & " error" & vbCrLf
            Else
                strLeadin = strLeadin & " errors" & vbCrLf
            End If
        End If
    ElseIf Err.Description = vbNullString Then
        strLeadin = strLeadin & "Unknown Error " & Err & " with no "
        strLeadin = strLeadin & " description on file."
    Else
        strLeadin = strLeadin & "Unhandled Error " & Err & ": " &
Err.Description
    End If
    
    strMsgTxt = strLeadin & strError
    
    If bolHandle = True Then
        Call SendSafeEmail(strSendTo, strSendSubj, strMsgTxt, False)
    Else
        DoCmd.OpenForm "frmErrorInfo"
    End If
End Function

    
Public Function SendErrorMessage()

    Dim strErrorInfo As String
    
    If IsNull(Forms!frmErrorInfo!msgDoing) Then
        strErrorInfo = ""
    Else
        strErrorInfo = Forms!frmErrorInfo!msgDoing
    End If
    
    If Forms!frmErrorInfo!chkShowError = True Then MsgBox strMsgTxt,
vbOKOnly, "Display Error"
    strMsgTxt = strMsgTxt & vbCrLf & vbCrLf & "User description of problem:"
& vbCrLf & strErrorInfo
        
    Call SendSafeEmail(strSendTo, strSendSubj, strMsgTxt, False)
    
    DoCmd.Close acForm, "frmErrorInfo"
    DoCmd.Echo True
End Function

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Susan Harkins
Sent: Monday, January 12, 2004 10:08 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] error questions


Doris -- I'd like to see that sometime. I do agree with you both that it
wouldn't always be appropriate, but geez Louise ... give me a break!
Please!!!!!!!!!! ;)

Somewhere I've got a whole book on error handling, I really ought to read
it.

Susan H.


> John is right that you wouldn't always want to do this because 
> sometimes
it
> is better to handle the issue within the calling procedure or 
> function. However, I do handle some of the more common errors (such as 
> lost SQL connection or printer problems) within my generic error 
> handling function because that made more sense to me.


_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list