Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мет_BD Delphi

.pdf
Скачиваний:
18
Добавлен:
26.02.2016
Размер:
702.49 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Курганский государственный университет»

Кафедра информационных технологий и методики преподавания информатики

РАЗРАБОТКА ПРИЛОЖЕНИЙ ДЛЯ БАЗ ДАННЫХ В СРЕДЕ DELPHI

Методические рекомендации для студентов очной и заочной форм обучения

направлений 010100.62, 050100.62

Курган 2015

Кафедра: «Информационные технологии и методика преподавания информатики»

Дисциплина: «Компьютерные науки»

(направление 010100.62), «Информационные системы»

(направление 050100.62)

Составитель: старший преподаватель С.Г. Тетюшева

Утверждены на заседании кафедры «26» сентября 2014 г.

Рекомендованы методическим советом университета «28» февраля 2014 г.

2

ЛАБОРАТОРНАЯ РАБОТА 1 Создание приложения для работы с базой данных

Постановка задачи. Требуется создать в среде Delphi приложение, предназначенное для учета поступающих на склад товаров. База данных состоит из двух таблиц: справочника «Товары» и операционной таблицы «Приход товаров». Таблицы необходимо создать и хранить в формате Paradox. Отношение между таблицами «один-ко-многим», то есть одному товару в таблице «Товары» может соответствовать более одной записи в таблице «Приход товаров». Рабочая структура таблиц приведена в таблицах 1 и 2.

Таблица 1 − Структура таблицы «Товары»

Имя поля

Тип данных

Размер поля

Tovar

Текстовый

20

Ed_Izm

Текстовый

10

Zena_Ed

Денежный

 

Таблица 2 − Структура таблицы «Приход товаров»

Имя поля

Тип данных

Размер поля / Формат поля

N_Prih

Счетчик

 

Tovar

Текстовый

20

DataPrih

Дата/Время

Краткий формат даты

Kolvo

Числовой

 

Для таблицы «Товары» первичный ключ построен по полю «Tovar». Для таблицы «Приход товаров» первичный ключ построен по полю «N_Prih». Для реализации ссылочной целостности (с таблицей «Товары») необходимо построить внешний ключ по полю «Tovar».

1.1 Создание таблиц базы данных

1Создать в своем рабочем каталоге подкаталог PRIMER_BD.

2Запустить программу Microsoft Access.

3Создать в каталоге PRIMER_BD новую базу данных «Sklad.mdb».

4Создать в режиме конструктора таблицу «Товары», структура которой представлена в таблице 1.

5Поле «Tovar» сделать ключевым полем, для этого выделить данное поле и на панели инструментов нажать кнопку Ключевое поле.

6Сохранить таблицу под именем «Tovary».

7Открыть таблицу «Tovary» в режиме таблицы и ввести в нее три записи согласно рисунку 1, затем закрыть окно таблицы.

Рисунок 1 − Содержимое таблицы «Tovary»

8В режиме конструктора создать таблицу «Приход товаров», структура которой представлена ранее в таблице 2.

9Ключевым полем назначить поле «N_Prih».

3

10Сохранить таблицу под именем «Prihod».

11Открыть таблицу «Prihod» в режиме таблицы и ввести в нее три записи согласно рисунку 2, затем закрыть таблицу.

Рисунок 2 − Содержимое таблицы «Prihod»

12Выбрать в меню «Сервис» команду «Схема данных», добавить в схему все таблицы базы данных и установить связь между таблицами по полю «Товар», как показано на рисунке 3. Для этого при нажатой левой кнопке мыши поле «Товар» из одной таблицы перетащить на поле «Товар» в другой таблице.

13Закрыть схему данных, сохранив изменения. Закрыть Microsoft Access.

Рисунок 3 – Связи между таблицами базы данных

1.2 Создание приложения для работы с одной таблицей

Доступ к базе данных обеспечивают компоненты ADOTable, ADOQuery и DataSource, значки которых находятся на вкладках Data Access и ADO палитры компонентов среды Delphi (рисунок 4).

Рисунок 4 – Компоненты, обеспечивающие доступ к данным

Компонент ADOTable представляет одну из таблиц базы данных. Компонент DataSource (источник данных) обеспечивает связь компонента отображенияредактирования данных (например, компонента DBGrid) и источника данных, в качестве которого может выступать таблица (компонент ADOTаblе) или результат выполнения SQL-запроса к таблице (компонент ADOQuery).

