Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Команда 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 fox90001.gif ее псевдоним.

IN nWorkArea

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

IN cTableAlias

Задает псевдоним родительской таблицы.

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

ADDITIVE

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

Комментарии

Перед тем как устанавливать отношение, одна таблица (родительская) должна быть открыта, а вторая (дочерняя) должна быть открыта в другой рабочей области.

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

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



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.