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

📄 业务通用模块.bas

📁 财务信息管理系统,适合做毕业论文的人使用
💻 BAS
📖 第 1 页 / 共 3 页
字号:
Attribute VB_Name = "mdlBudgetCommon"
Option Explicit

'常用api
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hWnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long
Public Declare Function WinHelpSearch Lib "user32" Alias "WinHelpA" (ByVal hWnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As String) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
Public Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal lSize As Long, ByVal lpFileName As String) As Long
Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lplFilename As String) As Long

'以下函数和常量用于更换toolbar
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Const REG_SZ = 1                         ' Unicode nul terminated string
Private Const REG_BINARY = 3                     ' Free form binary
Private Const ERROR_SUCCESS = 0&
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const C_BUTTON_STYLE = "SOFTWARE\UfSoft\WF\V8.50\Appearance"
Public gToolbarStyle As Integer         '工具栏状态

'主要的作用时保存业务相关的通用方法和变量
Public m_objAid As New U8BudgetMgr.clsCommon
Public m_objAddon As New U8PAutoSetTableStruct.IAutoSet
Public m_objAuthTree As DOMDocument
Public m_objRefTree As DOMDocument
Private m_lTmpID As Long

Public Function lTmpID() As Long
    lTmpID = Int(Rnd * 1000000000)
End Function

Public Function objWrapWhere(budget As String, Optional bill As String) As DOMDocument
    Set objWrapWhere = New DOMDocument
    objWrapWhere.loadXML "<query><budget/><bill/></query>"
    objWrapWhere.documentElement.firstChild.Text = Trim(budget)
    objWrapWhere.documentElement.lastChild.Text = Trim(bill)
End Function

Public Function PrintError(doc As DOMDocument) As Boolean
    Dim Node As IXMLDOMElement

    On Error GoTo last
    PrintError = True
    Set Node = doc.documentElement.selectSingleNode("errmsg")
    If Not (Node Is Nothing) Then
        MsgBox Node.Text
    Else
        Err.Raise 1
    End If
    Set doc = Nothing
    Exit Function
last:
    Set doc = Nothing
    PrintError = False
End Function

Public Sub FillCur(obj As Object)
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim i As Integer
    
    On Error GoTo last
    Set con = m_objAid.objOpenDB(g_sDataSourceName)
    Set rs = con.Execute("select i_id,cexch_name from foreigncurrency order by i_id")
    
    For i = 0 To rs.RecordCount - 1
        obj.AddItem rs(1)
        obj.ItemData(i) = CLng(rs(0))
        rs.MoveNext
    Next
    
    If obj.ListCount <> 0 Then
        obj.ListIndex = 0
    End If
    Exit Sub
last:
    Err.clear
End Sub

Public Sub SetTBStyle(myForm As Object)
    On Error Resume Next
    If gToolbarStyle = 1 Then   '文本按钮
        myForm.ocxCtbTool.Visible = False
        myForm.ocxCtbTool.SetToolbar myForm.tlbTool
        myForm.ocxCtbTool.SpecialEffect = True
        myForm.ocxCtbTool.SetDisplayStyle TextOnly
        myForm.ocxCtbTool.Visible = True
        myForm.ocxCtbTool.RefreshVisible
    Else    '图形按钮
        myForm.ocxCtbTool.SetToolbar myForm.tlbTool
        myForm.ocxCtbTool.SetDisplayStyle PictureText
        myForm.ocxCtbTool.Visible = False
    End If
    ResizeTlb myForm
End Sub

Public Function GetToolbarStyle() As ENUM_DISPLAYSTYLE
    GetToolbarStyle = TextOnly
    Dim hKey As Long
    If RegOpenKeyEx(HKEY_LOCAL_MACHINE, C_BUTTON_STYLE, 0, KEY_QUERY_VALUE, hKey) = ERROR_SUCCESS Then ' 打开注册表键
        Dim enumStyle As ENUM_DISPLAYSTYLE
        Dim cTemp As String * 128, cStyle As String, nTemp As Long, nType As Long
        nType = REG_SZ
        nTemp = 128
        If RegQueryValueEx(hKey, "Toolbar Style", 0, nType, ByVal cTemp, nTemp) = ERROR_SUCCESS Then       ' 获得/创建键值
            If nTemp > 0 And left(cTemp, 1) = "T" Then
                GetToolbarStyle = TextOnly
            Else
                GetToolbarStyle = PictureText
            End If
        End If
        RegCloseKey (hKey)                                 ' 关闭注册表键
    End If