В таблицах 3 и 4 перечислены свойства компонентов ADOTable и DataSource. Свойства перечислены в том порядке, в котором следует устанавливать их значения после добавления компонентов в форму приложения.

Таблица 3 − Свойства компонента TDataSource

Свойство Определяет

Name Имя компонента. Используется для доступа к свойствам компонента

DataSet Имя компонента, представляющего собой входные данные. Обеспечивает связь между компонентом, представляющим собой таблицу или запрос, и компонентами, предназначенными для доступа к записям

4

Таблица 4 − Свойства компонента TADOTable

Свойство

Определяет

Name

Имя компонента, используется для доступа к свойствам компо-

нента

 

ConnectionString

Параметры доступа к базе данных, частью которой является таб-

 

лица, для доступа к которой используется компонент

TableName

Имя таблицы данных, для доступа к которому используется ком-

понент

 

Active

Признак активизации таблицы. В результате присваивания свой-

ству значения True происходит открытие таблицы

 

1Создать в каталоге PRIMER_BD подкаталог АРР.

2Запустить Delphi.

3Поместить на форму компонент TADOTable (страница ADO палитры компонентов).

4В свойстве ConnectionString компонента ADOTable1 щелчком по кнопке вызвать диалог формирования строки соединения и нажать в нем кнопку Built.

5Указать тип данных Microsoft Jet OLE DB Provider (драйвер для доступа к базам данных Microsoft Access) и нажать кнопку Далее (рисунок 5).

Рисунок 5 − Выбор драйвера и установка подключения к данным

6 На закладке «Подключение» в первой строке щелчком по кнопке вызвать диалог и выбрать файл базы данных Sklad.mdb (имя Вашей базы данных).

7Протестировать соединение, нажав кнопку Подтвердить подключение (рисунок 8), и закрыть диалог нажатием на кнопку ОК.

8Установить для ADOTable1 свойства: TableName – Tovary, Active – True.

9Расположить в форме компонент TDataSource (страница Data Access) и установить его свойство DataSet (имя набора данных) в значение ADOTable1 путем выбора из выпадающего списка.

10Расположить в форме компонент TDBGrid (страница Data Controls). Он служит для отображения записей набора данных в табличной форме.

5

11 Установить для компонента DBGrid1 свойство DataSource в значение DataSource1. В результате на форме должна быть таблица с открытой в ней таблицей «Товары» (рисунок 6).

Рисунок 6 − Вид формы Form1 с размещенными на ней компонентами

12 Выбрать в меню «File» команду Save All и сохранить проект в каталоге PRIMER_BD\APP. Сначала запрашивается имя формы проекта − сохранить форму под именем «app1.pas». Затем запрашивается имя проекта − сохранить проект под именем «proba1.dpr».

13 Запустить приложение на выполнение.

Изменим параметры компонента DBGrid1 так, чтобы названия его столбцов содержали русские наименования. Для этого сначала сформируем список полей таблицы «Tovary». В Delphi для этой цели используется редактор полей набора данных.

14Щелкнуть правой кнопкой мыши на компоненте ADOTable1 и выбрать команду Fields Editor. Откроется редактор полей набора данных.

15В редакторе полей нажать правую кнопку мыши и выбрат команду Add all Fields. Будут добавлены все поля таблицы «Tovary» (рисунок 7).

16Закрыть редактор полей.

Рисунок 7 − Редактор полей компонента ADOTable1

Определение для набора данных списка полей в редакторе полей приводит к тому, что для каждого добавленного таким образом поля в приложении Delphi автоматически создает компонент TField (поле набора данных). Каждый такой компонент по умолчанию именуется уникальным именем. В качестве первой составляющей имени поля берется имя набора данных (ADOTable1), а в качестве второй составляющей − имя поля в таблице. Так, компонент TField, соответствующий полю «Tovar», будет поименован как ADOTable1Tovar.

17Щелкнуть правой кнопкой мыши на компоненте DBGrid1 и во всплывающем меню выбрать команду Columns Editor (или в инспекторе объектов выбрать свойство Columns и нажать кнопку ).

18В редакторе столбцов щелкнуть правой кнопкой мыши и выбрать команду Add

