- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •1Введение
- •2Введение в базы данных
- •2.1Типы субд
- •2.2Стандарт odbc
- •2.3Технологии взаимодействия delphi с бд
- •2.3.1Особенности технологии bde
- •2.3.2Особенности технологии ado
- •2.4Таблицы бд и связи между ними
- •2.5Первичные ключи и индексы
- •2.6Демонстрационная бд "поставщик книг"
- •3Использование odbc для подключения источника данных. Псевдонимы бд
- •3.1Внешний и внутренний псевдонимы бд
- •3.1.1Создание внешнего псевдонима
- •3.1.2Проверка работоспособности внешнего псевдонима в среде Delphi
- •3.2Внутренний псевдоним бд
- •3.2.1Назначение внутреннего псевдонима бд
- •3.2.2Создание внутреннего псевдонима
- •3.2.3Преимущества использования внутреннего псевдонима и проблемы перехода на другие субд
- •4Создание проекта с бд в технологии bde
- •4.1Особенности использования bde для соединения с источником данных
- •4.2Структура проекта с бд и визуальными компонентами
- •4.3Активизация проекта
- •4.4.4Компоненты tdbGrid
- •4.5Модуль данных
- •4.5.1Создание модуля данных tDataModule
- •4.5.2Связь модуля главного окна с модулем данных
- •4.5.3Создание компонента tDatabase
- •4.5.4Создание компонента tTable
- •4.5.5Создание компонента tDataSource
- •4.5.6Связь модуля главного окна с модулем данных
- •4.5.7Связь сетки tdbGrid и навигатора dbNavigator c источником данных tDataSource
- •4.5.8Связь главный-детальный между наборами данных
- •4.5.9Задание реляционной связи между наборами данных
- •4.5.10Активизация наборов данных
- •4.5.11Недостатки полученных решений и пути их устранения
- •4.6Объекты-столбцы сетки dbGrid
- •4.6.1Создание объектов-столбцов
- •4.6.2Редактирование объекта-столбца
- •4.7Объекты-поля наборов данных
- •4.7.1Назначение объектов-полей
- •4.7.2Создание объектов-полей
- •4.7.3Присоединение к наборам данных новых полей
- •4.7.4Присоединение полей из других таблиц. Подстановочные поля
- •4.7.5Вычисляемые поля
- •4.8Обработчики событий компонент работы с бд
- •4.8.1Обработчики событий OnGetText полей нд и компонента визуализации данных tdbGrid
- •4.8.2Установка системных переменных в обработчике событя OnCreate
- •4.9Бизнес-правила и обработчики событий компонент работы с бд
- •5Sql запросы к бд
- •5.1Компонент tQuery
- •5.2Создание компонента tQuery
- •5.3Использования компонента tQuery
- •5.3.1Свойство sql компонента tQuery
- •5.3.2Методы Open и ExecSql
- •5.3.3Схема программного формирования sql-запроса
- •5.3.4Параметрические запросы
- •5.3.5Параметрические запросы и свойство DataSource компонента tQuery
- •5.3.6Связь главный-детальный с компонентом tQuery в качестве детального набора данных
- •5.4Доступ к полям запроса
- •5.4.1Обращение к значению поля при помощи свойств объектов-полей Value и AsXxxx
- •5.4.2Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •5.4.3Обращение к значению поля при помощи функции набора данных FieldByName
- •5.5Программный доступ к данным запроса
- •5.5.1Общая схема программного доступа к данным запроса
- •5.5.2Последовательная навигация по записям
- •5.6Обзор событий компонента tQuery
- •6Хранимые процедуры и триггеры
- •6.1Хранимые процедуры
- •6.2Создание хранимых процедур
- •6.3Вызов хранимых процедур
- •6.4Триггеры
- •7Наборы данных
- •7.1Обзор событий класса tdbDataSet
- •7.1.1Реализация каскадных изменений и бизнес-правил
- •7.1.2Другие события
- •8Технология ado
- •8.1Основные особенности технологии ado
- •8.2Реализация технологии ado в Delphi
- •8.3Создание проекта с бд в технологии ado. Установка связи с бд
- •8.3.1Создание модуля данных
- •8.3.2Начало настройки связи
- •8.3.3Выбор провайдера
- •8.3.4Настройка провайдера
- •8.3.5Настройка провайдера Microsoft Jet 4.0 ole db Provider
- •8.3.6Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •8.3.7Завершение настройки связи
- •8.3.8Настройка оставшихся компонент модуля данных
- •8.4Особенности использования компонентов ado
- •8.4.1Базовые объекты ado
- •8.4.2Объект Recordset
- •8.4.3Объект Command
- •8.4.8Связной компонент tadoConnection
- •8.4.9Компонент tadoCommand
- •8.5Свойства, методы и события ado компонентов-наборов
- •8.5.1Общие свойства с bde-компонентами
- •8.5.2Специфические свойства
- •8.5.3Методы класса tCustomAdoDataSet
- •8.5.4События класса tCustomAdoDataSet
- •8.6Компонент tadoDataSet
- •8.7Компонент tadoTable
- •8.8Компонент tadoQuery
- •9Компоненты визуализации данных в Delphi
- •9.1Компонент tdbGrid
- •9.1.1Свойства
- •9.1.2Дополнительные возможности сетки
- •9.2Компоненты визуализации полей текущей записи
- •9.2.1Компонент tdbText
- •9.2.2Компонент tdbEdit
- •9.2.3Компонент tdbCheckBox
- •9.2.4Компонент tdbRadioGroup
- •9.2.5Списочные компоненты
- •9.2.6Компонент tdbMemo
- •9.2.7Компонент tdbRichEdit
- •9.2.8Компонент tdbCtrlGrid
- •9.2.9Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
4.5.2Связь модуля главного окна с модулем данных
Компоненты, работы с данными, которые далее будут помещены в модуль данных, должны быть доступны компонетам модуля главного окна. Для этого необходимо связать модуль главного окна с модулем данных.
Связь модуля главного окна с модулем данных выполняется при активном главном окне. Если вы находитесь в модуле данных или его окне, то перейдите к главному окну программы (щелкните на вкладке fmNaklsU в окне кода и нажмите клавишу F12). С помощью команды File>Use Unit (Рисунок 3 .20) свяжите модуль главного окна fmNaklsU с модулем данных dmNaklsU.
Рисунок 3.20 - Связь модуля главного окна с модулем данных
Примечание. В данном случае связь модуля главного окна с модулем данных выполнена еще до заполнения модуля данных. Но эту связь можно задать и после заполнения модуля данных.
4.5.3Создание компонента tDatabase
Для связи таблиц программы (5-ть компонентов TTable) с таблицами БД воспользуемся компонентом TDatabase на вкладке BDE палитры компонентов Delphi.
Щелкните на компоненте TDatabase, а затем - на имени модуля DM в окне дерева объектов. В окне дерева объектов слева от компонента TDatabase появится красный знак вопроса, означающий, что компонент TDatabase еще не готов к работе.
Рисунок 3.21 – Компонент TDatabase не готов к работе
В окне инспектора объектов раскройте список свойства AliasName (имя пседонима) и выберите созданный ранее псевдоним БД, например BiblDataPgSQL. В строке свойства DatabaseName напишите произвольное имя например, BblDat, так называемого локального псевдонима приложения, который создает компонент TDatabase. Использование в программе локального псевдонима приложения является средством BDE обеспечения независимости текста программы от имени БД. Локальный псевдоним приложения доступен только в той программе, в которой используется компонент TDatabase.
В поле Name компонента TDatabase задайте имя DB.
Рисунок 3.22 – Окно инспектора объектов компонента DB
После определения псевдонима БД на уровне BDE и создания локального псевдонима БД для создаваемой программы исчезнет красный знак вопроса слева от компонента в окне дерева объектов, что свидетельствует о готовности компонента к работе.
Рисунок 3.23 - Окно дерева объектов модуля DM и компонента DB
Компонент TDatabase выполняет множество полезных функций, обеспечивающих связь программы с БД. В локальных и клиент-серверных системах только с его помощью можно реализовать транзакции - специальный механизм доступа к данным, повышающий их достоверность и непротиворечивость. Кроме того он способен передать серверу БД имя пользователя, его пароль и ряд других параметров, оптимизирующих связь с сервером и избавляющих пользователя программы от обязательной регистрации на сервере.
4.5.4Создание компонента tTable
Создание компонента TTable может быть выполнено одним из 2-х способов:
Для создания компонента TTable (вкладка BDE) откройте вкладку BDE и щелкните на изображении таблицы TTable, а затем щелкните на псевдониме BiblData в окне дерева объектов.
Слева от компонента в окне дерева объектов появится красный знак вопроса, означающий, что компонент TTable еще не готов к работе.
Рисунок 3.24 – Окно дерева объектов после вставки новой таблицы
Внимание! В окне инспектора объектов в свойстве DatabaseName нового компонента TTable автоматически появится имя локального псевдонима BiblData.
Рисунок 3.25 – Окно инспектора объектов для таблицы tbNakls
Для этого щелкните на компоненте TTable, а затем щелкните непосредственно в окне модуля данных DM. В результате в этом окне появится новый компонент TTable (Рисунок 3 .24). Но в этом случае необходимо самому заполнить свойство DatabaseName компонента TTable (Рисунок 3 .25).
Компонент TTable является набором данных (НД). Он преимущественно используется в файл-серверных системах для доступа к данным из какой-либо одной таблицы БД, когда таблица полностью копируется на машину клиента и там обрабатывается.
Примечание. Имеет смысл называть имена НД именами связанных с ними таблиц физической БД с соответствующим префиксом. Например, для таблицы NAKLS физической БД имя компонента TTable следует дополнить префиксом tbNakls (Рисунок 3 .26).
Рисунок 3.26 – Имя таблицы
После определения имени НД исчезнет красный знак вопроса слева от компонента в окне дерева объектов, что свидетельствует о готовности компонента к работе (Рисунок 3 .27).
Рисунок 3.27 – Окно дерева объектов после определения имени НД
Нами компонент TTable будет использован для создания первого варианта программного проекта с клиент-серверной системой, который затем будет модифицирован и вместо компонента TTable будет использован более универсальный компонент TQuery, с помощью которого формирутся SQL-запросы (см. раздел 8).
Чтобы подготовить компонент TTable к работе, необходимо определить имя соответствующей таблицы. Для этого раскройте список его свойства TableName.
Рисунок 3.28 – Свойство TableName
На экране появится окно входа в БД с локальным псевдонимом BiblData (Рисунок 3 .29).
Рисунок 3.29 – Окно входа в БД с локальным псевдонимом BiblData
Введите пароль и логин и нажмите кнопку OK. Получим список доступных таблиц БД (Рисунок 3 .30).
В окне инспектора объектов выберите таблицу NAKLS обрабатываемой БД.
Рисунок 3.30 – список доступных таблиц БД
Примечание. При создании первых проектов, во избежание неясностей, для определяемых наборов данных рекомендуется сразу в поле Active задавать True.
Рисунок 3.31 – Окно инспектора объектов для таблицы tbNakls с Active=True
