- •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. Бд "поставщик книг"
- •Рекомендованная литература
Присоединение к наборам данных новых полей
Двойным щелчком на компоненте tbNakls откройте окно редактора полей и щелчком правой кнопкой мыши вызовите его контекстное меню. Выберите в меню команду New Field, чтобы открыть окно конструктора нового поля (рисунок 3.28).
Рисунок 3.37 –Окно конструктора нового поля
С помощью конструктора нового поля в НД можно создать новые поля одного из 3-х типов (тип определяется переключателями в группе FieLd type):
Lookup - поля содержат данные из таблицы подстановки;
Calculated - поля содержат вычисляемые данные;
Data - поля содержат произвольные данные.
Поле типа Lookup - подстановочное поле, заполняется данными из нужного поля другого НД.Его и рассмотрим первым.
Поле типа Calculated – вычисляемое поле, заполняется в обработчике события OnCalcFields этого НД.
Поле типа Data – данные, будет отображаться в сетке пустой колонкой, которую можно заполнить в обработчике события OnGetText этого поля.
Ниже рассматриваются способы создания подстановочных и вычисляемых полей. Поля типа Data особого интереса не представляют и специально не рассматриваются.
Присоединение полей из других таблиц. Подстановочные поля
Рассмотрим процесс формирования подстановочного поля на примере создания поля название фирмы Firm в НД tbNakls. В строке Name окна конструктора поля введите имя нового поля. Раскройте список Туре и выберите для поля тип string, а его размер Size установите равным 40.
Установите переключатель Lookup, раскройте список полей Key Fields и выберите в нем поле NFirm. В списке Dataset выберите НД tbFirms, в списке Lookup Fields - ключевое поле FirmID и, наконец, в списке Result Field - поле FName. Закройте окно конструктора щелчком на кнопке ОК.
Рисунок 3.38 –Заполненное окно конструктора нового поля
Теперь создайте для НД tbNakls подстановочное поле с именем Туре типа string и длиной 23 символа. В качестве ключевого выберите поле NType и свяжите его с полем TypeID набора данных tbTypeNakl, а в качестве результирующего поля укажите поле TName этого же НД.
Для НД tbMove создайте 3-ри подстановочных поля с именами Name, Author и Publish. Свяжите их с НД tbBooks. Для этого в качестве Key Fields выберите поле MBook, а в качестве Lookup Keys выберите поле ВоокID. В качестве результирующих полей выберите соответственно поля BName, BAuthor, BPublish. Размеры выбранных полей установите соответственно 75, 30 и 40 символов.
Внимание! После создания подстановочных полей возникла определенная коллизия. Связанные с подстановочными полями ключевые поля tbNaklsNFirm, tbNaklsNType и tbMoveMBook стали "лишними" при отображении НД tbNakls и НД tbMove соответственно в сетке DBGrid1 и DBGrid2. Действительно, не имеет смысла рядом с названием партнера или книги показывать в сетке соответствующий им идентификатор в таблице БД. В то же время удалить из НД объекты-поля, связанные с этими ключевыми полями нельзя, так как соответствующие НД лишатся внешних ключей полей, и подстановочная связь будет разрушена.
Сокрытие полей НД, которые стали "лишними" после введения подстановочных полей, достигается за счет использования для сетки DBGrid объектов-столбцов - специальных компонентов, облегчающих управление отображением данных (см. подраздел 3.5).