Компонент Query
Модификация данных
Алгоритм установки связи
- Индексация по полям связи: в Database Desktop в окне Table Properties/Secondary Indexes/Define и сохранить (у child).
- Установление ссылочной целостности: в Database Desktop в окне Table Properties/Referential Integrity/Define выбрать главную таблицу и внешний ключ подчиненной (child) и связь сохранить.
- Организация связи Master – Detail (3 способа рассмотрены в Пособии) программно:
Table1.DatabaseName := 'proba';//выбор псевдонима
Table1.TableName := 'tovar.db';//связь компонента доступа с таблицей
DataSource1.DataSet := Table1;//связь ком-та доступа с к-том связи
DBGrid1.DataSource := DataSource1;//к-та связи с к-том отображения
Table1.Open;//открытие набора данных
Table2.DatabaseName := 'proba';
Table2.TableName := 'prixod.db';
DataSource2.DataSet := Table2;
DBGrid2.DataSource := DataSource2;
Table2.MasterSource := DataSource1;//связывание с источником
Table2.Indexname := 'in_tov_prih';//по индексному ключу
Table2.MasterFields := 'Tovar';//данного поля
Table2.Open;
Модификация данных непосредственно в таблицах нежелательна, т.к. это может привести к непредсказуемым событиям.
Модификация данных проводится только через отдельные формы данных с верификацией вводимых данных:
• введения ограничений на диапазон данных,
• проверка типа вводимых данных,
• обработка исключительных ситуаций Try…Except, Try…Finaly.
Обеспечивает реляционный способ доступа к данным, выборку данных удовлетворяющих запросу.
Name - имя компонента, используется компонентом DataSource для связи результата выполнения запроса с компонентом, обеспечивающим просмотр записей, например, DBGrid.
SQL - записанный на языке SQL запрос к БД,
Active - при значении True активизирует выполнение запроса.
Компонент Query: TDataSetочень похож на компонент Table.
Он также представляет данные в виде таблицы, колонки которой описываются компонентами TField.
Однако таблица компонента Query- логическая, формируется в результате SQL- запроса и может быть объединением нескольких физических таблиц.
Отличается от компонента Table:
• нет идентификации таблицы свойства TableName (делается через SQL-запрос),
• не содержит методов управления файлами, т.к. SQL-запрос обращается к таблицам сам,
• нет смысла индексировать (делается в SQL-запросе),
• нет механизма связи Master – Detail (делается в SQL-запросе).
SQL-запрос можно отладить в :
• В программе SQL Explorer на вкладке Enter SQL,
• В программе Database Desktop составить QBE-запрос и текст запроса посмотреть в окне SQL Editor, выполнив команду Query/Show SQL,
• В построителе запросов SQL Builder, вызываемом из контекстного меню компонента Query.
Инициализация запроса:
• В свойстве SQL компонента Query записать текст запроса и присвоить свойствуActive = True.
При выполнении программы в таблице будет информация, соответствующая SQL-запросу.
• Но лучше это осуществлять программно, используя метод Open для компонента Query при создании формы.
Виды SQL – запросов:
• Статический – запрос включается в исходный код программы на этапе разработки и в процессе выполнения приложения не меняется.
• Динамический – формируется или изменяется при выполнении приложения.
Такие запросы применяются, когда требуется учитывать действия пользователя.