- •Bde та ado
 - •Введение
 - •Введение в базы данных
 - •Типы субд
 - •Стандарт odbc
 - •Технологии взаимодействия delphi с бд
 - •Особенности технологии bde
 - •Особенности технологии ado
 - •Таблицы бд и связи между ними
 - •Первичные ключи и индексы
 - •Демонстрационная бд "поставщик книг"
 - •Использование odbc для подключения источника данных. Внешний псевдоним бд
 - •Создание внешнего псевдонима бд
 - •Создание проекта с бд в технологии bde
 - •Особенности использованияbdeдля соединения с источником данных
 - •Структура проекта с бд и визуальными компонентами
 - •Активизация проекта
 - •Главная форма проекта
 - •Модуль данных
 - •Создание модуля данныхTDataModule
 - •Создание компонента tDatabase
 - •Создание компонента tTable
 - •Создание компонентаTDataSource
 - •Связь модуля главного окна с модулем данных
 - •Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
 - •Связь главный-детальный между наборами данных
 - •Задание реляционной связи между наборами данных
 - •Активизация наборов данных
 - •Недостатки полученных решений и пути их устранения
 - •Объекты-столбцы сетки dbGrid
 - •Объекты-поля наборов данных
 - •Создание объектов-полей
 - •Присоединение к наборам данных новых полей
 - •Присоединение полей из других таблиц. Подстановочные поля
 - •Вычисляемые поля
 - •Обработчики событий компонент работы с бд
 - •Обработчики событий OnGetText полей нд и компонента визуализации данныхTdbGrid
 - •Установка системных переменных в обработчике событяOnCreate
 - •Бизнес-правила иобработчики событий компонент работы с бд
 - •Implementation
 - •Sql запросы к бд
 - •КомпонентtQuery
 - •СозданиекомпонентаtQuery
 - •ИспользованиякомпонентаtQuery
 - •Свойство sql
 - •Методы Open и ExecSql
 - •Параметрические запросы
 - •Параметрические запросы и свойство DataSource компонента tQuery
 - •Связь главный-детальный с компонентомTQuery в качестве детального набора данных
 - •Доступ к полям запроса
 - •Обращение к значению поля при помощи свойств объектов-полейValueиAsXxxx
 - •Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
 - •Обращение к значению поля при помощи функции набора данных FieldByName
 - •Программный доступ к данным запроса
 - •Общая схема программного доступа к данным запроса
 - •Последовательная навигация по записям
 - •Обзор событий компонентаtQuery
 - •Хранимые процедуры и триггеры
 - •Хранимые процедуры
 - •Создание хранимых процедур
 - •Вызов хранимых процедур
 - •Триггеры
 - •Наборы данных
 - •Обзор событий класса tdbDataSet
 - •Реализация каскадных изменений и бизнес-правил
 - •Другие события
 - •Технология ado
 - •Основные особенности технологии ado
 - •Реализация технологии ado в Delphi
 - •Создание проекта с бд в технологии ado. Установка связи с бд
 - •Создание модуля данных
 - •Начало настройки связи
 - •Выбор провайдера
 - •Настройка провайдера
 - •Настройка провайдераMicrosoftJet4.0oledbProvider
 - •Настройка провайдера Microsoft ole db Provider for odbc Drivers
 - •Завершение настройки связи
 - •Настройка оставшихся компонент модуля данных
 - •Особенности использования компонентов ado
 - •Базовые объекты ado
 - •ОбъектRecordset
 - •ОбъектCommand
 - •ОбъектParameter
 - •Компонент tadoCommand
 - •Свойства, методы и события ado компонентов-наборов
 - •Общие свойства с bde-компонентами
 - •Специфические свойства
 - •Методы класса tCustomAdoDataSet
 - •События класса tCustomAdoDataSet
 - •Компонент tadoDataSet
 - •Компонент tadoTable
 - •Компонент tadoQuery
 - •Компоненты визуализации данных вDelphi
 - •Компонент tdbGrid
 - •Свойства
 - •Дополнительные возможности сетки
 - •Компоненты визуализации полей текущей записи
 - •Компонент tdbText
 - •Компонент tdbEdit
 - •Компонент tdbCheckBox
 - •Компонент tdbRadioGroup
 - •Списочные компоненты
 - •Компонент tdbMemo
 - •Компонент tdbRichEdit
 - •Компонент tdbCtrlGrid
 - •Компонент tdbNavigator
 - •Приложение 2. Бд "поставщик книг"
 - •Рекомендованная литература
 
