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

📄 mdlboot.bas

📁 一个用VB写的财务软件源码
💻 BAS
字号:
Attribute VB_Name = "mdlBoot"
Option Explicit

'----------------------------------------------------------
'系统启动模块
'   版本发展:(自2001年5月)
'----------------------------------------------------------

Public fMainForm As frmSystem


'----------------------------------------------------------
'引导流程:
'   Step0:设置帮助文件路径
'   Step1:设置不同的数据库平台下的日期数据类型的保留字并取得引导参数
'   Step2:判断伊康财务使用的系统库(用户)'YkcwSysDB'是否已经存在,
'       如果不存在就进行初始化(安装'YkcwSysDB')
'   Step3:打开与'YkcwSysDB'的连接(全程变量:gloSys.cnnSys)
'   Step4:引导成功,显示主窗体
'----------------------------------------------------------

 Sub Main()
    Dim sSql As String
    Dim cnnMaster As ADODB.Connection
    Dim rSt As ADODB.Recordset
    
    Dim sPassword As String

'Step0:设置帮助文件路径
    App.HelpFile = App.Path & "\Help Files\系统管理.chm"
    
    
     Set s = CreateObject("encryption.iencryption")

'Step1:取得引导参数
'----------------------------------------------------------
'   在 SQL Server 7.0 下
'       数据服务器名称          键名:'ServerName'
'       数据库系统用户          键名:'SQLUser'
'       系统用户的密码          键名:'SQLPassword'
'   在 Oracle 下
'       主机字符串              键名:'OracleServer'
'       数据库系统用户          键名:'OracleUser'
'       系统用户的密码          键名:'OraclePassword'
'----------------------------------------------------------
'在两个版本中设置科目点分隔符标志
     
    Select Case g_FLAT
        Case "SQL"
            ' SQL Server 7.0 日期型数据保留字
            gloSys.sDateType = "datetime"
            '从注册表中读取
'            SaveSetting "Ykcw", "Startup", "ServerName", ""
            gloSys.sServer = GetSetting("Ykcw", "Startup", "ServerName", "")
            gloSys.sUser = GetSetting("Ykcw", "Startup", "SQLUser", "")
            gloSys.sPassword = GetSetting("Ykcw", "Startup", "SQLPassword", "")
            '如果参数为空,则弹出对话框要求输入
            If gloSys.sServer = "" Then
                With frmServer
                    .usServer = gloSys.sServer
                    .usUser = gloSys.sUser
                    .usPassword = s.decrypt(gloSys.sPassword)
                    .Show 1
                    If .OK Then
                        gloSys.sServer = .usServer
                        gloSys.sUser = .usUser
                        gloSys.sPassword = s.encrypt(.usPassword)
                        SaveSetting "Ykcw", "Startup", "ServerName", gloSys.sServer
                        SaveSetting "Ykcw", "Startup", "SQLUser", gloSys.sUser
                        SaveSetting "Ykcw", "Startup", "SQLPassword", gloSys.sPassword
                    Else
                        Unload frmServer
                        Exit Sub
                    End If
                End With
            End If
            
        Case "ORACLE"
            ' Oracle 日期型数据保留字
            gloSys.sDateType = "date"
            '从注册表读取
'            SaveSetting "Ykcw", "Startup", "OracleServer", ""
            gloSys.sServer = GetSetting("Ykcw", "Startup", "OracleServer")
            gloSys.sUser = GetSetting("Ykcw", "Startup", "OracleUser")
            gloSys.sPassword = GetSetting("Ykcw", "Startup", "OraclePassword")
            '如果以上三者有一个为空,则要求输入
            '因为在 Oracle 下,用户的密码不可以为空
            If gloSys.sPassword = "" Or gloSys.sUser = "" Or gloSys.sServer = "" Then
                With frmServer
                    .usServer = gloSys.sServer
                    .usUser = gloSys.sUser
                    .usPassword = s.decrypt(gloSys.sPassword)
                    .Show 1
                    If .OK Then
                        gloSys.sPassword = s.encrypt(.usPassword)
                        gloSys.sUser = .usUser
                        gloSys.sServer = .usServer
                        SaveSetting "Ykcw", "Startup", "OracleUser", gloSys.sUser
                        SaveSetting "Ykcw", "Startup", "OraclePassword", gloSys.sPassword
                        SaveSetting "Ykcw", "Startup", "OracleServer", gloSys.sServer
                    Else
                        Unload frmServer
                        Exit Sub
                    End If
                End With
            End If
        
        Case Else
            Err.Raise 5
    End Select
    Unload frmServer


'Step2:判断伊康财务使用的系统库(用户)'YkcwSysDB'是否已经存在
'      如果不存在就进行初始化
    ''cnnMaster'是一个可以创建系统库的环境