End Function

Public Sub SaveToolbarStyle(ByVal enumStyle As ENUM_DISPLAYSTYLE)
    Dim hKey As Long
    If RegOpenKeyEx(HKEY_LOCAL_MACHINE, C_BUTTON_STYLE, 0, KEY_SET_VALUE, hKey) <> ERROR_SUCCESS Then ' 打开注册表键
        If RegCreateKey(HKEY_LOCAL_MACHINE, C_BUTTON_STYLE, hKey) Then
            Exit Sub
        End If
    End If
    Dim nType As Long
    Dim cTemp As String
    nType = REG_SZ
    cTemp = IIf(enumStyle = TextOnly, "T", "P")
    RegSetValueEx hKey, "Toolbar Style", 0, nType, ByVal cTemp, LenB(cTemp)           ' 获得/创建键值
    RegCloseKey (hKey)                                 ' 关闭注册表键
End Sub

Public Sub ResizeTlb(oForm As Object)
    On Error Resume Next
    If Not oForm.tlbTool.Visible Then
        oForm.ocxCtbTool.top = 0
        oForm.ocxCtbTool.left = 0
        oForm.ocxCtbTool.width = oForm.width
    End If
End Sub

'Public Sub ShowGhMsg(MsgStr As String)
'    On Error Resume Next
'    Screen.MousePointer = vbHourglass
'    frmGhLogo.lblMsg = MsgStr
'
'    frmMain.Enabled = False
'    DoEvents
'    frmGhLogo.Show
'    frmGhLogo.AnimationPlay.Play
'    DoEvents
'End Sub

'Public Sub UnShowGhMsg()
'    On Error Resume Next
'    Screen.MousePointer = vbDefault
'    frmGhLogo.AnimationPlay.Stop
'    frmMain.Enabled = True
'    DoEvents
'    Unload frmGhLogo
'End Sub

Public Function LittleToBig(strNum As String) As String
     '这个函数将人民币小写转换为大写形式。
     '函数要求传过来的字符串必须是具有两位小数的格式。
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim strmid As String
    Dim strTemp As String
    Dim myarray(10) As String
    myarray(0) = "零"
    myarray(1) = "壹"
    myarray(2) = "贰"
    myarray(3) = "叁"
    myarray(4) = "肆"
    myarray(5) = "伍"
    myarray(6) = "陆"
    myarray(7) = "柒"
    myarray(8) = "捌"
    myarray(9) = "玖"
    
    strNum = Trim(strNum)
    If Len(strNum) < 4 Or Len(strNum) > 14 Then
        LittleToBig = ""
        MsgBox "数字位数不符合要求,请重试!", vbOKOnly, "转换大写提示"
        Exit Function
    End If
    
    If Not IsNumeric(strNum) Then
        LittleToBig = ""
        MsgBox "包含非数字字符!", vbOKOnly, "转换大写提示"
        Exit Function
    End If
    
    If val(strNum) < 0 Then
        LittleToBig = 0
        Exit Function
    End If
    
    
    For i = 1 To Len(strNum)    '去掉前面的0(如果有的话)
        If left(strNum, 1) = "0" Then
            strNum = right(strNum, Len(strNum) - 1)
        End If
    Next i
    i = Len(strNum) - 3   '小数点前的位数
    
    
    
    For j = i To 1 Step -1
        Select Case j
            Case 1
                strTemp = "元"
            Case 2, 6, 10
                strTemp = "拾"
            Case 3, 7, 11
                strTemp = "佰"
            Case 4, 8
                strTemp = "仟"
            Case 5
                strTemp = "万"
            Case 9
                strTemp = "亿"
        End Select
        k = CInt(mID(strNum, i - j + 1, 1)) '从左往右数第j位数是k
        If k = 0 Then
            If j = 1 Or j = 5 Or j = 9 Then '个位或者是万位或者亿位
                If right(strmid, 1) = myarray(k) Then   '如果前面一个字符是零,去掉,加(元,万)
                    strmid = left(strmid, Len(strmid) - 1) & strTemp
                Else
                    strmid = strmid & strTemp   '直接加(元,万),不说零元零万
                End If
            Else
                If right(strmid, 1) <> myarray(k) Then
                    strmid = strmid & myarray(k)    '只加零,不加单位(十,百,千)
                End If
            End If
        Else
            strmid = strmid & myarray(k) & strTemp
        End If
    Next j
    
    k = CInt(mID(strNum, Len(strNum) - 1, 1))
    i = CInt(right(strNum, 1))
    If k = 0 And i = 0 Then
        If strmid <> "" Then strmid = strmid & "整"
    Else
        If i = 0 Then
            strmid = strmid & myarray(k) & "角"
        ElseIf k = 0 Then
                strmid = strmid & myarray(k) & myarray(i) & "分"
        Else
            strmid = strmid & myarray(k) & "角" & myarray(i) & "分"
        End If
    End If
    LittleToBig = strmid

