Шаг 206 - Свойство IgnoreNulls

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

Значение
Задаваемое или возвращаемое значение данного свойства имеет тип Boolean и содержит значение True, если поля со значениями Null не являются компонентами индекса. Данное свойство доступно для чтения/записи для нового объекта Index, еще не добавленного в семейство, и только для чтения для существующего объекта Index в семействе Indexes.

Замечания
Для ускорения поиска записей по значению поля можно создать индекс для данного поля. Если в индексированном поле допускается наличие пустых значений (Null), и если ожидается наличие большого числа пустых значений, то задание значения True для свойства IgnoreNulls объекта Index позволяет уменьшить размер индекса.

Значение свойства IgnoreNulls вместе со значением свойства Required определяет, будут ли содержаться в индексе сведения о записях с пустыми значениями.

IgnoreNulls	Required		Пустые значения в индексе
True		False		Значения Null допускаются, но не заносятся в индекс.
False		False		Значения Null допускаются и заносятся в индекс.
True или False	True		Значения Null не допускаются и не заносятся в индекс.

Пример
Следующая программа задает для свойства IgnoreNulls нового объекта Index значение True или False в зависимости от данных, введенных пользователем, а затем демонстрирует результат для объекта Recordset, содержащего запись со значением Null в ключевом поле.

Sub IgnoreNullsX()

	Dim dbsNorthwind As Database
	Dim tdfEmployees As TableDef
	Dim idxNew As Index
	Dim rstEmployees As Recordset

	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	Set tdfEmployees = dbsNorthwind!Сотрудники

	With tdfEmployees
		' Создает новый объект Index.
		Set idxNew = .CreateIndex("НовыйИндекс")
		idxNew.Fields.Append idxNew.CreateField("Страна")
		' Задает значение свойства IgnoreNulls нового объекта Index, 
		' зависящее от данных, введенных пользователем.

		Select Case MsgBox("Задать для IgnoreNulls значение True?", vbYesNoCancel)
			Case vbYes
				idxNew.IgnoreNulls = True
			Case vbNo
				idxNew.IgnoreNulls = False
			Case Else
				dbsNorthwind.Close
				End
		End Select
		' Добавляет новый объект Index в семейство Indexes 
		' таблицы "Сотрудники".
		.Indexes.Append idxNew
		.Indexes.Refresh
	End With

	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники")
	With rstEmployees
		' Добавляет новую запись в таблицу "Сотрудники".
		.AddNew
		!Имя = "Иван"
		!Фамилия = "Иванов"
		.Update
		' Задает порядок записей с помощью нового индекса.
		.Index = idxNew.Name
		.MoveFirst

		Debug.Print "Индекс = " & .Index & ", IgnoreNulls = " & idxNew.IgnoreNulls
		Debug.Print "    Страна - Имя"
		' Отображает объект Recordset. Значение свойства 
		' IgnoreNulls определяет, будет ли новая запись
		' отображаться при выводе результатов.
		Do While Not .EOF
			Debug.Print "        " & _
				IIf(IsNull(!Страна), "[Null]", !Страна) & _
				" - " & !Имя & " " & !Фамилия
			.MoveNext
		Loop
		' Удаляет новую запись, созданную только для демонстрации.
		.Index = ""
		.Bookmark = .LastModified
		.Delete
		.Close
	End With
	' Удаляет новый объект Index, созданный только для демонстрации.
	tdfEmployees.Indexes.Delete idxNew.Name
	dbsNorthwind.Close
End Sub

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