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