Формирование НД из нескольких таблиц

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

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий