Свойство Index.Primary (DAO)
Область применения: Access 2013, Office 2013
Задает или возвращает значение, указывающее, представляет ли объект Index индекс первичного ключа для таблицы (только для рабочих областей Microsoft Access).
Синтаксис
expression . Основной
Выражение Переменная, представляющая объект Index .
Замечания
Параметр свойства Primary предназначен для чтения и записи для нового объекта Index , еще не добавленного в коллекцию, и только для чтения для существующего объекта Index в коллекции Indexes . Если объект Index добавляется к объекту TableDef , но объект TableDef не добавляется в коллекцию TableDefs , свойство Index выполняет чтение и запись.
Индекс первичного ключа состоит из одного или нескольких полей, которые однозначно определяют все записи в таблице в предопределенном порядке. Так как поле индекса должно быть уникальным, свойство Unique объекта Index имеет значение True. Если индекс первичного ключа состоит из нескольких полей, каждое поле может содержать повторяющиеся значения, но каждое сочетание значений из всех индексированных полей должно быть уникальным. Индекс первичного ключа состоит из ключа для таблицы и обычно содержит те же поля, что и первичный ключ.
Примечание.
Вам не нужно создавать индексы для таблиц, но в больших неиндексированных таблицах доступ к определенной записи может занять много времени. Свойство Attributes каждого объекта Field в объекте Index определяет порядок записей и соответственно определяет техники доступа для использования этого индекса. При создании новой таблицы в базе данных рекомендуется создать индекс в одном или нескольких полях, которые однозначно идентифицируют каждую запись, а затем присвоить свойству Primary объекта Index значение True.
При установке первичного ключа для таблицы первичный ключ автоматически определяется как индекс первичного ключа для таблицы.
Пример
В этом примере свойство Primary используется для назначения нового индекса в новом TableDef в качестве основного индекса для этой таблицы. Обратите внимание, что при установке свойства Primary значение True автоматически присваивается свойству Unique и Required значение True .
Sub PrimaryX()
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim idxNew As Index
Dim idxLoop As Index
Dim fldLoop As Field
Dim prpLoop As Property
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Create and append a new TableDef object to the
' TableDefs collection of the Northwind database.
Set tdfNew = dbsNorthwind.CreateTableDef("NewTable")
tdfNew.Fields.Append tdfNew.CreateField("NumField", _
dbLong, 20)
tdfNew.Fields.Append tdfNew.CreateField("TextField", _
dbText, 20)
dbsNorthwind.TableDefs.Append tdfNew
With tdfNew
' Create and append a new Index object to the
' Indexes collection of the new TableDef object.
Set idxNew = .CreateIndex("NumIndex")
idxNew.Fields.Append idxNew.CreateField("NumField")
idxNew.Primary = True
.Indexes.Append idxNew
Set idxNew = .CreateIndex("TextIndex")
idxNew.Fields.Append idxNew.CreateField("TextField")
.Indexes.Append idxNew
Debug.Print .Indexes.Count & " Indexes in " & _
.Name & " TableDef"
' Enumerate Indexes collection.
For Each idxLoop In .Indexes
With idxLoop
Debug.Print " " & .Name
' Enumerate Fields collection of each Index
' object.
Debug.Print " Fields"
For Each fldLoop In .Fields
Debug.Print " " & fldLoop.Name
Next fldLoop
' Enumerate Properties collection of each
' Index object.
Debug.Print " Properties"
For Each prpLoop In .Properties
Debug.Print " " & prpLoop.Name & _
" = " & IIf(prpLoop = "", "[empty]", _
prpLoop)
Next prpLoop
End With
Next idxLoop
End With
dbsNorthwind.TableDefs.Delete tdfNew.Name
dbsNorthwind.Close
End Sub