All Fields, в результате будут добавлены столбцы, каждый из которых соответствует полю, определенному в редакторе полей компонента ADOTable1 (рисунок 8).

Если в редакторе столбцов щелкнуть по имени соответствующего поля, в инспекторе объектов можно установить или изменить свойства поля, а также определить для него обработчики события.

6

Рисунок 8 − Редактор столбцов компонента DBGrid1

В таблице 5 перечислены свойства TColumn − столбца таблицы.

Таблица 5 − Свойства компонента TColumn

Свойство

Определяет

FieldName

Поле записи, содержимое которого выводится в колонке

Width

Ширину колонки в пикселах

Font

Шрифт, используемый для вывода текста в ячейках колонки

Color

Цвет фона колонки

Alignment

Выравнивание текста в ячейках колонки

Title.Caption

Заголовок колонки (по умолчанию совпадает с именем поля)

Title.Alignment

Выравнивание заголовка колонки

Title.Color

Цвет фона заголовка колонки

Title.Font

Шрифт заголовка колонки

В простейшем случае для каждой колонки достаточно установить значение свойства FieldName, которое определяет имя поля записи, содержимое которого будет отображаться в колонке, а также значение свойства Title.Caption, определяющего заголовок колонки.

19Изменить заголовок каждого столбца. Для этого:

при помощи мыши выбрать имя столбца в редакторе столбцов DBGrid1;

в инспекторе объектов раскрыть список свойства Title, щелкнув по «+»;

в элементе Caption этого списка изменить заголовок столбца на соответствующее русское название;

установить в свойстве Alignment списка Title значение «taCenter».

20Закрыть редактор столбцов. Разрабатываемая форма примет вид, представленный на рисунке 9.

Рисунок 9 – Измененный вид компонента DBGrid1

21Сохранить внесенные изменения (в меню «File» команда «Save all») и запустить приложение на выполнение.

22Добавить в таблицу «Товары» две новые записи.

Для добавления записи нужно нажать на клавиатуре клавишу <Insert> или, находясь на последней записи набора данных, клавишу <стрелка вниз>. Набор данных автоматически перейдет в режим добавления новой записи.

7

После ввода значений в поля записи запомнить запись в наборе данных можно, перейдя на другую запись при помощи клавиш управления курсором. Отказаться от запоминания записи можно, нажав клавишу <Esc>.

Для изменения записи следует переместить указатель текущей записи в нужное место и изменить значения там, где это необходимо. Набор данных автоматически перейдет в режим редактирования.

Для удаления записи следует установить на нее указатель текущей записи и нажать комбинацию клавиш <Ctrl>+<Delete>.

1.3 Формирование списка возможных значений столбца

Значения столбца «Ed_Izm» таблицы «Tovary» могут выбираться из некоторого фиксированного множества (шт., кг, л и т.п.) и можно получать список значений при редактировании столбца непосредственно в TDBGrid.

1Открыть редактор столбцов компонента DBGrid1 и выделить в нем с помощью мыши имя столбца «Ed_Izm».

2В инспекторе объектов выбрать свойство PickList и нажать кнопку .

3Ввести список фиксированных значений для столбца: кг, л, шт, пак, кор (каждый элемент списка вводить в отдельной строке). Закрыть окно диалога.

4В свойство ButtonStyle установить значение «cbsAuto», тогда Delphi, обнаружив, что список PickList заполнен, автоматически будет помещать в столбце при редактировании его ячейки кнопку типа ComboBox (стрелка вниз).

5Закрыть редактор столбцов и сохранить внесенные изменения (File \ Save all).

6Запустить приложение на выполнение и добавить в таблицу «Товары» две новые записи.

1.4 Создание приложения для работы с двумя таблицами

Рассмотрим, как в одной форме можно связать родительский и подчиненный наборы данных так, чтобы в подчиненном наборе данных всегда показывались записи, соответствующие текущей записи в родительском наборе данных.

1Сохранить форму приложения в файле «app2.pas» (File \ Save As), а проект при-

ложения − в файле «proba2.dpr» (File \ Save Project As).

2Добавить в приложение компонент TADOTable (имя ADOTable2) для работы с таблицей «Prihod» базы данных «SKLAD».

