- •Содержание
- •Введение
- •Создание приложений с использованием технологии 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. Учет потребления газа
Задание на практическую работу № 2
-
Создать алиас БД.
-
Установить связи между таблицами БД.
-
Связать основную таблицу с навигатором.
1.3. Практическая работа № 3: работа с полями и компонентом dbGrid
Класс TField позволяет обращаться к полям таблиц БД. Каждый набор данных (НД) состоит из записей, а те, в свою очередь, — из полей.
Под набором данных понимается группа записей из одной или нескольких таблиц БД, доступная для использования с помощью компонентов Table.
Таким образом, в структуре таблицы имеется минимум одно поле.
1.3.1. Использование объектов-полей
Для удобства работы с конкретным полем можно создать объект-поле класса TField или одного из его специализированных потомков — TStringField, TIntegerField, TBlobField и т.д. Объект-поле создается на этапе конструирования программы с помощью редактора полей. Если определен объект-поле, получить доступ к полю можно по имени этого объекта. Редактор полей присваивает объектам-полям имена путем сцепления имени источника данных и имени поля. Допустим, есть компонент Firms типа Table (Firms: Table), который связан с источником данных, имеющим поле City. Объект этого поля получает имя FirmsCity, и можно использовать прямое обращение к нему. Например:
FirmsCity.AsString:=’Омск’;
Если хотя бы для одного поля НД создан объект-поле, все поля НД, для которых такие объекты не определены, становятся недоступными. К «несуществующим» полям обратиться из данного НД нельзя. Вновь вернуться к использованию всех полей НД можно только на этапе конструирования программы, удалив в редакторе полей все определенные ранее объекты или добавив с его помощью объекты для недостающих полей.
Если нужно обращаться к полю, но не показывать его значение в компонентах, отображающих данные (например, в компоненте DBGrid), свойство Visible этого объекта-поля следует установить в False. Однако если в компоненте DBGrid уже определены объекты столбцов для полей НД, изменение свойства Visible не произведет эффекта. В этом случае можно удалить из редактора столбцов DBGrid те столбцы, отображать которые не требуется.
Для вызова редактора полей нужно дважды щелкнуть по компоненту Table или щелкнуть по нему правой кнопкой мыши и выбрать Fields Editor. Предварительно НД должен быть связан с нужной таблицей БД: в Table должны быть определены свойства DatabaseName и TableName.
Чтобы добавить объекты-поля, нажмите правую кнопку мыши в свободном поле появившегося окна и выберите Add All Fields. Появятся объекты-поля для всех полей НД (рис. 8).
Рис. 8. Редактор полей НД
1.3.2. Обращение к значению поля
К значению поля можно обратиться при помощи свойства Value и AsXXXX класса TField или его потомков. В классе TField определены следующие свойства AsXXXX для приведения типов полей:
Property AsBoolean:Boolean; |
Property AsInteger:Integer; |
Property AsCurrency:Currency; |
Property AsString:String; |
Property AsDateTime:TDateTime; |
Property AsVariant:Variant; |
Property AsFloat:Double; |
|
Каждое из этих свойств приводит значение поля к соответствующему типу данных, указанному в названии свойства. Например, если BooksBookId — поле TIntegerField, для приведения его к типу String нужно воспользоваться свойством AsString:
Edit1.Text:= BooksBookId.AsString
Следует знать, что преобразование не всех типов возможно.
Если для НД не создан ни один объект-поле, получить доступ к значению поля этого НД можно с помощью его метода FieldByName или через его свойства Fields и FieldValues. Допустим, у вас имеется НД Books типа Table, который содержит поле Year. Следующие обращения будут идентичными:
Books.FieldByName(‘Year’).AsInteger:=2000;
Books[‘Year’]:=2000;
Books.FieldValues[‘Year’]:=2000;
Books.Fields[4].AsInteger:=2000;
(предполагается, что поле ‘Year’ является 5-м по счету в НД Books).