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

ООП / 4 / Lektsia_12

.docx
Скачиваний:
27
Добавлен:
01.06.2015
Размер:
98.73 Кб
Скачать

Лекция 12.

Тема: «Пример разработки приложения баз данных

для СУБД Access» (продолжение)

  1. Создание приложения баз данных для СУБД Access

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

Интерфейс приложения баз данных

Таблица

«Телефонный справочник»

Таблица

«Справочник городов»

Таблица

с результатом выполнения SQL-запроса

Memo-поле для ввода и

редактирования SQL-запроса

Выполнить

SQL-запрос

Выход

Приложение обеспечивает следующие возможности:

  • наглядную визуализацию всех полей таблиц «Телефонный справочник» и «Справочник городов» созданной ранее базы данных в СУБД Access;

  • навигацию по таблицам базы данных;

  • задание SQL-запроса и индикацию результата, тренировку правильности формирования SQL-запроса.

Заметим, что SQL – это язык баз данных, который обеспечивает наиболее универсальный и эффективный способ доступа и управления данными. Знание этого языка является обязательным для разработчиков баз данных. Без этого языка нельзя обойтись при разработке клиент-серверных приложений баз данных. На языке SQL задаются действия, которые должен выполнять сервер баз данных.

Для создания приложения баз данных в среде Delphi выполним следующие действия.

1. Создаем новый проект с формой Form1. Затем по команде Файл Новый Модуль данных создаем вторую форму DataModule2. Это специальная форма – модуль данных, на которой можно размещать только не визуальные компоненты. Модуль данных доступен только разработчику приложения. На этапе выполнения приложения модуль данных невидим.

Размещение компонентов доступа к данным в модуле данных имеет следующие преимущества:

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

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

Ниже приведена форма DataModule2 со всеми размещаемыми на ней компонентами.

2. Разместим на форме DataModule2 компонент ADOConnection из категории ADO палитры компонентов среды Delphi. Данный компонент обеспечивает расширенное управление соединением с хранилищем данных и позволяет обращаться к данным нескольким компонентам одновременно. Под хранилищем данных понимается база данных, файлы, электронные таблицы. В нашем случае это база данных db1.

Для подключения к базе данных щелкаем дважды по ADOConnection1 и в появившемся окне выделяем Use Connection String, а затем нажимаем кнопку Build. Появляется окно выбора поставщика драйвера для работы с базой данных. Выбираем в этом окне Microsoft Jet 4.0 OLE DB Provider.

Нажимаем кнопку Далее и в появившемся окне выбираем имя нашей базы данных db1. (Файл базы данных db1.mdb предварительно перемещается в папку создаваемого проекта Delphi).

Проверяем подключение к базе данных и нажимаем ОК и еще раз ОК для закрытия окон.

Задаем свойству LoginPrompt компонента ADOConnection1 значение False, что исключает запрос пароля при подключении к базе данных.

3. Разместим на форме DataModule2 компонент набора данных ADOTable из категории ADO палитры компонентов среды Delphi и компонент связи DataSourse из категории Data Access.

Заметим, что компонент ADOTable обеспечивает доступ к таблицам локальных СУБД, что подходит для нашего случая. Установим значения следующих свойств компонента ADOTable1:

  • Connection – ADOConnection1;

  • TableName – Телефонный справочник;

  • Active – True.

Для компонента DataSourse1 задаем значение свойства DataSet в виде ADOTable1. Тем самым устанавливаем связь между следующими компонентами: ADOConnection1 ADOTable1 DataSourse1.

4. Переходим на главную форму Form1. Задаем команду Файл Использовать модуль. Далее в появившемся окне выбираем Unit2, чтобы подключить модуль формы DataModule2 к модулю формы Unit1. В разделе реализации модуля Unit1 должна появиться строка

uses Unit2;

5. Разместим на главной форме Form1 компонент отображения данных DBGrid из категории Data Controls палитры компонентов среды Delphi. Для компонента DBGrid1 задаем значение свойства DataSourse в виде DataModule2.DataSourse1. Благодаря этому, завершаем связь между следующими компонентами: ADOConnection1 ADOTable1 DataSourse1 DBGrid1.

Ниже приведена главная форма Form1 со всеми размещаемыми на ней компонентами.

