同题

解决方案 »

  1.   

    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 & "\DEMO.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 "Add", adVarWChar, 50
      TBL.Columns.Append "ID", adInteger, 0
      TBL.Columns("ID").Properties("AutoIncrement") = True
      TBL.Columns.Append "Name", adVarWChar, 50
      TBL.Columns.Append "Pho", adLongVarBinary, 0
      TBL.Columns.Append "Resume", adLongVarWChar, 0
      TBL.Columns.Append "TypeID", adVarWChar, 50
      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 "ID"
      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' ===[Create Index 'TypeID']===
      Set IDX = New ADOX.Index
      IDX.Name = "TypeID"
      IDX.Columns.Append "TypeID"
      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.   

    当然,更简单的是用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)
      

  3.   

    引用微软 ADO Ext.2.6 for dll and Security
    ms acticex data object 2.6 library
      
    在VB程序中删除、增加、修改Access数据库的查询和表结构;
    采用ADO直接连结Access数据库Sub CreateDatabase()
    Dim cat As New ADOX.Catalog
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Password=aaa;Data Source=c:\new.mdb;" 
    End SubSub CreateTable()
    Dim tbl As New Table
    Dim cat As New ADOX.Catalogcat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=aaa;Data Source=c:\new.mdb;" 
    tbl.Name = "MyTable"
    tbl.Columns.Append "Column1", adInteger
    tbl.Columns.Append "Column2", adInteger
    tbl.Columns.Append "Column3", adVarWChar, 50
    cat.Tables.Append tbl
    End Sub