- •4.1. Основные понятия
- •4.2. Создание псевдонима базы данных
- •4.3. Создание таблиц базы данных
- •4.3.1. Объявление полей
- •4.3.2. Изменение языкового драйвера
- •4.3.3. Определение индексов
- •4.3.4. Определение ссылочной целостности между таблицами
- •4.3.5. Изменение структуры таблицы
- •4.4. Открытие и сохранение таблицы
- •4.5. Дополнительные утилиты
- •5.1. Взаимодействие классов, обеспечивающих доступ к таблицам
- •5.2. Классы tField и tTable: основное назначение и свойства
- •5.2.1. Класс tField: основное назначение и свойства
- •5.2.2. Класс tТable: основное назначение
- •5.2.3. Основные свойства класса tTable
- •5.2.4. Основные методы класса tTable
- •1) Доступ к таблице бд
- •2) Перемещение по записям таблицы
- •3) Режим редактирования таблицы
- •4) Доступ к значениям полей по имени
- •5) Добавление, удаление записей
- •6.1. Индексирование таблиц
- •6.2. Поиск записей
- •6.3. Поля компонента Table
- •6.4. Вычисляемые и связанные поля
- •Лекция 7. Запросы.
- •7.1. Запросы
- •7.3. Запросы с параметрами
- •Перед обращением к данному запросу необходимо задать значения двух параметров (типы данных: Country – String, Year- Short), а затем выполнить запрос:
- •7.4. Запросы с операторами delete, insert, update
4.3.5. Изменение структуры таблицы
Структуру созданной таблицы можно изменить. Для этого необходимо выбрать элемент меню Tools | Utilities | Restructure, выбрать таблицу и произвести необходимые изменения в структуре таблицы. Можно добавлять, удалять поля, изменять их типы и имена. В некоторых случаях система попросит подтвердить выполнение действий.
4.4. Открытие и сохранение таблицы
Для изменения данных, хранящихся в таблице, таблицу необходимо «открыть». Открытие таблицы происходит с помощью подменю File | Open. Внесение изменений (добавление/удаление записей, изменение значений полей конкретных записей и т.д.) происходит только в режиме редактирования. Для перехода в режим редактирования необходимо нажать клавишу F9. Сохранение изменений в таблице происходит по выбору пунктов меню File | Save или File | SaveAs. Перед сохранением изменений необходимо выйти из режима редактирования, повторно нажав клавишу F9.
4.5. Дополнительные утилиты
Рассмотрим некоторые дополнительные возможности, которые среда Database Desktop предоставляет для работы с таблицами. Эти возможности доступны через пункт меню Tools | Utilities:
Add – добавить записи из одной таблицы в другую (структуры должны совпадать);
Copy – копировать одну таблицу в другую;
Delete – удалить таблицу;
Empty – опустошить таблицу (удалить все записи);
Info Structure – показать структуру таблицы;
Rename – переименовать таблицу;
Sort – отсортировать таблицу по значениям каких-либо полей;
Restructure – изменить структуру таблицы;
Subtract – удалить из таблицы записи, совпадающие с записями другой таблицы (записи должны совпадать).
Лекция 5. Основные классы, обеспечивающие доступ к таблицам БД: назначение, свойства, методы
5.1. Взаимодействие классов, обеспечивающих доступ к таблицам
Назначение любого БД-приложения – обеспечить пользователю удобный интерфейс для работы с информацией, представленной в таблицах базы данных. Рассмотрим основные классы среды Delphi, обеспечивающие программиста разнообразными возможностями для реализации такого интерфейса.
Классы объектов, обеспечивающие доступ к таблицам БД, связаны между собой следующим образом:
Набор данных БД (физическая таблица БД или результат запроса) Объект класса TTable или TQuery Объект класса TDataSource Объект класса TDBGrid или класса TDBЕdit
П
оясним
предложенную схему. Данные из таблицы
БД или результат запроса по таблицам
БД представляются объектами классовTTable
или TQuery
соответственно. Классы TTable
и TQuery
связываются с объектом класса TDataSource,
а уже объект класса TDataSource
непосредственно связывается с визуальными
компонентами DBGrid
или DBЕdit,
обеспечивающими отображение данных и
возможность внесения изменений. На рис.
5.1 представлена форма с необходимыми
компонентами для представления информации
из одной таблицы БД.
Рис. 5.1
Рассмотрим подробнее атрибуты, методы и события, связанные с данными классами.
Класс TTable обеспечивает доступ к конкретной таблице БД в целом. Это наиболее важный и сложный класс и будет далее рассмотрен подробно.
Класс TDataSource обеспечивает связь визуальных компонентов (TDBGrid или TDBЕdit) со множеством данных БД. Связь осуществляется через класс TDataSet, поэтому основной атрибут класса DataSet, в котором задается имя объекта, непосредственно связанного с набором данных БД. Класс TDataSet – предок класса TTable, объекты которого представляют конкретные таблицы БД. Для доступа к результатам запросов (см. лекцию 7) используются объекты другого наследника TDataSet – класса TQuery. Наиболее интересное событие класса TDataSource – OnDataChange, которое происходит при изменении связанных с объектом данных, позволяет их отслеживать, обрабатывать, сообщать о них пользователю.
Класс TDBGrid («сетка») обеспечивает возможность отображения и редактирования данных в виде таблицы, строки которой соответствуют записям таблицы БД, а столбцы – полям записи. Свойство DataSource содержит имя компонента-источника TDataSource, который ссылается на соответствующую таблицу. Изменяя значение свойства DataSource во время выполнения, можно использовать один и тот же компонент TDBGrid для показа содержимого различных наборов данных.
Для определения состава столбцов в TDBGrid используется редактор столбцов (Columns Editor). В окне редактора устанавливаются значения свойств объектов-столбцов. Текущие значения свойств определяют способ отображения столбцов в сетке. Если в процессе выполнения приложения программно изменять то или иное свойство столбца, то эти изменения немедленно отобразятся. Например, в ходе выполнения можно менять ширину столбца (свойство DisplayWidth связанного со столбцом объекта TField), его видимость (Visible), возможность редактирования значения столбца (ReadOnly), порядковый номер (Index), заголовок столбца (DisplayLabel).
К основным событиям данного класса можно отнести следующие: OnCellClick – возникает при щелчке мыши на ячейке; OnDblClick – возникает при двойном щелчке мыши; OnTitleClick возникает при щелчке по заголовку; OnColEnter – возникает сразу после того, как ячейка становится активной («получает фокус»); OnColExit – возникает перед тем, как ячейка перестает быть активной («теряет фокус»).
Стандартно реализованы следующие способы работы пользователя с информацией из таблиц.
- Пользователь может работать в каждый момент времени только с одним полем одной записи таблицы. Эта запись называется текущей и помечена в левом столбце значком ►. Ячейка таблицы, с которой работает пользователь в данный момент времени, называется активной и выделяется цветом.
- Переход вверх и вниз между записями и по текущей записи осуществляется соответствующими стрелками, клавишей Tab или с помощью курсора мыши. При переходе вниз от последней записи автоматически создается новая запись, помечаемая значком *.
- При внесении изменений в текущее поля происходит переход в режим редактирования.
- Внесение изменений в таблицу БД и выход из режима редактирования происходит после перехода к другой записи. Отказаться от изменений и выйти из режима редактирования можно по клавише Esc.
Удалить текущую запись можно, нажав одновременно клавиши Ctrl и Del.
Класс TDBЕdit обеспечивает возможность отображения и редактирования одного поля текущей записи таблицы. Функции данного класса аналогичны функциям класса TEdit, но источником данных и их приемником в этом случае служит поле таблицы. Свойство DataSource содержит имя компонента-источника, который ссылается на соответствующую таблицу, а свойство DataField – имя соответствующего поля. При вводе значения в компонент автоматически отслеживается его совместимость с типом поля таблицы. Ввод неправильных значений блокируется, и выдается сообщение об ошибке. Например, произойдет ошибка, если в компонент, связанный с полем числового типа или типа дата-время, попытаться ввести произвольный текст.
Основные свойства, методы и события этого класса аналогичны свойствам, методам и событиям класса TEdit с учетом специфики класса TDBЕdit.
5. Класс TDBNavigator позволяет осуществлять навигацию по записям таблицы, переводить таблицу в состояние вставки, изменения, добавления записи, запоминать изменения. Свойство DataSource содержит имя компонента-источника, который ссылается на соответствующую таблицу. Свойство VisibleButtons состоит из множества свойств с логическими значениеми, каждое из которых соответствует некоторой кнопке навигатора: nbFirst – перейти к первой записи; nbPrior – перейти к предыдущей записи; nbNext – перейти к следующей и т.д. Кнопка отображается на Навигаторе, если соответствующее ей свойство имеет значение Тrue. Наиболее часто используется событие OnClick, которое возникает при щелчке мыши на кнопке Навигатора.
