如题!

解决方案 »

  1.   


       不能给更多的建议.参考一下,不过,我还是建议你用SQL语句建库.'*************************
    1.SQL建库Create Table [LX](
        [自动编号] AutoIncrement Not null,
        [长整型] LONG null,
        [超级连接] Binary null,
        [单精度型] Single null,
        [货币] Currency null,
        [双精度型] Double null,
        [同步复制] GUID null,
        [小数] Numeric null,
        [字节] Bit null,
        [OLE对象] Image null)'************************************2.代码建库Option ExplicitPrivate CAT As ADOX.CatalogPublic Sub CreateMDB(ByVal Path As String)
    On Error GoTo ErrTrap  Set CAT = New ADOX.Catalog  If Right$(Path, 1) = "\" Then Path = Left$(Path, Len(Path) - 1)' ===[Create Database]===
      CAT.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=" & Path & "\db3.mdb;" & _
                 "Jet OLEDB:Database Password=;" & _
                 "Jet OLEDB:Engine Type=5;"  CreateTables
      CreateIndexes
      CreateKeys  Set CAT = Nothing  Exit Sub
    ErrTrap:
      MsgBox Err.Number & " / " & Err.Description
      Exit Sub
      Resume
    End SubPrivate Sub CreateTables()
    On Error GoTo ErrTrap
    Dim TBL As ADOX.Table
      Set TBL = New ADOX.Table' ===[Create Table 'TABLENAME']===  Set TBL = New ADOX.Table
      TBL.Name = "TABLENAME"
      TBL.Columns.Append "OLE对象", adLongVarBinary, 0
      TBL.Columns.Append "备注", adLongVarWChar, 0
      TBL.Columns.Append "长整型", adInteger, 0
      TBL.Columns.Append "超级连接", adLongVarWChar, 0
      TBL.Columns.Append "单精度型", adSingle, 0
      TBL.Columns.Append "货币", adCurrency, 0
      TBL.Columns.Append "日期时间", adDate, 0
      TBL.Columns.Append "是否", adBoolean, 2
      TBL.Columns.Append "双精度型", adDouble, 0
      TBL.Columns.Append "同步复制ID", adGUID, 0
      TBL.Columns.Append "小数", adNumeric, 0
      TBL.Columns.Append "字节", adUnsignedTinyInt, 0
      TBL.Columns.Append "自动编号", adInteger, 0
      TBL.Columns("自动编号").Properties("AutoIncrement") = True
      CAT.Tables.Append TBL  Set TBL = Nothing  Exit Sub
    ErrTrap:
      MsgBox Err.Number & " / " & Err.Description, , "Error In CreateTables"
      Exit Sub
      Resume
    End SubPrivate Sub CreateIndexes()
    On Error GoTo ErrTrap
    Dim IDX As ADOX.Index
      Set IDX = New ADOX.Index' ===[Create Index 'PrimaryKey']===
      Set IDX = New ADOX.Index
      IDX.Name = "PrimaryKey"
      IDX.Columns.Append "自动编号"
      IDX.PrimaryKey = True
      IDX.Unique = True
      IDX.Clustered = False
      IDX.IndexNulls = adIndexNullsDisallow
      CAT.Tables("TABLENAME").Indexes.Append IDX' ===[Create Index '同步复制ID']===
      Set IDX = New ADOX.Index
      IDX.Name = "同步复制ID"
      IDX.Columns.Append "同步复制ID"
      IDX.PrimaryKey = False
      IDX.Unique = False
      IDX.Clustered = False
      IDX.IndexNulls = adIndexNullsAllow
      CAT.Tables("TABLENAME").Indexes.Append IDX  Set IDX = Nothing  Exit Sub
    ErrTrap:
      MsgBox Err.Number & " / " & Err.Description, , "Error In CreateIndexes"
      Exit Sub
      Resume
    End SubPrivate Sub CreateKeys()
    On Error GoTo ErrTrap
    Dim KEY As ADOX.KEY
    Dim TBL As ADOX.Table  Set KEY = New ADOX.KEY
      Set TBL = New ADOX.Table  Set KEY = Nothing
      Set TBL = Nothing  Exit Sub
    ErrTrap:
      Select Case Err.Number
      Case -2147467259  ' Index already exists - Remove it...
        CAT.Tables(TBL.Name).Indexes.Delete KEY.Name
        Resume
      Case Else
        MsgBox Err.Number & " / " & Err.Description, , "Error In CreateKeys"
        Exit Sub
        Resume
      End Select
    End Sub
      

  2.   

    不过你的代码好像不太正确:在   Set TBL = New ADOX.Table
         TBL.Name = "TABLENAME"之后应该加上:     TBL.ParentCatalog = CAT否则会错误。而且,代码建库里的精度不对啊,不过还是谢谢你给了那么完整的代码。很值得参考。