我用VB的ADOX创建ACCESS,同时想创建多个索引,但我创建一个索引时就能创建成功,如果同时创建2个字段的索引,就不能创建成功,以下是我的源码。 Dim tbl As New ADOX.Table
Dim idx As New ADOX.Index
Dim cat As New ADOX.Catalog
cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source='c:\test.mdb';"
tbl.Name = "MyTable"
tbl.Columns.Append "Column1", adInteger
tbl.Columns.Append "Column2", adInteger
tbl.Columns.Append "Column3", adVarWChar, 50
cat.Tables.Append tbl
idx.Name = "multicolidx"
idx.Columns.Append "Column1"
idx.Columns.Append "Column2"
tbl.Indexes.Append idx
Set cat.ActiveConnection = Nothing
Set cat = Nothing
Set tbl = Nothing
Set idx = Nothing
Exit Sub
CreateIndexError:
cat.Tables.Delete "myTable"
Set cat = Nothing
Set tbl = Nothing
Set idx = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
Dim idx As New ADOX.Index
Dim cat As New ADOX.Catalog
cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source='c:\test.mdb';"
tbl.Name = "MyTable"
tbl.Columns.Append "Column1", adInteger
tbl.Columns.Append "Column2", adInteger
tbl.Columns.Append "Column3", adVarWChar, 50
cat.Tables.Append tbl
idx.Name = "multicolidx"
idx.Columns.Append "Column1"
idx.Columns.Append "Column2"
tbl.Indexes.Append idx
Set cat.ActiveConnection = Nothing
Set cat = Nothing
Set tbl = Nothing
Set idx = Nothing
Exit Sub
CreateIndexError:
cat.Tables.Delete "myTable"
Set cat = Nothing
Set tbl = Nothing
Set idx = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
Public admin As BooleanPublic Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As ADODB.Connection
Dim rst As ADODB.Recordset
Set mycon = New ADODB.Connection
mycon.ConnectionString = connstring()
mycon.Open
Dim stokens() As String
On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
mycon.Execute sql
Else
Set rst = New ADODB.Recordset
rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
End If
exectuesql_exit:
Set rst = Nothing
Set mycon = Nothing
Exit Function
exectuesql_error:
Resume exectuesql_exit
End Function
Public Function connstring() As String
connstring = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "/studentmanager.mdb"
End Function