www.pudn.com > VB-KAOQINXITONG.zip > modMain.bas
Attribute VB_Name = "modMain"
'表示变量数据类型的前缀
'-----------------------------------------------------------
'数据类型 前缀 举例
'-----------------------------------------------------------
'Boolean(布尔值) b bLoggedIn
'Currency(货币) c cSalary
'Control(控件) ctr ctrLastControl
'Double(双精度实数) dbl dblMiles
'ErrObject(错误对象) err errLastError
'Single(单精度实数) sng sngYears
'Handle(句柄) hwnd hwndPicture
'Long(长整型数) l lOnHand
'Object(对象) o oUserTable
'Integer(整型数) i iAge
'String(字符串) s sName
'Use-definedtype(用户定义的类型) udt udtEmployee
'Variant(变码,包括日期) v vDateHired
'Array(数组) a asEmployees
'用作变量作用域的前缀
'-----------------------------------------------
'前缀 描述 举例
'-----------------------------------------------
'g 全局变量 gsSavePath
'm 模块或窗体的局部变量 mbDataChanged
'st 静态变量 stInHere
'(无前缀) 过程的非静态局部变量 iIndex
'用于标准控件的前缀
'--------------------------------------------------------------------
'控件 前缀 举例 | 控件 前缀 举例
'--------------------------------------------------------------------
'复选框 chk chkPrint | 线条 lne lneVertical
'组合框 cbo cboTitle | 列表框 lst lstResultCodes
'命令按钮 cmd cmdCancel | MDI子窗体 mdi mdiContact
'数据 dat datBiblio | 菜单 mun munFileOpen
'目录列表框 dir dirSource | OLE容器 ole olePhoto
'驱动器列表框 drv drvTarget | 选项按钮 opt optSpanish
'文件列表框 fil filSource | 面板 pnl pnlSettings
'图文框 fra fraLanguage | 图片框 pic picDiskSpace
'窗体 frm frmMain | 剪贴图 clp clpToolbar
'组按钮 gpb gpbChannel | 形状 shp shpCircle
'水平滚动条 hsb hsbVolume | 文本框 txt txtAddress
'图象 img imgIcon | 计时器 tmr tmrAlarm
'标注 lbl lblHelpMessage | 垂直滚动条 vsb vsbRate
'用于ActiveX控件的前缀
'------------------------------------------
'控件 前缀 举例
'------------------------------------------
'常用对话框 dlg dlgFileOpen
'通信 com comFax
'与数据关联的组合框 dbc dbcContacts
'网格 grd grdInventory
'与数据关联的网格 dbg dbgPrices
'与数据关联的列表框 dbl dblSalesCode
'列表视图 Ivw IvwFiles
'MAPI消息 mpm mpmSentMessage
'MAPI会话 mps mpsSession
'MCI mci mciVideo
'大纲 out outOrgChart
'报表 rpt rptQtr1Earnings
'微调控件 spn spnPages
'树状视图 tre treFolders
'用于数据库对象的前缀
'------------------------------------------
'对象 前缀 举例
'------------------------------------------
'数据库 db dbCustomers
'域(对象或对象集合) fld fldLastName
'索引(对象或对象集合) idx idxAge
'查询定义 qry qrySalesByRegion
'记录集 rst rstSalesByRegion
'报表 rpt rptAnnualSales
'表格定义 tbl tblCustomer
Option Explicit
'BE25E2CED4FEAC04
Public gbLoginSuccess As Boolean '是否成功登录系统的标志
Public gTMenuStruct() As MenuStruct '保存主控制表单中菜单的结构,该菜单数据可有数据库进行控制
Public gDNullTime As Date '对于系统来说,有的时间是无效的,系统对待这个时间便将之作为空时间处理
Public gbTemp As Boolean '临时的变量
Public gbAutoRun As Boolean '系统是否不用敲入用户名称和口令便自动登录
Public giUpdate As Integer '系统升级状态,见下面的说明.
'说明:
'Update为强制升级
'当Update=1时,只对数据库的结构进行添加,如有新的表格或字段被定义时,自动添加进旧的数据库
'当Update=2时,根据文件 Update.upt 中说明的字段进行升级
'当Update=3时,重新建立 Access 数据库,并删除旧的数据库
'当Update=4时,重新建立 SQL SERVER 数据库,并删除旧的数据库
Public gDBRecordConn As ADODB.Connection '用于全部的数据库连接
Public gadoFldsRS As ADODB.Recordset '全局的记录集
Public gadoFldIndexRS As ADODB.Recordset '全局的索引记录集
Public gadoTempRS As ADODB.Recordset '全局的临时记录集
Public gbFirstLogin As Boolean '是否第一次登录系统
Public gbNoteShow As Boolean '是否显示提示
Public gbConnectOK As Boolean
Public gbIsServer As Boolean '如果本程序用在服务端,则为TRUE
Public gbBusy As Boolean
Public gDCanUpdate As Date '可以规定一个时间界限,只要发现当前的时间超过这个界限,就升级到新的程序
Public glErrPatrol As Long '巡更的容差时间
Public glMsgAdd As Long 'WINDOWS消息的增加量,当自定义的消息ID和系统冲突时,可修改这个数值
Public gbEventMask(EVENT_END) As Boolean '事件屏蔽标志
'gclsDBFunc 涉及到对数据库的操作全部封装在该库中
Public gclsDBFunc As BNDBFuncProj.clsBNDBFunc
'对TREE控件的操作全部封装在gclsTreeView中
Public gclsTreeView As BNIncludeProj.clsBNTreeView
Public gbFirstRun As Boolean '系统是否首次运行,如果是,则需要进行一些初始化的工作,如发行系统卡
Public glRunTypeOld As Long
Public Enum RUN_MODE
CLASS_PLAN '排班
SIGN_CARD '手工签卡
HOLIDAY_PLAN '排假
CLASS_SWITCH '班次调换
ASSIGN_ATTEND '指定考勤规则如迟到,早退,旷工等.当指定时,可不考虑打卡情况.
RPT_HOLIDAY '请假查询报表
RPT_SPECCARD '特卡报表
RPT_ATTEND '考勤报表
RPT_SWITCH '换班报表
RPT_DAY1 '日报表1
DEVICE_RIGHT '人员打卡权限
DEPT_ADJUST '部门调整
WORK_ADJUST '工时调整
ADD_PLAN '加班单安排
End Enum
Public gTPickStruct As PickStruct
Public giAppUser As Integer
Public giMaxRecord As Integer '每页最大记录数
Public gsCopyFromFile As String
Public gsMyDllPath As String
Public gsVendorCode As String
Public m_hModBNInclude As Long
Public m_hModBNTreeView As Long
Public m_hModBNCommon As Long
Public m_hModBNDBFunc As Long
Public gTAppManageType As AppManageType
'Public gCtrlDBShell
Public Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Sub Main()
'gTAppLicInfo.CtrlNeedMonitor = True
Dim sMsg As String
Dim sLoginPwd As String
Dim sTemp As String
Dim sSysInfo() As String
Dim adoTempRS As ADODB.Recordset
Dim iTemp As Integer
Dim iPos As Integer
Dim bFlag As Boolean
Dim sSplit
'本常数用来限制ADO的最低版本,如果操作系统低于这个版本,要么系统安装新的版本,要么不允许运行
'因为ADO的版本不对时,可能造成数据存取方面的错误
10 Const VER_ADODB = "2.50.4403.9"
20 On Error GoTo ErrLabel
' 本程序已经运行,退出
30 If App.PrevInstance Then
40 MsgBox "本程序已经运行,请按<确定>退出.", vbExclamation
50 End
60 End If
'当处于设计环境时使用
70 If InIDE Then
80 gsMyDllPath = "D:\Zbin backup\Install\Support\My Register Dlls"
90 Else
100 gsMyDllPath = App.Path
110 End If
120 gsMyDllPath = gsMyDllPath & "\"
'自动加载DLL的优势在于:
'在同一线程中使用DLL而不用对它进行注册,这样不必依赖注册表加载DLL,同时避免的版本冲突
'
' If InIDE Then
130 Set gclsInclude = New BNIncludeProj.clsBNInclude
140 Set gclsDBFunc = New BNDBFuncProj.clsBNDBFunc
150 Set gclsCommon = New BNCommonProj.clsBNCommon
160 Set gclsTreeView = New BNIncludeProj.clsBNTreeView
'被屏蔽的部分可以自动加载指定的DLL而不需要对这些DLL进行注册
' Else
' Set gclsInclude = CreateDllItem(gsMyDllPath & "BNInclude.dll", "clsBNInclude", m_hModBNInclude)
' Set gclsTreeView = CreateDllItem(gsMyDllPath & "BNInclude.dll", "clsBNTreeView", m_hModBNTreeView)
' Set gclsCommon = CreateDllItem(gsMyDllPath & "BNCommon.dll", "clsBNCommon", m_hModBNCommon)
' Set gclsDBFunc = CreateDllItem(gsMyDllPath & "BNDBFunc.dll", "clsBNDBFunc", m_hModBNDBFunc)
' End If
' gbNoteShow = True
'1-客户A V4_20_010_S
'2-客户B V4_20_011_N
'3-客户C V4_20_012_S
'4-客户D V4_20_013_SN
'5-客户E V4_20_014_SN
'6-客户F V4_20_015_N
'7-客户G V4_20_016_SN
'8-客户H V4_20_017_S
'20-客户I汽车
'21-客户J
'22-客户I摩托
'23-客户H巡更
'24-客户H门禁
'25-客户H考勤
'27-客户B门禁 V4_20_011_N
'28-客户B巡更 V4_20_011_N
'40-客户K衡重程序(蕴藻浜) V4_20_040_SN
'55-VMS- V4_20_055_SN
'57-超限收费- V4_20_057_SN
#If COMP_APPUSER = 1 Then '1-客户A V4_20_010_S
170 giAppUser = 1
#ElseIf COMP_APPUSER = 2 Then '2-客户B V4_20_011_N
180 giAppUser = 2
#ElseIf COMP_APPUSER = 3 Then '3-客户C V4_20_012_S
190 giAppUser = 3
#ElseIf COMP_APPUSER = 4 Then '4-客户D V4_20_013_SN
200 giAppUser = 4
#ElseIf COMP_APPUSER = 5 Then '5-客户E V4_20_014_SN
210 giAppUser = 5
#ElseIf COMP_APPUSER = 6 Then '6-客户F V4_20_015_N
220 giAppUser = 6
#ElseIf COMP_APPUSER = 7 Then '7-客户G V4_20_016_SN
230 giAppUser = 7
#ElseIf COMP_APPUSER = 8 Then '8-客户H V4_20_017_S
240 giAppUser = 8
#ElseIf COMP_APPUSER = 20 Then '20-客户I汽车
250 giAppUser = 20
#ElseIf COMP_APPUSER = 21 Then '21-客户J
260 giAppUser = 21
#ElseIf COMP_APPUSER = 22 Then '22-客户I摩托
270 giAppUser = 22
#ElseIf COMP_APPUSER = 23 Then '23-客户H巡更
280 giAppUser = 23
#ElseIf COMP_APPUSER = 24 Then '24-客户H门禁
290 giAppUser = 24
#ElseIf COMP_APPUSER = 25 Then '25-客户H考勤
300 giAppUser = 25
#ElseIf COMP_APPUSER = 27 Then '27-客户B门禁 V4_20_011_N
310 giAppUser = 27
#ElseIf COMP_APPUSER = 28 Then '28-客户B巡更 V4_20_011_N
320 giAppUser = 28
#ElseIf COMP_APPUSER = 29 Then '29-客户B自动采集 V4_20_011_N
330 giAppUser = 29
#ElseIf COMP_APPUSER = 40 Then '40-客户K衡重程序(蕴藻浜) V4_20_040_SN
340 giAppUser = 40
#ElseIf COMP_APPUSER = 55 Then '55-VMS V4_20_055_SN
350 giAppUser = 55
#ElseIf COMP_APPUSER = 57 Then '57-超限收费- V4_20_057_SN
360 giAppUser = 57
#ElseIf COMP_APPUSER = 80 Then '80-观察存储过程
365 giAppUser = 80
#End If
'对动态库 BNInclude.DLL 进行身份认证,在IDE的环境下,如果认证未通过,将不能进行调试.
370 If Not gclsInclude.MyLicence(INCLUDE_PWD_USER & App.hInstance & "123", App) Then GoTo EndLabel
380 With gclsCommon
'gclsCommon中也会使用到gclsInclude的,为了避免重复加载浪费系统资源,这里将已经实例化以后的gclsInclude赋值给gclsCommon
390 .SetInclude gclsInclude
'同上所述
400 .SetDBFunc gclsDBFunc
'gclsCommon自己也会调用自己类中间包含的函数,因此,在gclsCommon内部就不再初始化gclsCommon了
410 .SetCommon gclsCommon
'对动态库 BNCommon.DLL 进行身份认证,
420 .CBNLicence "ZHAOBIN"
#If IS_RUN Then
'程序
#Else
'调试,本程序可能会用到Cell32.ocx和MsgBlast.ocx,我在这里对其进行了解密,这样才不受版权限制
'由于Cell32.ocx,ASPACK.EXE,MsgBlast.ocx是一个商业版本,因此在使用时需要对其进行解密
430 .CBNKillSupport 1 'Cell32.ocx
440 .CBNKillSupport 2 'ASPACK.EXE V2.1
450 .CBNKillSupport 3 'MsgBlast.ocx
#End If
460 End With
'系统允许在主菜单上外挂一些程序,以方便调用.
470 ReDim gTAppLicInfo.FileExName(0) '外挂程序的位置
480 ReDim gTAppLicInfo.FileExDesc(0) '外挂程序的描述
'程序启动时,先自动地加载一个缺省的应用程序信息,在后面的过程中再对其进行修改
490 gTAppLicInfo = DFNGetDefaultValue(giAppUser, gclsInclude.MyGetAppVersion(App))
'根据应用程序的需要对gTAppLicInfo进行修改
500 With gTAppLicInfo
'部门编码的字段长度为20
510 .OthDptFieldLen = 20
520 gbFirstLogin = True
'得到临时文件名称,该文件一般用来存储重要的操作例如下载数据\更改设备的时间等
'当系统出现争议时,可在这个文件中找到线索,之所以用临时文件,是为了给我们留个后门,
'避免操作员擅自毁灭证据.
530 .FileTemp = gclsInclude.MyTempPath & "_Bntmp0.dir\~bn1022y69.tmp"
If giAppUser = 80 Then
.SoftSQLDBase = "Pubs"
Else
540 .SoftSQLDBase = DEFAULT_SQL_DBASE '加载SQL表名,为了避免和金益康形成版权冲突,因此使用GPMM2000
End If
550 .SysSoundCard = gclsInclude.MyGetWaveDevs > 0 '如果系统有声卡
'如果分辨率小于800*600,窗体自动调整大小
560 .CtrlNeedResize = gclsInclude.MyGetResolution.x < 800
' sTemp = UCase(gclsInclude.MyGetLShortDFormat)
' If sTemp <> "YYYY-MM-DD" And sTemp <> "MM/DD/YYYY" And sTemp <> "YYYY-M-D" Then
' If MsgBox("系统的短时间格式不支持2000年,是否做调整?", vbQuestion + vbOKCancel) = vbOK Then
' If Not gclsInclude.MySetLShortDFormat("yyyy-MM-dd") Then
' If Not gclsInclude.MySetLShortDFormat("mm/dd/yyyy") Then
' MsgBox "短时间格式设置失败!"
' End If
' End If
' End If
' End If
'将版权放在 BNDBaseInfo.dll 的资源中便于直接使用一些资源修改工具对应用程序的资源进行修改
If giAppUser = 80 Then
gTAppLicInfo.CtrlDatabaseLogin = True
End If
570 .SoftOwnerAlias = DFNLoadResString(108) '开发单位简称
580 .SoftOwnerName = DFNLoadResString(110) '开发单位
590 .SoftPlatform = DFNLoadResString(105) '运行环境
600 .SoftOwnerAddr = DFNLoadResString(102) '开发公司地址
610 .SoftOwnerTele = DFNLoadResString(103) '开发公司电话
620 .SoftAuthorEmail = DFNLoadResString(107) '作者EMAIL
630 .SoftAuthorQQ = DFNLoadResString(116) '作者QQ
640 .SoftCopyRight = DFNLoadResString(106) & " " & .SoftOwnerAlias '版权信息
650 .SoftName = .SoftCnName & "管理系统" '软件名称
660 App.Title = .SoftName '当系统出现提示时,标题为软件名称
'当程序新升级后,请在GetInstallTips中填写升级声明
#If APPLICATION_TYPE = 1 Then '考勤
670 .SysAppType = eDevAttend
680 .SoftLevel = 75
690 .DevAPPType = APP_MIFARE_ATTEND
700 .SoftIconKey = "IMG075"
710 gTAppLicInfo.SoftNumber = "66"
720 ReDim gsValidClass(5)
730 gsValidClass(0) = "A"
740 gsValidClass(1) = "B"
750 gsValidClass(2) = "C"
760 gsValidClass(3) = "D"
770 gsValidClass(4) = "E"
780 gsValidClass(5) = "Z"
790 gclsCommon.CommonValidClass = gsValidClass
#ElseIf APPLICATION_TYPE = 2 Then '门禁
800 .SysAppType = eDevGate
810 .SoftLevel = 62
820 .DevAPPType = APP_MIFARE_GATE
830 .SoftIconKey = "IMG075"
840 ReDim .FileVoice(1 To 3)
850 ReDim .CtrlVoice(1 To 3)
860 gTAppLicInfo.SoftNumber = "50"
#ElseIf APPLICATION_TYPE = 3 Then '巡更
870 .SoftLevel = 3
880 .SysAppType = eDevPatrol
890 .SoftIconKey = "IMG078"
900 gTAppLicInfo.SoftNumber = "30"
#ElseIf APPLICATION_TYPE = 4 Then '停车
910 .SoftLevel = 1
920 .SysAppType = eDevParking
930 .SoftIconKey = "IMG079"
940 .SoftNumber = "40"
#ElseIf APPLICATION_TYPE = 5 Then '售饭
950 .SoftLevel = 1
960 .SysAppType = eDevMeal
970 .SoftIconKey = "IMG078"
980 .SoftNumber = "60"
#ElseIf APPLICATION_TYPE = 6 Then '消费
990 .SoftLevel = 1
1000 .SysAppType = eDevConsume
1010 .SoftIconKey = "IMG078"
1020 .SoftNumber = "70"
#ElseIf APPLICATION_TYPE = 7 Then '发卡
1030 .SoftLevel = 1
1040 .SoftIconKey = "IMG077"
1050 .SysAppType = eDevHR
1060 .SoftNumber = "80"
#ElseIf APPLICATION_TYPE = 8 Then '自动采集
1070 .SoftLevel = 1
1080 .SoftIconKey = "IMG076"
1090 .SysAppType = eAutoDownload
1100 .SoftNumber = "90"
#ElseIf APPLICATION_TYPE = 10 Then '工资系统(查询)
1110 .SoftLevel = 1
1120 .SoftIconKey = "IMG081"
1130 .SysAppType = eDevHR
1140 .SoftNumber = "58"
#ElseIf APPLICATION_TYPE = 11 Then '衡重
1150 .SoftLevel = 1
1160 .SoftIconKey = "IMG079"
1170 .SysAppType = eDevWeighting
1180 .SoftNumber = "82"
#ElseIf APPLICATION_TYPE = 12 Then 'VMS
1190 .SoftLevel = 1
1200 .SoftIconKey = "IMG079"
1210 .SysAppType = eDevERP
1220 .SoftNumber = "55"
1230 .CtrlCompanyLogin = True
#ElseIf APPLICATION_TYPE = 13 Then '超限收费
1240 .SoftLevel = 1
1250 .SoftIconKey = "IMG079"
1260 .SysAppType = eDevERP
1270 .SoftNumber = "57"
1280 .CtrlCompanyLogin = False
#End If
'寻找低版本的MSADO15.DLL文件并删除
' If Not gclsCommon.CBNAdodbVersion(VER_ADODB) Then GoTo EndLabel
1290 .SoftDBBckPasswd = "Backup"
'对gclsDBFunc中出现的提示信息也统一为.SoftName
1300 gclsDBFunc.dbSetAppTitle .SoftName
'同上
1310 gclsCommon.CBNSetAppTitle .SoftName
'同上
1320 gclsInclude.MySetAppTitle .SoftName
'先假定一个缺省INI配置文件
1330 .FileINI = gclsInclude.MyAddBackslash(App.Path) & "BN" & .SoftEnName & ".ini"
#If IS_RUN Then
'进行身份认证,如果用户非法,将不再运行程序
' If Not gclsCommon.CBNRegisteredUser(.SoftPassword, _
.SoftOwnerAlias & .SoftName, _
gclsInclude.MyGetAppVersion(App), _
.SoftCode) Then GoTo EndLabel
#End If
1350 .FilePathApp = gclsInclude.MyAddBackslash(App.Path)
1360 .SoftHostName = gclsInclude.MyGetHostName
1370 .FilePathWindows = gclsInclude.MyWindowsPath
1380 .SysLocalIP = gclsCommon.CBNGetIPAddr
1390 If Not gclsInclude.MyFileExists(.FileINI) Then ' 系统配置文件遗失
'传递gTAppLicInfo的信息到gclsCommon中
1400 gclsCommon.CBNSetAppInfo gTAppLicInfo
'自动生成系统配置INI文件
1410 Call DFNMakeIniFile(gTAppLicInfo)
1420 .SoftNetwork = False '第一次使用时,使用单机版
1430 End If
' .FileINI = gclsInclude.MyFileRelatPath(.FilePathApp, .FileINI)
1440 .SoftMainColor = funcGetSystemData("MainColor", &HDFA000)
1450 .CtrlRunSingle = funcGetSystemData("RunSingle", "1")
1460 gbAutoRun = funcGetSystemData("AutoRun", "0")
1470 .CtrlNeedMonitor = funcGetSystemData("ErrMonitor", 0)
1480 .OthCardLen = funcGetINIData("Device Parameter", "Card_Len", "14")
1490 .DevCardNumLen = funcGetINIData("Device Parameter", "Card_Cut_Len", "5")
1500 .OthMaxCardLen = funcGetSystemData("MaxCardLen", "4")
1510 giMaxRecord = funcGetSystemData("Max Record", "20")
1515 gTAixSystemParament.RunType = funcGetSystemData("RunType", "2")
glRunTypeOld = gTAixSystemParament.RunType
1520 .CtrlButtonStyle = funcGetSystemData("ButtonStyle", "1")
1530 If .CtrlButtonStyle > 5 Then .CtrlButtonStyle = 1
1540 .CtrlBoardShow = funcGetSystemData("BoardShow", "1")
1550 .SysDebugLevel = funcGetSystemData("Debug", "0")
1560 .SysSystemDebug = .SysDebugLevel > 0
1570 .CtrlAutoIssue = funcGetSystemData("AutoIssue", "0")
1580 .CtrlUseColor = funcGetSystemData("UseColor", "1")
1590 .CtrlPapleCtrl = funcGetSystemData("PapleCtrl", 1)
1600 .CtrlMenuBmp = funcGetSystemData("MenuBmp", 1)
1610 sTemp = funcGetSystemData("AppPath", App.Path)
'如果得到的是相对路径,就要计算出他的绝对路径
1620 If sTemp <> "" Then
1630 sTemp = gclsInclude.MyAddBackslash(sTemp)
1640 sTemp = gclsInclude.MyAbsPath(.FilePathApp, sTemp)
1650 .FilePathApp = sTemp
1660 End If
1670 .FilePathApp = gclsInclude.MyAddBackslash(.FilePathApp)
#If APPLICATION_TYPE = 12 Then 'VMS
1680 gsCopyFromFile = .FilePathApp & "VMS_CopyFrom.ini"
#End If
1690 .FileLog = .FilePathApp & "Log\Events.log"
.FileNote = .FilePathApp & "Log\Note.log"
1700 .CtrlWindowRunMode = funcGetSystemData("RunMode", 0)
1710 If Left(.FilePathApp, 2) <> "\\" Then
'得到盘符
1720 sTemp = Left(.FilePathApp, InStr(.FilePathApp, ":") - 1)
1730 iTemp = gclsInclude.MyGetDriveType(sTemp)
1740 If iTemp <> DRIVE_FIXED And iTemp <> DRIVE_REMOVABLE Then
1750 MsgBox " 数据库路径" & .FilePathApp & "为不可读写存储器,请修改配置文件:" & .FileINI & _
" 中的“AppPath”值指向正确的程序运行路径后重新运行程序!", vbInformation
1760 GoTo EndLabel
1770 End If
1780 End If
1790 If Not gclsInclude.MyPathExists(gclsInclude.MyRemoveBackslash(.FilePathApp)) Then _
gclsInclude.MyMkDir .FilePathApp
1800 .DevMainType = funcGetINIData("Device Parameter", "DeviceType", .DevMainType)
1810 .DevDevicePort = funcGetINIData("Device Parameter", "DevicePort", 2)
1820 gTAppLicInfo.DevIssuePort = funcGetINIData("Device Parameter", "IssuePort", 1)
If giAppUser = 80 Then
.SoftSQLDBase = funcGetINIData("SQL SERVER", "DATABASE", "Pubs")
Else
1830 .SoftSQLDBase = funcGetINIData("SQL SERVER", "DATABASE", DEFAULT_SQL_DBASE)
End If
1840 .SoftSQLServer = funcGetINIData("SQL SERVER", "SERVER_HOST", gclsInclude.MyGetHostName)
1850 .SysLocalIP = funcGetINIData("SQL SERVER", "CLIENT_IP", .SysLocalIP)
1860 .SysClient = funcGetINIData("SQL SERVER", "CLIENT_HOST", gclsInclude.MyGetHostName)
1870 giUpdate = funcGetSystemData("Update", "0")
1880 .CtrlAutoDownload = funcGetINIData("Remote Control", "AutoDownload", 0)
1890 .CtrlAutoRight = funcGetINIData("Remote Control", "AutoRight", 0)
1900 .DevMainName = gclsInclude.MyGetDevName(.DevMainType)
1910 .FileEncrypt = .FilePathApp & "Tecsun.dat"
1920 .SoftNetwork = IIf(funcGetINIData("Run Mode", "Run_Mode", "0") = "0", False, True)
1930 If .SoftDBaseType = 1 Then '单机版
1940 .SoftNetwork = False
1950 ElseIf .SoftDBaseType = 2 Then '网络版
1960 .SoftNetwork = True
1970 End If
If giAppUser = 80 Then
Else
1980 If .SoftNetwork Then
1990 Select Case UCase(.SoftSQLDBase)
Case UCase("master"), UCase("model"), UCase("msdb"), _
UCase("Northwind"), UCase("pubs"), UCase("tempdb")
2010 MsgBox "数据库名与SQL系统数据库冲突", vbCritical
2020 GoTo EndLabel
Case ""
2030 MsgBox "无数据库名错误,请修改INI文件.", vbCritical
2040 GoTo EndLabel
2050 End Select
2060 End If
End If
2070 .FilePicBG = funcGetSystemData("BackgroundFile", .FilePathWindows & "Media\YK.gif")
2080 If Not gclsInclude.MyFileExists(.FilePicBG) Then
2090 .FilePicBG = .FilePathWindows & "Media\YK.gif"
2100 End If
2110 .FilePicSplash = funcGetSystemData("SplashFile", .FilePathWindows & "Media\" & .SoftEnName & "Splash.gif")
2120 If Not gclsInclude.MyFileExists(.FilePicSplash) Then
2130 .FilePicSplash = .FilePathWindows & "Media\YK.gif"
2140 End If
2150 .FilePicBoard = funcGetSystemData("BoardFile", .FilePathWindows & "Media\Board.gif")
2160 If Not gclsInclude.MyFileExists(.FilePicBoard) Then
2170 .FilePicBoard = .FilePathWindows & "Media\Board.gif"
2180 End If
If giAppUser <> 80 Then
'下述代码自动将系统缺少的目录建立起来
2190 If Not gclsInclude.MyPathExists(.FilePathApp & "Report") Then _
gclsInclude.MyMkDir .FilePathApp & "Report"
2200 If Not gclsInclude.MyPathExists(.FilePathApp & "DBase") Then _
gclsInclude.MyMkDir .FilePathApp & "DBase"
2210 If Not gclsInclude.MyPathExists(.FilePathApp & "Backup") Then _
gclsInclude.MyMkDir .FilePathApp & "Backup"
2220 If Not gclsInclude.MyPathExists(.FilePathApp & "Shell") Then _
gclsInclude.MyMkDir .FilePathApp & "Shell"
2230 If Not gclsInclude.MyPathExists(.FilePathWindows & "Media") Then _
gclsInclude.MyMkDir .FilePathWindows & "Media"
2235 If Not gclsInclude.MyPathExists(.FilePathApp & "Wave") Then _
gclsInclude.MyMkDir .FilePathApp & "Wave"
2240 If Not gclsInclude.MyPathExists(.FilePathApp & "Log") Then _
gclsInclude.MyMkDir .FilePathApp & "Log"
2250 If Not gclsInclude.MyPathExists(gclsInclude.MyTempPath & "_Bntmp0.dir") Then _
gclsInclude.MyMkDir gclsInclude.MyTempPath & "_Bntmp0.dir"
End If
2260 gDNullTime = CDate("23:59:59")
2270 .FileDBRestore = funcGetINIData("SQL SERVER", _
"BackupDatabase", _
.FilePathApp & "Backup\" & .SoftSQLDBase & ".BAK")
2280 .FileDBBackup = .FilePathApp & "DBase\dbBN_Backup.mdb"
2290 sTemp = Command() '命令行参数
' sTemp = "Localhost,sa,"
2300 If sTemp <> "" Then
' MsgBox sTemp
2310 sSplit = Split(sTemp, ",")
2320 iTemp = UBound(sSplit)
2330 If iTemp >= 0 Then .SoftSQLServer = sSplit(0)
2340 If iTemp >= 2 Then sLoginPwd = sSplit(2)
2350 If iTemp >= 1 Then
2360 If sSplit(1) <> "" Then
2370 .SysLoginUser = sSplit(1)
2380 gbLoginSuccess = True
2390 GoTo PassLogin
2400 End If
2410 End If
2420 End If
2430 End With
ReLogin:
'显示登录画面
2440 If gbAutoRun Then
2450 gTAppLicInfo.SysLoginUser = "SA"
2460 Else
2470 If ShowLogin(sLoginPwd) = "" Then
2480 Unload frmSplash
2490 GoTo EndLabel
2500 End If
2510 End If
PassLogin:
2520 With gTAppLicInfo
2530 .SysLoginSA = UCase(.SysLoginUser) = "SA"
2540 If gclsInclude.MyFileExists(.FilePicSplash) Then
2550 frmSplash.Show
2560 frmSplash.Refresh
2570 End If
2580 .FileDBRecord = funcGetSystemData("DataBase", .FilePathApp & "DBase\" & "dbBN_Single.mdb")
2590 .FileDBRecord = gclsInclude.MyAbsPath(.FilePathApp, .FileDBRecord)
2600 .FileDBStatus = funcGetSystemData("StatusDBase", .FilePathApp & "Shell\" & "dbStatus.mdb")
2610 If Right(.FileDBRecord, 1) = "\" Then
2620 .FileDBRecord = .FileDBRecord & "dbBN_Single.mdb"
2630 End If
'这里应该考虑远程计算机
2640 .FileSQL = .FilePathApp & "DBase\" & "dbBN_SQL.mdf"
2650 If Not gTAppLicInfo.SoftNetwork Then
2660 .SysDBRecordConn = gclsCommon.CBNGetAccessConnect(.FileDBRecord, _
.SoftDBaseVer, _
.SoftDBPasswd, _
True)
'由于ADO的版本已经强制为2.5了,所以Jet的版本应该为4.0
2670 .SysDBRecordConn = Replace(.SysDBRecordConn, "3.51", "4.0")
2680 Else
2690 If .SoftSQLServer = "" Then
2700 .SoftSQLServer = funcGetINIData("SQL SERVER", _
"SERVER_HOST", _
gclsInclude.MyGetHostName)
2710 End If
2720 .SysDBRecordConn = gclsDBFunc.dbGetSQLConnect(.SysLoginUser, _
.SoftSQLDBase, _
sLoginPwd, _
.SoftSQLServer, _
IIf(giAppUser = 80, False, True), , _
1)
2730 End If
2740 gclsCommon.CBNSplashShow
2750 gclsCommon.CBNSplashSetMessage "正在登录系统"
2760 DoEvents
If giAppUser = 80 Then
GoTo LoadProgramm
End If
#If COMP_APPUSER = 29 Then '29-客户B自动采集 V4_20_011_N
2770 .SysAppType = eDevPatrol + 1
#End If
2780 End With
2790 With gTAppLicInfo
'建立备份数据库
2800 If Not gclsInclude.MyFileExists(.FileDBBackup) Then ' 记录数据库文件遗失
2810 Screen.MousePointer = vbDefault
2820 sTemp = gclsInclude.MyFilePath(.FileDBBackup)
2830 If sTemp <> "" Then
2840 If Not gclsInclude.MyPathExists(sTemp) Then
2850 gclsInclude.MyMkDir sTemp
2860 End If
2870 If gclsInclude.MyPathExists(sTemp) Then
2880 DoEvents
2890 gclsCommon.CBNSplashSetMessage "正在生成备份数据库"
2900 DoEvents
' sTemp = CreateBackupDB
'建立一个备份数据库以便对用户的图象等数据以及对用户的打卡数据进行备份 _
在服务器上的数据库发生故障时可以用本机上的数据库进行恢复
2920 CreateBackupDB .FileDBBackup, .SoftDBBckPasswd
2930 .SoftDBBckVer = "97"
2940 Else
2950 MsgBox "无法建立路径:" & sTemp & ",备份数据库建立失败!", vbCritical
2960 End If
2970 End If
2980 Else
2990 sTemp = ""
'无论用户的数据库密码怎么变,该函数可以根据数据库的版本自动找出密码
3000 sTemp = gclsInclude.MyGetAccessPwd(.FileDBBackup, .SoftDBBckVer)
3010 If sTemp <> "" Then .SoftDBBckPasswd = sTemp
3020 End If
#If APPLICATION_TYPE = 11 Then '衡重
3030 If Not gclsInclude.MyFileExists(gTAppLicInfo.FileDBStatus) Then ' 记录数据库文件遗失
3040 sTemp = gTAppLicInfo.FilePathApp & "Shell\dbStatus.mdb"
3050 Else
3060 sTemp = gTAppLicInfo.FileDBStatus
3070 End If
3080 If Not gclsInclude.MyFileExists(sTemp) Then ' 记录数据库文件遗失
3090 DoEvents
3100 gclsCommon.CBNSplashSetMessage "正在生成状态数据库"
3110 DoEvents
3120 CreateStatusDB sTemp, ""
3130 Else
' gclsInclude.MySetShell gclsInclude.MyFilePath(gTAppLicInfo.FileDBStatus), "Shell", 3, "状态数据库"
3140 End If
#End If
3150 On Error Resume Next
3160 If Not .SysLoginSA Then giUpdate = 0
3170 End With
3180 gclsCommon.CommonAppInfo = gTAppLicInfo
3190 If gTAppLicInfo.SoftNetwork Then '对于SQL数据库
'1.建立SQL数据库的ADO连接
BuiltDatabaseLabel:
3200 If giUpdate = 4 Then
3210 gclsCommon.CBNSaveLogFile gTAppLicInfo.SysLoginUser & _
"用户创建数据库:" & _
gTAppLicInfo.SoftSQLDBase & "," & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow), _
True, True
3220 gclsInclude.MyAppendToFile gTAppLicInfo.FileTemp, _
gTAppLicInfo.SysLoginUser & _
"用户升级数据库:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow)
3230 Screen.MousePointer = vbDefault
3240 DoEvents
3250 gclsCommon.CBNSplashSetMessage "正在创建数据库" & gTAppLicInfo.SoftSQLDBase
3260 DoEvents
'执行到此。表明该服务器存在SQL SERVER
'如果服务器就是本机,则要在本机上建立一个 SQL 数据库文件
3270 If CreateSQLDBase(gTAppLicInfo.FileSQL, sLoginPwd) Then
3280 Screen.MousePointer = vbDefault
3290 DoEvents
3300 gclsCommon.CBNSplashUnload
3310 DoEvents
3320 MsgBox "数据库建立成功!请重新启动本程序."
3330 gclsCommon.CBNSaveLogFile gTAppLicInfo.SysLoginUser & _
"用户数据库建立成功:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow), _
True, True
3340 gclsInclude.MyAppendToFile gTAppLicInfo.FileTemp, _
gTAppLicInfo.SysLoginUser & _
"用户数据库建立成功:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow)
3350 Else
3360 Screen.MousePointer = vbDefault
3370 DoEvents
3380 gclsCommon.CBNSplashUnload
3390 DoEvents
3400 MsgBox "数据库未成功建立!请重新启动本程序.", vbExclamation
3410 gclsCommon.CBNSaveLogFile gTAppLicInfo.SysLoginUser & "用户数据库建立失败:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow), _
True, True
3420 gclsCommon.CBNSaveLogFile gclsDBFunc.dbGetLastError.Number & "," & _
gclsDBFunc.dbGetLastError.Description, _
True, True
3430 gclsInclude.MyAppendToFile gTAppLicInfo.FileTemp, _
gTAppLicInfo.SysLoginUser & "用户数据库建立失败:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow)
3440 gclsInclude.MyAppendToFile gTAppLicInfo.FileTemp, _
gclsDBFunc.dbGetLastError.Number & "," & _
gclsDBFunc.dbGetLastError.Description
3450 End If
3460 If giUpdate > 0 Then
3470 giUpdate = 0
3480 funcSetSystemData "Update", "0"
3490 End If
3500 gclsDBFunc.dbCloseConnect False
3510 gclsDBFunc.dbCloseConnect True
3520 GoTo EndLabel
3530 Else
' 置鼠标忙标志
3540 Screen.MousePointer = vbHourglass
3550 DoEvents
3560 gclsCommon.CBNSplashSetMessage "正在建立数据库连接"
3570 DoEvents
' gTAppLicInfo.SysDBRecordConn = Replace(gTAppLicInfo.SysDBRecordConn, "SA", "AAA")
3580 gclsDBFunc.dbClearError
3590 iTemp = 0
ReConnect:
3600 iTemp = iTemp + 1
3610 If gclsDBFunc.dbSetConnect(gTAppLicInfo.SysDBRecordConn, False, adUseClient) Then
3620 Set gDBRecordConn = gclsDBFunc.dbGetConnect(False)
3630 Else
3640 If iTemp = 1 Then
3650 gclsCommon.CBNSplashSetMessage "正试图重新建立数据库连接"
3660 GoTo ReConnect
3670 End If
3680 gclsCommon.CBNWriteOperLog gclsDBFunc.dbGetLastError.Description
3690 Screen.MousePointer = vbDefault
3700 DoEvents
3710 gclsCommon.CBNSplashUnload
3720 DoEvents
'2002-8-9日发现,当数据库不存在以及网络连接不通时,返回的错误代码都是-2147467259
3730 If gTAppLicInfo.SysLoginSA And (gclsDBFunc.dbGetLastError.Number = -2147467259) Then
'本处应该使用Pubs数据库登录来判断是否存在要求的数据库,但为了简便,使用错误描述
3740 sMsg = UCase(gclsDBFunc.dbGetLastError.Description)
3750 sTemp = " '" & gTAppLicInfo.SoftSQLDBase & "'"
3760 If InStr(sMsg, "LOGIN" & sTemp) Or InStr(sMsg, "登录" & sTemp) Then
3770 If MsgBox("SQL数据库 " & gTAppLicInfo.SoftSQLDBase & _
" 不存在,是否由本程序自动建立?", vbQuestion + vbOKCancel) = vbOK Then
3780 giUpdate = 4
3790 GoTo BuiltDatabaseLabel
3800 ElseIf MsgBox("SQL数据库 " & gTAppLicInfo.SoftSQLDBase & _
" 不存在,是否从备份文件恢复?", vbQuestion + vbOKCancel) = vbOK Then
3810 If gclsCommon.CBNRestoreDatabase Then
3820 MsgBox "数据库恢复成功!"
3830 Else
3840 MsgBox "数据库恢复失败!"
3850 End If
3860 GoTo EndLabel
3870 Else
3880 giUpdate = 0
3890 MsgBox "请修改配置文件:" & gTAppLicInfo.FileINI & " 以正确指定数据库"
3900 End If
3910 Else
3920 MsgBox "SQL数据库连接失败,请重新键入登录信息或配置SQL数据库", vbExclamation
3930 End If
3940 Else
3950 MsgBox "SQL数据库连接失败,请重新键入登录信息或配置SQL数据库", vbExclamation
3960 End If
3970 GoTo ReLogin
3980 End If
3990 End If
'2.检查SQL库是否存在改动
4000 If Not gclsDBFunc.dbTableExists("T0101S001", gDBRecordConn) Then '如果SQL数据库未升级
4010 If gclsDBFunc.dbGetLastError.Number = -2147217911 Then
4020 MsgBox "操作员 " & gTAppLicInfo.SysLoginUser & " 没数据库的访问权限,请联系管理人员!", vbCritical
4030 GoTo EndLabel
4040 ElseIf gclsDBFunc.dbGetLastError.Number = -2147217887 Then
4050 MsgBox " 可能数据组件安装错误,请重新安装,如还有故障,请联系程序供应商." & vbCrLf & _
"访问表T0101S001时有其他错误,错误号为:-2147217887,错误描述为:" & _
gclsDBFunc.dbGetLastError.Description
4060 GoTo EndLabel
4070 End If
4080 If gTAppLicInfo.SysLoginSA Then
4090 If MsgBox("SQL数据库未升级,请按<确定>升级SQL数据库,按<取消>退出系统.", _
vbOKCancel, "升级SQL数据库") = vbOK Then
UpdateSQL:
#If APPLICATION_TYPE = 1 Then '考勤
4100 gTHoliSystem = gclsCommon.CBNGetHolidayInfo(True And (giUpdate > 0))
#End If
4110 If CreateSQLDBase Then
4120 MsgBox "数据库升级成功!", vbExclamation
4130 If giUpdate > 0 Then
4140 giUpdate = False
4150 funcSetSystemData "Update", "0"
4160 End If
4170 Else
4180 MsgBox "数据库升级失败!", vbExclamation
4190 End If
4200 GoTo EndLabel
4210 Else
4220 GoTo EndLabel
4230 End If
4240 Else
4250 MsgBox "数据库连接失败!", vbExclamation
4260 GoTo EndLabel
4270 End If
4280 End If
4290 Else
4300 If Not gclsInclude.MyFileExists(gTAppLicInfo.FileDBRecord) Then ' 系统数据库文件遗失
4310 sTemp = gclsInclude.MyFilePath(gTAppLicInfo.FileDBRecord)
4320 If sTemp <> "" Then
4330 If Not gclsInclude.MyPathExists(sTemp) Then
4340 If Not gclsInclude.MyMkDir(sTemp) Then
4350 MsgBox "无法建立路径:" & sTemp & ",程序运行失败!", vbCritical
4360 GoTo EndLabel
4370 End If
4380 End If
4390 Else
4400 MsgBox gTAppLicInfo.FileINI & "文件中,数据库路径指定错误,程序运行失败!", vbCritical
4410 GoTo EndLabel
4420 End If
4430 sMsg = gTAppLicInfo.FileDBRecord & _
" 系统数据库文件遗失,请按<确定>建立一个空数据库,按<取消>退出系统."
4440 If MsgBox(sMsg, vbOKCancel, "文件遗失") = vbOK Then
4450 giUpdate = 4
4460 Screen.MousePointer = vbDefault
4470 DoEvents
4480 gclsCommon.CBNSplashSetMessage "正在创建数据库"
4490 DoEvents
UpdateDBase:
#If APPLICATION_TYPE = 1 Then '考勤
4500 gTHoliSystem = gclsCommon.CBNGetHolidayInfo(True And (giUpdate > 0))
#End If
4510 If gTAppLicInfo.SoftDBaseVer = "" Then gTAppLicInfo.SoftDBaseVer = "97"
'由于ADO的版本已经强制为2.5了,所以Jet的版本应该为4.0
4520 gTAppLicInfo.SysDBRecordConn = gclsDBFunc.dbGetJetConnect(gTAppLicInfo.FileDBRecord, _
gTAppLicInfo.SoftDBPasswd, _
True, _
"4.0")
'gTAppLicInfo.SysDBRecordConn = gclsDBFunc.dbGetJetConnect(gTAppLicInfo.FileDBRecord, _
gTAppLicInfo.SoftDBPasswd, _
True, _
IIf(gTAppLicInfo.SoftDBaseVer = "97", "3.51", "4.0"))
' if gclsInclude.MyFilePath(gTAppLicInfo.FileDBRecord)
4540 If CreateDB(gTAppLicInfo.FileDBRecord, gTAppLicInfo.SoftDBPasswd) Then
4550 Screen.MousePointer = vbDefault
4560 DoEvents
4570 gclsCommon.CBNSplashUnload
4580 DoEvents
4590 If giUpdate > 0 Then
4600 giUpdate = 0
4610 funcSetSystemData "Update", "0"
4620 End If
4630 MsgBox "数据库建立成功!请重新启动本程序."
4640 Else
4650 Screen.MousePointer = vbDefault
4660 DoEvents
4670 gclsCommon.CBNSplashUnload
4680 DoEvents
4690 MsgBox "数据库建立失败!请找供应商寻求帮助.", vbExclamation
4700 If gclsInclude.MyFileExists(gTAppLicInfo.FileDBRecord) Then Kill gTAppLicInfo.FileDBRecord
4710 End If
4720 gclsDBFunc.dbCloseConnect False
4730 gclsDBFunc.dbCloseConnect True
4740 GoTo EndLabel
4750 Else
4760 GoTo EndLabel
4770 End If
4780 Else
4790 If giUpdate = 3 Then
4800 gclsCommon.CBNSaveLogFile gTAppLicInfo.SysLoginUser & _
"用户升级数据库:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow), _
True, True
4810 gclsInclude.MyAppendToFile gTAppLicInfo.FileTemp, _
gTAppLicInfo.SysLoginUser & _
"用户升级数据库:" & _
gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow)
4820 sMsg = "系统将建立新的" & gTAppLicInfo.FileDBRecord & "数据库,继续吗?" & vbCrLf & _
"注意:此操作将删除现有的数据库,在进行之前,请先备份数据!"
4830 If MsgBox(sMsg, vbOKCancel + vbQuestion + vbDefaultButton2) = vbOK Then
4840 Kill gTAppLicInfo.FileDBRecord
4850 GoTo UpdateDBase
4860 End If
4870 GoTo EndLabel
4880 End If
4890 End If
4900 End If
LoadProgramm:
4910 If gDBRecordConn Is Nothing Then
4920 Screen.MousePointer = vbDefault
4930 DoEvents
4940 gclsCommon.CBNSplashSetMessage "正在连接数据库"
4950 DoEvents
4960 Set gDBRecordConn = New ADODB.Connection
4970 gDBRecordConn.CursorLocation = adUseClient
On Error Resume Next
4980 gDBRecordConn.Open gTAppLicInfo.SysDBRecordConn
If Err <> 0 Then
Set gDBRecordConn = Nothing
gclsCommon.CBNSplashUnload
MsgBox Error
GoTo ReLogin
End If
On Error GoTo ErrLabel
4990 gclsCommon.CommonAppInfo = gTAppLicInfo
5000 End If
5010 gclsCommon.CommonConnect = gDBRecordConn
If giAppUser = 80 Then
gclsCommon.CBNSplashUnload
Unload frmSplash
GoTo LoadSQLLabel
End If
5020 If giUpdate > 0 Then
5030 If MsgBox("数据库将升级为新的结构,是否继续?", vbOKCancel + vbQuestion) = vbOK Then
5040 Screen.MousePointer = vbDefault
5050 DoEvents
5060 gclsCommon.CBNSplashSetMessage "正在升级数据库"
5070 DoEvents
5080 If Not gTAppLicInfo.SoftNetwork Then
5090 GoTo UpdateDBase
5100 Else
5110 GoTo UpdateSQL
5120 End If
5130 End If
5140 End If
5150 Screen.MousePointer = vbDefault
5160 DoEvents
5170 gclsCommon.CBNSplashUnload
5180 DoEvents
5190 Err.Clear
'2001/9/19客户H增加,因为偶尔出现adoTempRS为Nothing的情况
5200 Set adoTempRS = New ADODB.Recordset
5210 With adoTempRS
5220 .Open "SELECT * FROM T0006S001", gDBRecordConn, adOpenStatic, adLockOptimistic
5230 If Err = -2147217887 Then
5240 ElseIf Err Then
5250 MsgBox Error & vbCrLf & "数据库未升级,退出系统后并重新运行程序以升级数据库!", vbExclamation
5260 funcSetSystemData "Update", 1
5270 GoTo EndLabel
5280 End If
5290 If .RecordCount = 0 Then
5300 MsgBox "数据库未建立成功!,退出系统后并重新运行程序以升级数据库!", vbExclamation
5310 funcSetSystemData "Update", 1
5320 If gclsInclude.MyFileExists(gTAppLicInfo.FilePicSplash) Then Unload frmSplash
5330 GoTo EndLabel
5340 End If
5350 .Filter = "W1182 = '" & gTAppLicInfo.SysLoginUser & "'"
5360 If Not .EOF Then
5370 If Not gTAppLicInfo.SoftNetwork Then
'如果为单机用户,则需要验证口令
5380 If UCase(gclsInclude.MyNz(!W1104, "")) <> _
gclsInclude.MySwitchDEC(sLoginPwd, _
gTAppLicInfo.SysLoginUser, 0) Then
5390 MsgBox "登录身份验证错误,请重新录入!", vbExclamation
5400 GoTo ReLogin
5410 !W1104 = ""
5420 .Update
5430 End If
5440 End If
5450 Else
5460 MsgBox "该用户名不存在,请重新录入", vbExclamation
5470 GoTo ReLogin
5480 End If
5490 gbLoginSuccess = True
5500 If gTAppLicInfo.SysDebugLevel = 10 Then gclsCommon.CBNSaveLogFile "登录成功."
5510 gclsCommon.CBNSetAppInfo gTAppLicInfo
5520 .Filter = 0
5530 .Close
5540 End With
5550 If Not InitParament Then GoTo EndLabel
5560 If gbFirstRun Then
5570 gclsCommon.CBNShowRegistSysCard vbModal
5580 GoTo EndLabel
5590 End If
' gclsCommon.CBNSaveEvents OET_LOGIN, _
IIf(gTAppLicInfo.NeedSwitch, "交接班", _
gTAppLicInfo.SoftCnName & "(" & gTAppLicInfo.SoftLevel & ")"), , _
gTAppLicInfo.SysLoginUser
5610 gclsCommon.CBNSaveEvents OET_LOGIN, _
gTAppLicInfo.SoftCnName & "(" & gTAppLicInfo.SoftLevel & ")"
5620 gTOperRight = gclsCommon.CBNGetOperatorRight(gDBRecordConn, gTAppLicInfo.SysLoginUser)
5630 If gTAppLicInfo.SysDebugLevel = 10 Then _
gclsCommon.CBNSaveLogFile "准备卸载Splash Form."
5640 If gclsInclude.MyFileExists(gTAppLicInfo.FilePicSplash) Then Unload frmSplash
5650 If gTAppLicInfo.SysDebugLevel = 10 Then _
gclsCommon.CBNSaveLogFile "初始化成功,准备加载主程序."
5660 If gTAppLicInfo.SoftNetwork Then
5670 gclsInclude.MySetINIData gTAppLicInfo.FileINI, _
"SQL SERVER", _
"SERVER_HOST", _
gTAppLicInfo.SoftSQLServer
5680 End If
5690 If Not gTAppLicInfo.SysLoginSA Then gTAppLicInfo.SysLoginDebug = False
5700 If gTAppLicInfo.SysLoginDebug Then
5710 gclsCommon.CBNSaveEvents OET_LOGIN_DEBUG
5720 End If
5730 If Not gclsCommon.CBNHavePrinter Then
5740 gTAppLicInfo.CtrlPapleCtrl = False
5750 End If
5760 If gTAppLicInfo.CtrlPapleCtrl Then Set gclsPntCtrl = New BNIncludeProj.clsBNPrinterCtrl
#If APPLICATION_TYPE = 1 Then '考勤
5770 gTHoliSystem = gclsCommon.CBNGetHolidayInfo(True And (giUpdate > 0))
5780 gTPickStruct.TDateRange.DStart = funcGetINIData("Other", _
"INI0302", _
gclsCommon.CBNGetFirstDay(gTAttendCtl.BeginAttendDay))
#Else
5790 gTPickStruct.TDateRange.DStart = funcGetINIData("Other", _
"INI0302", _
gclsCommon.CBNGetFirstDay(1))
#End If
5800 If gTPickStruct.TDateRange.DStart = 0 Then
5810 gTPickStruct.TDateRange.DStart = gclsCommon.CBNGetFirstDay(1)
5820 gTPickStruct.TDateRange.DEnd = gclsInclude.MyDateOf(gclsCommon.CBNGetNow)
5830 End If
5840 gTPickStruct.TempEmp = funcGetINIData("Other", "INI0301", "")
5850 gTPickStruct.TDateRange.DEnd = funcGetINIData("Other", _
"INI0303", _
gclsInclude.MyDateOf(gclsCommon.CBNGetNow))
5860 gclsCommon.CBNSetRegConnect gTAppLicInfo.SoftSQLServer & _
SPLIT_SYMBOL & _
gTAppLicInfo.SysLoginUser & _
SPLIT_SYMBOL & _
sLoginPwd
5870 gclsCommon.CommonOpertorRights = gTOperRight
5880 gclsCommon.CommonAppInfo = gTAppLicInfo
5890 gTAppLicInfo.SoftVersion = gTAppLicInfo.SoftVersion & "(" & gTAppLicInfo.UserAlias & ")"
5900 gTPickStruct.TempNameLists = funcGetINIData("Other", "INI0304", "")
5910 gTPickStruct.TempNumberLists = funcGetINIData("Other", "INI0305", gTPickStruct.TempEmp)
5920 If gTPickStruct.TempNumberLists = "" Then gTPickStruct.TempNumberLists = gTPickStruct.TempEmp
If giAppUser <> 80 Then
5924 Call gclsCommon.CBNSetEventsMask(gbEventMask, giAppUser)
End If
5930 gbFirstLogin = False
'5932 InitVBoost
LoadSQLLabel:
If gTAppLicInfo.CtrlDatabaseLogin Then
Call funcSetINIData("SQL SERVER", "DATABASE", gTAppLicInfo.SoftSQLDBase)
End If
#If APPLICATION_TYPE = 13 Then '超限收费
'gTAixSystemParament.RunType为程序运行方式
'1=计重管理程序
'2=计重主程序
'5934 If gTAixSystemParament.RunType = 2 Then
5940 Load frmAppMain
' Else
'5936 Load frmMain '
'5946 End If
#ElseIf APPLICATION_TYPE = 80 Then
Load frmSQLProcedure
#Else
5948 Load frmMain
#End If
' Load frmMonitor
' If gTAppLicInfo.SysLoginDebug Then
' Else
' Load frmMainDNNew
' Load frmAppClient '
' End If
5950 Exit Sub
ErrLabel:
5960 If Err = -2147217865 Then
5970 MsgBox "SQL数据库已改变,请先删除本系统数据库,然后重新运行本程序"
5980 GoTo EndLabel
5990 ElseIf Err = -2147467259 Then
6000 MsgBox Error
6010 GoTo EndLabel
6020 ElseIf Err = 429 And iPos = 1 Then
6030 MsgBox "程序支持库未升级,请联系软件开发商", vbInformation
ElseIf Err = -2147217843 Then
MsgBox Error
GoTo EndLabel
6040 Else
#If Not IS_RUN Then
6050 Debug.Print Err.Description
#End If
6060 If gTAppLicInfo.SysSystemDebug Then _
MsgBox "错误号:" & Err.Number & ",描述:" & Err.Description & ",Modal:Main" & ",位置=" & Erl
6070 If Not gclsCommon Is Nothing Then _
gclsCommon.CBNSaveLogFile "Err:" & Err.Description & " Modal:Main" & ",位置=" & Erl
6080 Resume Next
6090 End If
6100 Exit Sub
EndLabel:
6110 On Error Resume Next
6120 DoEvents
6130 gclsCommon.CBNSplashSetMessage "正在退出程序"
6140 Screen.MousePointer = vbDefault
6150 DoEvents
If gDBRecordConn.State <> 0 Then
6160 gDBRecordConn.Close
End If
6170 Set gDBRecordConn = Nothing
#If APPLICATION_TYPE = 1 Then '考勤
6180 Erase gTHoliSystem
#End If
6190 gbFirstLogin = True
6200 gclsCommon.CBNUnloadForm "frmMain", Forms
6210 Set gclsDBFunc = Nothing
6220 Set gclsTreeView = Nothing
6230 gclsCommon.CBNSplashUnload
6240 Unload frmSplash
6250 Set frmSplash = Nothing
6260 Set gclsInclude = Nothing
6270 gclsCommon.SetCommon Nothing
6280 Set gclsCommon = Nothing
End Sub
Public Function funcGetINIData(fsINISelect As String, _
fsINIEntry As String, _
Optional ByVal fsDefault As String) As String
funcGetINIData = gclsInclude.MyGetINIData(gTAppLicInfo.FileINI, _
fsINISelect, _
fsINIEntry, _
fsDefault)
End Function
Public Function funcSetINIData(fsINISelect As String, _
fsINIEntry As String, _
Optional ByVal fsDefault As String) As String
gclsInclude.MySetINIData gTAppLicInfo.FileINI, _
fsINISelect, _
fsINIEntry, _
fsDefault
End Function
Public Function funcGetSystemData(fsINIEntry As String, _
Optional ByVal fsDefault As String) As String
funcGetSystemData = gclsInclude.MyGetINIData(gTAppLicInfo.FileINI, _
"System Settings", _
fsINIEntry, _
fsDefault)
End Function
Public Sub funcSetSystemData(ffsINIEntry As String, _
Optional ByVal fsDefault As String)
gclsInclude.MySetINIData gTAppLicInfo.FileINI, _
"System Settings", _
ffsINIEntry, _
fsDefault
End Sub
Public Sub SQL_FUNCTION()
Dim sSQL As String
'得到数据库名,当前用户的数据库用户名,当前用户的系统登录名
sSQL = "SELECT 'database' = db_name(),'user' = user_name(),'login' = suser_name()"
'Lower=LCase;Upper=UCase;SubString=Mid;GetDate=gclsCommon.CBNGetStandTime(gclsCommon.CBNGetNow),
End Sub
Public Sub List_Checked(fList As Control, ByVal fbFlag As Boolean)
Dim i As Integer
For i = 1 To fList.ListCount
fList.Selected(i - 1) = fbFlag
Next i
fList.Refresh
fList.ListIndex = 0
End Sub
Public Sub ShowSplash(fsMsg As String, Optional fsNote As String)
DoEvents
With gclsCommon
.CBNSplashShow
.CBNSplashSetMessage fsMsg
.CBNSplashSetNotes fsNote
End With
DoEvents
End Sub
Public Sub HideSplash(Optional fbShow As Boolean = True)
Dim oForm As Form
gclsCommon.CBNSplashUnload
DoEvents
' If fbShow Then
' For Each oForm In Forms
' If oForm.WindowState = 0 Then
' oForm.Show
' End If
' Next
' End If
End Sub
Public Function ModifyRight(fsField As String, _
fsValue As String, _
feActionEnum As ActionEnum, _
Optional fsOld As String)
Select Case feActionEnum
Case ACT_INC
Case ACT_DEC
Case ACT_SET
End Select
End Function
Public Function IsValidSQL(fsUnitList As String, _
fsDeptList As String, _
ByVal fsEmpNum As String, _
BeginDate As Date, _
EndDate As Date, _
flEmplyComboCount As Long) As Boolean
If Not (gTAppLicInfo.SysLoginSA Or gTAppLicInfo.SysLoginSYS) Then
If Len(gTOperRight.UnitList) + Len(gTOperRight.DeptList) = 0 Then
MsgBox "本用户没操作此功能之权限,请向管理员申请", vbCritical: Exit Function
End If
End If
If BeginDate > EndDate Then
MsgBox ("开始日期不能大于结束日期")
Exit Function
End If
fsEmpNum = gclsCommon.CBNGetFirstData(fsEmpNum)
If fsEmpNum <> VALUE_ALL_STR And fsEmpNum <> "" Then
If Not gclsCommon.CBNIsValidEmployee(fsEmpNum) Then
MsgBox "工号为:" & fsEmpNum & "的人员不存在,请重新选定", vbCritical
Exit Function
End If
ElseIf flEmplyComboCount < 2 Then
' 当人员列表中,个数小于或等于1时,表明可能只有个VALUE_ALL_STR或根本没有内容.
MsgBox "没有选择人员!", vbExclamation: Exit Function
' Else
' If Len(fsUnitList) + Len(fsDeptList) = 0 Then
' MsgBox "请选择有效的部门!", vbExclamation: Exit Function
' End If
End If
IsValidSQL = True
End Function
Public Sub SetAllTableRight(fiFlag As Integer) '设置Public的数据库权限
Dim sAllTables() As String
Dim i As Integer
If Not gTAppLicInfo.SoftNetwork Then Exit Sub
With gclsDBFunc
If fiFlag = 1 Or fiFlag = 3 Then
sAllTables = GetAllViews '对于所有的视图具有读的权限
For i = 0 To UBound(sAllTables)
.dbSetSQLDBRight gDBRecordConn, sAllTables(i), eSELECT
Next i
End If
If fiFlag = 2 Or fiFlag = 3 Then
sAllTables = GetAllTables '对于所有的视图具有读的权限
For i = 0 To UBound(sAllTables)
If UCase(Left(sAllTables(i), 2)) = "A0" Then
.dbSetSQLDBRight gDBRecordConn, sAllTables(i), eSELECT + eUPDATE
Else
.dbSetSQLDBRight gDBRecordConn, sAllTables(i), eSELECT + eDELETE + eINSERT + eUPDATE
End If
Next i
End If
End With
End Sub
Public Function ShowLogin(Optional fsLoginPwd As String) As String
Dim TLoginPara As LoginPara
Dim sPwd As String
Dim sSQL As String
Dim sTemp As String
Dim i As Integer
Dim n As Integer
With TLoginPara
.Caption = "欢迎使用" & gTAppLicInfo.SoftOwnerAlias & _
gTAppLicInfo.SoftName & _
gTAppLicInfo.SoftVersion
.bIsDebug = gTAppLicInfo.SysSystemDebug
.Server = gTAppLicInfo.SoftSQLServer
.User = funcGetSystemData("DefaultLogin", "SA")
.bNeedServer = gTAppLicInfo.SoftNetwork
.EvtTempFile = gTAppLicInfo.FileTemp
.bShowDatabase = gTAppLicInfo.CtrlDatabaseLogin '是否要显示数据库登录的信息
If gTAppLicInfo.CtrlCompanyLogin Then
n = funcGetINIData("Company List", "CompanyCounts", "0")
For i = 1 To n
sTemp = funcGetINIData("Company List", "Company" & i, "登录公司" & i)
.sCompanyList = .sCompanyList & sTemp & SPLIT_SYMBOL
Next i
If .sCompanyList = "" Then
.sCompanyList = "登录公司"
Else
.sCompanyList = Left(.sCompanyList, Len(.sCompanyList) - Len(SPLIT_SYMBOL))
End If
End If
.DebugCode = Left(gTAppLicInfo.SoftEnName, 1)
If gTAppLicInfo.CtrlDatabaseLogin Then
.bShowDatabase = True
.Database = gTAppLicInfo.SoftSQLDBase
End If
' .bNeedSwitch = True
gbLoginSuccess = gclsCommon.CBNShowLogin(TLoginPara)
If .User <> "" Then
If gDBRecordConn Is Nothing Then
ShowLogin = "2"
Else
fsLoginPwd = UCase(.Pwd)
sPwd = gclsInclude.MySwitchDEC(fsLoginPwd, UCase(.User), 0)
If gTAppLicInfo.SoftNetwork Then
sSQL = "SELECT * FROM T0006S001 WHERE W1182 = '" & UCase(.User) & "'"
Else
sSQL = "SELECT * FROM T0006S001 WHERE (W1104 ='" & sPwd & "'" & _
IIf(fsLoginPwd = "", " OR W1104 IS NULL", "") & ") AND (W1182 = '" & UCase(.User) & "')"
End If
If gDBRecordConn.Execute(sSQL).RecordCount > 0 Then
ShowLogin = "1"
gTOperRight = gclsCommon.CBNGetOperatorRight(gDBRecordConn, UCase(.User))
Else
' MsgBox "登录身份验证错误!", vbCritical
ShowLogin = "0"
End If
End If
Else
ShowLogin = ""
End If
'*****************加入供应商代码********************************
gsVendorCode = "123"
'***************************************************************
If ShowLogin <> "1" And ShowLogin <> "2" Then Exit Function
i = InStr(1, .sCompanyList, SPLIT_SYMBOL)
If i > 0 Then
gTAppLicInfo.SysLoginCompany = Left(.sCompanyList, i - 1)
End If
gTAppLicInfo.SysLoginUser = UCase(.User)
fsLoginPwd = UCase(.Pwd)
gTAppLicInfo.SoftSQLServer = UCase(.Server)
gTAppLicInfo.SysLoginDebug = .bDebugLogin
If gTAppLicInfo.CtrlDatabaseLogin Then
gTAppLicInfo.SoftSQLDBase = .Database
End If
With gTAppLicInfo
If .SysLoginDebug Then .SysSystemDebug = .SysLoginDebug
gclsDBFunc.dbSetDebug .SysSystemDebug
.SysLoginSYS = False
.SysLoginSA = False
Select Case UCase(.SysLoginUser)
Case "SA"
.SysLoginSA = True
Case "SYS"
.SysLoginSYS = True
Case Else
'程序内定的:基于SYS开头的用户全部具备SYS权限,例如SYS08
.SysLoginSYS = (UCase(.SysLoginUser) = "SYS") Or _
(UCase(.SysLoginUser) Like "SYS#") Or _
(UCase(.SysLoginUser) Like "SYS##") Or _
(UCase(.SysLoginUser) Like "SYS###")
End Select
End With
gclsCommon.CommonOpertorRights = gTOperRight
gclsCommon.CommonAppInfo = gTAppLicInfo
End With
End Function
Public Sub CloseOtherWindows(Optional fsForm As String, Optional fbUnload As Boolean)
Dim frmTemp As Form
If gTAppLicInfo.CtrlRunSingle Or fbUnload Then
For Each frmTemp In Forms
' If frmTemp.Visible Then
If frmTemp.Name <> "frmMain" Then
Unload frmTemp
End If
' End If
Next
If fsForm <> "" Then gclsCommon.CBNCloseAllForm fsForm
End If
End Sub
Public Sub SavePickStruct(fBNListTree1 As BNListTree, _
fTDateRange As DateRange, _
Optional fcobEmployee)
Dim i As Integer
With gTPickStruct
If Not IsMissing(fcobEmployee) Then
If fcobEmployee <> "" And fcobEmployee <> VALUE_ALL_STR Then
If fcobEmployee.ListCount > 0 Then
ReDim .Employee(fcobEmployee.ListCount - 1)
For i = 0 To fcobEmployee.ListCount - 1
.Employee(i) = fcobEmployee.List(i)
Next i
Else
ReDim .Employee(0)
End If
.TempEmp = fcobEmployee
End If
End If
If fTDateRange.DStart > 0 Then
.TDateRange.DStart = gclsInclude.MyDateOf(fTDateRange.DStart)
.TDateRange.DEnd = gclsInclude.MyDateOf(fTDateRange.DEnd)
End If
.UnitLists = fBNListTree1.UnitList
.DeptLists = fBNListTree1.DeptList
End With
End Sub
Public Sub LoadPickStruct(fBNListTree1 As BNListTree, _
fTDateRange As DateRange, _
Optional fcobEmployee)
With gTPickStruct
If Not IsMissing(fcobEmployee) Then
If .TempEmp <> VALUE_ALL_STR Then fcobEmployee = .TempEmp
End If
If .TDateRange.DStart > 0 Then
fTDateRange = .TDateRange
Else
#If APPLICATION_TYPE = 1 Then '考勤
.TDateRange.DStart = gclsCommon.CBNGetFirstDay(gTAttendCtl.BeginAttendDay)
#Else
.TDateRange.DStart = gclsCommon.CBNGetFirstDay(1)
#End If
.TDateRange.DEnd = gclsInclude.MyDateOf(gclsCommon.CBNGetNow)
fTDateRange = .TDateRange
End If
End With
End Sub
Public Function GetNote(ByVal fNoteType As WorkState, _
Optional fsNewNote As String) As String
If fNoteType = WK_CLASSCOMPOUND Then
GetNote = "有合成班"
ElseIf fNoteType = WK_NOCLASS Then
GetNote = "无班次"
ElseIf fNoteType = WK_SIGN Then
GetNote = "签卡" & fsNewNote
ElseIf fNoteType = WK_ABSENT Then
GetNote = "缺卡" & fsNewNote
ElseIf fNoteType = WK_REST Then
GetNote = "休日"
ElseIf fNoteType = WK_HOLIDAY Then
GetNote = fsNewNote
ElseIf fNoteType = WK_ADJUSTWORK Then
GetNote = IIf(gbNoteShow, "调整" & fsNewNote, "")
ElseIf fNoteType = WK_TOCLASS Then
GetNote = IIf(gbNoteShow, fsNewNote, "")
ElseIf fNoteType = WK_FROMCLASS Then
GetNote = IIf(gbNoteShow, fsNewNote, "")
ElseIf fNoteType = WK_OUTRANGE Then
GetNote = IIf(gbNoteShow, "超出范围", "")
End If
If GetNote <> "" Then GetNote = "," & GetNote
End Function
Public Function GetTblsInQuery(fsQryName As String) As String()
Dim sSQL As String
' Debug.Assert fsQryName <> "QT6621A001_001"
sSQL = GetQueriyItem(fsQryName)
If sSQL = "" Then
sSQL = gclsCommon.CBNGetQueriyItem(fsQryName)
End If
GetTblsInQuery = gclsCommon.CBNGetTblsInQuery(sSQL)
End Function
Public Sub SaveAllPickStruct()
With gclsInclude
.MySetINIData gTAppLicInfo.FileINI, "Other", "INI0301", gTPickStruct.TempEmp
.MySetINIData gTAppLicInfo.FileINI, "Other", "INI0302", gTPickStruct.TDateRange.DStart
.MySetINIData gTAppLicInfo.FileINI, "Other", "INI0303", gTPickStruct.TDateRange.DEnd
.MySetINIData gTAppLicInfo.FileINI, "Other", "INI0304", gTPickStruct.TempNameLists
.MySetINIData gTAppLicInfo.FileINI, "Other", "INI0305", gTPickStruct.TempNumberLists
End With
End Sub
Public Function UpdateVertion(fadoTempRS As ADODB.Recordset) As Boolean
Dim sTemp As String
Dim lNewSoftLevel As Long
With fadoTempRS
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BA'"
If .EOF Then Exit Function
lNewSoftLevel = Val(!W1102)
If (gTAppLicInfo.SoftLevel < lNewSoftLevel) And (gclsCommon.CBNGetNow > gDCanUpdate) Then
If lNewSoftLevel - gTAppLicInfo.SoftLevel >= 10 Then
If gclsInclude.MyFileExists(gTAppLicInfo.FileInstall) Then
If MsgBox("本程序版本过期,请及时下载并使用新的程序!" & vbCrLf & _
gTAppLicInfo.SoftInstallTips, vbCritical + vbOKCancel) = vbOK Then
gclsInclude.MyRunProgram gTAppLicInfo.FileInstall
End If
Else
MsgBox "本程序版本过期,请及时下载并做更新!" & vbCrLf & _
gTAppLicInfo.SoftInstallTips, vbInformation
End If
UpdateVertion = True
Exit Function
Else
If gclsInclude.MyFileExists(gTAppLicInfo.FileInstall) Then
If MsgBox("本程序已有新的版本,请及时下载并做更新!更新请使用<确定>按纽." & _
vbCrLf & gTAppLicInfo.SoftInstallTips, vbInformation + vbOKCancel) = vbOK Then
gclsInclude.MyRunProgram gTAppLicInfo.FileInstall
UpdateVertion = True
Exit Function
End If
Else
MsgBox "本程序已有新的版本,请及时下载并做更新!" & vbCrLf & _
gTAppLicInfo.SoftInstallTips, vbInformation
End If
End If
ElseIf gTAppLicInfo.SoftLevel > lNewSoftLevel Then
If gTAppLicInfo.SysLoginSA Then
!W1102 = gTAppLicInfo.SoftLevel
.Update
sTemp = GetInstallTips(gTAppLicInfo.SoftLevel)
If sTemp <> "" Then
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BH'" '更新安装提示 sTemp
!W1102 = sTemp
.Update
gTAppLicInfo.SoftInstallTips = sTemp
End If
End If
End If
End With
End Function
Public Function InitParament() As Boolean
Dim adoTempRS As ADODB.Recordset
Set adoTempRS = New ADODB.Recordset
InitParament = True
With adoTempRS
.Open "SELECT * FROM T0101S001", _
gDBRecordConn, _
adOpenStatic, _
IIf(gTAppLicInfo.SysLoginSA, adLockOptimistic, adLockReadOnly)
.Filter = "W1101 = 'W010A'"
If Not .EOF Then gTAppLicInfo.SoftCommPasswd = !W1102
If gTAppLicInfo.SoftCommPasswd = "" Then
gTAppLicInfo.SoftCommPasswd = gclsCommon.CBNGetCommPwd(gTAppLicInfo.FileEncrypt)
End If
.Filter = "W1101 = 'W010B'"
If Not .EOF Then
glMsgAdd = !W1102
Else
glMsgAdd = 10
End If
.Filter = "W1101 = 'W010C'"
If Not .EOF Then gTAppLicInfo.UserName = !W1102
.Filter = "W1101 = 'W030A'"
If Not .EOF Then
gTAppLicInfo.OthEmpNoLen = !W1102
Else
gTAppLicInfo.OthEmpNoLen = 8
End If
.Filter = "W1101 = 'W030B'"
If Not .EOF Then
gTAppLicInfo.OthDptNoLen = !W1102
Else
gTAppLicInfo.OthDptNoLen = 4
End If
.Filter = "W1101 = 'W030C'"
If Not .EOF Then gTAppLicInfo.OthDptUseTree = IIf(!W1102 = 1, True, False)
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BB'"
If Not .EOF Then gTAppLicInfo.FileInstall = !W1102
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BH'"
If Not .EOF Then gTAppLicInfo.SoftInstallTips = !W1102
If UpdateVertion(adoTempRS) Then
InitParament = False
Exit Function
End If
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BC'"
If .EOF Then
If gTAppLicInfo.SysLoginSA Then
.AddNew
!W1101 = "W" & gTAppLicInfo.SoftNumber & "BC"
!W1102 = gTAppLicInfo.SoftVersion
.Update
End If
Else
#If IS_RUN Then
If Not gTAppLicInfo.SysLoginDebug Then
If gTAppLicInfo.SoftVersion <> !W1102 Then
MsgBox "应用程序和数据库的版本不一致,请使用正确的版本!", vbCritical
InitParament = False
Exit Function
!W1102 = gTAppLicInfo.SoftVersion
.Update
End If
End If
#End If
End If
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BD'"
If Not .EOF Then
If !W1102 = "0" Then
gbFirstRun = True
Else
gbFirstRun = False
End If
End If
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BE'"
If Not .EOF Then gDCanUpdate = !W1102
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BG'"
If Not .EOF Then gTAppLicInfo.SysLockCal = IIf(!W1102 = 1, True, False)
'******************************* 考勤专用开始 ***********************************
'*
#If APPLICATION_TYPE = 1 Then
.Filter = "W1101 = 'W660A'"
If Not .EOF Then gTAttendCtl.Need30Rnd = IIf(!W1102 = 1, True, False)
.Filter = "W1101 = 'W660B'"
If Not .EOF Then gTAttendCtl.BeginAttendDay = !W1102
If (gTAttendCtl.BeginAttendDay < 1) Or (gTAttendCtl.BeginAttendDay > 31) Then _
gTAttendCtl.BeginAttendDay = 1
.Filter = "W1101 = 'W660C'"
If Not .EOF Then gTAttendCtl.HaveAbsent = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660D'"
If Not .EOF Then gTAttendCtl.HaveLate = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660E'"
If Not .EOF Then gTAttendCtl.MorningTimePot = !W1102
.Filter = "W1101 = 'W660F'"
If Not .EOF Then gTAttendCtl.NightTimePot = !W1102
.Filter = "W1101 = 'W660G'"
If Not .EOF Then gTAttendCtl.ELStandard = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660H'"
If Not .EOF Then gTAttendCtl.FeastEquNormal = IIf(!W1102, True, False)
.Filter = "W1101 = 'W660I'"
If Not .EOF Then gTAttendCtl.Use1CardRange = IIf(!W1102, True, False)
.Filter = "W1101 = 'W660J'"
If Not .EOF Then gTAttendCtl.MustAddTime = !W1102
.Filter = "W1101 = 'W660K'"
If Not .EOF Then gTAttendCtl.NightWorkTimePot = !W1102
.Filter = "W1101 = 'W660L'"
If Not .EOF Then gTAttendCtl.FeastRestToDay = IIf(!W1102, True, False)
.Filter = "W1101 = 'W660M'"
If Not .EOF Then gTAttendCtl.HaveAdd = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660N'"
If Not .EOF Then gTAttendCtl.NeedAddSheet = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660O'"
If Not .EOF Then gTAttendCtl.MustOver8 = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660P'"
If Not .EOF Then gTAttendCtl.AttRptGroup = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660Q'"
If Not .EOF Then gTAttendCtl.SpecCard = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W660R'"
If Not .EOF Then gTAttendCtl.AddLater = IIf(!W1102 = "1", True, False)
.Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BF'"
If Not .EOF Then gTAttendCtl.DistinctCard = IIf(!W1102 = "1", True, False)
'*
'******************************* 考勤专用结束 ***********************************
#ElseIf APPLICATION_TYPE = 3 Then '巡更
.Filter = "W1101 = 'W300A'"
If Not .EOF Then
glErrPatrol = !W1102
Else
glErrPatrol = 5
End If
#End If
If gTAppLicInfo.SysDebugLevel = 10 Then gclsCommon.CBNSaveLogFile "准备关闭临时变量."
.Close
End With
If gTAppLicInfo.SysDebugLevel = 10 Then gclsCommon.CBNSaveLogFile "准备卸载临时变量."
Set adoTempRS = Nothing
End Function
'针对每个版本的修改提示
Public Function GetInstallTips(flVerLevel As Long) As String
Dim DDate As Date
#If APPLICATION_TYPE = 1 Then '考勤
Select Case flVerLevel
Case 72
DDate = #10/23/2002# '在客户B
GetInstallTips = "程序更新了一个打卡段班次中关于加班单控制的问题,同时增加了数据库恢复功能。"
Case 73
DDate = #10/23/2002# '在客户B
GetInstallTips = "修改了在报表预览中选择一个人员时显示全部的错误,同时增加了数据库备份功能。"
Case 74
DDate = #12/3/2002# '在客户B
GetInstallTips = "修改了周日加班单问题,同时修改了巡更班次设置和排班功能。"
Case 75
DDate = #1/15/2003# '在家
GetInstallTips = "增加了第5个周六(指标为E6613)加班制度,同时修改了“职日”班次加班问题。"
End Select
#ElseIf APPLICATION_TYPE = 3 Then '巡更
Select Case flVerLevel
Case 3
DDate = #12/5/2002# '在客户B
GetInstallTips = "程序更新了菜单权限控制问题,同时对发行巡更卡的BUG进行了修改。"
End Select
#End If
GetInstallTips = " " & GetInstallTips & vbCrLf & String(40, " ") & DDate
End Function
Public Sub ShowMyError(fsModule As String, fsProcedure As String, _
flErrorNumber As Long, fsErrorDescription As String)
On Error GoTo PROC_ERR
Dim sMessage As String
Dim sCaption As String
sMessage = "Error: " & fsErrorDescription & vbCrLf & vbCrLf & _
"Module: " & fsModule & vbCrLf & _
"Procedure: " & fsProcedure & vbCrLf & vbCrLf & _
"Please notify My Software's tech suppor " & _
"at " & gTAppLicInfo.SoftAuthorPhone & " about this issue." & vbCrLf & _
"Please provide the support technician with " & _
"information shown in " & vbCrLf & "this dialog " & _
"box as well as an explanation of what you " & _
"were" & vbCrLf & "doing when this " & _
"error occurred."
sCaption = "Unexpected Error! Version: " & gTAppLicInfo.SoftVersion
MsgBox sMessage, vbCritical, sCaption
PROC_EXIT:
Exit Sub
PROC_ERR:
Resume Next
End Sub
Public Sub FuncSaveEvents(fsEvents As OptionEvent, _
Optional fsData1 As String, _
Optional fsData2 As String, _
Optional LoginUser As String)
Dim sCmd As String
If LoginUser = "" Then LoginUser = gTAppLicInfo.SysLoginUser
gclsCommon.CBNSaveEvents fsEvents, fsData1, fsData2, LoginUser
If gbIsServer Then Exit Sub '服务器并不保存自身做过的数据
If gTAppLicInfo.CtrlDBaseSync And gbConnectOK Then
' If gCtrlDBShell Is Nothing Then Exit Sub
'' sCmd = "AD" & eUP_SaveEvents & ":" & fsEvents & SPLIT_SYMBOL & fsData1 & SPLIT_SYMBOL & fsData2 & SPLIT_SYMBOL & LoginUser
' sCmd = gclsInclude.MyCmdCodeSendStr(sCmd)
' gCtrlDBShell.BoardcastMessage sCmd
End If
End Sub
Public Function CreateDllItem(RelPath As String, _
fsItem As String, _
hRetMode As Long) As IUnknown
Dim pCF As IClassFactory 'ObjCreate.olb
Dim strclsID As String
Dim udtclsID As clsID 'VBoostTypes6.olb
If hRetMode = 0 Then
strclsID = LoGetDllGUID(RelPath, fsItem) '
If strclsID = "" Then
MsgBox "加载" & RelPath & "错误,请检查!", vbCritical
Exit Function
End If
udtclsID = GUIDFromString(strclsID)
Set pCF = GetDllClassObject(RelPath, udtclsID, hRetMode) 'modCOMDllLoader.mod
Else
Set pCF = GetDllClassObject(RelPath, udtclsID, hRetMode)
End If
Set CreateDllItem = pCF.CreateInstance(Nothing, IID_IUnknown)
End Function
Public Sub UnloadDll()
TestUnloadDll m_hModBNInclude
TestUnloadDll m_hModBNTreeView
TestUnloadDll m_hModBNCommon
TestUnloadDll m_hModBNDBFunc
End Sub
Public Function InIDE() As Boolean
'当程序被编译后,Debug.Assert将忽略,所以利用这个特性来指示目前是在VB的设计环境还是在自动运行的环境中.
Debug.Assert Not LoTestIDE(InIDE)
End Function
Private Function LoTestIDE(Test As Boolean) As Boolean
Test = True
End Function
Private Function LoGetDllGUID(fsFile As String, fsItem As String) As String
On Error Resume Next
If fsFile <> vbNullString Then
LoGetDllGUID = TLI.TypeLibInfoFromFile(fsFile).TypeInfos.NamedItem(fsItem).Guid
End If
End Function
Public Function HelpTable(fsTable As String) As String
HelpTable = gclsCommon.CBNGetTblStructNote(fsTable, 4, True, , , True)
End Function
Public Sub WriteSysLogFile(Optional ByVal fsData As String, _
Optional ByVal fbAddTime As Boolean)
' If Not gTAppLicInfo.CtrlNeedMonitor Then Exit Sub
gclsInclude.MyWriteLogFile fsData & IIf(fbAddTime, "," & gclsCommon.CBNGetNow, ""), fbAddTime, gTAppLicInfo.FilePathApp & "Log\" & gTAppLicInfo.SoftEnName & "_" & Format(gclsCommon.CBNGetNow, "YYMMDDHHMMSS") & ".log"
End Sub