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

📄 dbsprg.bas

📁 一套好的餐饮行业管理软件
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "dbsprg"
'数据后端类型,用作为连接字符串
Global Const gsMSACCESS = "Microsoft Access"
Global Const gsFOXPRO20 = "FoxPro 2.0"
Global Const gsFOXPRO25 = "FoxPro 2.5"
Global Const gsFOXPRO26 = "FoxPro 2.6"
Global Const gsFOXPRO30 = "FoxPro 3.0"
Global Const gsDBASEIII = "Dbase III"
Global Const gsDBASEIV = "Dbase IV"
Global Const gsDBASE5 = "Dbase 5.0"

Global Const gsEXCEL30 = "Excel 3.0"
Global Const gsEXCEL40 = "Excel 4.0"
Global Const gsEXCEL50 = "Excel 5.0"
Global Const gsTEXTFILES = "Text"


Global Const gnDT_NONE = -1
Global Const gnDT_MSACCESS = 0
Global Const gnDT_DBASEIV = 1
Global Const gnDT_DBASEIII = 2
Global Const gnDT_FOXPRO26 = 3
Global Const gnDT_FOXPRO25 = 4
Global Const gnDT_FOXPRO20 = 5

Global Const gnDT_PARADOX4X = 6
Global Const gnDT_PARADOX3X = 7
Global Const gnDT_BTRIEVE = 8

Global Const gnDT_EXCEL50 = 9
Global Const gnDT_EXCEL40 = 10
Global Const gnDT_EXCEL30 = 11
Global Const gnDT_TEXTFILE = 12


'Public Function CreatDB(dbname As String) As Boolean
''On Error GoTo err
'ErrCase = ""
'
'    Dim dbDatabase As Database
'    Set dbDatabase = CreateDatabase(sNewDBPathAndName, dbLangGeneral, dbEncrypt)
'    CreatDB = True
'Exit Function
'err:
'    errorHandle ErrCase
'    CreatDB = False
'End Function


