powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Связь между двумя таблицами
2 сообщений из 2, страница 1 из 1
Связь между двумя таблицами
    #36977768
Nissan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы А1 и А2. Как с помощью команды SET RELATION TO установить связь между ними ?
...
Рейтинг: 0 / 0
Связь между двумя таблицами
    #36977819
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас что, foxhelp нет?
SET RELATION
SET RELATION

Устанавливает отношение между двумя открытыми таблицами.

Синтаксис

SET RELATION TO
[eExpression1 INTO nWorkArea1 | cTableAlias1
[, eExpression2 INTO nWorkArea2 | cTableAlias2 ...]
[IN nWorkArea | cTableAlias]
[ADDITIVE]]

Параметры

eExpression1

Задает реляционное выражение, которое устанавливает отношение между родительской и дочерней таблицами. В качестве реляционного выражения обычно используется выражение управляющего индекса дочерней таблицы.
У дочерней таблицы могут быть индексы различных типов: простой индекс (.IDX), структурный составной индекс (.CDX) или независимый составной индекс. Если индекс составной, задайте соответствующий тег индекса для упорядочения дочерней таблицы; это можно сделать с помощью команды SET ORDER.
Рассмотрим описанные в комментариях таблицы customer и orders. Предположим, что дочерняя таблица orders была индексирована и упорядочена по номеру клиента с помощью следующей команды:

SET ORDER TO TAG cust_id


Чтобы связать таблицы customer и orders отношением на базе номера клиента, выберите рабочую область, содержащую родительскую таблицу customer, или задайте рабочую область или псевдоним родительской таблицы с помощью предложения IN, а затем выдайте команду SET RELATION, задав выражение индекса в качестве реляционного выражения:

SET RELATION TO cust_id INTO orders


Дочерняя таблица должна быть проиндексирована, если только реляционное выражение не является числовым. Если вы выдали команду SET RELATION с реляционным выражением нечислового типа, а дочерняя таблица не была упорядочена с помощью инлекса, Visual FoxPro выдаст сообщение об ошибке.
Если выражение eExpression1 числового типа, оно вычисляется при перемещении указателя записи в родительской таблице. После этого указатель записи в дочерней таблице устанавливается на записи с номером eExpression1.

INTO nWorkArea1 | cTableAlias1

Задает для дочерней таблицы номер рабочей области (nWorkArea1) или псевдоним (cTableAlias1).

eExpression2 INTO nWorkArea2 | cTableAlias2 ...

Задает реляционное выражение (eExpression2) и дочернюю таблицу (или таблицы), с которой родительская таблица должна установить еще одно отношение. С помощью одной команды SET RELATION можно построить несколько отношений между одной родительской таблицей и различными дочерними таблицами. Перед каждым отношением необходимо ставить запятую.
nWorkArea2 задает для дочерней таблицы номер рабочей области, а cTableAlias2 ѕ ее псевдоним.

IN nWorkArea

Задает рабочую область родительской таблицы.

IN cTableAlias

Задает псевдоним родительской таблицы.
Предложение IN позволяет создать отношение, заранее не выбирая рабочую область родительской таблицы. Если аргументы nWorkArea и cTableAlias опущены, родительская таблица должна быть открыта в выбранной в данный момент рабочей области.

ADDITIVE

Сохраняет все уже существующие в текущей рабочей области отношения и создает заданное отношение. Если опустить ключевое слово ADDITIVE, все отношения в текущей рабочей области разрываются, после чего создается заданное отношение.

Комментарии

Перед тем как устанавливать отношение, одна таблица (родительская) должна быть открыта, а вторая (дочерняя) должна быть открыта в другой рабочей области.
Связанные отношением таблицы обычно имеют общее поле. Пусть таблица customer содержит информацию о клиентах. В ней предусмотрены поля для имени, адреса и уникального номера клиента. Вторая таблица, orders, содержит информацию о заказах. В ней также имеется поле номера клиента, наряду с полями, содержащими информацию о датах и объемах поставок. Команда SET RELATION свяжет эти две таблицы отношением на базе общего поля ѕ поля номера клиента. Чтобы установить такое отношение, дочерняя таблица должна быть проиндексирована по общему полю. После того как отношение установлено, всякий раз, когда вы в родительской таблице customer будете перемещать указатель записи к записи с данным номером клиента, указатель записи в дочерней таблице orders будет перемещаться к записи с тем же номером клиента. Если в дочерней таблице не удается найти соответствующую запись, ее указатель записи устанавливается в конец таблицы.

Выдав команду SET RELATION TO без аргументов, вы удалите все отношения, установленные в выбранной в данный момент рабочей области. Команду SET RELATION OFF можно использовать для удаления отдельных отношений типа родитель/потомок.

SET RELATION OFF
SET RELATION OFF

Разрывает установленное отношение между родительской таблицей в текущей рабочей области и связанной с ней дочерней таблицей.

Синтаксис

SET RELATION OFF INTO nWorkArea | cTableAlias

Параметры

INTO nWorkArea | cTableAlias

Задает для дочерней таблицы номер рабочей области или псевдоним.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Связь между двумя таблицами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]