- •Содержание
- •Введение
- •Создание приложений с использованием технологии bde
- •1.1. Практическая работа № 1: создание базы данных
- •1.1.1. Создание таблиц dBase IV
- •1.1.2. Создание индексов
- •1.1.3. Создание таблиц Paradox 7
- •1.1.4. Задание свойств таблицы Paradox 7
- •Задание на практическую работу № 1
- •1.2. Практическая работа № 2: установление связей между таблицами в многотабличной базе данных
- •1.2.1. Создание алиаса
- •1.2.2. Связывание таблиц
- •Задание на практическую работу № 2
- •1.3. Практическая работа № 3: работа с полями и компонентом dbGrid
- •1.3.1. Использование объектов-полей
- •1.3.2. Обращение к значению поля
- •1.3.3. События объекта-поля
- •1 Рис. 10. Пример использования события OnCellClick .3.4. События сетки dbGrid
- •1.3.5. Создание объектов-столбцов в dbGrid
- •1.3.6. Формирование списка возможных значений столбца
- •Задание на практическую работу № 3:
- •1.4. Практическая работа № 4: работа с наборами данных (компонент Table)
- •1.4.1. Открытие и закрытие набора данных
- •1.4.2. Доступ к записям
- •1.4.3. Навигация по набору данных
- •1.4.4. Поиск записей в наборах данных
- •1.4.5. Реализация каскадных изменений
- •1.4.6. Пример выполнения лабораторной работы
- •Задание на практическую работу № 4
- •1.5. Практическая работа № 5: работа с отчетами
- •1.5.1. Создание простейшего отчета
- •1.5.2. Создание отчета для связанных наборов данных
- •1.5.3. Использование выражений (компонент qrExpr)
- •1.5.4. Группирование данных в отчете
- •Задание на практическую работу № 5:
- •1.6. Практическая работа № 6: sql-запросы (компонент Query)
- •Вариант 2. Поставки товаров
- •Вариант 3. Исполнители
- •Вариант 4. Картинная галерея
- •Вариант 5. Порт
- •Вариант 6. Студенты
- •Вариант 7. Строительная компания
- •Вариант 8. Автосалон
- •Вариант 9. Аэропорт
- •Вариант 10. Диагностический центр
- •Вариант 11. Реклама
- •Вариант 12. Быстрая пицца
- •Вариант 13. Клуб собаководов
- •Вариант 14. Грузоперевозки
- •Вариант 15. Аптека
- •Вариант 16. Автовокзал
- •Вариант 17. Общественная организация
- •Вариант 18. Учет потребления газа
1.3.6. Формирование списка возможных значений столбца
Свойство PickList объекта-столбца содержит список возможных значений столбца. Если это свойство заполнено, при редактировании ячейки столбца в ее правом углу появляется небольшая кнопка, нажатие на которую раскрывает список. Программист может заполнить это свойство как на этапе проектирования программы, так и во время ее выполнения. Это свойство особенно полезно, когда зависимые таблицы заполнены, а главную нужно заполнить значениями из зависимых.
Рассмотрим подробно на нашем примере.
Допустим, необходимо сформировать в поле ID_ARTIST главной таблицы C список возможных значений из подчинённой таблицы A. Для этого сначала нам необходимо создать ещё один компонент Table5 и настроить его на таблицу A, не связывая с главной таблицей. Добавьте все поля в редакторе полей Table5. Затем опишите обработчик события OnCellClick сетки DBGrid2 следующим образом:
procedure TForm1.DBGrid2CellClick(Column: TColumn);
begin
if Column.FieldName=’ID_ARTIST' then
with Table5 do {работаем с дополнительной таблицей}
begin
Column.PickList.Clear;
First; {идем в начало Table5}
while not eof do {пока не дошли до конца таблицы}
begin
Column.PickList.Add(Table5ID_ARTIST.AsString);
{заполняем список PickList значениями из другой таблицы}
Next;{переходим к след. записи.}
end;
end;
end;
Результат будет следующим (рис. 13):
Рис. 13. Результат формирования списка значений столбца
Задание на практическую работу № 3:
-
Доработать свою базу данных таким образом, чтобы при выборе какой-либо строки в таблице значения полей показывались в отдельных компонентах формы (например, Label).
-
При добавлении числовых данных в таблицу следить за границами вводимых значений. Если введенное число не удовлетворяет условиям, то выдавать соответствующее предупреждение.
-
Сформировать список возможных значений столбца таблицы.
1.4. Практическая работа № 4: работа с наборами данных (компонент Table)
Доступ к данным таблиц любой БД в Delphi осуществляется с помощью компонентов, представляющих наборы данных (НД). Класс TDataSet является базовым классом для всех наборов данных, а его потомки предназначены для работы с различными СУБД и драйверами. В BDE это следующие компоненты:
-
Table — используется для доступа к данным одной таблицы;
-
Query — необходим для выполнения SQL-запросов к одной или нескольким таблицам и получения результатов запросов;
-
StoredProc — предназначен для работы с хранимыми процедурами БД.
В данной лабораторной работе будем рассматривать только компонент Table, его свойства и методы.
1.4.1. Открытие и закрытие набора данных
Состояние НД определяется его свойством State, доступным только для чтения во время выполнения программы. Начальное состояние любого НД — dsInactive (неактивен). Чтобы открыть НД, используется его метод Open или свойство Active, которому нужно присвоить значение True. После успешного открытия НД переходит в состояние dsBrowse (просмотр), a его курсор устанавливается на первую запись.
Чтобы закрыть НД, вызывается метод Close. Заметим, что если НД закрывается, находясь в режимах dsInsert (вставка) или dsEdit (редактирование), изменения, сделанные в текущей записи, не запоминаются. Закрыть НД можно также, присвоив значение False его свойству Active.