'Function DBCompress(olddb As String, newdb As String)
'    'On Error GoTo CompactAccErr
'ErrCase = ""
'    Dim newdb2 As String
'    Dim nEncrypt As Integer
'
'    If Dir(newdb) <> vbNullString And olddb <> newdb Then
'        Kill newdb
'    End If
'
'    Screen.MousePointer = vbHourglass
'      '如果想覆盖同一个文件,需要创建一个新的 MDB
'      '并在压缩成功后更名
'    If olddb = newdb Then
'      newdb2 = newdb '保存新名
'      newdb = Left(newdb, Len(newdb) - 1) & "N"
'    End If
'
'    DBEngine.CompactDatabase olddb, newdb, dbLangGeneral, dbEncrypt + dbVersion30
'
'    '检查原来 mdb 的覆盖
'    If VBA.Right(newdb, 1) = "N" Then
'      Kill newdb2             '删掉旧的
'      Name newdb As newdb2 '把新的改为原来的名称
'      newdb = newdb2       '重置为正确的名称
'    End If
'
'    Screen.MousePointer = vbDefault
'
'    Exit Function
'
'CompactAccErr:
'    MousePointer = 0
'    errorHandle ErrCase
'End Function
'
''------------------------------------------------------------
''这个函数在 frmCopyStruct 窗体中从一个表向另一个表复制数据
''这里示范了事务的用法来加快这种类型的操作
''------------------------------------------------------------
'Function CopyData(FromDB As String, ToDB As String, rFromName As String, rToName As String) As Integer
'    'On Error GoTo CopyErr
' ErrCase = ""
'
'    Dim recRecordset1 As Recordset, recRecordset2 As Recordset
'    Dim rfromdb, rtodb As Database
'    Dim i As Integer
'    Dim nRC As Integer
'    Dim fld As Field
'
'    Set rfromdb = OpenDatabase(FromDB, True)
'    Set rtodb = OpenDatabase(ToDB, True)
'
'    rtodb.Execute "delete from " & rToName
'
'    '打开两个记录集
'    Set recRecordset1 = rfromdb.OpenRecordset(rFromName)
'    Set recRecordset2 = rtodb.OpenRecordset(rToName)
'
'    BeginTrans
'    While recRecordset1.EOF = False
'      recRecordset2.AddNew
'      '这个循环从每个字段向新表复制数据
'      For i = 0 To recRecordset1.Fields.Count - 1
'        Set fld = recRecordset1.Fields(i)
'        recRecordset2(fld.name).Value = fld.Value
'      Next
'      recRecordset2.Update
'      recRecordset1.MoveNext
'      nRC = nRC + 1
'      '这个测试将按每 1000 记录提交一次事务
'      If nRC = 1000 Then
'        CommitTrans
'        BeginTrans
'        nRC = 0
'      End If
'    Wend
'    CommitTrans
'
'      recRecordset1.Close
'      recRecordset2.Close
'      rfromdb.Close
'      rtodb.Close
'    CopyData = True
'    Exit Function
'
'CopyErr:
'
'    errorHandle ErrCase
'    CopyData = False
'End Function
'
''------------------------------------------------------------
''这个函数复制一个表的结构给一个新表,
''这个新表或是在同一个数据库中或是在不同的数据库中
''------------------------------------------------------------
'Function CopyStruct(FromDB As String, ToDB As String, vfromname As String, vtoname As String, bCreateIndex As Integer, fg As Integer) As Integer
'    'On Error GoTo CSErr
'ErrCase = ""
'
'    Dim i As Integer
'    Dim vfromdb, vtodb As Database
'    Dim tblTableDefObj As TableDef
'    Dim fldFieldObj As Field
'    Dim indIndexObj As Index
'    Dim tdf As TableDef
'    Dim fld, newfld As Field
'    Dim idx As Index
'
'    Set vfromdb = OpenDatabase(FromDB, True)
'    Set vtodb = OpenDatabase(ToDB, True)
'    '搜索看表是否存在
'NameSearch:
'    BeginTrans
'
'    For i = 0 To vtodb.TableDefs.Count - 1
'      Set tdf = vtodb.TableDefs(i)
'      If UCase(tdf.name) = UCase(vtoname) Then
'          If fg Then
'              vtodb.TableDefs.Delete tdf.name
'              Exit For
'          End If
'
'          If MsgBox("表已经存在,删除吗?", vbYesNo + vbQuestion) = vbYes Then
'              vtodb.TableDefs.Delete tdf.name
'          Else
'              vtoname = InputBox("输入新表名称:")
'              If Len(vtoname) = 0 Then
'                  Exit Function
'              Else
'                  GoTo NameSearch
'              End If
'          End If
'          Exit For
'      End If
'    Next
'
'    Set tblTableDefObj = vfromdb.CreateTableDef()
'
'    '必要时去掉拥有者
'    tblTableDefObj.name = StripOwner(vtoname)
'
'    '创建字段
'
'    For i = 0 To vfromdb.TableDefs(vfromname).Fields.Count - 1
'      Set fld = vfromdb.TableDefs(vfromname).Fields(i)
'      Set fldFieldObj = vfromdb.TableDefs(vfromname).CreateField(fld.name, fld.Type, fld.Size)
'      tblTableDefObj.Fields.Append fldFieldObj
'    Next
'
'    '创建索引
'    If bCreateIndex <> False Then
'
'      For i = 0 To vfromdb.TableDefs(vfromname).Indexes.Count - 1
'        Set idx = vfromdb.TableDefs(vfromname).Indexes(i)
'        Set indIndexObj = vfromdb.TableDefs(vfromname).CreateIndex(idx.name)
'        With indIndexObj
'          indIndexObj.Fields = idx.Fields
'          indIndexObj.Unique = idx.Unique
'          indIndexObj.Primary = idx.Primary
'        End With
'        tblTableDefObj.Indexes.Append indIndexObj
'      Next
'    End If
'
'    '追加新表
'    vtodb.TableDefs.Append tblTableDefObj
'
'    '设置属性
'    For i = 0 To vfromdb.TableDefs(vfromname).Fields.Count - 1
'      Set fld = vfromdb.TableDefs(vfromname).Fields(i)
'      Set newfld = vtodb.TableDefs(vtoname).Fields(i)
'      With fld
'          newfld.AllowZeroLength = .AllowZeroLength
'          newfld.Required = .Required
'      End With
'    Next
'    CommitTrans
'
'      vtodb.Close
'      vfromdb.Close
'    CopyStruct = True
'    Exit Function
'
'CSErr:
'    errorHandle ErrCase
'    CopyStruct = False
'End Function
'
''------------------------------------------------------------
'去掉 ODBC 表名的拥有者
'------------------------------------------------------------
Function StripOwner(rsTblName As String) As String

    If InStr(rsTblName, ".") > 0 Then
        rsTblName = Mid(rsTblName, InStr(rsTblName, ".") + 1, Len(rsTblName))
    End If
    StripOwner = rsTblName