Объекты-поля наборов данных
Создание объектов-полей
Поля НДTTableилиTQueryвыступают как целостная конструкция и не могут рассматриваться и использоваться в программе отдельно.
Объекты-поляНДстановятся "заменителем" соответствующих полейНДи выступают каксамостоятельные объекты, которые удобно использовать в программе как отдельные обрабатываемые сущности (см. далее).
В частности, механизм создания объектов-полей позволяет расширить исходные НД за счет введения в них полей, которые реально находятся в других таблицах БД или формируются как результат обработки исходных полей.
Чтобы показать в сетках названия партнеров и книг к исходному НД tbNakls необходимо добавить подстановочные (Lookup) поля из других таблиц.
Перейдите к модулю данных DM и нажмите клавишу F12 для визуализации окна модуля данных.
Двойным щелчком на компоненте tbNakls откройте окно редактора полей.

а) незаполненное
Щелкните в окне редактора правой кнопкой мыши и в контекстном меню выберите команду Add all fields - окно редактора заполнится списком всех полей таблицы NAKLS.

б) заполненное
Рисунок 3.34 – Окно редактора полей
Этот список означает, что теперь для каждого поля НД tbNakls создан специальный объект-поле со своими свойствами, методами и событиями.
Если вы щелкнете на любом поле в окне редактора полей, то в окне инспектора объектов станут доступными свойства и события объекта-поля. По умолчанию Delphi присваивает объекту-полю имя, полученное сцеплением имени НД и имени поля, так что теперь в программе окажутся компоненты с именами NaklsNakllD, NaklsNFirm, NaklsNDate и т. д.

Рисунок 3.35 –Окно Object Inspector для поля NaklId, выделенного в редакторе полей
Перечень этих компонентов можно увидеть в окне Object TreeView, а их объявление в классе TDM кода модуля данных.

Рисунок 3.36 –Окно Object TreeView для полей в редакторе полей
Внимание! Следует помнить, что если для НД, например tbNakls:
Не созданы объекты-поля, он содержит данные из всех полей соответствующей таблицы NAKLS;
Создан хотя бы один объект-поле, соответствующий НД tbNakls будет содержать значения только тех полей, для которых явно созданы объекты-поля.
Поэтому лучше принудительно создавать объекты-поля для всех полей НД. Более того, если необходимо расширить НД за счет добавления к нему подстановочных полей из других таблиц, то без объектов-полей в этом случае просто не обойтись.
Описанным выше образом создайте объекты-поля и для НД tbMove.
Примечание 1. Создание объектов-полей для каждого используемого в программе НД можно считать признаком хорошего стиля программирования, так как они упрощают доступ к данным и дают программисту дополнительные возможности. Так с помощью свойства DisplayLabel можно изменить заголовки соответствующих колонок в сетках отображения данных. С помощью обработчика события OnGetText можно изменить формат отображения данных и т.п.
Примечание 2. Использовать свойство Visible = False объектов-полей для их сокрытия в сетке DBGrid нецелесообразно, так как скрытые объекты-поля не будут видны не только в этой сетке, но и в любом другом визуализирующем компоненте Delphi (эти компоненты сосредоточены на вкладке Data Controls палитры компонентов), что затруднит редактирование и ввод данных для соответствующих НД.