3В свойстве ConnectionString компонента ADOTable2 вызвать диалог формирования строки соединения (кнопка ) и нажать в нем кнопку Built.

4Указать тип базы данных Microsoft Jet OLE DB Provider. На закладке «Подклю-

чение» в первой строке указать путь к файлу базы данных Sklad.mdb. Протестировать соединение и закрыть диалог, нажав кнопку ОК.

5Установить для ADOTable2 свойства: TableName − Prihod, Active - True.

6Добавить в форму компонент TDataSource (имя DataSource2). Установить свойство DataSet этого компонента в значение ADOTable2.

7Разместить в форме компонент TDBGrid (имя DBGrid2) и установить его свойство DataSource в значение DataSource2 (рисунок 10).

8Сохранить изменения в проекте и запустить приложение на выполнение.

9Ввести в таблицу «Prihod» пять новых записей. Обратите внимание, значение поля «N_Prih» формируется автоматически.

8

Рисунок 10 – Форма для работы с двумя таблицами

1.5 Настройка столбцов в TDBGrid

Значение поля «N_Prih» необходимо для обеспечения уникальности записей в таблице «Prihod» и не несет никакой иной нагрузки, поэтому данное поле лучше не показывать в составе столбцов компонента DBGrid2. Для этой цели сформируем список полей таблицы «Prihod». В Delphi для этой цели используется редактор полей набора данных, который позволяет включить в состав обрабатываемых для набора данных полей все поля или подмножество полей таблицы базы данных.

1 Сохранить форму приложения как «app3.pas», а проект приложения − как

«proba3.dpr».

2Щелкнуть правой кнопкой мыши по компоненту ADOTable2 и выбрать в появившемся контекстном меню команду Fields Editor.

3В появившемся списке редактора полей (на рисунке 11а он пока пуст) нажать правую кнопку мыши и во всплывающем меню выбрать команду Add Fields.

4Отметить при помощи мыши и клавиши <Shift> все поля, кроме «N_Prih» (рисунок 11б) и нажать кнопку OK. Теперь список редактора полей будет включать все отмеченные поля (рисунок 11в). Закрыть редактор полей.

а) б) в) Рисунок 11 – Редактирование списка полей таблицы «Prihod»

Как можно заметить, в составе столбцов в компоненте DBGrid2 теперь присутствуют только те поля, которые добавлены для набора данных ADOTable2 в редакторе полей. Для того чтобы изменить характеристики столбцов в DBGrid2, нужно перейти от неявно определяемых столбцов к явно определяемым.

9

5Щелкнуть правой кнопкой мыши на компоненте DBGrid2 и выбрать во всплывающем меню команду Columns Editor. На экране появится окно редактора столбцов компонента.

6Щелкнуть по кнопке Add All Fields , в результате чего будут добавлены столбцы, каждый из которых соответствует полю, определенному в редакторе полей компонента ADOTable2 (рисунок 12).

Рисунок 12 – Заполненный список столбцов DBGrid2

7Изменить параметры компонента DBGrid2 так, чтобы названия его столбцов содержали русские наименования.

8С помощью свойств Color и Font и элементов Color и Font свойства Title настроить цветовое и шрифтовое оформление столбцов таблицы.

9Закрыть редактор столбцов компонента DBGrid2.

10Аналогичным образом настроить шрифтовое и цветовое оформление столбцов компонента DBGrid1 (рисунок 13).

Рисунок 13 – Оформление таблиц в приложении

1.6 Проверка правильности введенного в поле значения

Для контроля за правильностью вводимых в поле значений можно использовать события onValidate или onSetText объекта-поля. Оба события наступают после изменения значения поля, но до его запоминания в таблице.

В обработчике onValidate в случае обнаружения неверного значения программа должна предотвратить его запоминание, создав исключительную ситуацию или обратившись к глобальной процедуре Abort. Например, в таблице «Приход товаров» поле «Kolvo» содержит данные о количестве поступившего товара и, естественно, не может иметь отрицательных значений. Для контроля за этим можно написать обработчик события onValidate.

1Для компонента ADOTable2 открыть редактор полей.

2В списке полей выделить поле «Kolvo», затем для создания обработчика в инспекторе объектов на странице «Events» дважды щелкнуть в поле строки «OnValidate» и набрать код обработчика:

if ADOTable2Kolvo.Value < 0 then

10