- •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. Бд "поставщик книг"
- •Рекомендованная литература
Компонент tdbNavigator
Строго говоря, компонент TDBNavigator(навигаторБД) не предназначен для отображения данных. Его назначение - дать пользователю программы удобное средство перемещения по записямНДи облегчить ему такие действия, как вставка новой записи, а также редактирование и удаление существующей записи. Однако навигатор БД используется только совместно с компонентами визуализации, поэтому мне кажется вполне уместным рассмотреть его особенности именно в этом разделе.
На рисунке 12.12 показаны кнопки навигатора.
Рисунок 8.76 –Кнопки навигатора БД
Назначение кнопок в порядке следования слева направо:
First - устанавливает курсор на первую запись;
Prior - устанавливает курсор на предыдущую запись;
Next - устанавливает курсор на следующую запись;
Last - устанавливает курсор на последнюю запись;
Insert - переводит НД в режим вставки новой записи;
Delete - удаляет текущую запись;
Edit - переводит НД в режим редактирования;
Post - запоминает изменения, сделанные в текущей записи;
Cancel - отменяет изменения, сделанные в текущей записи;
Refresh - обновляет НД (для TQuery - только если запрос обновляемый).
С помощью свойства DataSource компонент связывается с нужным источником данных TDataSource - это все, что необходимо для его нормальной работы. Представленное ниже свойство управляет отображением диалогового окна с просьбой подтвердить удаление записи (значение True этого свойства выводит окно):
property ConfirmDelete: boolean;
Если следующее свойство имеет значение True, кнопки будут плоскими, в противном случае - объемными:
property Flat: boolean;
С помощью другого свойства можно отображать только те кнопки навигатора, которые действительно необходимы:
type TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);
type TButtonSet = set of TNavigateBtn;
property VisibleButtons: TButtonSet;
Например, если НД является результатом выполнения необновляемого запроса, в навигаторе имеет смысл оставить только первые 4 кнопки.
С помощью следующего метода можно имитировать щелчок на нужной кнопке навигатора:
procedure BtnClick (Index: TNavigateBtn);
Для компонента определены два специфических события:
type ENavClick = procedure (Sender: TObject; Button: TNavigateBtn) of object;
property BeforeAction: ENavClick;
property OnClick: ENavClick;
Обработчик первого события получает управление перед выполнением действия, связанного со щелчком на кнопке Button, в то время как обработчик OnClick - после выполнения действия.
Приложение 2. Бд "поставщик книг"
Ниже приводится описание 5-ти основных таблиц.
Таблица 1.1 - NAKLS
Имя поля |
Назначение |
Naklld |
Уникальный идентификатор накладной. По этому полю нужно создать первичный ключ |
nDate |
Дата составления накладной. По этому полю можно создать индекс для сортировки накладных по мере их поступления |
nType |
Тип накладной: 0 - покупка у поставщика; 1 - продажа покупателю; 2 - возврат поставщику; 3 - возврат от покупателя; 4 - книги получаются по обмену; 5 - книги передаются по обмену; 6 - покупка с предоплатой; 7 - продажа с предоплатой |
nFirm |
Уникальный идентификатор партнера (поле FirmId таблицы FIRMS) |
nBook |
Уникальный идентификатор книги (поле Bookld таблицы BOOKS) |
… |
… |
Таблица 1.2 - BOOKS
Имя поля |
Назначение |
Bookld |
Уникальный код книги (первичный ключ) |
bName |
Название книги (индексное поле) |
bAuthor |
Автор(ы) |
bPublish |
Издательство |
bYear |
Год выпуска |
bPrice |
Цена покупки книги |
… |
… |
Таблица 1.2 - FIRMS
Имя поля |
Назначение |
Firmld |
Уникальный идентификатор партнера (первичный ключ) |
fName |
Наименование партнера (индексное поле) |
fAddress |
Адрес партнера |
fCity |
Город |
fPhone |
Телефон(ы) |
fEMaiL |
Адрес электронной почты |
… |
… |
Таблица 1.4 - MOVEBOOK
Имя поля |
Назначение |
Moveld |
Уникальный идентификатор (первичный ключ) |
mNakl |
Код накладной из поля Naklld таблицы NAKLS (индексное поле) |
mBook |
Код книги из поля Bookld таблицы BOOKS (индексное поле) |
… |
… |
Таблица 1.5 - PAYMENTS
Имя поля |
Назначение |
PayID |
Уникальный идентификатор платежного документа (первичный ключ) |
pFirm |
Код партнера из поля Firmld таблицы FIRMS |
pOut |
Направление платежа: True - партнеру; False - от партнера |
pDate |
Дата платежа |
pSum |
Сумма платежа |
Таблица 1.6 - TYPENAKL
Имя поля |
Назначение |
TypeID |
Уникальный идентификатор типа накладной (первичный ключ) |
tName |
Содержание типа наладной |