Tabellen - Index löschen

Wie kann ich einen Index löschen?

Wenn Sie einen Index nicht mehr benötigen, können Sie diesen natürlich auch löschen. Beachten Sie aber, dass Beziehungsdefinitionen zwischen Tabellen existieren können, die das Löschen eines Index wirksam verhindern. Die Jet Engine kann zwischen zwei Tabellen nur die Referenzintegrität gewährleisten, wenn für die Verknüpfungsfelder Indizes existieren.

DAO-Variante

Beispiel:

Public Function DAO_DropIndex(pdbs As DAO.Database, _
                              psTable As String, _
                              psField As String, _
                              Optional psIDxName _
                              As String = vbNullString) _
                              As Boolean
 
    On Error Resume Next
    '// Falls ein Indexname angegeben wurde
    If Len(psIDxName) > 0 Then
        pdbs.TableDefs(psTable).Indexes.Delete psIDxName
    Else
        '// Wenn nein, ist es meistens so, das die Feldbe-
        '// zeichnung als Name für den Index verwendet wurde
        pdbs.TableDefs(psTable).Indexes.Delete psField
    End If
    DAO_DropIndex = (Err.Number = 0)
 
End Function
ADOX-Variante

Beispiel:

Public Function ADO_DropIndex(pcnn As ADODB.Connection, _
                              psTable As String, _
                              psField As String, _
                              Optional psIDxName _
                              As String = vbNullString) _
                              As Boolean
 
    On Error Resume Next
    Dim cat As New ADOX.Catalog
    cat.ActiveConnection = pcnn
    '// Falls ein Indexname angegeben wurde
    If Len(psIDxName) > 0 Then
        cat.Tables(psTable).Indexes.Delete psIDxName
    Else
        '// Wenn nein, ist es meistens so, das die Feldbe-
        '// zeichnung als Name für den Index verwendet wurde
        cat.Tables(psTable).Indexes.Delete psField
    End If
    If Not cat Is Nothing Then Set cat = Nothing
    ADO_DropIndex = (Err.Number = 0)
 
End Function
SQL-DLL-Variante

Beispiel:

' DAO-Variante
Public Function DLL_DropIndexDAO(pdbs As DAO.Database, _
                                 psTable As String, _
                                 psField As String, _
                                 Optional psIDxName _
                                 As String = vbNullString) _
                                 As Boolean
    On Error Resume Next
    Dim sSQL As String
 
    sSQL = "DROP INDEX "
    If Len(psIDxName) > 0 Then
        sSQL = sSQL & psIDxName & " ON " & psTable
    Else
        sSQL = sSQL & psField & " ON " & psTable
    End If
    pdbs.Execute sSQL, dbFailOnError
    DLL_DropIndexDAO = (Err.Number = 0)
 
End Function
 
' ADO-Variante
Public Function DLL_DropIndexADO(pcnn As ADODB.Connection, _
                                 psTable As String, _
                                 psField As String, _
                                 Optional psIDxName _
                                 As String = vbNullString) _
                                 As Boolean
    On Error Resume Next
    Dim sSQL As String
 
    sSQL = "DROP INDEX "
    If Len(psIDxName) > 0 Then
        sSQL = sSQL & psIDxName & " ON " & psTable
    Else
        sSQL = sSQL & psField & " ON " & psTable
    End If
    pcnn.Execute sSQL, dbFailOnError
    DLL_DropIndexADO = (Err.Number = 0)
 
End Function