我用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

解决方案 »

  1.   

    Public txtsql As String
    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