Поделиться через


Свойство Index.Unique (DAO)

Область применения: Access 2013, Office 2013

Задает или возвращает значение, указывающее, представляет ли объект Index уникальный (ключевой) индекс для таблицы (только для рабочих областей Microsoft Access).

Синтаксис

expression . Уникальный

Выражение Переменная, представляющая объект Index .

Замечания

Этот параметр свойства выполняется для чтения и записи до тех пор, пока объект не будет добавлен в коллекцию, после чего он будет доступен только для чтения.

Уникальный индекс состоит из одного или нескольких полей, которые логически упорядочивать все записи в таблице в уникальном предопределенном порядке. Если индекс состоит из одного поля, значения в этом поле должны быть уникальными для всей таблицы. Если индекс состоит из нескольких полей, каждое поле может содержать повторяющиеся значения, но каждое сочетание значений из всех индексированных полей должно быть уникальным.

Если свойства Unique и Primary объекта Index имеют значение True, индекс является уникальным и первичным: он однозначно определяет все записи в таблице в предопределенном логическом порядке. Если для свойства Primary задано значение False, индекс является вторичным индексом. Вторичные индексы (как ключевые, так и неключевые) логически упорядочивает записи в предопределенном порядке, не выступая в качестве идентификатора для записей в таблице.

Примечание.

  • Вам не нужно создавать индексы для таблиц, но в больших неиндексированных таблицах доступ к определенной записи может занять много времени.
  • Записи, полученные из таблиц без индексов, возвращаются не в определенной последовательности.
  • Свойство Attributes каждого объекта Field в объекте Index определяет порядок записей и, следовательно, методы доступа для этого объекта Index .
  • Уникальный индекс помогает оптимизировать поиск записей.
  • Индексы не влияют на физический порядок базовой таблицы; индексы влияют только на то, как к записям обращается объект Recordset табличного типа, когда выбран конкретный индекс или когда ядро СУБД Microsoft Access создает объекты Recordset .

Пример

В этом примере свойству Unique нового объекта Index присваивается значение True, а индекс добавляется в коллекцию Indexes таблицы Employees. Затем он перечисляет коллекцию Indexesобъекта TableDef и коллекцию Properties каждого индекса. Новый индекс будет разрешать только одну запись с определенным сочетанием Country, LastName и FirstName в 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