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

📄 modfenfamail.bas

📁 智能邮件管理信息系统
💻 BAS
字号:
Attribute VB_Name = "ModFenFaMail"
Option Explicit





'自动分发所有邮件
Public Sub AutoFenFa(blnShowMsg As Boolean)
    
    Dim strsql As String
    Dim LngEmployeeID As Long
    Dim strEmployeeID As String
    Dim strCustomerID As String
    Dim LngCustomerID As Long
    Dim lngOkCount As Long
    Dim m_MailTypes As MailDll.Mails
    Dim mCustomers As PCustomer.Customers
    Dim mEmployees As PEmployee.Employees
    Dim mclsEmployee As New PEmployee.clsEmployee
    mclsEmployee.Init gdbCurrentDB
    
    Dim m_MailType As MailDll.MailType
    
    Dim lngMailCounter As Long
'    Dim lngEmployeeID As Long
    
    
    Dim mclsMailCreator1 As MailDll.Mail
    
    Set mclsMailCreator1 = GetMailCls
    
    Dim mclsCustomer As PCustomer.clsCustomer
    Set mclsCustomer = GetclsCustomer
    
    
    Dim recTmp As New ADODB.Recordset
    '只有收件箱才允许分发
    strsql = "select * from mail where lngEmployeeID=0 and LngOwnDefineTreeID=" & gLngOwnDefineTreeID 'strMailBoxTag='ReceptBox'"
    ModMailDll.GetMailsSimple strsql, m_MailTypes, mclsMailCreator1
    Dim lngMailCount As Long
    
    lngMailCount = m_MailTypes.Count
    
    For lngMailCounter = 0 To m_MailTypes.Count
        '"email地址匹配"规则:根据“发件人”email地址到联系人表中找到该信是哪个客户发来的,找到后,就把该客户对应的
        '职员的lngContactID存到mail表的lngContactID.这时该邮件就有了归属人?
        ' 还有考虑到一些特殊情况的分支处理,比如,找不到匹配的客户怎么办? 有多个客户具有相同的email地址怎么办?
             
         '此处匹配邮件地址(客户中)
        If InStr(1, UCase(gdbCurrentDB.ConnectionString), UCase("Microsoft Access Driver")) > 0 Then
            strsql = "select * FROM Customer where ucase(strEmail)='" & UCase(Trim(m_MailTypes.Mail(lngMailCounter).StrReceiverString)) & "'"
        Else
            strsql = "select * FROM Customer where UPPER(strEmail)='" & UCase(Trim(m_MailTypes.Mail(lngMailCounter).StrReceiverString)) & "'"
        End If
    
         
         mclsCustomer.GetCustomers strsql, mCustomers
         strCustomerID = ""
         
         '判断客户的唯一性,多客户无法处理
         If mCustomers.Count = 1 Then
             '可能的客户ID列表
             LngCustomerID = mCustomers.Customer(0).LngCustomerID
             strCustomerID = LngCustomerID & ""
             
             
             '根据客户找到对应的职员列表ID
             strsql = "select lngEmployeeID from Customer where lngCustomerID =" & strCustomerID
             Dim i As Long
             mclsEmployee.GetEmployees strsql, mEmployees
             If mEmployees.Count > 0 Then
                LngEmployeeID = mEmployees.Employee(0).LngEmployeeID
                strEmployeeID = LngEmployeeID & ""
             Else
                GoTo ErrFenHandle
             End If
             
             
             
             '根据对应的可能的职员,加载菜单
             If Trim(strEmployeeID) <> "" Then
                 strsql = "select * FROM employee where lngEmployeeID=" & strEmployeeID
             End If
             mclsEmployee.GetEmployees strsql, mEmployees
             
             If mEmployees.Count = 1 Then
                LngEmployeeID = mEmployees.Employee(0).LngEmployeeID
                ModMailDll.GetMailSimple m_MailTypes.Mail(lngMailCounter).lngMailID, m_MailType, mclsMailCreator1
                m_MailType.LngEmployeeID = LngEmployeeID
                m_MailType.StrReadTag = MailDll.msReceiveNoRead
                m_MailType.BlnFenError = 0
                If m_MailType.lngMailID > 0 Then
                    If ModMailDll.SaveMail(m_MailType, mclsMailCreator1, False, False, False, False) Then
'                        frmmain.ctlMailList.RemoveRow False, False, lngMailCounter + 1
                        lngOkCount = lngOkCount + 1
                    Else
                        GoTo ErrFenHandle
                    End If
                End If
             Else
                GoTo ErrFenHandle
             End If
        Else
            GoTo ErrFenHandle
        End If
        GoTo BeginFenHandle
ErrFenHandle: '分发失败处理
           ModMailDll.GetMailSimple m_MailTypes.Mail(lngMailCounter).lngMailID, m_MailType, mclsMailCreator1
           m_MailType.BlnFenError = 1
           If m_MailType.lngMailID > 0 Then
                If ModMailDll.SaveMail(m_MailType, mclsMailCreator1, False, False, False, False) Then
                    If lngMailCounter + 1 <= frmMain.ctlMailList.Rows Then
                         frmMain.ctlMailList.MarkIconTag DataListGrid.Column_ErrFenTag, True, lngMailCounter + 1
                    End If
                End If
           End If
