Описание
Задает или возвращает значение, представляющее для связи имя
объекта 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 должны иметь значение "Код детали".
Описанную выше связь
иллюстрирует следующий рисунок.
Пример
Следующая программа демонстрирует применение свойств 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