End Function


'Function ModField(dbsname As String, tablename As String, _
'    vfromname As String, vtoname As String, varorder As Integer)
''On Error GoTo err
'    Dim mdbs As Database
'ErrCase = ""
'    Set mdbs = OpenDatabase(dbsname, True)
'    Dim tdftemp As TableDef
'
'    Set tdftemp = mdbs.TableDefs(Trim(tablename))
'
'    With tdftemp
'
'        If .Updatable = False Then
'            MsgBox "不能更新! " & _
'                "此次操作没有完成。"
'            Exit Function
'        End If
'
'        .Fields(vfromname).OrdinalPosition = varorder
'        .Fields(vfromname).name = vtoname
'    End With
'
'    mdbs.Close
'    Exit Function
'err:
'    errorHandle ErrCase
'End Function
'
'
'Function AddDelField(dbsname As String, tablename As String, _
'    strCommand As String, strName As String, _
'    Optional varType, Optional varSize, Optional vorder)
'    Dim vidx As Integer
''On Error GoTo err
'ErrCase = ""
'
'    Dim mdbs As Database
'    Set mdbs = OpenDatabase(dbsname, True)
'    Dim tdftemp As TableDef
'
'    Set tdftemp = mdbs.TableDefs(Trim(tablename))
'    With tdftemp
'
'        If .Updatable = False Then
'            MsgBox "不能更新! " & _
'                "此次操作没有完成。"
'            Exit Function
'        End If
'
'        If LCase(strCommand) = "add" Then
'            vidx = vorder
'            .Fields.Append .CreateField(strName, _
'                varType, varSize)
'
'            ModField dbsname, tablename, strName, strName, vidx
'        Else
'            If LCase(strCommand) = "del" Then
'                .Fields.Delete strName
'            End If
'        End If
'
'    End With
'    mdbs.Close
'    Exit Function
'err:
'    errorHandle ErrCase
'End Function
'
'
'Function DelAllField(dbsname As String, tablename As String)
''On Error GoTo err
'ErrCase = ""
'
'    Dim mdbs As Database
'    Set mdbs = OpenDatabase(dbsname, True)
'
'    If FindTable("工资表打印中间库", mdbs) Then
'        mdbs.Execute "drop table 工资表打印中间库;"
'    End If
'    mdbs.Execute "create table 工资表打印中间库 (a TEXT);"
'
'    mdbs.Close
'    Exit Function
'err:
'    errorHandle ErrCase
'End Function
'
'
'Function CopyTable(vfromdb As String, vtodb As String, vfromname As String, vtoname As String, bCreateIndex As Integer, fg As Integer) As Integer
'
'    If CopyStruct(vfromdb, vtodb, vfromname, vtoname, bCreateIndex, fg) And _
'        CopyData(vfromdb, vtodb, vfromname, vtoname) Then
'            CopyTable = True
'    Else
'        CopyTable = False
'    End If
'
'End Function
'
'Function FindTable(tdfname As String, dbsname As Database) As Boolean '检查一个表在库中是否存在
'  'On Error GoTo err
'  ErrCase = ""
'
'  Dim sTmp As String
'  Dim tbl As TableDef
'
'  For Each tbl In dbsname.TableDefs
'    sTmp = tbl.name
'    If sTmp = tdfname Then
'        FindTable = True
'        Exit Function
'    End If
'  Next
'
'  FindTable = False
'Exit Function
'err:
'errorHandle ErrCase
'FindTable = False
'End Function
'
''检查一个字段在表中是否存在
'Function FindField(fldname As String, tdfname As Recordset) As Boolean
''On Error GoTo err
'    Dim fld As Field
'ErrCase = ""
'    For Each fld In tdfname.Fields
'        If fld.name = fldname Then

⌨️ 快捷键说明

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