Шаг 40.
Работа с локальными БД в Delphi.
Формирование НД из нескольких таблиц

    На этом шаге мы рассмотрим использование компонента 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;

    Созданное приложение можно взять здесь.

    На следующем шаге мы рассмотрим работу с полями.




Предыдущий шаг Содержание Следующий шаг