- •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.
Они предназначены для отображения данных, которые вычисляются в ходе выполнения программы обычно с помощью значений из других полей той же записи (строки в таблице НД). После присоединения вычисляемого поля к НД, оно становится во всем подобно обычным объектам-полям, связанным с реальными полями таблицы БД, за одним исключением - такие поля нельзя редактировать, а при вводе новой записи помещать в них какое-либо значение.
Для создания вычисляемого поля нужно открыть окно New Field (см. рисунок 3.25) редактора полей и, заполнив строки Name, Type и Size, установить переключатель Calculated и закрыть окно щелчком на кнопке ОК. Заполнение вычисляемых полей осуществляется в обработчике события OnCalcFields соответствующего НД.
Рассмотрим пример создания вычисляемого поля. В разработанной ранее программе используется таблица MOVEBOOK (НД tbMove) для отображения списка книг, связанных с накладной. В этой таблице есть поля, в которых указывается количество экземпляров книги MQuan (объект-поле tbMoveMQuan) и ее цена MPrice (объект-поле tbMoveMPrice). Создадим для НД tbMove вычисляемое поле MSumm, в котором укажем сумму покупки/продажи каждой книги.
Рисунок 3.39 –Столбец "Сумма" в нижней сетке отображает вычисляемое поле
Вызовите редактор объектов-полей двойным щелчком на НД tbMove в окне модуля данных и затем в контекстном меню редактора выберите команду New Field. Введите в строку Name окна New Field название поля MSumm, в списке Туре выберите денежный тип (currency), установите переключатель Calculated и закройте окно щелчком на кнопке ОК. Если сейчас вызвать инспектор объектов, он будет отображать свойства и события вновь созданного объекта-поля tbMoveSumm.
Нам нужны свойства и события НД tbMove. Щелкните на НД tbMove, чтобы инспектор объектов показал свойства этого НД. Перейдите на вкладку Events.
Дважды щелкнув в правой части строки события OnCalcFields.
Рисунок 3.40 –
Delphi cоздаст в модуле dmNaklsU заготовку для обработчика событий OnCalcFields. Напишите в ней такой обработчик события OnCalcFields:
procedure TDM.tbMoveCalcFields(DataSet: TDataSet);
begin
tbMoveSumma.Value := tbMoveMQuan.Value * tbMoveMPrice.Value;
end;
Чтобы увидеть в сетке DBGrid2 столбец со значениями нового поля MSumma, создайте для него новый объект-столбец - специальный компонент, облегчающих управление отображением данных (см. подраздел 3.5).
Обработчики событий компонент работы с бд
С компонентами по работе с БД связано большое количество обработчиков событий. Для таких компонент как TDatabase, TTable и TQuery они связаны с бизнес-правилами (бизнес-логикой). Разработка бизнес-правил рассматривается ниже. К таким обработчикам событий, например, относятся AfterDelete или BeforDelete.
Для компонента визуализации данных TDBGrid обработчики событий связаны с заголовками и содержимым объектов-столбцов. К таким обработчикам событий, например, относятся OnGetText или OnSetText.
Ниже рассматривается пример создания обработчика событий OnGetText для компонента визуализации данных TDBGrid.