Index.Primary 属性 (DAO)

适用于:Access 2013、Office 2013

设置或返回一个值,该值指示 Index 对象是否代表了对一个表的主键索引(仅适用于 Microsoft Access 工作区)。

语法

表达式 。主要

表达 一个代表 Index 对象的变量。

备注

对于新的尚未追加到集合中的 Index 对象而言, Primary 属性设置是可读写的,对于 Indexes 集合中的 Index 对象而言,该属性设置是只读的。 如果 Index 对象追加到 TableDef 对象,但是 TableDef 对象不追加到 TableDefs 集合中,则 Index 属性是可读写的。

主键索引包含一个或多个字段,这些字段可以按预定义的顺序唯一地对表中的所有记录进行标识。 由于索引字段必须是唯一的,因此 Index 对象的 Unique 属性设置为 True。 如果主键索引包含多个字段,则每个字段可以包含重复值,但是由所有索引字段中的值组成的每个组合则必须是唯一的。 主键索引由表的键组成,包含的字段通常与主键所包含的相同。

注意

您不必为表创建索引,但是在大型的未添加索引的表中,访问特定记录可能会花费很长时间。 Index 对象中的每个 Field 对象的 Attributes 属性决定了记录的顺序,因此决定了对该索引使用的访问技术。 当在数据库中创建新表时,最好对唯一标识每条记录的一个或多个字段创建索引,然后将 Index 对象的 Primary 属性设置为 True

当设置表的主键时,该主键被自动定义为表的主键索引。

示例

以下示例使用 Primary 属性将新 TableDef 中的新 Index 指定为该表的主要 Index。 请注意,将 Primary 属性设置为 True 会自动将 UniqueRequired 属性也设置为 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