⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errors.bas

📁 金算盘软件代码
💻 BAS
字号:
Attribute VB_Name = "Errors"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'  错误处理中心
'  作者:魏 然
'  日期:1998.05.12
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit

'文件错误号
Const mnErrBadFileName = 64
Const mnErrBadFileNameOrNumber = 52
Const mnErrPathDoesNotExist = 76
Const mnErrBadFileMode = 54
Const mnErrFileAlreadyOpen = 55
Const mnErrInputPastEndOfFile = 62
Const mnErrFileNotFound = 3024
'磁盘错误号
Const mnErrDeviceUnavailable = 68
Const mnErrDiskNotReady = 71
Const mnErrDeviceIO = 57
Const mnErrDiskFull = 61
'打印机错误号
Const mnErrPrnCanNotSet = 396         '在同一页内不能对同一属性设置不同值
Const mnErrPrn = 482                  '打印机错误
Const mnErrPrnNotSupport = 483        '打印机驱动程序不支持该属性
Const mnErrPrnDeviceUnavailable = 484 '打印机驱动程序无效
'Dao 错误
Const mnErrCanotOpenMoreTable = 3014
Const mnErrMoreCrossColumn = 3205     '交叉数据表的列标题 <value > 太多
Const mnErrDataChangedByOther = 3197
Const mnErrDataLocked = 3260

'其他错误号
Const mnOutofMemory = 7


'错误处理返回值
Public Enum ErrDealType
    edtResume = 0        '恢复
    edtResumeNext = 1    '恢复下一条语句
    edtCanNotResume = 2  '无法恢复的错误
    edtCanNotKnown = 3   '无法识别的错误
End Enum

Function ErrorsDeal(Optional ByVal ControlAuth As Boolean = False, Optional objControled As Object = Nothing, Optional ErrNum As Long) As ErrDealType
    Dim intMsgType As Integer
    Dim strMsg As String
    Dim intResponse As Integer
    Dim intLockCount As Integer
    Dim intRndCount As Integer
    Dim blnRepare As Boolean
    Dim i As Integer
    
    blnRepare = False
    intMsgType = vbExclamation
    
    ErrNum = Err.Number
    
    Select Case Err.Number
        Case mnOutofMemory
            strMsg = "您打开的窗体太多,请关闭一些窗体!"
            intMsgType = vbExclamation + vbOKOnly
        Case mnErrDeviceUnavailable         ' 错误 68
            strMsg = "设备不可用"
            intMsgType = vbExclamation + vbOKCancel
        Case mnErrDiskNotReady              ' 错误 71
            strMsg = "在驱动器中插入一张软盘并关好驱动器小门"
            intMsgType = vbExclamation + vbOKCancel
        Case mnErrDeviceIO                  ' 错误 57
            strMsg = "内部磁盘错误"
            intMsgType = vbExclamation + vbOKOnly
        Case mnErrDiskFull                  ' 错误 61
            strMsg = "磁盘已满,继续吗?"
            intMsgType = vbExclamation + vbAbortRetryIgnore
        Case mnErrBadFileName, mnErrBadFileNameOrNumber ' 错误 64 & 52
            strMsg = "文件名非法"
            intMsgType = vbExclamation + vbOKCancel
        Case mnErrPathDoesNotExist          ' 错误 76
            strMsg = "路径不存在"
            intMsgType = vbExclamation + vbOKCancel
        Case mnErrBadFileMode               ' 错误 54
            strMsg = "不能以此类访问打开文件"
        Case mnErrFileAlreadyOpen           ' 错误 55
            strMsg = "文件已经被打开"
            intMsgType = vbExclamation + vbOKCancel
        Case mnErrInputPastEndOfFile        ' 错误 62
            strMsg = "文件有一个不标准的文件结束标志,"
            strMsg = strMsg & "或企图读文件结束标志之后"
            strMsg = strMsg & "的内容"
            intMsgType = vbExclamation + vbAbortRetryIgnore
        Case 3049
            strMsg = "打开帐套失败,是否自动修复数据?"
            intMsgType = vbExclamation + vbOKCancel
            blnRepare = True
        Case mnErrDataChangedByOther         '记录集中的数据在被打开之后发生了变更。
            strMsg = "有其他用户在你以前修改了数据,覆盖吗?"
            intMsgType = vbExclamation + vbYesNo

        Case mnErrDataLocked                 ' 记录被锁定。
            strMsg = "数据被其他用户锁定,现在不能修改!"
            intMsgType = vbExclamation + vbAbortRetryIgnore
        Case mnErrCanotOpenMoreTable
            strMsg = "打开窗体太多,请先关闭一些窗体!"
            intMsgType = vbExclamation + vbOKOnly
        Case Else
            ErrorsDeal = edtCanNotKnown
            Exit Function
    End Select
    intResponse = MsgBox(strMsg, intMsgType, App.title)
    Select Case intResponse
        Case vbYes, vbRetry                  '确定, 重试 按钮
            If blnRepare Then                '修复数据库
                '?DBEngine.RepairDatabase (gclsBase.BaseFile)
            End If
            ErrorsDeal = edtResume
        Case vbCancel, vbIgnore              ' 取消, 忽略 按钮
            ErrorsDeal = edtResumeNext
        Case vbAbort                         ' 中止 按钮
            ErrorsDeal = edtCanNotResume
            If ControlAuth And (Not objControled Is Nothing) Then
                 Unload objControled
            End If
        Case Else
            ErrorsDeal = edtCanNotKnown
            If ControlAuth And (Not objControled Is Nothing) Then
                 Unload objControled
            End If
    End Select
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -