www.pudn.com > VB-KAOQINXITONG.zip > modPubDBMaker.bas


Attribute VB_Name = "modDBMaker" 
'Type常数 
Option Explicit 
'考勤-66,巡更-30,停车-40 
Private madoFillRS As ADODB.Recordset 
'以下是关于表 T0114S001(系统菜单) 中的字段定义 
 
'W1110: 菜单操作权限  W1124: 按纽是否可见  W1130: 菜单编号      W1159: 菜单工具条 
'W1121: 菜单标题      W1125: 菜单层次      W1131: 图形关键字 
'W1122: 菜单缺省权限  W1126: 菜单名        W1132: 系统有效菜单 
'W1123: 按纽标题      W1127: 是否可执行项  W1158: 菜单应用类别 
 
Public Const MENU_FIELDS As String = "W1110,W1122,W1124,W0090,W1121,W1123,W1126,W1127,W1131" 
 
Public Function CreateRecords() As Boolean 
 
10        On Error GoTo ErrLabel 
 
          Dim i         As Integer 
          Dim j         As Integer 
          Dim n         As Integer 
          Dim sIndex()  As String 
          Dim sStr      As String 
          Dim lMaxID    As Long 
          Dim sSplit1 
          Dim sSplit2 
 
20        If gclsDBFunc.dbGetConnString(False) = "" Then 
30          If (gDBRecordConn Is Nothing) Or (giUpdate > 0) Then 
 
ConnectLabel: 
 
40            Set gDBRecordConn = New ADODB.Connection 
50            With gDBRecordConn 
60                .CursorLocation = adUseClient 
70                .Open gTAppLicInfo.SysDBRecordConn 
80            End With 
90          ElseIf gDBRecordConn.State = 0 Then 
100           GoTo ConnectLabel 
110         End If 
120       Else 
130         Set gDBRecordConn = gclsDBFunc.dbGetConnect(False) 
140       End If 
150       gclsCommon.CommonConnect = gDBRecordConn 
 
      '  #If APPLICATION_TYPE = 1 Then     '考勤 
      '  #ElseIf APPLICATION_TYPE = 2 Then '门禁 
      '  #ElseIf APPLICATION_TYPE = 3 Then '巡更 
      '  #ElseIf APPLICATION_TYPE = 4 Then '停车 
      '  #ElseIf APPLICATION_TYPE = 5 Then '售饭 
      '  #ElseIf APPLICATION_TYPE = 6 Then '消费 
      '  #ElseIf APPLICATION_TYPE = 7 Then '发卡 
      '  #ElseIf APPLICATION_TYPE = 8 Then '自动采集 
      '  #ElseIf APPLICATION_TYPE = 10 Then '工资系统 
      '  #ElseIf APPLICATION_TYPE = 11 Then '衡重 
      '  #ElseIf APPLICATION_TYPE = 12 Then 'VMS 
      '  #ElseIf APPLICATION_TYPE = 13 Then '超限收费 
      '  #End If 
 
          Dim adoTempRS As ADODB.Recordset 
160       Set adoTempRS = New ADODB.Recordset 
170       With adoTempRS 
180         .Open "SELECT W1101,W1102 FROM T0101S001", gDBRecordConn, adOpenStatic, adLockOptimistic 
        '通用设置01 
190         .Filter = "W1101 = 'W010A'": If .EOF Then .AddNew: !W1101 = "W010A":      !W1102 = gclsCommon.CBNGetCommPwd(gTAppLicInfo.FileEncrypt) '通讯密码 
200         .Filter = "W1101 = 'W010B'": If .EOF Then .AddNew: !W1101 = "W010B":      !W1102 = 10 'glMsgAdd 
210         .Filter = "W1101 = 'W010C'": If .EOF Then .AddNew: !W1101 = "W010C":      !W1102 = gTAppLicInfo.SoftOwnerName '用户公司名 
 
       '其他设置03 
220         .Filter = "W1101 = 'W030A'": If .EOF Then .AddNew: !W1101 = "W030A":      !W1102 = "8"    '人员编号长度 
230         .Filter = "W1101 = 'W030B'": If .EOF Then .AddNew: !W1101 = "W030B":      !W1102 = "4"    '部门最小编码长度 
240         .Filter = "W1101 = 'W030C'": If .EOF Then .AddNew: !W1101 = "W030C":      !W1102 = "0"    '部门是否层次编码 
 
250         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BA'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BA":      !W1102 = gTAppLicInfo.SoftLevel '软件版本级别 
260         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BB'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BB":      !W1102 = ""     '安装程序路径 
270         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BC'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BC":      !W1102 = gTAppLicInfo.SoftVersion '软件版本 
280         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BD'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BD":      !W1102 = DFNLoadResString(112) '运行次数 
290         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BE'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BE":      !W1102 = #1/1/2001# '升级的开始日期 
300         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BG'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BG":      !W1102 = IIf(gTAppLicInfo.SysLockCal, 1, 0) '计算锁定 
310         .Filter = "W1101 = 'W" & gTAppLicInfo.SoftNumber & "BH'": If .EOF Then .AddNew: !W1101 = "W" & gTAppLicInfo.SoftNumber & "BH":      !W1102 = "西格数据科技有限公司版权所有" '安装提示 
 
      #If APPLICATION_TYPE = 4 Then '停车40 
      '停车设置40 
320         .Filter = "W1101 = 'W400A'": If .EOF Then .AddNew: !W1101 = "W400A":      !W1102 = "60"   '收费粒度 
330         .Filter = "W1101 = 'W400B'": If .EOF Then .AddNew: !W1101 = "W400B":      !W1102 = "5"    '时租收费 
340         .Filter = "W1101 = 'W400C'": If .EOF Then .AddNew: !W1101 = "W400C":      !W1102 = "5"    '包租收费 
350         .Filter = "W1101 = 'W400D'": If .EOF Then .AddNew: !W1101 = "W400D":      !W1102 = "0"    '减免时间 
360         .Filter = "W1101 = 'W400E'": If .EOF Then .AddNew: !W1101 = "W400E":      !W1102 = "0"    '减免比例 
370         .Filter = "W1101 = 'W400F'": If .EOF Then .AddNew: !W1101 = "W400F":      !W1102 = "0"    '允许透支 
380         .Filter = "W1101 = 'W400G'": If .EOF Then .AddNew: !W1101 = "W400G":      !W1102 = "30"   '免费时间 
 
      #ElseIf APPLICATION_TYPE = 3 Then '巡更30 
 
390         .Filter = "W1101 = 'W300A'": If .EOF Then .AddNew: !W1101 = "W300A":      !W1102 = glErrPatrol 
 
      #ElseIf APPLICATION_TYPE = 2 Then '门禁50 
      '门禁设置50 
 
      #ElseIf APPLICATION_TYPE = 1 Then '考勤66 
      '考勤设置66 
 
400         .Filter = "W1101 = 'W660A'": If .EOF Then .AddNew: !W1101 = "W660A":      !W1102 = IIf(gTAttendCtl.Need30Rnd, 1, 0) '对实际的打卡数据按30分钟进行修正 
410         .Filter = "W1101 = 'W660B'": If .EOF Then .AddNew: !W1101 = "W660B":      !W1102 = "1"                              '考勤开始日期 
420         .Filter = "W1101 = 'W660C'": If .EOF Then .AddNew: !W1101 = "W660C":      !W1102 = "1"                              '旷工是否计入日工时 
430         .Filter = "W1101 = 'W660D'": If .EOF Then .AddNew: !W1101 = "W660D":      !W1102 = IIf(gTAttendCtl.HaveLate, 1, 0)  '迟到早退是否计入日工时 
440         .Filter = "W1101 = 'W660E'": If .EOF Then .AddNew: !W1101 = "W660E":      !W1102 = "0.25"                           '早班统计时刻 
450         .Filter = "W1101 = 'W660F'": If .EOF Then .AddNew: !W1101 = "W660F":      !W1102 = ".9583333333"                    '夜班统计时刻 
460         .Filter = "W1101 = 'W660G'": If .EOF Then .AddNew: !W1101 = "W660G":      !W1102 = IIf(gTAttendCtl.ELStandard, 1, 0) '迟到早退标准 
470         .Filter = "W1101 = 'W660H'": If .EOF Then .AddNew: !W1101 = "W660H":      !W1102 = "1"                              '法定假加班与平日等同否 
480         .Filter = "W1101 = 'W660I'": If .EOF Then .AddNew: !W1101 = "W660I":      !W1102 = "1"                              '是否只使用一个打卡范围 
490         .Filter = "W1101 = 'W660J'": If .EOF Then .AddNew: !W1101 = "W660J":      !W1102 = "0"                              '额定加班的工时 
500         .Filter = "W1101 = 'W660K'": If .EOF Then .AddNew: !W1101 = "W660K":      !W1102 = ".75"                            '休日的夜班时刻 
510         .Filter = "W1101 = 'W660L'": If .EOF Then .AddNew: !W1101 = "W660L":      !W1102 = IIf(gTAttendCtl.FeastRestToDay, 1, 0) '节假日及休日是否计入日工时 
520         .Filter = "W1101 = 'W660M'": If .EOF Then .AddNew: !W1101 = "W660M":      !W1102 = IIf(gTAttendCtl.HaveAdd, 1, 0)   '加班是否计入日工时 
530         .Filter = "W1101 = 'W660N'": If .EOF Then .AddNew: !W1101 = "W660N":      !W1102 = IIf(gTAttendCtl.NeedAddSheet, 1, 0) ' 
540         .Filter = "W1101 = 'W660O'": If .EOF Then .AddNew: !W1101 = "W660O":      !W1102 = IIf(gTAttendCtl.MustOver8, 1, 0) 
            '特卡工时,如果每天的上班工时超过该工时时,则将超过的工时设置为特卡工时,当值为0时,将不起作用 
            '当打卡界于该工时之中时,系统自动将该时刻补上特卡的上班和下班卡。 
            '规定:在T0109A001中,当W1113=1或当W1113=3时为计算机自动加入的特卡,但当W1113=1时是需要显示的;当W1113=3时,表示被设置为特卡,不需要显示。 
            '当W1113=4时,为原始的打卡记录,但被标记为特卡,不显示。 
550         .Filter = "W1101 = 'W660P'": If .EOF Then .AddNew: !W1101 = "W660P":      !W1102 = IIf(gTAttendCtl.AttRptGroup, 1, 0)  '报表按人员分页打印 
560         .Filter = "W1101 = 'W660Q'": If .EOF Then .AddNew: !W1101 = "W660Q":      !W1102 = "1" '为特卡显示,如果为1,则当显示原始的打卡数据时将不显示标记为特卡的打卡数据 
570         .Filter = "W1101 = 'W660R'": If .EOF Then .AddNew: !W1101 = "W660R":      !W1102 = "0"                              '加班是否记缺勤 
 
      '考勤其它设置66 
580         .Filter = "W1101 = 'W66BF'": If .EOF Then .AddNew: !W1101 = "W66BF":      !W1102 = IIf(gTAttendCtl.DistinctCard, 1, 0)  '是否合并相同的打卡数据 
      #End If 
      '其他设置99 
 
590         .Filter = "W1101 = 'W990A'": If .EOF Then .AddNew: !W1101 = "W990A":      !W1102 = gclsInclude.MyGetFirstDay(gclsCommon.CBNGetNow) '统计起始时间 
600         .Filter = "W1101 = 'W990B'": If .EOF Then .AddNew: !W1101 = "W990B":      !W1102 = gclsInclude.MyDateOf(gclsCommon.CBNGetNow) '统计终止时间 
610         .Update 
620         .Filter = 0 
630         .Close 
640       End With 
 
650       CreateAppRecords 
 
660       Set madoFillRS = New ADODB.Recordset 
670       madoFillRS.Open "SELECT W1161,W0094,W0078 FROM T0014S001", gDBRecordConn, adOpenStatic, adLockOptimistic 
680       n = 6 
690       If madoFillRS.RecordCount < n Then 
700         ReDim sIndex(1 To madoFillRS.Fields.Count, 1 To n) 
710         sIndex(1, 1) = "A001":          sIndex(2, 1) = "在职人员" 
720         sIndex(1, 2) = "A002":          sIndex(2, 2) = "离退人员" 
730         sIndex(1, 3) = "C001":          sIndex(2, 3) = "机关单位" 
740         sIndex(1, 4) = "C002":          sIndex(2, 4) = "事业单位" 
750         sIndex(1, 5) = "C004":          sIndex(2, 5) = "企业单位" 
760         sIndex(1, n) = "P001":          sIndex(2, n) = "在编车辆" 
770         For i = 1 To n 
780           sIndex(3, i) = 1 
790         Next i 
800         gclsCommon.CBNFillTable madoFillRS, sIndex 
810       End If 
820       madoFillRS.Close 
 
830       Set madoFillRS = New ADODB.Recordset 
840       madoFillRS.Open "SELECT W1182,W1178,W1104 FROM T0006S001", gDBRecordConn, adOpenStatic, adLockOptimistic 
850       n = 1 
860       If madoFillRS.RecordCount < n Then 
870         ReDim sIndex(1 To madoFillRS.Fields.Count, 1 To n) 
880         sIndex(1, 1) = "SA":          sIndex(2, 1) = 1 
890         gclsCommon.CBNFillTable madoFillRS, sIndex 
900       End If 
910       madoFillRS.Close 
 
920       Set madoFillRS = New ADODB.Recordset 
930       madoFillRS.Open "SELECT W1105,W1106,W1100 FROM T0110S001", gDBRecordConn, adOpenStatic, adLockOptimistic 
940       If madoFillRS.RecordCount <= 0 Then 
950         j = 0 
960         For i = 1 To 500 
              sStr = gclsInclude.MyGetOETDef(i) 
970           If (sStr = NO_DEFINE) Or (sStr = "") Then 
980             j = i - 1 
990             Exit For 
1000          End If 
1010        Next i 
1020        If j > 0 Then 
1030          ReDim sIndex(1 To 3, 1 To j) 
1040          For i = 1 To j 
1050            sIndex(1, i) = i 
1060            sIndex(2, i) = gclsInclude.MyGetOETDef(i) 
1070            sIndex(3, i) = 0 
1080          Next i 
1090          gclsCommon.CBNFillTable madoFillRS, sIndex 
1100        End If 
1110      End If 
1120      madoFillRS.Close 
 
1122      Set madoFillRS = New ADODB.Recordset 
1124      madoFillRS.Open "SELECT ID,W1158,W1162,W1163 FROM T0103S001 WHERE W1158 =" & giAppUser, gDBRecordConn, adOpenStatic, adLockOptimistic 
1126      If madoFillRS.RecordCount <= 0 Then 
1128         madoFillRS.AddNew 
1130      End If 
          With madoFillRS 
            !W1158 = giAppUser 
            !W1162 = GetMyEvents 
            !W1163 = !W1162 '开始的时候,屏蔽所有信号 
            .Update 
          End With 
1132      madoFillRS.Close 
 
1138      Set madoFillRS = Nothing 
 
1140      With gclsCommon 
1150          .CBNAddFieldDesc True, True 
1160          .CBNAddTableDesc True, True 
1170          gbFirstLogin = True 
1180          .CBNCreateDBMenuEx MENU_FIELDS, GetMenuStr 
1190          gbFirstLogin = False 
1200      End With 
          CreateRecords = True 
1210      Exit Function 
 
ErrLabel: 
gclsCommon.CBNSaveLogFile "CreateRecords:" & Err.Description & " Pos:" & Erl, True 
If Erl = 70 Then 
  If Err = -2147024769 Then '自动化错误,可能表示ADODB的版本有问题。 
    Exit Function 
  End If 
End If 
End Function 
 
Public Function CreateBackupDB(PathFileName As String, fsPasswd As String) As Boolean 
     
    '   置鼠标忙标志 
    Screen.MousePointer = vbHourglass 
    Dim sDatebase As String 
'    fsPasswd = "xx" 
    With gclsDBFunc 
      If .dbCreateDBItem(PathFileName, fsPasswd) Then 
        .dbCreateTableItem "BackupOle" 
        .dbCreateFieldItem "", "ID" 
        .dbCreateFieldItem "", "OLE1", edbLongBinary 
        .dbCreateTableOver "BackupOle" 
        .dbCreateIndexItem "BackupOle" 
         
        CreateSysTable "T0109A001" 
        .dbCloseDBItem 
      Else 
        MsgBox "建立备份数据库:" & PathFileName & "失败!", vbCritical 
      End If 
    End With 
    Screen.MousePointer = vbDefault 
End Function 
 
Public Function CreateDB(ByVal PathFileName As String, ByVal fsPasswd As String) As Boolean 
     
    '   置鼠标忙标志 
    Screen.MousePointer = vbHourglass 
    Dim sNewDBase As String 
    Dim sReWriteTbl As String 
    Dim sSplit 
    Dim i As Integer 
    Dim bError As Boolean 
     
    On Error GoTo ExitFunction 
     
    #If APPLICATION_TYPE = 1 Then '考勤 
      gTHoliSystem = gclsCommon.CBNGetHolidayInfo(True And (giUpdate > 0)) 
    #End If 
    With gclsCommon 
      If giUpdate = 0 Or giUpdate = 3 Or giUpdate = 4 Then 
        If gclsDBFunc.dbCreateDBItem(PathFileName, fsPasswd, sNewDBase, True) = False Then GoTo ExitFunction 
      Else 
        gclsDBFunc.dbOpenDateBase PathFileName, ";pwd=" & fsPasswd 
        If funcGetSystemData("Update", "0") = 2 Then 
          .CommonAppInfo = gTAppLicInfo 
          .CBNDataUpdate gTAppLicInfo.FilePathApp & "Update.upt", gTAppLicInfo.SysDBRecordConn 
          CreateDB = True 
          Exit Function 
        End If 
        sReWriteTbl = funcGetSystemData("ReWriteTbl", "") 
        If sReWriteTbl <> "" Then 
          sSplit = Split(sReWriteTbl, ",") 
          For i = 0 To UBound(sSplit) 
            If UCase(sSplit(i)) <> UCase("T0111S001") Then 
              If gclsDBFunc.dbTableExists(sSplit(i), gDBRecordConn) Then 
                .CBNSplashSetNotes "删除表" & sSplit(i) 
                If gclsDBFunc.dbRemoveTableItem(sSplit(i)) Then 
                  .CBNSaveLogFile "删除表" & sSplit(i) 
                  .CBNSaveEvents OET_DEL_TABLE, sSplit(i), "成功" 
                Else 
                  .CBNSaveEvents OET_DEL_TABLE, sSplit(i), "失败" 
                End If 
              End If 
            End If 
          Next i 
        End If 
      End If 
      bError = True 
      .CBNSplashSetNotes "建立数据库及基本结构" 
      If Not CreateTables Then GoTo ExitFunction 
      .CBNSplashSetNotes "建立数据库索引" 
      bError = bError And CreateIndexes 
      .CBNSplashSetNotes "建立数据库查询" 
      bError = bError And CreateQueries 
      gclsDBFunc.dbCloseDBItem 
      If sNewDBase = "" Then sNewDBase = PathFileName 
      .CBNSplashSetNotes "建立数据库基本记录" 
      bError = bError And CreateRecords 
      .CBNSplashSetNotes "设置数据库权限" 
      SetAllTableRight 3 
      .CBNSplashSetNotes "建立代码集" 
      CreateCollect True 
      CreateDB = bError 
ExitFunction: 
      .CBNSplashSetNotes "" 
    End With 
Screen.MousePointer = vbDefault 
End Function 
 
Public Function CreateSQLDBase(Optional PathFileName As String, _ 
                               Optional ByVal fsPasswd As String) As Boolean 
    On Error GoTo ErrLabel 
     
    Dim sTemp       As String 
    Dim sNewDBase   As String 
    Dim sNewDBPath  As String 
    Dim sReWriteTbl As String 
    Dim i           As Integer 
    Dim sSplit 
     
    #If APPLICATION_TYPE = 1 Then '考勤 
      gTHoliSystem = gclsCommon.CBNGetHolidayInfo(True And (giUpdate > 0)) 
    #End If 
    '对SQL SERVER 进行改造时,不需要建立联接表 
    If giUpdate = 4 Then 
      If MsgBox("正准备建立新的数据库,继续吗?" & vbCrLf & _ 
                "注意:此操作将删除现有的名字为" & "数据库,在进行之前,请先备份数据!", vbOKCancel + vbQuestion + vbDefaultButton2) = vbCancel Then Exit Function 
'      If InStr(PathFileName, " ") Then 
'ReSelectLabel: 
'        MsgBox "当前默认的数据库路径" & Chr(34) & PathFileName & Chr(34) & "中不能包含空格,请重新选定数据库路径", vbCritical 
'        sNewDBPath = gclsInclude.MyRegGetStringValue("HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Setup", "SQLPath") 
'        If sNewDBPath <> "" Then sNewDBPath = gclsInclude.MyAddBackslash(sNewDBPath) & "Data\" 
'        PathFileName = gclsInclude.MyAddBackslash(gclsInclude.MyGetFilePath("选定数据库路径", sNewDBPath)) & gTAppLicInfo.SoftSQLDBase & ".mdf" 
'        If InStr(PathFileName, " ") Then GoTo ReSelectLabel 
'        If PathFileName = gTAppLicInfo.SoftSQLDBase & ".mdf" Then Exit Function 
'      End If 
      sNewDBPath = gclsInclude.MyFilePath(PathFileName) 
      If Not gclsInclude.MyPathExists(sNewDBPath) Then gclsInclude.MyMkDir sNewDBPath 
      If gclsDBFunc.dbCreateDBItem(PathFileName, fsPasswd, sNewDBase, True, True, gTAppLicInfo.SysLoginUser, gTAppLicInfo.SoftSQLServer, gTAppLicInfo.SoftSQLDBase) = False Then 
         Exit Function 
      End If 
    End If 
     
    '   置鼠标忙标志 
    Screen.MousePointer = vbHourglass 
    gclsDBFunc.dbSetConnect gTAppLicInfo.SysDBRecordConn, True 
    If giUpdate > 0 Then 
      '当Update=2时,根据文件 Update.upt 中说明的字段进行升级 
      If funcGetSystemData("Update", "0") = 2 Then 
        gclsCommon.CommonAppInfo = gTAppLicInfo 
        sTemp = gTAppLicInfo.FilePathApp & "Update.upt" 
        If Not gclsInclude.MyFileExists(sTemp) Then 
          sTemp = gclsInclude.MyGetFileName(True, "upt (*.upt)|*.upt", "upt", , "请选择数据库升级文件") 
        End If 
        If sTemp <> "" Then 
            gclsCommon.CBNDataUpdate sTemp, gTAppLicInfo.SysDBRecordConn 
            CreateSQLDBase = True 
        Else 
            CreateSQLDBase = False 
        End If 
        Exit Function 
      End If 
      If giUpdate <> 4 Then 
        sReWriteTbl = funcGetSystemData("ReWriteTbl", "") 
        If sReWriteTbl <> "" Then 
          sSplit = Split(sReWriteTbl, ",") 
           
          For i = 0 To UBound(sSplit) 
            If UCase(sSplit(i)) <> UCase("T0111S001") Then 
              If gclsDBFunc.dbTableExists(sSplit(i), gDBRecordConn) Then 
                gclsCommon.CBNSplashSetNotes "删除表" & sSplit(i) 
                If gclsDBFunc.dbRemoveTableItem(sSplit(i)) Then 
                  gclsCommon.CBNSaveLogFile "删除表" & sSplit(i) 
                  gclsCommon.CBNSaveEvents OET_DEL_TABLE, "成功" & ":" & sSplit(i) 
                Else 
                  gclsCommon.CBNSaveEvents OET_DEL_TABLE, "失败" & ":" & sSplit(i) 
                End If 
              End If 
            End If 
          Next i 
           
        End If 
      End If 
    Else 
      gclsCommon.CommonConnect = gDBRecordConn 
    End If 
    gclsCommon.CBNSplashSetNotes "建立数据库及基本结构" 
    CreateTables 
    If giUpdate = 4 Then GoTo CreateIndexesLabel 
    If MsgBox("重新建立索引吗?此操作将花费较长时间,请耐心等待", vbInformation + vbOKCancel) = vbOK Then 
CreateIndexesLabel: 
      gclsCommon.CBNSplashSetNotes "建立数据库索引" 
      CreateIndexes 
    End If 
    gclsCommon.CBNSplashSetNotes "建立数据库查询" 
    CreateQueries 
    gclsCommon.CBNSplashSetNotes "设置数据库权限" 
    SetAllTableRight 3 
    gclsDBFunc.dbCloseConnect True 
    gclsDBFunc.dbCloseConnect False 
    If giUpdate = 4 Then GoTo CreateRecordsLabel 
    If MsgBox("建立数据库基本记录吗?", vbInformation + vbOKCancel) = vbOK Then 
CreateRecordsLabel: 
      gclsCommon.CBNSplashSetNotes "建立数据库基本记录" 
      CreateRecords 
    End If 
    If giUpdate = 4 Then GoTo CreateCollectLabel 
    If MsgBox("建立新的代码集吗?此操作将花费较长时间,请耐心等待", vbInformation + vbOKCancel) = vbOK Then 
CreateCollectLabel: 
      gclsCommon.CBNSplashSetNotes "建立代码集" 
      CreateCollect 
    End If 
    CreateSQLDBase = True 
    Screen.MousePointer = vbDefault 
    gclsCommon.CBNSplashSetNotes "" 
Exit Function 
ErrLabel: 
    gclsCommon.CBNSplashSetNotes "" 
    Screen.MousePointer = vbDefault 
    Resume Next 
End Function 
 
Private Function CreateTables() As Boolean 
  Dim i As Integer 
  Dim sTblName() As String 
  On Error GoTo ErrLabel 
  sTblName = GetAllTables 
  For i = 0 To UBound(sTblName) 
'    If sTblName(i) = "V5502A001" Then Stop 
    CreateSysTable sTblName(i) 
  Next i 
  CreateTables = True 
ErrLabel: 
End Function 
 
Private Function CreateSysTable(ByVal fsTblName As String) As Boolean 
    Dim i As Integer 
    If fsTblName = "" Then Exit Function 
    With gclsDBFunc 
    '    If .dbTableExists(fsTblName) Then Exit Sub 
          .dbCreateTableItem fsTblName 
        '如果不指明edbText的长度,缺省为20 
        #If Not IS_RUN Then 
          DebugErr fsTblName & "_gclsDBFunc.dbCreateTableItem" 
        #End If 
        Select Case fsTblName 
            Case "A001A001"                                                     '人员基本情况子集 
                .dbCreateFieldItem "", "ID", , , , , , False, True    '人员索引 
                .dbCreateFieldItem "", "A0100", edbText, 30, , , , False, True   '人员内部编号 
                .dbCreateFieldItem "", "A0101", edbText, 30           '人员姓名 
                .dbCreateFieldItem "", "A0107", edbText, 1            '性别 
                .dbCreateFieldItem "", "A0111", edbDate               '出生日期 
                .dbCreateFieldItem "", "A0177", edbText, 18           '身份证号 
                .dbCreateFieldItem "", "A0188", edbText, 1            '是否离职 
                .dbCreateFieldItem "", "A0189", edbText               '人员编号 
                .dbCreateFieldItem "", "A0191", edbText, 1            '临时卡标志 
                .dbCreateFieldItem "", "A0195", edbText, 1            '是否发卡 
                .dbCreateFieldItem "", "A0197", edbText, 1            '是否黑名单 
                .dbCreateFieldItem "", "A0199", edbText, 20           '卡管理号 
                .dbCreateFieldItem "", "B0110", edbText, , , , , False, True  '单位编号 
                .dbCreateFieldItem "", "E0122", edbText               '部门编号 
                .dbCreateFieldItem "", "W0030", edbMemo               '备注 
                .dbCreateFieldItem "", "W1119", edbText, 1            '是否选择 
                .dbCreateFieldItem "", "W4001", edbText               '车号 
                .dbCreateFieldItem "", "W0075", edbText, 10, , "1000000000" '状态 
                .dbCreateFieldItem "", "W0076", edbText, 255        '状态2 
                '对其进行补充 
                CreateAppTable fsTblName 
            Case Else 
                If Not CreateAppTable(fsTblName) Then 
                  gclsCommon.CBNBuiltFixTable fsTblName, gclsDBFunc 
                End If 
        End Select 
        #If Not IS_RUN Then 
          DebugErr fsTblName & "_gclsDBFunc.dbCreateFieldItem" 
        #End If 
        If Not gclsDBFunc.dbTableExists(fsTblName) Then 
          CreateSysTable = gclsDBFunc.dbCreateTableOver(fsTblName) 
        Else 
          CreateSysTable = True 
        End If 
    End With 
'  If Not CreateSysTable Then Err = -100000 
#If Not IS_RUN Then 
  DebugErr fsTblName & "_gclsDBFunc.dbCreateTableOver" 
#End If 
 
End Function 
 
Public Function GetQueriyItem(ByVal fsQryName As String) As String 
    Dim TotalOverHours As String 
    If fsQryName = "" Then Exit Function 
    GetQueriyItem = gclsCommon.CBNGetQueriyItem(fsQryName) 
End Function 
 
Private Sub CreateQuerieyItem(ByVal fsQryName As String) 
    Dim sSQL As String 
    If fsQryName = "" Then Exit Sub 
    With gclsDBFunc 
        If .dbQueryExists(fsQryName, , gTAppLicInfo.SoftNetwork) Then 
          .dbRemoveQueryItem fsQryName, gTAppLicInfo.SoftNetwork 
        End If 
        sSQL = gclsCommon.CBNCSql(GetQueriyItem(fsQryName)) 
        If sSQL <> "" Then 
          If Not .dbCreateQueryItem(fsQryName, sSQL, gTAppLicInfo.SoftNetwork) Then _ 
                 gclsCommon.CBNSaveLogFile .dbGetLastError.Description 
        End If 
    End With 
End Sub 
 
Private Function CreateQueries() As Boolean 
  Dim i As Integer 
  Dim sViewName() As String 
  On Error GoTo ErrLabel 
  sViewName = GetAllViews 
  For i = 0 To UBound(sViewName) 
    CreateQuerieyItem sViewName(i) 
  Next i 
  CreateQueries = True 
ErrLabel: 
End Function 
 
Private Function CreateIndexes() As Boolean 
  Dim i As Integer 
  Dim sIndexes() As String 
  Dim bFlag As Boolean 
  On Error GoTo ErrLabel 
  sIndexes = GetAllIndexes 
  For i = 0 To UBound(sIndexes) 
    If sIndexes(i) <> "" Then 
      bFlag = True 
      If giUpdate <> 4 Then 
        If InStr(sIndexes(i), "T0109A001") Or InStr(sIndexes(i), "T6621A001") Or InStr(sIndexes(i), "T0111S001") Then 
          If MsgBox("是否重建" & gclsCommon.CBNGetIndexDesc(sIndexes(i)) & "?这将花费较长的时间.", vbQuestion + vbOKCancel) = vbCancel Then 
            bFlag = False 
          End If 
        End If 
      End If 
      If bFlag Then 
        gclsCommon.CBNSplashSetNotes "正在重新建立" & gclsCommon.CBNGetIndexDesc(sIndexes(i)) 
        DoEvents 
        '创建固定的索引,即系统内建的索引信息 
        If LoIsIndexInTbls(sIndexes(i)) Then 
          gclsCommon.CBNBuiltFixIndex sIndexes(i) 
        End If 
      End If 
    ElseIf gTAppLicInfo.SysDebugLevel Then 
      'MsgBox "No Value Index:" & i 
    End If 
  Next i 
  CreateIndexes = True 
Exit Function 
ErrLabel: 
End Function 
 
Private Function LoIsIndexInTbls(fsIndex As String) As Boolean 
    Dim sAllTables() As String 
    Dim i As Integer 
    sAllTables = GetAllTables 
    For i = LBound(sAllTables) To UBound(sAllTables) 
      If sAllTables(i) <> "" Then 
        If InStr(fsIndex, sAllTables(i)) Then 
          LoIsIndexInTbls = True 
          Exit Function 
        End If 
      End If 
    Next i 
End Function 
 
Private Sub CreateCollect(Optional ByVal fbDescOverlap As Boolean) 
  Dim sExplain As String 
  Dim lType As Long 
   
  Dim sCode As String 
  Dim sTbls() As String 
   
  With gclsCommon 
    If gclsDBFunc.dbGetConnString(False) = "" Then 
      If (gDBRecordConn Is Nothing) Or (giUpdate > 0) Then 
ConnectLabel: 
        Set gDBRecordConn = New ADODB.Connection 
        With gDBRecordConn 
            .CursorLocation = adUseClient 
            .Open gTAppLicInfo.SysDBRecordConn 
        End With 
      ElseIf gDBRecordConn.State = 0 Then 
        GoTo ConnectLabel 
      End If 
    Else 
      Set gDBRecordConn = gclsDBFunc.dbGetConnect(False) 
    End If 
    .CommonConnect = gDBRecordConn 
     
    sTbls = GetAllTables 
    For lType = LBound(sTbls) To UBound(sTbls) 
      '将本系统使用过的标准表纳入系统之中 
      LoBuiltSetCollect sTbls(lType), _ 
                        .CBNGetTableDesc(sTbls(lType), _ 
                        , , , , , False), fbDescOverlap 
    Next 
    Set madoFillRS = Nothing 
     
    sCode = "AX" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "性别(GB/T 2261-80)") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", NO_DEFINE 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "男" 
      .CBNNewCodeItem gDBRecordConn, sCode, "2", "女" 
      .CBNNewCodeItem gDBRecordConn, sCode, "9", "未说明" 
    End If 
     
    sCode = "CO" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "公司") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "公司1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "公司2" 
    End If 
     
    sCode = "UE" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "是否(用于录入)") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "否" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "是" 
    End If 
     
    sCode = "UF" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "加班类型") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "无加班"    ' 既无平日加班又无休日加班 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "加班类型1" ' 平日加班及休日加班全计薪,但只计算超出应上工时的部分计加班 
      .CBNNewCodeItem gDBRecordConn, sCode, "2", "加班类型2" ' 平日加班全计薪,休日加班全计薪 
      .CBNNewCodeItem gDBRecordConn, sCode, "3", "加班类型3" ' 无平日加班,休日加班全计薪 
      .CBNNewCodeItem gDBRecordConn, sCode, "4", "加班类型4" ' 无平日加班,休日加班全计补休 
      .CBNNewCodeItem gDBRecordConn, sCode, "5", "加班类型5" ' 平日加班全计薪,无休日加班 
      .CBNNewCodeItem gDBRecordConn, sCode, "6", "加班类型6" ' 平日加班全计薪,休日加班全部算补休 
      .CBNNewCodeItem gDBRecordConn, sCode, "7", "加班类型7" ' 平日加班全计薪,休日加班8小时内算补休,超过8小时的部分计薪 
      .CBNNewCodeItem gDBRecordConn, sCode, "8", "加班类型8" ' 平日加班和休日加班全计补休 
      .CBNNewCodeItem gDBRecordConn, sCode, "9", "加班类型9" ' 正班段加班算加班,加班段加班算补休 
    End If 
     
    sCode = "UG" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "开锁类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "指令开门"  ' 使用计算机指令开启门禁 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "手动开门"  ' 推开或强行开启门禁 
      .CBNNewCodeItem gDBRecordConn, sCode, "2", "IC卡开门"  ' 使用IC卡开启门禁 
    End If 
     
    sCode = "UH" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "车辆类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", NO_DEFINE 
      .CBNNewCodeItem gDBRecordConn, sCode, 1, "二吨加盖" 
      .CBNNewCodeItem gDBRecordConn, sCode, 2, "二吨平板" 
      .CBNNewCodeItem gDBRecordConn, sCode, 3, "二吨压缩" 
      .CBNNewCodeItem gDBRecordConn, sCode, 4, "二吨圆桶" 
      .CBNNewCodeItem gDBRecordConn, sCode, 5, "三吨拉臂" 
      .CBNNewCodeItem gDBRecordConn, sCode, 6, "三吨平板" 
      .CBNNewCodeItem gDBRecordConn, sCode, 7, "三吨压缩" 
      .CBNNewCodeItem gDBRecordConn, sCode, 8, "五吨加盖" 
      .CBNNewCodeItem gDBRecordConn, sCode, 9, "五吨拉臂" 
      .CBNNewCodeItem gDBRecordConn, sCode, 10, "五吨平板" 
      .CBNNewCodeItem gDBRecordConn, sCode, 11, "五吨压缩" 
      .CBNNewCodeItem gDBRecordConn, sCode, 12, "五吨圆桶" 
      .CBNNewCodeItem gDBRecordConn, sCode, 13, "五吨自卸" 
      .CBNNewCodeItem gDBRecordConn, sCode, 14, "七吨拉臂" 
      .CBNNewCodeItem gDBRecordConn, sCode, 15, "八吨加盖" 
      .CBNNewCodeItem gDBRecordConn, sCode, 16, "八吨拉臂" 
      .CBNNewCodeItem gDBRecordConn, sCode, 17, "八吨平板" 
      .CBNNewCodeItem gDBRecordConn, sCode, 18, "八吨压缩" 
      .CBNNewCodeItem gDBRecordConn, sCode, 19, "八吨自卸" 
      .CBNNewCodeItem gDBRecordConn, sCode, 20, "十五吨平板" 
      .CBNNewCodeItem gDBRecordConn, sCode, 21, "十五吨压缩" 
      .CBNNewCodeItem gDBRecordConn, sCode, 22, "二十吨平板" 
    End If 
         
    sCode = "UI" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "邮件短信文件夹") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "邮件", , , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "100", "邮件收件箱", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "110", "邮件发件箱", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "120", "未确认邮件", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "130", "已发送的邮件", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "140", "已删除的邮件", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "150", "邮件草稿", , 0 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "短信", , , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "160", "短信收件箱", , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "170", "短信发件箱", , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "180", "未确认短信", , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "190", "已发送的短信", , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "200", "已删除的短信", , 1 
      .CBNNewCodeItem gDBRecordConn, sCode, "210", "短信草稿", , 1 
    End If 
     
    sCode = "VA" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "出运单类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "类别1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "类别2" 
    End If 
         
    sCode = "VB" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "检验单类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "类别1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "类别2" 
    End If 
         
    sCode = "VC" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "物料移动凭证类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "类别1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "类别2" 
    End If 
         
    sCode = "VD" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "采购订单类别") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "类别1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "NB", "NB" 
    End If 
         
    sCode = "VE" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "厂商") Then 
      .CBNNewCodeItem gDBRecordConn, sCode, "0", "厂商1" 
      .CBNNewCodeItem gDBRecordConn, sCode, "1", "厂商2" 
    End If 
         
    sCode = "VY" 
    If .CBNNewCodeCollect(gDBRecordConn, sCode, "年度") Then 
      For lType = 0 To 7 
        .CBNNewCodeItem gDBRecordConn, sCode, CStr(1999 + lType), CStr(1999 + lType) 
      Next 
    End If 
 
  End With 
  Set madoFillRS = Nothing 
   
End Sub 
 
Private Function LoBuiltSetCollect(fsSetCollect As String, _ 
                                   fsDesc As String, _ 
                                   fbDescOverlap As Boolean) As Boolean 
  Dim i As Integer 
  Dim sUnSet As String 
  Dim TFieldRecs() As FieldRec 
  Dim sPara() As String 
  Dim bFlag As Boolean 
  Dim sSetID As String 
   
  If fsSetCollect Like FLAG_LIKE2 Then 
    sSetID = Left(fsSetCollect, 4) 
    bFlag = gclsCommon.CBNNewSetCollect(gDBRecordConn, sSetID, fsDesc) 
  End If 
  If bFlag Then 
    '子集中除了A0100,B0110,ID外,其余的全部放在子集中 
    TFieldRecs = gclsCommon.CBNGetFieldRec(fsSetCollect) 
    If gclsCommon.CBNIsEmpty(VarPtrArray(TFieldRecs)) Then Exit Function 
    sUnSet = "A0100,B0110,ID,W0075,W0076" 
    For i = LBound(TFieldRecs) To UBound(TFieldRecs) 
      With TFieldRecs(i) 
        If .FieldDesc <> NO_DEFINE Then 
          If Not gclsInclude.MyIsInList(sUnSet, .FieldName, True) Then 
            sPara = LoGetDefSetInfo(.FieldName) 
            gclsCommon.CBNNewSetItem gDBRecordConn, _ 
                                     sSetID, _ 
                                     .FieldName, _ 
                                     gclsDBFunc.dbAdo2DaoType(.FieldType), _ 
                                     .FieldSize, _ 
                                     , _ 
                                     sPara(0), _ 
                                     sPara(1), _ 
                                     .FieldDesc, _ 
                                     fbDescOverlap 
          End If 
        End If 
      End With 
    Next i 
    LoBuiltSetCollect = True 
  End If 
End Function 
 
Private Function LoGetDefSetInfo(fsSetName As String) As String() 
  ReDim sInfo(1) As String 
  '0-FieldDesc 
  '1-CodeID 
  '2-Explain 
  Select Case fsSetName 
    Case "A0187" 
      sInfo(0) = "UF" 
      sInfo(1) = "0-既无平日加班又无休日加班" & vbCrLf & _ 
                 "1-平日加班及休日加班全计薪,但只计算超出应上工时的部分计加班" & vbCrLf & _ 
                 "2-平日加班全计薪,休日加班全计薪" & vbCrLf & _ 
                 "3-无平日加班,休日加班全计薪" & vbCrLf & _ 
                 "4-无平日加班,休日加班全计补休" & vbCrLf & _ 
                 "5-平日加班全计薪,无休日加班" & vbCrLf & _ 
                 "6-平日加班全计薪,休日加班全部算补休" & vbCrLf & _ 
                 "7-平日加班全计薪,休日加班8小时内算补休,超过8小时的部分计薪" & vbCrLf & _ 
                 "8-平日加班和休日加班全计补休" & vbCrLf & _ 
                 "9-正班段加班算加班,加班段加班算补休" & vbCrLf 
    Case "A0188", "A0195", "A0197", "A0198" 
      sInfo(0) = "UE" 
    Case "A0114": sInfo(0) = "AB"    ' 籍贯 
    Case "A0107": sInfo(0) = "AX"    ' 性别 
    Case "A0117": sInfo(0) = "AB"    ' 出生地 
    Case "A0121": sInfo(0) = "AE"    ' 民族 
    Case "A0124": sInfo(0) = "BF"    ' 健康状况 
    Case "A0127": sInfo(0) = "BG"    ' 婚姻状况 
    Case "A0131": sInfo(0) = "BK"    ' 个人身份 
    Case "A0134": sInfo(0) = "AU"    ' 家庭出身 
    Case "A0137": sInfo(0) = "AU"    ' 本人成份 
    Case "A0154": sInfo(0) = "BI"    ' 用工形式 
    Case "A0155": sInfo(0) = "JI"    ' 劳动合同制用人形式 
    Case "A0157": sInfo(0) = "BH"    ' 用工期限 
    Case "A0161": sInfo(0) = "AH"    ' 职业类别 
    Case "A0164": sInfo(0) = "AI"    ' 现从事专业 
    Case "A0167": sInfo(0) = "AL"    ' 享受待遇级别 
    Case "A0171": sInfo(0) = "AB"    ' 户口所在地 
    Case "A0174": sInfo(0) = "HP"    ' 户口性质 
    Case "A0181": sInfo(0) = "AY"    ' 港澳台侨属标识 
    Case "E0102": sInfo(0) = "HJ"    ' 干部录聘标识 
    Case "E0104": sInfo(0) = "HA"    ' 干部录聘用来源 
    Case "E0106": sInfo(0) = "HW"    ' 干部选聘审批单位 
    Case "E0110": sInfo(0) = "HB"    ' 减员途径 
    Case "E0114": sInfo(0) = "IM"    ' 公务员录用来源 
    Case "E0116": sInfo(0) = "IN"    ' 公务员特殊考试标识 
    Case "E0118": sInfo(0) = "IO"    ' 进入跨地域标识 
    Case "E0122": sInfo(0) = "UM"    ' 部门 
    Case "E0305": sInfo(0) = "KA"    ' 进入方式 
    Case "E0355": sInfo(0) = "KB"    ' 特殊项标识 
    Case "E1701": sInfo(0) = "HV"    ' 岗位分类 
    Case "E1711": sInfo(0) = "HN"    ' 岗位变化情况 
    Case "E1721": sInfo(0) = "KF"    ' 公务员上岗方式 
    Case "E5804": sInfo(0) = "IA"    ' 行政、岗位工资档次 
    Case "E5806": sInfo(0) = "HX"    ' 工资级别 
    Case "E5808": sInfo(0) = "IA"    ' 技术类工资档次 
    Case "E5841": sInfo(0) = "IA"    ' 体育津贴档次 
    Case "E5844": sInfo(0) = "JR"    ' 运动员比赛名次 
    Case "E5847": sInfo(0) = "JS"    ' 运动员比赛层次 
    Case "E5895": sInfo(0) = "JU"    ' 工资标准类型 
    Case "M5803": sInfo(0) = "KJ"    ' 审批标识 
    'AB,AE,AH,AI,AL,AU,AX,AY,BF,BG,BH,BI,BK,HA,HB,HJ,HN,HP,HV,HW,HX,IA,IM,IN,IO,JI,JR,JS,JU,KA,KB,KF,KJ,UE,UF,UM 
  End Select 
  LoGetDefSetInfo = sInfo 
End Function 
 
#If Not IS_RUN Then 
  Private Sub DebugErr(Optional ByVal fsData As String) 
    If gclsDBFunc.dbGetLastError.Number <> 0 Then 
      Debug.Print IIf(fsData = "", "", fsData & ":") & gclsDBFunc.dbGetLastError.Description 
      gclsDBFunc.dbClearError 
    End If 
  End Sub 
#End If 
 
'对应旧版本的数据库,以下表发生变化: 
' 
'旧表                 新表        描述 
'---------------------------------------------- 
'SM_Function          T0003S001   系统功能 
'SM_User_Privileges   T0007S001   操作员其他权限 
'SM_UserGroup         T0004S001   组成员列表 
'SM_UserGroupId       T0005S001   操作员组列表 
'SM_UserId            T0006S001   操作员列表 
'sr_builtcollect      T0008S001   已建代码集 
'sr_BuiltItem         T0009S001   已建指标集 
'SR_CodeCollect       T0010S001   代码集 
'sr_codeitem          T0011S001   代码项 
'sr_department        T0015S001   单位基本信息 
'SR_SourceCollect     T0012S001   指标集 
'SR_SourceItem        T0013S001   指标项 
'sr_Unittype          T0014S001   类别定义 
'T0103S001            T0001S001   系统表描述 
'T0104S001            T0002S001   系统字段描述 
 
Public Function GetAllTables() As String() 
    Dim sTables(100) As String 
   
  sTables(0) = "A001A001"                '在职人员人员基本信息 
   
  #If APPLICATION_TYPE = 10 Or APPLICATION_TYPE = 1 Then      '工资系统(查询)或 
    sTables(1) = "A017A001"                '在职人员岗位变化子集 
    sTables(2) = "A058A001"                '在职人员工资子集 
    sTables(3) = "A066A001"                '在职人员日考勤明细 
    sTables(4) = "A098A001"                '在职人员密码子集 
  #End If 
     
  #If APPLICATION_TYPE = 11 Then     '衡重 
    sTables(5) = "P001P001"                '在编车辆车辆基本信息 
  #End If 
   
    sTables(6) = "T0001S001"               '系统表描述 
    sTables(7) = "T0002S001"               '系统字段描述 
    sTables(8) = "T0003S001"               '系统功能 
    sTables(9) = "T0004S001"               '组成员列表 
    sTables(10) = "T0005S001"              '操作员组列表 
    sTables(11) = "T0006S001"              '操作员列表 
    sTables(12) = "T0007S001"              '操作员其他权限 
    sTables(13) = "T0008S001"              '已建代码集 
    sTables(14) = "T0009S001"              '已建指标集 
    sTables(15) = "T0010S001"              '代码集 
    sTables(16) = "T0011S001"              '代码项 
    sTables(17) = "T0012S001"              '指标集 
    sTables(18) = "T0013S001"              '指标项 
    sTables(19) = "T0014S001"              '类别定义 
    sTables(20) = "T0015S001"              '单位基本信息 
     
    sTables(21) = "T0101S001"              '系统参数 
    sTables(22) = "T0102S001"              '设备库 
    sTables(23) = "T0103S001"              '控件事件屏蔽 
     
    sTables(24) = "T0105S001"              '远程控制表 
    sTables(25) = "T0106A001"              '设备权限表 
    sTables(26) = "T0107S001"              '设备单价对应 
    sTables(27) = "T0108A001"              '设备打卡权限 
    sTables(28) = "T0109A001"              '人员打卡 
    sTables(29) = "T0110S001"              '重要事件描述 
    sTables(30) = "T0111S001"              '重要事件 
    sTables(31) = "T0112S001"              '节假日定义 
    sTables(32) = "T0113A001"              '发卡信息 
    sTables(33) = "T0114S001"              '系统菜单 
    sTables(34) = "T0115S001"              '操作员菜单权限 
    sTables(35) = "T0116S001"              '操作流水 
    sTables(36) = "T0117S001"              'SQL查询 
    sTables(37) = "T0118S001"              '请假类别 
    sTables(38) = "T0119S001"              '考勤处理方式 
    sTables(39) = "T0120S001"              '手工签卡 
    sTables(40) = "T0121S001"              '考勤规则 
    sTables(41) = "T0122S001"              '窗体元素布局 
    sTables(42) = "T0123A001"              '临时记录表 
    sTables(43) = "T0124S001"              '收费标准 
'    sTables(44) = "T0125A001"              '黑名单 
    sTables(45) = "T0126S001"              '最大ID值 
    sTables(46) = "T0127S001"              '报表参数集 
    sTables(47) = "T0128S001"              '报表参数项 
    sTables(48) = "T0129S001"              '语言名称对照 
    sTables(49) = "T0130S001"              '已注册运行的计算机 
     
  #If APPLICATION_TYPE = 3 Then '巡更 
    sTables(50) = "T3001S001"              '巡更网点设置 
    sTables(51) = "T3002S001"              '巡更班次种类 
    sTables(52) = "T3003A001"              '巡更员卡信息 
    sTables(53) = "T3004A001"              '巡更班次设置 
    sTables(54) = "T3005A001"              '巡更明细 
    sTables(55) = "T3006A001"              '巡更班次安排 
  #End If 
   
  #If APPLICATION_TYPE = 1 Then '考勤 
    sTables(56) = "T6620A001"              '指定考勤项 
    sTables(57) = "T6621A001"              '考勤明细 
    sTables(58) = "T6623A001"              '人员换班 
    sTables(59) = "T6624A001"              '班次安排 
    sTables(60) = "T6629A001"              '人员打卡明细 
    sTables(61) = "T6632A001"              '人员班次设置 
    sTables(62) = "T6633A001"              '加班单 
    sTables(63) = "T6638A001"              '人员请假安排 
    sTables(64) = "T6645A001"              '请假报表 
    sTables(65) = "T6646A001"              '串休表 
    sTables(66) = "T6649A001"              '工时调换 
    sTables(67) = "T6650A001"              '工时调换状态 
    sTables(68) = "T6651S001"              '系统班次设置 
    sTables(69) = "T6652S001"              '班次类型 
  #End If 
  #If APPLICATION_TYPE = 11 Then '衡重 
    sTables(70) = "T8202S001"              '称重数据 
    sTables(71) = "T8203P001"              '称重状态 
  #End If 
  #If APPLICATION_TYPE = 12 Then 'VMS 
    sTables(72) = "T5501A001"              '号码库 
    sTables(73) = "T5503A001"              '采购订单表头 
    sTables(74) = "T5505A001"              '原因库 
    sTables(75) = "T5507A001"              '采购明细 
    sTables(76) = "T5509A001"              '客户 
    sTables(77) = "T5511A001"              '银行-往来客户 
    sTables(78) = "T5513A001"              '税码库 
    sTables(79) = "T5515A001"              '物料 
    sTables(80) = "T5517A001"              '物料类别 
    sTables(81) = "T5519A001"              '物料组 
    sTables(82) = "T5521A001"              '仓库 
    sTables(83) = "T5523A001"              '物料移动凭证 
    sTables(84) = "T5525A001"              '出运需求单 
    sTables(85) = "T5527A001"              '出运需求明细 
    sTables(86) = "T5529A001"              '付款条件 
    sTables(87) = "T5531A001"              '客户合作方 
    sTables(88) = "T5533A001"              '税码库 
    sTables(89) = "T5535A001"              '币种汇率 
    sTables(90) = "T5537A001"              '检验标准 
    sTables(91) = "T5539A001"              '检验级别库 
    sTables(92) = "T5541A001"              '抽样库 
    sTables(93) = "T5543A001"              '检验单头 
    sTables(94) = "T5545A001"              '检验单明细 
    sTables(95) = "T5547A001"              '主管评述库 
    sTables(96) = "T5549A001"              '仓库值 
    sTables(97) = "T5551A001"              '凭证流转 
    sTables(98) = "T5553A001"              '邮件短信 
  #End If 
  #If APPLICATION_TYPE = 13 Then '超限收费- V4_20_057_SN 
    sTables(99) = "T5701A001"              '称重流水数据库 
    sTables(100) = "T5702A001"             '车辆数据缓存区 
  #End If 
 
    GetAllTables = sTables 
