Шаг 207 - Свойство Primary

Описание
Задает или возвращает значение, указывающее, описывает ли объект Index первичный индекс таблицы (только в рабочей области Microsoft Jet).

Значение
Задаваемое или возвращаемое значение является выражением типа Boolean и содержит значение True, если объект Index представляет первичный индекс.

Значение свойства Primary доступно для чтения и записи для нового объекта Index, еще не добавленного в семейство, и только для чтения для существующего объекта Index в семействе Indexes. Если объект Index добавлен в объект TableDef, а объект TableDef еще не добавлен в семейство TableDefs, свойство Index доступно для чтения-записи.

Замечания
Первичный индекс состоит из одного или нескольких полей, которые однозначно определяют порядок расположения всех записей таблицы. Поскольку первичный индекс должен быть уникальным, свойство Unique объекта Index получает значение True. Если первичный индекс состоит из нескольких полей, то каждое из полей может содержать повторяющиеся значения, но каждая комбинация значений всех полей индекса должна быть уникальной. Первичный индекс может являться ключом таблицы и обычно содержит те же поля, что и ключ.

Создание индексов для таблицы не является обязательным, однако доступ к отдельной записи в больших таблицах без определенного индекса может занимать достаточно много времени. Значения свойства Attributes каждого из объектов Field объекта Index определяют порядок записей и, соответственно, способ доступа к данным с использованием этого индекса. При создании новой таблицы полезно создать индекс по одному или нескольким полям, однозначно определяющим каждую запись, а затем задать для свойства Primary объекта Index значение True.

Когда задается ключ таблицы, этот ключ автоматически становится первичным индексом таблицы.

Пример
Следующая программа использует свойство Primary, чтобы назначить новый объект Index нового объекта TableDef первичным индексом таблицы. Следует помнить, что значение True свойства Primary автоматически задает также значение True для свойств Unique и Required.

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("Борей.mdb")

	' Создает и добавляет новый объект TableDef в семейство 
	' TableDefs базы данных "Борей".
	Set tdfNew = dbsNorthwind.CreateTableDef("НоваяТаблица")
	tdfNew.Fields.Append tdfNew.CreateField("ЧисловоеПоле", dbLong, 20)
	tdfNew.Fields.Append tdfNew.CreateField("ТекстовоеПоле", dbText, 20)
	dbsNorthwind.TableDefs.Append tdfNew

	With tdfNew
		' Создает и добавляет новый объект Index в 
		' семейство Indexes нового объекта TableDef.
		Set idxNew = .CreateIndex("ЧисловойИндекс")
		idxNew.Fields.Append idxNew.CreateField("ЧисловоеПоле")
		idxNew.Primary = True
		.Indexes.Append idxNew
		Set idxNew = .CreateIndex("ТекстовыйИндекс")
		idxNew.Fields.Append idxNew.CreateField("ТекстовоеПоле")
		.Indexes.Append idxNew
		Debug.Print .Indexes.Count & " Индексы в таблице " & 	.Name 
		' Отображает семейство Indexes.
		For Each idxLoop In .Indexes

			With idxLoop
				Debug.Print "    " & .Name
				' Отображает семейство Fields каждого 
				' объекта Index.
				Debug.Print "        Fields"
				For Each fldLoop In .Fields
					Debug.Print "            " & fldLoop.Name
				Next fldLoop

				' Отображает семейство Properties каждого 
				' объекта Index.
				Debug.Print "        Свойства"
				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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.04.2002