
- •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. Бд "поставщик книг"
- •Рекомендованная литература
Создание компонентаTDataSource
Чтобы в главном окне программы сетка DBGrid1 могла отображать данные из НД tbNakls, ее нужно связать с НД с помощью специального компонента источник данных (ИД) - TDataSource. Для этого выделите компонент TDataSource на вкладке Data Access палитры компонентов и затем щелкните на компоненте tbNakls в окне дерева объектов. В результате будут сформированы поля DataSet и Name Инспектора объектов для этого компонента (рисунок 3.15).
Рисунок 3.24 –Окно инспектора объектов для компонента DataSource1
Теперь осталось связать компонент DBGrid1 с компонентом DataSource1. Но компонент DBGrid1 находится на форме fmNaklsU, а компонент DataSource1 находится в модуле данных dmNaklsU. Однако согласно идеологии Delphi модуль данных должен быть связан с модулем формы. Лишь после этого можно реально связывать компоненты из этих методов. Этот процесс описывается в подразделе 3.3.7 после того, как будет завершен процесс создания всех необходимых компонент модуля данных. Хотя можно поступить и иначе, сначала связать модуль данных с модулем формы, а затем уже формировать необходимые компоненты модуля данных.
Таким образом, пока завершен процесс подготовки пары компонент Table1 – DataSource1 и пока не установлена связь компонента TDataSource1 с сеткой DBGrid1, необходимых для обработки и отображения НД tbNakls.
Теперь необходимо создать вторую пару Table2 – DataSource2 и пока отложить связвание компонент DataSource2 с сеткой DBGrid2 для отображения данных из таблицы MOVEBOOK в сетке главного окна DBGrid2. Для этого "положите" на псевдоним ААА набор данных TTable, а на него – источник данных TDataSource. Затем свяжите НД с таблицей MOVEBOOK и дайте ему имя tbMove. После чего свяжите компонент TDataSource с сеткой DBGrid2.
Вид модуля данных к этому моменту показан на рисунке 3.16.
Рисунок 3.25 –Вид модуля даных
Примечание. В общем случае для одной таблицы DBGrid может быть создано несколько источников данных, например, DataSource1, DataSource2 и т.д. При отладке или в процессе работы програмы такую таблицу можно связывать с разными источниками данных.
Связь модуля главного окна с модулем данных
Связь модуля главного окна с модулем данных должна выполняться при активном главном окне. Если вы находитесь в модуле данных или его окне, то перейдите к главному окну программы (щелкните на вкладке fmNaklsU в окне кода и нажмите клавишу F12). С помощью команды File>Use Unit свяжите модуль главного окна fmNaklsU с модулем данных dmNaklsU.
Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
Сетка TDBGrid является наиболее распространенным визуальным компонентом, используемым для отображения данных из БД. Поэтому в рассматриваемом примере выбраны 2-ве сетки DBGrid1 и DBGrid2. Рассмотрим способ установления связи между этими сетками и соответствующими источниками данных DataSource1 и DataSource2, а так же навигатораDBNavigator1 с источником данных DataSource1.
Для этого необходимо выбрать соответствующие имена в поле DataSource компонентов DBGrid1, DBGrid2 и DBNavigator1(рисунок 3.17).
Рисунок 3.26 –Окно инспектора объектов для компонента DBGrid1
Для верхней сетки DBGrid1 раскройте список свойства DataSource и выберите в нем пункт DataSource1 - сетка тут же наполнится данными из НД tbNakls.
Точно так же свяжите нижнюю сетку DBGrid2 с источником данных TDataSource2. Сетка тут же наполнится данными из НД tbMove.
Таким же образом, что и для DBGrid свяжите навигатор баз данных DBNavigator1 в нижней части окна с источником данных DataSource1.
Рисунок 3.27 – Окно инспектора объектов для компонента DBNavigator1
Обратиться к конкретному столбцу компонента TDBGrid, например,DBGrid1можно как к элементу индексированного массиваDBGrid1.Columns.Items[i].
Примечание. На вкладкеDataControlsпредставлен весь набор визуальных компонент для работы сБД. Они будут рассмотрены ниже.