Compartir a través de


Propiedad Index.Primary (DAO)

Se aplica a: Access 2013, Office 2013

Establece o devuelve un valor que indica si un objeto Index representa un índice de clave principal en una tabla (sólo para áreas de trabajo de Microsoft Access).

Sintaxis

expresión . Primaria

Expresión Variable que representa un objeto Index .

Comentarios

El valor de la propiedad Primary es de lectura y escritura para un nuevo objeto Index que todavía no está anexado a una colección y es de sólo lectura para un objeto Index existente en una colección Indexes. Si el objeto Index está anexado al objeto TableDef pero el objeto TableDef no está anexado a la colección TableDefs, la propiedad Index es de lectura y escritura.

Un índice de clave principal consiste en uno o varios campos que identifican de manera única todos los registros de una tabla según un orden predefinido. Como el campo de índice debe ser único, la propiedad Unique del objeto Index está establecida en True. Si el índice de clave principal se compone de varios campos, cada campo puede contener valores duplicados, pero cada combinación de valores de todos los campos indizados debe ser única. Un índice de clave principal se compone de una clave para la tabla y generalmente contiene los mismos campos que la clave principal.

Nota:

[!NOTA] No tiene que crear índices para las tablas, pero el proceso para tener acceso a un registro concreto en tablas grandes sin indizar puede durar mucho tiempo. La propiedad Attributes de cada objeto Field que hay en el objeto Index determina el orden de los registros y en consecuencia las técnicas de acceso que se usarán para ese índice. Al crear una nueva tabla en su base de datos, es recomendable crear un índice para uno o más campos que identifique cada registro de forma única y después establecer la propiedad Primary del objeto Index en True.

Cuando se establece una clave principal en una tabla, la clave principal se define automáticamente como el índice de clave principal de esa tabla.

Ejemplo

En este ejemplo se utiliza la propiedad Primary para designar un nuevo Index en un nuevo TableDef como el Index principal para esa tabla. Observe que al establecer la propiedad Primary en True automáticamente se establecen las propiedades Unique y Required también en 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