Шаг 142 - Свойство ForeignName

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

Значение
Задаваемое или возвращаемое значение данного свойства имеет тип String и содержит имя объекта Field в семействе Fields соответствующего объекта TableDef.
Если объект Relation еще не добавлен в объект Database, а объект Field уже добавлен в объект Relation, то свойство ForeignName доступно для чтения/записи. После добавления объекта Relation в базу данных свойство ForeignName становится доступным только для чтения.

Замечания
Свойство ForeignName поддерживается только объектами Field, принадлежащими к семейству Fields, которое содержится в объекте Relation.

Значения свойств Name и ForeignName объекта Field указывают имена связываемых полей в главной и внешней таблице связи. Значения свойств Table и ForeignTable объекта Relation задают имена главной и внешней таблицы связи.

Например, если в поле "КодДетали" таблицы "Детали" содержатся уникальные коды запасных частей, то можно определить связь с таблицей "Заказы" таким образом, чтобы в таблицу "Заказы" можно было вводить только значения кодов, уже существующих в таблице "Детали". В этом случае попытка ввести значение, отсутствующее в таблице "Детали", приведет к перехватываемой ошибке, если только не задано с помощью константы dbRelationDontEnforce принудительное выполнение условий целостности данных с помощью свойства Attributes объекта Relation.

В этом примере таблица "Детали" является внешней таблицей с ключом, поэтому значением свойства ForeignTable объекта Relation должно быть имя таблицы "Детали", а значением свойства Table объекта Relation должно быть имя таблицы "Заказы". Свойства Name и ForeignName объекта Field в семействе Fields объекта Relation должны иметь значение "Код детали".

Описанную выше связь иллюстрирует следующий рисунок:

142_1.gif (4335 b)

Пример
Следующая программа демонстрирует применение свойств Table, ForeignTable и ForeignName для определения параметров объекта Relation (связи) между двумя таблицами.

Sub ForeignNameX()

	Dim dbsNorthwind As Database
	Dim relLoop As Relation

	Set dbsNorthwind = OpenDatabase("Борей.mdb")

	Debug.Print "Связь"
	Debug.Print "                    Table - Field"
	Debug.Print "    Главная (сторона 'один')   ";
	Debug.Print ".Table - .Fields(0).Name"
	Debug.Print "    Внешняя (сторона 'многие')  ";
	Debug.Print ".ForeignTable - .Fields(0).ForeignName"

	' Отображает семейство Relations базы данных 'Борей', 
	' значения свойств объекта Relation и содержащихся
	' в нем объектов Field.
	For Each relLoop In dbsNorthwind.Relations
		With relLoop
			Debug.Print
			Debug.Print "Связь " & .Name
			Debug.Print "                    Таблица - Поле"
			Debug.Print "    Главная (сторона 'один')   ";
			Debug.Print .Table & " - " & .Fields(0).Name
			Debug.Print "    Внешняя (сторона 'многие')  ";
			Debug.Print .ForeignTable & " - " & .Fields(0).ForeignName
		End With

	Next relLoop
	dbsNorthwind.Close
End Sub

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