Freigeben über


Index.Unique-Eigenschaft (DAO)

Gilt für: Access 2013, Office 2013

Legt einen Wert fest, der angibt, ob ein Index -Objekt einen eindeutigen Index (Schlüssel) für eine Tabelle darstellt, oder gibt den betreffenden Wert zurück (nur Microsoft Access-Arbeitsbereiche).

Syntax

Ausdruck . Einzigartige

Ausdruck Eine Variable, die ein Index-Objekt darstellt.

Hinweise

Es besteht Lese-/Schreibzugriff für den Wert dieser Eigenschaft, bis das Objekt an eine Auflistung angefügt wird. Ab diesem Zeitpunkt ist die Eigenschaft schreibgeschützt.

Ein eindeutiger Index besteht aus einem oder mehreren Feldern, die alle Datensätze in einer Tabelle in einer eindeutigen, vordefinierten Reihenfolge logisch anordnen. Wenn der Index aus einem Feld besteht, müssen die Werte in diesem Feld für die gesamte Tabelle eindeutig sein. Wenn der Index aus mehreren Feldern besteht, kann jedes Feld doppelte Werte enthalten, doch jede Kombination der Werte der indizierten Felder muss eindeutig sein.

Wenn sowohl die Unique - als auch die Primary-Eigenschaft eines Index-Objekts auf True festgelegt sind, ist der Index eindeutig und primär: Er identifiziert eindeutig alle Datensätze in der Tabelle in einer vordefinierten logischen Reihenfolge. Wenn die Primary-Eigenschaft auf False festgelegt ist, ist der Index ein sekundärer Index. Sekundäre Indizes (sowohl Schlüssel als auch Nichtschlüssel) ordnen Datensätze logisch in einer vordefinierten Reihenfolge an, ohne als Bezeichner für Datensätze in der Tabelle zu dienen.

Hinweis

  • Sie müssen keine Indizes für Tabellen erstellen, doch in großen, nicht-indizierten Tabellen kann der Zugriff auf einen Datensatz einige Zeit in Anspruch nehmen.
  • Datensätze, die aus Tabellen ohne Indizes abgerufen werden, werden in einer unbestimmten Reihenfolge zurückgegeben.
  • Die Attributes -Eigenschaft der einzelnen Field -Objekte im Index-Objekt legt die Reihenfolge der Datensätze fest und bestimmt daher das für das betreffende Index-Objekt zu verwendende Zugriffsverfahren.
  • Ein eindeutiger Index trägt zur Optimierung der Suche nach Datensätzen bei.
  • Indizes wirken sich nicht auf die physische Reihenfolge einer Basistabelle aus. Indizes wirken sich nur darauf aus, wie das Recordset-Objekt des Tabellentyps auf die Datensätze zugreift, wenn ein bestimmter Index ausgewählt wird oder wenn das Microsoft Access-Datenbankmodul Recordset-Objekte erstellt.

Beispiel

This example sets the Unique property of a new Index object to True, and appends the Index to the Indexes collection of the Employees table. It then enumerates the Indexes collection of the TableDef and the Properties collection of each Index. The new Index will only allow one record with a particular combination of Country, LastName, and FirstName in the TableDef.

    Sub UniqueX() 
     
       Dim dbsNorthwind As Database 
       Dim tdfEmployees As TableDef 
       Dim idxNew As Index 
       Dim idxLoop As Index 
       Dim prpLoop As Property 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       Set tdfEmployees = dbsNorthwind!Employees 
     
       With tdfEmployees 
          ' Create and append new Index object to the Indexes  
          ' collection of the Employees table. 
          Set idxNew = .CreateIndex("NewIndex") 
     
          With idxNew 
             .Fields.Append .CreateField("Country") 
             .Fields.Append .CreateField("LastName") 
             .Fields.Append .CreateField("FirstName") 
             .Unique = True 
          End With 
     
          .Indexes.Append idxNew 
          .Indexes.Refresh 
     
          Debug.Print .Indexes.Count & " Indexes in " & _ 
             .Name & " TableDef" 
     
          ' Enumerate Indexes collection of Employees table. 
          For Each idxLoop In .Indexes 
             Debug.Print "  " & idxLoop.Name 
     
             ' Enumerate Properties collection of each Index  
             ' object. 
             For Each prpLoop In idxLoop.Properties 
                Debug.Print "    " & prpLoop.Name & _ 
                   " = " & IIf(prpLoop = "", "[empty]", prpLoop) 
             Next prpLoop 
     
          Next idxLoop 
     
          ' Delete new Index because this is a demonstration. 
          .Indexes.Delete idxNew.Name 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub