На этом шаге мы рассмотрим использование компонента TQuery.
НД из нескольких таблиц, формируется с помощью компонента TQuery.
Создайте новое приложение. Расположите на форме компоненты TQuery, TDataSource и TDBGrid. Установите в свойство DatabaseName компонента Query1 значение FIRMA. Свяжите компонент DataSource1 с Query1, а DBGrid1 с DataSource1.
Раскройте редактор свойства SQL компонента Query1 и введите такой текст SQL-запроса:
SELECT Na.*, N.NSklad FROM Naim N, Nalich Na WHERE N.Naim = Na.Naim;
Закройте редактор кнопкой OK.
Как видно из текста запроса, НД собирается из двух таблиц Naim и Nalich (FROM Naim N, Nalich Na), причем для создания более компактного запроса, таблица Naim обозначается через N, а Nalich через Na. Предложение SELECT текста запроса определяет выбираемые поля, Na.* означает, что выбраны все поля таблицы Nalich. Предложение WHERE фильтрует результат, возвращаемый оператором SELECT, (WHERE N.Naim = Na.Naim ) - собираются записи, имеющие одинаковые значения поля Naim.
Чтобы выполнить запрос, установите в свойстве Active компонента Query1 значение True (рисунок 1).
Рис.1. НД, сформированный из нескольких таблиц
Если вы запустите программу, то обнаружите, что изменить каким-либо образом отображаемые в DBGrid1 данные нельзя, так как они получены объединением данных из двух таблиц. Изменять данные можно с помощью SQL-запросов, либо можно пойти на небольшую хитрость: отображать данные с помощью компонента TQuery, а редактировать - с помощью компонента TTable. При изменении данных компонент TQuery не отображает эти изменения. Для того чтобы увидеть произведенные изменения, необходимо "перезапустить" TQuery:
Query1.Active:=False; Query1.Active:=True;
Созданное приложение можно взять здесь.
На следующем шаге мы рассмотрим работу с полями.