BeginFenHandle:
           
    Next lngMailCounter
    frmMain.RefreshMailList
    frmMain.RefreshTreeView
    
    If blnShowMsg Then
        ShowMessageBoxEx "待分发邮件数目:" & lngMailCount & "封.成功分发数目:" & lngOkCount & "封.无法分发数目:" & lngMailCount - lngOkCount & "封." & IIf(lngMailCounter - lngOkCount > 0, "客户email地址有重名,无法自动分发,请手工分发", "")
    Else
        Call frmMain.Status("待分发邮件数目:" & lngMailCount & "封.成功分发数目:" & lngOkCount & "封.无法分发数目:" & lngMailCount - lngOkCount & "封." & IIf(lngMailCounter - lngOkCount > 0, "客户email地址有重名,无法自动分发,请手工分发", ""))
    End If
    
    Set mclsMailCreator1 = Nothing
    Set mclsCustomer = Nothing
End Sub






'自动分发所有邮件
Private Sub AutoFenFaToMyself(blnShowMsg As Boolean)
    
    Dim strsql As String
    Dim LngEmployeeID As Long
    Dim strEmployeeID As String
    Dim strCustomerID As String
    Dim LngCustomerID As Long
    Dim mCustomers As PCustomer.Customers
    Dim mEmployees As PEmployee.Employees
    Dim mclsEmployee As New PEmployee.clsEmployee
    mclsEmployee.Init gdbCurrentDB
    Dim m_MailType As MailDll.MailType
    
    Dim m_MailTypes As MailDll.Mails
    
    Dim lngMailCounter As Long
    Dim mclsMailCreator1 As MailDll.Mail
    
    Set mclsMailCreator1 = GetMailCls
    
    Dim mclsCustomer As PCustomer.clsCustomer
    Set mclsCustomer = GetclsCustomer
    
    
    Dim recTmp As New ADODB.Recordset
    '只有收件箱才允许分发
    strsql = "select * from mail where lngEmployeeID=0 and LngOwnDefineTreeID=" & gLngOwnDefineTreeID 'strMailBoxTag='ReceptBox'"
    ModMailDll.GetMailsSimple strsql, m_MailTypes, mclsMailCreator1
    Dim lngMailCount As Long
    
    lngMailCount = m_MailTypes.Count
    
    For lngMailCounter = 0 To m_MailTypes.Count
        '"email地址匹配"规则:根据“发件人”email地址到联系人表中找到该信是哪个客户发来的,找到后,就把该客户对应的
        '职员的lngContactID存到mail表的lngContactID.这时该邮件就有了归属人?
        ' 还有考虑到一些特殊情况的分支处理,比如,找不到匹配的客户怎么办? 有多个客户具有相同的email地址怎么办?
             
         '此处匹配邮件地址(客户中)
        If InStr(1, UCase(gdbCurrentDB.ConnectionString), UCase("Microsoft Access Driver")) > 0 Then
            strsql = "select * FROM Customer where ucase(strEmail)='" & UCase(Trim(m_MailTypes.Mail(lngMailCounter).StrReceiverString)) & "'"
        Else
            strsql = "select * FROM Customer where UPPER(strEmail)='" & UCase(Trim(m_MailTypes.Mail(lngMailCounter).StrReceiverString)) & "'"
        End If
         
         
         mclsCustomer.GetCustomers strsql, mCustomers
         strCustomerID = ""
         
         '判断客户的唯一性,多客户无法处理
         If mCustomers.Count = 1 Then
             '可能的客户ID列表
             LngCustomerID = mCustomers.Customer(0).LngCustomerID
             strCustomerID = LngCustomerID & ""
             
             
             '根据客户找到对应的职员列表ID
             strsql = "select lngEmployeeID from Customer where lngCustomerID =" & strCustomerID
             Dim i As Long
             mclsEmployee.GetEmployees strsql, mEmployees
             If mEmployees.Count > 0 Then
                LngEmployeeID = mEmployees.Employee(0).LngEmployeeID
                strEmployeeID = LngEmployeeID & ""
             Else
                
             End If
             
             
             
             '根据对应的可能的职员,加载菜单
             If Trim(strEmployeeID) <> "" Then
                 strsql = "select * FROM employee where lngEmployeeID=" & strEmployeeID
             End If
             mclsEmployee.GetEmployees strsql, mEmployees
             
             If mEmployees.Count = 1 Then
                LngEmployeeID = mEmployees.Employee(0).LngEmployeeID
                '如果需要分发的职员是当前职员,则分发给自己
                If LngEmployeeID = gLngEmployeeID1 Then
                    ModMailDll.GetMailSimple m_MailTypes.Mail(lngMailCounter).lngMailID, m_MailType, mclsMailCreator1
                    m_MailType.LngEmployeeID = LngEmployeeID
                    m_MailType.StrReadTag = MailDll.msReceiveNoRead
                    m_MailType.BlnFenError = 0
                    If m_MailType.lngMailID > 0 Then
                        If ModMailDll.SaveMail(m_MailType, mclsMailCreator1, False, False, False, False) Then
                        Else
                            Debug.Assert False
                        End If
                    End If
                End If
             Else
                
             End If
        Else
            
        End If
        GoTo BeginFenHandle
BeginFenHandle:
           
    Next lngMailCounter
    
    
    Set mclsMailCreator1 = Nothing
    Set mclsCustomer = Nothing
End Sub

⌨️ 快捷键说明

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