На данном этапе можно компилировать проект и запустить приложение. В интерфейсе приложения должна отобразится таблица «Телефонный справочник».

6. Повторим выполнение пунктов 3 и 5 для отображения в интерфейсе приложения таблицы «Справочник городов». В результате выполнения этих пунктов на форме DataModule2 появятся компоненты ADOTable2, DataSourse2, а на главной форме Form1 – компонент DBGrid2. Путем настройки свойств данных компонентов обеспечивается следующая связь: ADOConnection1 ADOTable2 DataSourse2 DBGrid2.

На данном этапе снова выполняем компилирование проекта и запуск приложения. В интерфейсе приложения должны отобразится две таблицы «Телефонный справочник» и «Справочник городов».

7. Устанавливаем ширину полей таблицы «Телефонный справочник», чтобы они отображались через компонент DBGrid1 нужным образом. Для этого изменим свойства компонента ADOTable1. Если дважды щелкнуть по компоненту ADOTable1, то появится окно, где можно настраивать поля набора данных. Щелчок правой кнопки мыши по этому окну вызывает контекстное меню, где надо выбрать команду Add all fields. В окне настроек полей появятся все поля таблицы «Телефонный справочник».

Каждое поле является объектом, свойство которого можно настраивать через инспектор объектов среды Delphi. В частности, для поля Key1 задаем свойству Visible значение False, чтобы это поле было невидимым. Для остальных полей уменьшим ширину до 20 с помощью свойства DisplayWidth, поле Город – 10.

Аналогичные установки сделаем для компонента ADOTable2. Поле Key1 оставим видимым. Ширину всех полей зададим равной 20, поле Key1 – 10.

8. Выполним связывание таблиц (наборов данных). Данная процедура обеспечивает синхронизацию курсоров главной и подчиненной таблицы при перемещении курсора в главной таблице. У нас главная таблица «Телефонный справочник», а подчиненная таблица – «Справочник городов».

Для связывания таблиц выделим компонент ADOTable2, который обеспечивает доступ к подчиненной таблице «Справочник городов». С помощью свойства Master Fields этого компонента вызовем редактор связей, который открывается по щелчку на кнопке с многоточием. В окне редактора отображаются два списка полей, а именно: список полей подчиненной таблицы Detail Fields (слева) и список полей главной таблицы Master Fields (справа).

Для создания связи выделим поле Key1 для подчиненной таблицы и поле Город для главной таблицы, а затем щелкнем на кнопке Add. В результате этого действия в списке связей Joined Fields появится связь Key1Город. В заключение щелкнем на кнопке ОК.

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

9. Добавим на форму DataModule2 новый компонент доступа к данным ADOQuery из категории ADO палитры компонентов среды Delphi. Этот компонент используется для доступа к данным с помощью SQL-запросов как локальных СУБД, так и клиент-серверных.

Изменим свойство Connection компонента ADOQuery1 на ADOConnection1 для установления связи ADOConnection1ADOQuery1. Затем дважды щелкнем по свойству SQL этого компонента. Откроется окно редактора SQL-запроса. В этом окне наберем следующий запрос:

SELECT Фамилия, Код, Телефон

FROM [Телефонный справочник], [Справочник городов]

WHERE [Телефонный справочник].Город=[Справочник городов].Key1

AND [Справочник городов].Город LIKE ‘Туапсе’

10. Добавим на форму DataModule2 еще один компонент связи DataSourse. Изменим свойство DataSet компонента DataSourse3 на ADOQuery1 для установления связи ADOConnection1ADOQuery1 DataSourse3.

Добавим на главную форму Form1 компонент DBGrid. Изменим свойство DataSourse компонента DBGrid на DataSourse3. Тем самым завершим связь ADOConnection1 ADOQuery1 DataSourse3 DBGrid3.

11. Наконец, добавим на форму Form1 компонент Memo и две кнопки Button. Установленные кнопки Button1 и Button2 назовем Выполнить запрос и Выход соответственно.

В модуле формы Unit1 создадим обработчики событий, связанных с объектами Form1, Button1 и Button2. Коды обработчиков приведены ниже.

12. После компиляции проекта запустим приложение и проверим его функциональность. Ниже приведен интерфейс работающего приложения.

Соседние файлы в папке 4