Титул
Создание простых приложений баз данных для одного или небольшой группы пользователей.
Программа распространяется абсолютно бесплатно.

Подчиненные запросы, как альтернатива таблицам.

Как известно, для хранения подчиненных данных используется таблица. Таблица имеет свою достоинства и недостатки. Основными недостатками являются: в таблицах нельзя создавать подчиненные таблицы, таблицу нельзя открыть в отдельной закладке, как форму, и работать со всеми записями. Подчиненные запросы не имеют таких недостатков. Подчиненный запрос - это запрос отображающий данные некоторой формы, логически принадлежащие текущей родительской записи.
Для создания подчиненного запроса необходимо:
1. Две формы: А и Б.
2. В форме А должен быть объект, ссылающийся на форму Б.
Теперь в форму Б можно добавить запрос, отображающий данные, принадлежащие текущей записи.

Рассмотрим на конкретном примере. К статье приложен пример базы данных, откройте ее. В этой базе:
1. Две формы: "Заказы" и "Клиенты".
2. В форме "Заказы" есть объект "Заказчик", который ссылается на форму "Клиенты".
Теперь мы можем в форму "Клиенты" добавить запрос, отображающий заказы текущего клиента.

Подчиненные запросы, как альтернатива таблицам.

На рисунке показан подчиненный запрос в форме "Клиенты". Откройте отбор (отмечен красной стрелкой на рисунке).

Подчиненные запросы, как альтернатива таблицам.

Обратите внимание на фильтр. Заказы фильтруются по объекту "Заказчик". Функция RECID передает в фильтр идентификатор текущей записи формы "Клиенты" (помните ведь, что объект хранит идентификатор записи?). Вот таким образом мы создали подчиненную связь между формами "Клиенты" и "Заказы".

Примечание. Значения, передаваемые в фильтр, являются параметрами при создании новой записи в запросе. Для этого необходимо соблюдение одного условия: должна использоваться операция сравнения = (равно). В данном случае, при создании нового заказа в запросе, в форму "Заказы" автоматически вставится текущий клиент.

Пример базы: Скачать.
<< Статьи

Контакты

Поддержать проект

МИР: 2200 7603 3542 3086
WebMoney: R031396282901