End Function

Public Function GetRearpart(strAll As String) As String
    Dim iPos As Integer
    
    iPos = InStr(1, strAll, ":")
    If iPos <> 0 Then
        GetRearpart = mID(strAll, iPos + 1)
    End If
End Function
'Public Function GetErrStr(ErrCode As Long) As String
'Dim ErrStr As String
'
'Select Case ErrCode
'    Case 1
'        ErrStr = "数据或者格式没有初始化"
'    Case 2
'        ErrStr = "系统没有安装打印机"
'    Case 3
'        ErrStr = "取系统缺省打印机时发生异常"
'
'    'SetDataStyleXml
'    Case 1001
'        ErrStr = "一般性初始化错误"
'    Case 1002
'        ErrStr = "XML文档错误"
'    Case 1003
'        ErrStr = "非法ID参数"
'    Case 1097
'        ErrStr = "一般性数据错误"
'    Case 1098
'        ErrStr = "一般性格式错误"
'    Case 1099
'        ErrStr = "一般性错误"
'    Case 1101
'        ErrStr = "没有数据"
'    Case 1102
'        ErrStr = "数据为空"
'    Case 1103
'        ErrStr = "非法数据"
'    Case 1104
'        ErrStr = "读取数据文件时发生错误"
'    Case 1105
'        ErrStr = "读取数据串时发生错误"
'    Case 1201
'        ErrStr = "没有格式"
'    Case 1202
'        ErrStr = "格式为空"
'    Case 1203
'        ErrStr = "格式非法"
'    Case 1204
'        ErrStr = "读取格式文件时发生错误"
'    Case 1205
'        ErrStr = "读取格式串时发生错误"
'    Case 1206
'        ErrStr = "需要纸张尺寸"
'    Case 1301
'        ErrStr = "没有模板编号"
'
'    'PrintPreview
'    Case 2001
'        ErrStr = "没有足够的格式信息"
'
'    'ExportToFile
'    Case 3000
'        ErrStr = "未知异常"
'    Case 3001
'        ErrStr = "字段类型和大小未提供"
'    Case 3002
'        ErrStr = "没有提供数据表格"
'    Case 3003
'        ErrStr = "没有找到系统格式数据库"
'    Case 3004
'        ErrStr = "数据表没有表头,无法确定字段名"
'    Case 3005
'        ErrStr = "数据表格列数少于指定的字段类型数目"
'    Case 3006
'        ErrStr = "输出失败"
'    Case 3007
'        ErrStr = "创建临时表失败"
'    Case 3008
'        ErrStr = "删除临时表失败"
'    Case 3009
'        ErrStr = "数据库没有连接"
'    Case 3010
'        ErrStr = "无法打开注册表"
'    Case 3011
'        ErrStr = "临时表尚未创建"
'    Case 3012
'        ErrStr = "没有ISAM项目"
'    Case 3013
'        ErrStr = "没有数据"
'    Case 3014
'        ErrStr = "JobId溢出"
'    Case 3015
'        ErrStr = "向临时表插入数据失败"
'
'    'GetPaperSize
'    Case 10101
'        ErrStr = "无法识别的纸张类型或者所选打印机不支持"
'    Case 10102
'        ErrStr = "无效的打印机名"
'
'    'CoutPageMargin
'    Case 10201
'        ErrStr = "页边距过小"
'
'    'ComputePageInfo
'    Case 10301
'        ErrStr = "设置的行高过大"
'
'    'DrawMultiLayerTableHeader
'    Case 10401
'        ErrStr = "列索引溢出"
'
'    '其他
'    Case 3999   '输出到文件时用户选择取消
'        ErrStr = "用户选择取消"
'
'    Case Else
'        ErrStr = "未知错误"
'
'End Select
'
'GetErrStr = ErrStr

⌨️ 快捷键说明

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