1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Für 32Bit und 64Bit Office Versionen

Problemstellung:

Wie kann ich eine Index mittels DAO erstellen?


Verweis auf die Microsoft DAO 3.X Object Library erforderlich

Sub NewCreateIndex(strTableName As String, strNewIndexName As String, strNewFldName As String, _
                   boolNewIgnoreNull As Boolean, boolNewUnique As Boolean, lngSort As Long, _
                   Optional boolPrimary As Boolean = False)
'*******************************************
'Name:      NewCreateIndex (Sub)
'Purpose:   Erstellt einen neuen Index für die Tabelle in der angegebenen Datenbank
'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 ?, Sort=Sortierung des Feldes (0=Aufsteigend, 1=Absteigend)
'           boolPrimary=Primär Index
'Output:
'*******************************************
On Error GoTo ErrHandler
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim idx As DAO.Index
    Dim fld As DAO.Field
    Set db = CurrentDb
    Set tdf = db.TableDefs(strTableName)
    
    '   Erstellen index
    Set idx = tdf.CreateIndex(strNewIndexName)
    
    '   Anfügen Feld an den Index
    Set fld = idx.CreateField(strNewFldName)
    fld.Attributes = lngSort
    idx.Fields.Append fld
    
    idx.Primary = boolPrimary
    idx.IgnoreNulls = boolNewIgnoreNull
    If boolPrimary = True Then
        idx.Unique = True
    Else
        idx.Unique = boolNewUnique
    End If
    '   Anfügen Index an Auflistung
    tdf.Indexes.Append idx
    
Set db = Nothing
    
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: NewCreateIndex"
    Resume ExitHere
End Sub

Aufruf:

Call NewCreateIndex("tblNeu", "Prim_ID", "Test_ID", False, False, 1, True)

würde in der Tabelle "tblNeu" den Index "Prim_ID" aus dem Feld "Test_ID" mit absteigender Sortierung
als Primärschlüssel erstellen.

Call NewCreateIndex("tblNeu", "TestKey_ID", "Test_ID", True, False, 0, False)

würde in der Tabelle "tblNeu" den Index "TestKey_ID" aus dem Feld "Test_ID" mit aufsteigender Sortierung erstellen.

 

Ähnliche Artikel