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


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