Свойство 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