1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Für 32Bit und 64Bit Office Versionen

Problemstellung:

Wie kann ich einen Index mittels ADO(X) erstellen?


Verweis auf die Microsoft ActiveX Data Objects 2.X Library erforderlich
Verweis auf die Microsoft ADO Ext. 2.X for DDL and Security Library erforderlich

Sub NewCreateIndexADOX(strTableName As String, strNewIndexName As String, strNewFldName As String, _
                   boolNewIgnoreNull As Boolean, boolNewUnique As Boolean, _
                   Optional boolPrimary As Boolean = False)
'*******************************************
'Name:      NewCreateIndex (Sub)
'Purpose:   Erstellt einen neuen Index für die Tabelle in der angegebenen Datenbank mittels ADOX
'Author:    Thomas Keßler
'Date:      Dezember 01, 2002, 10:05:15
'Inputs:    strTabName = Name der Tabelle, NewIndexName = Name des neuen Indexes
'           NewFldName = Name des neuen Feldes, NewIgnoreNull = Nullwerte ignorieren ?,
'           NewUnique=Index Eindeutig ?
'           boolPrimary=Primär Index
'Output:
'*******************************************
On Error GoTo ErrHandler
Dim cn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim idx As ADOX.Index
Set cn = CurrentProject.Connection
Set cat.ActiveConnection = cn
Set tbl = cat.Tables(strTableName)
Set idx = CreateObject("ADOX.Index")
    
    With idx
        .Name = strNewIndexName
        If boolNewIgnoreNull = False Then
            .IndexNulls = adIndexNullsDisallow
        Else
            .IndexNulls = adIndexNullsIgnore
        End If
        .PrimaryKey = boolPrimary
        If boolPrimary = True Then
            .Unique = True
        Else
            .Unique = boolNewUnique
        End If
        .Columns.Append strNewFldName
    End With
    
    tbl.Indexes.Append idx
             
Set cat = Nothing
cn.Close
    
ExitHere:
    Exit Sub
ErrHandler:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & " Description: " & Err.Description & vbCrLf
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in Sub: NewCreateIndexADOX"
    Resume ExitHere
End Sub

Aufruf:

Call NewCreateIndexADOX("tblNeu", "Test_INDEX", "Test_F", False, True, True)


würde in der Tabelle "tblNeu" einen Index "Test_INDEX" für das Feld "Test_F" erstellen,
Nullwerte ignorieren=False, Eindeutig=True, Primär=True.

Call NewCreateIndexADOX("tblNeu", "Test_I", "fld_Test5", True, False, False)

würde in der Tabelle "tblNeu" einen Index "Test_I" für das Feld "fld_Test5F" erstellen,
Nullwerte ignorieren=True, Eindeutig=False, Primär=False.

 

Ähnliche Artikel