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求大侠能够给我详细注释一下!
此为何物?有何用?
并运行一下是否成功。

解决方案 »

  1.   

    建立了一个Access数据库,建立一个表,定义了一个主键,定义了几个索引,最后大概定义一个外键
      

  2.   

    工程----->引用,Microsoft ADO Ext. 2.5 for DDL and Security
    Private Sub Command1_Click()
        Call CreateMDB("C:\Temp\")        '建库
        Call CreateTables                 '建表
        Call CreateIndexes                '建索引
        Call CreateKeys
    End Sub虽然可以运行但会出错。