Шаг 25 - Метод Append

Добавляет новый объект доступа к данным (DAO) в семейство.

семейство.Append объект

Параметры
семейство
Объектная переменная, задающая любое семейство, которое может принимать новые объекты (ограничения перечислены ниже в таблице).
объект
Объектная переменная, задающая добавляемый объект, тип которого должен совпадать с типом компонентов семейства.

Замечания
Возможные применения метода Append включают добавление новой таблицы в базу данных, добавление поля в таблицу и добавление поля в индекс.
Добавленный объект становится постоянным объектом и сохраняется на диске до тех пор, пока он не будет удален с помощью метода Delete. Если семейство представляет семейство Workspaces, которое сохраняется только в памяти, то объект остается активным до тех пор, пока он не будет удален с помощью метода Close.
Добавление нового объекта происходит немедленно, однако, при этом необходимо с помощью метода Refresh обновить все другие семейства, на которые может повлиять внесенное в структуру базы данных изменение.
Если добавляемый объект не является завершенным (например, если ни один объект Field не был добавлен в семейство Fields объекта Index перед его добавлением в семейство Indexes) или если для одного или нескольких подчиненных объектов заданы неверные значения свойств, метод Append генерирует ошибку. Например, метод Append создает ошибку выполнения при попытке добавить в семейство Fields объекта TableDef объект Field, для которого не был определен тип поля.

Пример
В следующей программе метод Append или Delete используется для изменения семейства Fields объекта TableDef. Для выполнения этой процедуры требуется процедура AppendDeleteField.

Sub AppendX()

	Dim dbsNorthwind As Database
	Dim tdfEmployees As TableDef
	Dim fldLoop As Field

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

	' Добавляет три новых поля.
	AppendDeleteField tdfEmployees, "APPEND", "E-mail", dbText, 50
	AppendDeleteField tdfEmployees, "APPEND", "Http", dbText, 80
	AppendDeleteField tdfEmployees, "APPEND", "Quota", dbInteger, 5
	Debug.Print "Поля после вызова Append"

	Debug.Print , "Тип", "Размер", "Имя"

	' Перечисление семейства Fields, демонстрирующее новые поля.
	For Each fldLoop In tdfEmployees.Fields
		Debug.Print , fldLoop.Type, fldLoop.Size, fldLoop.Name
	Next fldLoop

	' Удаляет добавленные поля.
	AppendDeleteField tdfEmployees, "DELETE", "E-mail"
	AppendDeleteField tdfEmployees, "DELETE", "Http"
	AppendDeleteField tdfEmployees, "DELETE", "Quota"

	Debug.Print "Поля после вызова Delete"
	Debug.Print , "Тип", "Размер", "Имя"

	' Перечисление семейства Fields, демонстрирующее,
	' что новые поля были удалены.
	For Each fldLoop In tdfEmployees.Fields
		Debug.Print , fldLoop.Type, fldLoop.Size, fldLoop.Name
	Next fldLoop
	dbsNorthwind.Close

End Sub

Sub AppendDeleteField(tdfTemp As TableDef, strCommand As String, strName As String, Optional varType, Optional varSize)

	With tdfTemp

		' Сначала проверяет, является ли объект TableDef
		'  обновляемым. Если нет, управление возвращается 
		' в вызывающую процедуру.

		If .Updatable = False Then
			MsgBox "Необновляемый объект TableDef! " & "Выполнение задачи невозможно."
			Exit Sub
		End If

		' В зависимости от переданных данных, добавляет 
		' или удаляет поле из семейства Fields указанного
		' объекта TableDef.
		If strCommand = "APPEND" Then
			.Fields.Append .CreateField(strName, varType, varSize)
		Else
			If strCommand = "DELETE" Then .Fields.Delete strName
		End If

	End With

End Sub

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