End Function 
 
Public Function GetAllViews() As String() 
    Dim sViews(37) As String 
 
    sViews(0) = "QA001A001_001" 
    sViews(1) = "QA001A001_002" 
    sViews(2) = "QA001A001_003" 
    sViews(3) = "QA066A001_001" 
    sViews(4) = "QT0102S001_001" 
    sViews(5) = "QT0106A001_001" 
    sViews(6) = "QT0108A001_001" 
    sViews(7) = "QT0109A001_001" 
    sViews(8) = "QT0109A001_002" 
    sViews(9) = "QT0109A001_003" 
    sViews(10) = "QT0109A001_004" 
    sViews(11) = "QT0111S001_001" 
    'sViews(12) = "QT0111S001_002" 
    'sViews(13) = "QT0111S001_003" 
    sViews(14) = "QT0113A001_001" 
    sViews(15) = "QT0114S001_001" 
    sViews(16) = "QT0120S001_001" 
    sViews(17) = "QT0123A001_001" 
    sViews(18) = "QT0123A001_002" 
     
    #If APPLICATION_TYPE = 3 Then '巡更 
      sViews(19) = "QT3002A001_001" 
      sViews(20) = "QT3003A001_001" 
      'sViews(21) = "QT3004A001_001" 
      sViews(22) = "QT3005A001_001" 
    #End If 
     
    #If APPLICATION_TYPE = 1 Then '考勤 
      sViews(23) = "QT6620A001_001" 
      sViews(24) = "QT6621A001_001" 
      sViews(25) = "QT6621A001_002" 
      sViews(26) = "QT6621A001_003" 
      sViews(27) = "QT6621A001_004" 
      sViews(28) = "QT6623A001_001" 
      sViews(29) = "QT6623A001_002" 
      sViews(30) = "QT6624A001_001" 
      sViews(31) = "QT6629A001_001" 
      sViews(32) = "QT6632A001_001" 
      sViews(33) = "QT6633A001_001" 
      sViews(34) = "QT6645A001_001" 
      sViews(35) = "QT6645A001_002" 
      sViews(36) = "QT6646A001_001" 
      sViews(37) = "QT6649A001_001" 
    #End If 
     
    GetAllViews = sViews 
End Function 
 
Public Function GetAllIndexes() As String() 
    Dim sIndexes(79) As String 
 
    sIndexes(0) = "pk_A001A001" 
    sIndexes(1) = "A001A001_Card" 
    sIndexes(2) = "A001A001_ind" 
    sIndexes(3) = "pk_A017A001" 
    sIndexes(4) = "A017A001_ind" 
    sIndexes(5) = "pk_A058A001" 
    sIndexes(6) = "A058A001_ind" 
    sIndexes(7) = "pk_A066A001" 
    sIndexes(8) = "A066A001_ind" 
    sIndexes(9) = "pk_A098A001" 
    sIndexes(10) = "A098A001_ind" 
    sIndexes(11) = "pk_P001P001" 
    sIndexes(12) = "P001P001_Card" 
    sIndexes(13) = "P001P001_ind" 
    sIndexes(14) = "pk_T0003S001" 
    sIndexes(15) = "pk_T0004S001" 
    sIndexes(16) = "pk_T0005S001" 
    sIndexes(17) = "pk_T0006S001" 
    sIndexes(18) = "pk_T0007S001" 
    sIndexes(19) = "pk_T0008S001" 
    sIndexes(20) = "pk_T0009S001" 
    sIndexes(21) = "pk_T0010S001" 
    sIndexes(22) = "pk_T0011S001" 
    sIndexes(23) = "pk_T0015S001" 
    sIndexes(24) = "pk_T0012S001" 
    sIndexes(25) = "pk_T0013S001" 
'    sIndexes(26) = "pk_T0015S002" 
    sIndexes(27) = "pk_T0014S001" 
    sIndexes(28) = "pk_T0101S001" 
    sIndexes(29) = "pk_T0102S001" 
    sIndexes(30) = "T0102S001_ind" 
    sIndexes(31) = "pk_T0001S001" 
    sIndexes(32) = "pk_T0002S001" 
    sIndexes(33) = "pk_T0105S001" 
    sIndexes(34) = "pk_T0106A001" 
    sIndexes(35) = "pk_T0107S001" 
    sIndexes(36) = "pk_T0108A001" 
    sIndexes(37) = "T0109A001_CLUSTERED" 
    sIndexes(38) = "T0109A001_ind" 
    sIndexes(39) = "pk_T0110S001" 
    sIndexes(40) = "pk_T0111S001" 
    sIndexes(41) = "T0111S001_ind" 
    sIndexes(42) = "pk_T0112S001" 
    sIndexes(43) = "pk_T0113A001" 
    sIndexes(44) = "T0113A001_ind" 
    sIndexes(45) = "pk_T0114S001" 
    sIndexes(46) = "pk_T0115S001" 
    sIndexes(47) = "pk_T0116S001" 
    sIndexes(48) = "T0116S001_ind" 
    sIndexes(49) = "pk_T0117S001" 
    sIndexes(50) = "pk_T0118S001" 
    sIndexes(51) = "pk_T0119S001" 
    sIndexes(52) = "pk_T0120S001" 
    sIndexes(53) = "pk_T0121S001" 
    sIndexes(54) = "pk_T0126S001" 
    sIndexes(55) = "pk_T3001S001" 
    sIndexes(56) = "pk_T3002S001" 
    sIndexes(57) = "pk_T3003A001" 
    sIndexes(58) = "pk_T3004A001" 
    sIndexes(59) = "pk_T3005A001" 
    sIndexes(60) = "pk_T6620A001" 
    sIndexes(61) = "pk_T6621A001" 
    sIndexes(62) = "T6621A001_ind" 
    sIndexes(63) = "pk_T6623A001" 
    sIndexes(64) = "T6623A001_ind" 
    sIndexes(65) = "pk_T6624A001" 
    sIndexes(66) = "pk_T6629A001" 
    sIndexes(67) = "pk_T6632A001" 
    sIndexes(68) = "pk_T6633A001" 
    sIndexes(69) = "pk_T6638A001" 
    sIndexes(70) = "T6638A001_ind" 
    sIndexes(71) = "T6645A001_ind" 
    sIndexes(72) = "pk_T6646A001" 
    sIndexes(73) = "pk_T6649A001" 
    sIndexes(74) = "T6649A001_ind" 
    sIndexes(75) = "pk_T6650A001" 
    sIndexes(76) = "T6650A001_ind" 
    sIndexes(77) = "pk_T6651S001" 
    sIndexes(78) = "T6651S001_ind" 
    sIndexes(79) = "pk_T6652S001" 
     
    GetAllIndexes = sIndexes 
End Function