'On Error GoTo errorhandler
sPassword = s.decrypt(gloSys.sPassword)
    Set cnnMaster = New ADODB.Connection
    cnnMaster.Open GetConnectString(g_FLAT, gloSys.sServer, _
        gloSys.sUser, sPassword, "master")
    Select Case g_FLAT
        Case "SQL"
            '在 master.sysdatabases 表中查找名为 'YkcwSysDB' 的记录
            sSql = "SELECT COUNT(*) FROM sysdatabases WHERE [name]='" & _
                g_SYSDBNAME & "'"
        Case "ORACLE"
            '在 SYS.USER$ 表中查找名为 'YkcwSysDB' 的用户
            '注意在 Oracle 中全部用大写字母匹配
            sSql = "SELECT COUNT(*) FROM sys.user$ WHERE name='" & UCase$(g_SYSDBNAME) & "'"
    End Select
    
    Dim fso As New FileSystemObject
    Set glo.frmProg = New frmProgress2  '设置一个进度条窗体
    Set rSt = New ADODB.Recordset
    With rSt
        .CursorLocation = adUseClient
        .Open sSql, cnnMaster, adOpenStatic, adLockReadOnly
        If IsNull(.Fields(0).Value) Or .Fields(0).Value = 0 Then
            .Close
            If fso.FileExists(App.Path & "\DemoSetup.exe") Then
               If MsgBox("是否要安装财务软件的演示版?", vbQuestion + vbYesNo) = vbYes Then
                  Call CreateDemoDataBase(cnnMaster)
                  Sleep 5000
                  Do
                      Sleep 500
                  Loop Until FindWindow(vbNullString, "进度") = 0
               Else
                  If MsgBox("长航财务数据库支持不存在。是否继续?", vbQuestion + vbYesNo) = vbYes Then
                '创建'YkcwSysDB'
                        Call CreateSystemDataBase(cnnMaster)
                        
                        '回写注册表
                         If g_FLAT = "ORACLE" Then
                            SaveSetting "Ykcw", "Startup", "OracleUser", g_SYSDBNAME
                            SaveSetting "Ykcw", "Startup", "OraclePassword", s.encrypt(g_SYSPASSWORD)
                            SaveSetting "Ykcw", "Startup", "OracleServer", gloSys.sServer
                         End If
                        glo.frmProg.Hide
                   Else
                        Exit Sub
                   End If
                End If
            ElseIf MsgBox("长航财务数据库支持不存在。是否继续?", vbQuestion + vbYesNo) = vbYes Then
                '创建'YkcwSysDB'
                Call CreateSystemDataBase(cnnMaster)
                
                '回写注册表
                 If g_FLAT = "ORACLE" Then
                    SaveSetting "Ykcw", "Startup", "OracleUser", g_SYSDBNAME
                    SaveSetting "Ykcw", "Startup", "OraclePassword", s.encrypt(g_SYSPASSWORD)
                    SaveSetting "Ykcw", "Startup", "OracleServer", gloSys.sServer
                 End If
                glo.frmProg.Hide
            Else
                Exit Sub
            End If
        Else
            .Close
        End If
    End With
    
    cnnMaster.Close
    Set cnnMaster = Nothing
    

'Step3:打开与'YkcwSysDB'的连接(全程变量:gloSys.cnnSys)
    Set gloSys.cnnSys = New ADODB.Connection
    gloSys.cnnSys.CommandTimeout = 500
    Select Case g_FLAT
        Case "SQL"
            gloSys.cnnSys.Open GetConnectString(g_FLAT, gloSys.sServer, _
                gloSys.sUser, sPassword, g_SYSDBNAME)
        Case "ORACLE"
            gloSys.cnnSys.Open GetConnectString(g_FLAT, gloSys.sServer, _
                g_SYSDBNAME, g_SYSPASSWORD)
    End Select
    


 
'Step4:显示主窗体
    Set fMainForm = New frmSystem
    fMainForm.Show
    
    
    Exit Sub
'errorhandler:
'
'    '显示出错信息
'    MsgBox g_FLAT & " - 初始化发生错误:" & vbCr & vbCr & _
'        Err.Number & ":" & vbTab & Err.Description, vbExclamation
'    '清空引导参数
'    Set s = Nothing
'    Select Case g_FLAT
'        Case "SQL"
'            SaveSetting "Ykcw", "Startup", "ServerName", ""
'        Case "ORACLE"
'            SaveSetting "Ykcw", "Startup", "OracleServer", ""
'    End Select
'
'    '卸载可能已装入的窗体
'    If Forms.Count > 0 Then
'        Dim fRm As Form
'        For Each fRm In Forms
'            Unload fRm
'        Next
'    End If
    
End Sub

⌨️ 快捷键说明

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