
- •«Современные методы разработки программ». Этапы решения задачи
- •Постановка задачи.
- •Техническое задание
- •Разработка структуры базы данных
- •Написание кодов
- •Отладка и внедрение
- •База данных
- •Поля таблицы
- •Ключи и индексы.
- •Способы доступа к данным.
- •Связь между таблицами.
- •Создание базы данных
- •Псевдонимы базы данных
- •Создание таблицы
- •Задание полей
- •Задание свойств таблицы (Table properties)
- •Свойство Validity Checks – проверка правильности значений.
- •Свойство Table Lookup – таблица просмотра
- •Свойство Table Language – язык таблицы
- •Изменение структуры таблицы с помощью Database Desktop
- •Изменение в реестре для корректного отображения русского языка
- •О бзор компонентов Delphi, используемых для связи с бд.
- •Форма модуль данных Data Module
- •Компонент Database
- •Компонент Table
- •Свойства, которые доступны программным путем
- •Методы компонента tTable
- •События компонента tTable.
- •К омпонент Query
- •Свойство sql
- •Query и Параметры
- •К омпонент DataSource
- •Свойства
- •События
- •Компонент dbNavigator
- •Компоненты визуализации и управления данными со страницы Data Control Компонент dbGrid
- •События
- •Другие компоненты визуализации
- •П ример простейшего приложения с использованием компонента Table
- •Основы языка sql. Общие сведения.
- •Отбор данных из таблиц. Оператор выбора Select
- •Совокупные характеристики
- •Вложенные запросы.
- •Объединение таблиц.
- •Соединение union
- •Модификация записей Вставка записи
- •Values(‘Орлов’,’Александр’,’Иванович’,’м’,’23.04.1981’,’Гродно’)
- •Редактирование записи
- •Удаление записи
- •Операции с таблицами Создание таблицы
- •Изменение структуры таблицы
- •Удаление таблицы
- •Операции с индексами
- •Создание индекса
- •Удаление индекса
Форма модуль данных Data Module
П
ри
разработке сложных приложений, работающих
с базами данных, принято разделять
логику работы и пользовательский
интерфейс. В Delphi
это помогают сделать модуль данных –
компонент контейнер типа TdataModule.
Это невидимая форма, на которой можно
разместить компонент базы данных
DataBase.
На модуле данных желательно размещать
такие невизуальные компоненты как
наборы данных: Query,
Table
(рис.2). Эти компоненты можно размещать
и на обычной форме, но если ссылка на
компонент Query
имеет место в нескольких формах, то
компонент Query
желательно размещать на модуле данных.
Для того, чтобы добавить модуль данных в проект, нужно выбрать меню File – New – Data Module. Откроется пустая форма, которую следует сохранить как обычно. Желательно с этого начинать, чтобы сразу после инициализации приложения возникало событие создания модуля данных. Но это не обязательно. Можно открыть файл проекта через меню Project – View Source и перенести соответствующую строчку в нужное место.
Компонент Database
Компонент Database предназначен для соединения с конкретной базой данных, точнее с псевдонимом базы данных. Это будет первый компонент, используемый для связи с базами данных, который необходимо расположить на форме (можно располагать на обычной форме, но желательно на специальной форме Data Module). Компонент Database расположен на странице BDE. На рис.3 в OI представлены все свойства компонента Database. Поскольку в приложении этот компонент будет скорей всего единственным, то его свойство Name можно не изменять. Далее нас будет интересовать свойство AliasName. Это имя псевдонима базы данных, которое создается в BDE Administrator или в Database Desktop. Следовательно свойство AliasName можно только выбрать из выпадающего списка.
В
ажно:
если вы устанавливаете свое программное
приложение на другом компьютере, то
предварительно Вам нужно проверить
есть ли такой псевдоним в BDE на этом
компьютере, если его нет, то такой
псевдоним нужно создать. Затем необходимо
придумать имя для свойства DatabaseName,
например ddd,
которое в дальнейшем будет псевдонимом
для компонент Table
и Query.
После этих действий установите свойство
Connected,
равным true.
Cобытий
у компонента Database
совсем немного. Их
названия
говорят сами за себя.
При возникновении проблем с установкой соединения компонента Database проверьте путь псевдонима, дважды щелкнув по компоненте (рис4).
Компонент Table
Компонент Table предназначен для связи с конкретной таблицей из БД и также расположен на странице BDE. Установив компонент TTable на форму, следует дать ему осмысленное имя. Например TableOsndan, если речь идет о таблице слушателей. Для этого замените свойство Name компонента (рис.5). Свойство DatabaseName - это имя псевдонима, которое создается в BDE Administrator или в Database Desktop, или же это свойство DatabaseName компонента Database, если Вы используете компонент Database, а т.к. мы будем использовать компонент Database, то из выпадающего списка необходимо выбрать придуманное для свойства DatabaseName имя (в нашем случае ddd). После этого в выпадающем списке свойства TableName появятся все таблицы Вашей базы данных. Выберите нужную, например osndan.db. После того, как вы установили эти свойства, можно свойство Active попробовать сменить c false на true. Если у Вас получилось - Вы все сделали правильно. Если нет – возможно, Вы неправильно указали имя базы или таблицы. (DatabaseName или TableName).
Х
ороший
стиль программирования:
В законченном приложении свойство
Active должно быть установлено равным
false ,затем
при событии формы OnActivate
это свойство программно делается равным
true
(TableOsndan.Active:=true
или TableOsndan.Open),
а при событии
формы OnClose
это свойство должно программно
устанавливается опять в false
(TableOsndan.Active:=false
или TableOsndan.Close).
Это исключит неоправданное поддержание
связи с БД, которое занимает ресурсы, а
при работе в сети мешает доступу к БД
других пользователей.
Кроме этих свойств нас могут заинтересовать следующие:
AutoCalcFields При установке в false обработчик события OnCalcFields игнорируется. При установке в true - вызывается для каждой записи. Весьма полезно для вычисляемых полей
Filtered При установке в false значение свойства Filter и обработчик OnFilterRecord игнорируются. При установке в true - выполняются для каждой записи.
Filter Имеет смысл только при Filter = true. Фильтрует записи в таблице. Обычно применим тогда, когда можно по одному простому выражению определить, надо ли включать запись в результирующий набор данных или нет. Если для того, чтобы определить это недостаточно одного выражения, применяется обработчик события OnFilterRecord.
IndexFieldName и IndexName Позволяет выбрать активный индекс. Если значения не выбраны, текущим считается первичный индекс. В программе так и применяется: TabOsndan.IndexName := 'Fio'; или TabOsndan.IndexFieldNames := 'Fam;Im;Otch'; отсортирует таблицу слушателей по фамилиям именам и отчествам. TabOsndan.IndexName := ''; или TabOsndan.IndexFieldNames := ''; отсортитует по первичному ключу. В этих примерах предполагалось, что у вас есть таблица слушателей с индексом Fio по полям Fam, Im, Otch. Важно отметить такую особенность TTable при работе с индексами - можно написать TabOsndan.IndexFieldNames:= 'Fam;Im'; при этом таблица будет отсортирована по фамилиям и именам, игнорирую порядок по отчествам. Но нельзя написать TabOsndan.IndexFieldNames := 'Fam;Otch'; т.к. это нарушает порядок полей, по которым был построен индекс.
MasterField и Mastersource. Применяются при организации отношений главный-подчиненный.
ReadOnly. Простой способ сделать вашу таблицу доступной только для чтения.
Те свойства, которые видны в Object Inspector лишь небольшая часть свойств. Большая часть свойств доступна программным путем.