📄 mdlboot.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 + -