- •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. Бд "поставщик книг"
- •Рекомендованная литература
Главная форма проекта
Далее на примере создания несложной программы рассматриваются основные этапы и приемы программирования для БД в технологии BDE. Вид окна работающей программы показан на рисунке 3.1.
Как видно из рисунка, программа содержит окно просмотра накладных и связанных с ними списков книг.
Рисунок 3.13 –Окно программы на этапе выполнения
Рассмотрим процесс создания главной формы проекта. Для пустой формы установите следующие свойства:
Caption = 'Накладные на книги'
Name = 'fmNakls'
В папке Source сохраните модуль под именем fmNaklsU, а проект - под именем BiblosPrg.
Для последующей работы потребуется 3-ри панели TPanel. Ниже приводится последовательность их создания.
В начале поместите на форму 2-ве панели ТPаnel (вкладка TStandart). Поместите в их свойства Align значения alBottom (рисунок 3.4).
Верхняя панель предназначена для размещения сетки DBGrid2 компонента TDBGrid, в которой будет отображаться список книг для каждого партнера.
Нижняя панель предназначена для размещения набора кнопок навигатора БД и кнопки закрытия программы.
Кроме того, потребуется еще одна – 3-тья панель, расположеная выше панели со списком книг. Эта панель предназначена для размещения сетки DBGrid1, в которой будут отображаться данные о накладных.
Желательно, чтобы пользователь мог менять высоту панелей для списка накладных и для списка книг для каждой накладной. Поэтому, прежде чем создать панель для списка партнеров, поместите на пустую часть формы полосу разбивки (рисунок 3.5) TSplitter (вкладка Additional), в ее свойство Align поместите значение alBottom, в свойство Beveled - True и в свойство Неight - 5.
Рисунок 3.14 –Подготовка главного окна программы
После этого поместите на форму 3-тью панель и установите в ее свойство Align значение alClient.
Поместите на верхнюю и среднюю панели формы по компоненту TDBGrid (вкладка Data Controls) и в их свойство Align установите значение alClint (рисунок 3.6). Обратите внимание на то, что поле DataSourse у этих компонент пока не имеет значения. Это поле будет использовано в дальнейшем для связи таблиц DBGrid1 и DBGrid2 с соответствующими источниками данных DataSourse1 и DataSourse2 (см. ниже)
Рисунок 3.15 –Окно инспектора объектов компонента DBGrid1
Очистите свойство Caption у самой нижней панели и поместите на нее кнопки навигатора БД - TDBNavigator (вкладка Data Controls), и кнопку TBitBtn (вкладка Additional). Навигатор расположите у левого края панели, а кнопку - у правого.
Раскройте список свойства Anchors кнопки TBitBtn и выровняйте ее по правому краю: поместите False в свойство akLeft и True в свойство akRight. В свойство Kind кнопки поместите значение bkClose. Вид окна к этому моменту показан на рисунке 3.7.
Рисунок 3.16 –Главное окно программы на этапе разработки
Сохраните измененный модуль главной формы.
Модуль данных
Как уже отмечалось, взаимодействие с реальной БД в Delphi подменяется взаимодействием со специально созданными компонентами работы с БД, которые через BDE "умеют" взаимодействовать с реальными элементами соответствующих БД. К ним, в певую очередь, относятся компоненты:
база данных - TDatabase, таблица – TTable и запрос – TQuery, которые расположены на вкладке BDE палитры компонентов;
источник данных – TDataSource, который расположен на вкладке Data Access палитры компонентов.
Для отображения в окне данных из таблиц TTable используется компонент TDataSource (вкладка Data Access).
В рассматриваемой программе потребуется 1-н компонент TDatabase, 5‑ть компонентов TTable и 2-ва компонента TDataSource. Их назначение описывается ниже.
Разместить эти компоненты можно на главной форме, однако предпочтительно другое решение. При разработке сложных приложений, работающих с БД, принято разделять логику работы (бизнес-логику) и интерфейс пользователя.
Для обеспечения такого разделения в Delphi используются модули данных – компоненты-контейнеры типа TDataModule. Это невидимые компоненты формы, на которых можно размещать невизуальные компоненты, такие как наборы данных, источники данных, провайдеры данных и другие элементы, выполняющие связь с БД. В результате обработчики событий элементов главного окна – кнопок, меню и т. д. будут размещаться в своем модуле, а обработчики событий компонент работы с БД и бизнес-правила (бизнес-логика) будут размещаться в модуле данных. Следствием такого решения является независимость интерфейса пользователя и бизнес-логики. В результате изменеия в одной из составляющих проекта не влияет на изменеия в другой составляющей проекта.
Примечание. Бизнес-правила определяют реакцию системы на добавление, изменение или удаление данных, обеспечивая непротиворечивость и ссылочную целостность БД.